diff options
| author | Jens Arnold <amiconn@rockbox.org> | 2006-03-11 09:28:49 +0000 |
|---|---|---|
| committer | Jens Arnold <amiconn@rockbox.org> | 2006-03-11 09:28:49 +0000 |
| commit | 06bc627c993b742997473bd76c75795c4b165cae (patch) | |
| tree | 9d41cbb602de3ae59942c0ffc091670ef2e659f7 /apps/plugins | |
| parent | 37f529cc3cdcc7990b2a770efec06e45c6054f36 (diff) | |
| download | rockbox-06bc627c993b742997473bd76c75795c4b165cae.zip rockbox-06bc627c993b742997473bd76c75795c4b165cae.tar.gz rockbox-06bc627c993b742997473bd76c75795c4b165cae.tar.bz2 rockbox-06bc627c993b742997473bd76c75795c4b165cae.tar.xz | |
Removed lcd_roll() and lcd_remote_roll() functions. These functions were not really portable. Removed the only plugin that used lcd_roll(): Oscillograph. Oscilloscope offers everything that oscillograph did and more, in a portable way. * Bumped & sorted plugin API.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8995 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
| -rw-r--r-- | apps/plugins/SOURCES | 1 | ||||
| -rw-r--r-- | apps/plugins/oscillograph.c | 300 |
2 files changed, 0 insertions, 301 deletions
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES index a0c2f36..75c88b3 100644 --- a/apps/plugins/SOURCES +++ b/apps/plugins/SOURCES @@ -44,7 +44,6 @@ chip8.c demystify.c flipit.c minesweeper.c -oscillograph.c oscilloscope.c pong.c rockblox.c diff --git a/apps/plugins/oscillograph.c b/apps/plugins/oscillograph.c deleted file mode 100644 index ed0e7a8..0000000 --- a/apps/plugins/oscillograph.c +++ /dev/null @@ -1,300 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2002 Philipp Pertermann - * - * All files in this archive are subject to the GNU General Public License. - * See the file COPYING in the source tree root for full license agreement. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ -#include "plugin.h" - -#ifdef HAVE_LCD_BITMAP - -PLUGIN_HEADER - -/* The different drawing modes */ -#define DRAW_MODE_FILLED 0 -#define DRAW_MODE_OUTLINE 1 -#define DRAW_MODE_PIXEL 2 -#define DRAW_MODE_COUNT 3 - -#define MAX_PEAK 0x8000 - -/* variable button definitions */ -#if CONFIG_KEYPAD == RECORDER_PAD -#define OSCILLOGRAPH_QUIT BUTTON_OFF -#define OSCILLOGRAPH_SPEED_UP BUTTON_UP -#define OSCILLOGRAPH_SPEED_DOWN BUTTON_DOWN -#define OSCILLOGRAPH_ROLL BUTTON_F1 -#define OSCILLOGRAPH_MODE BUTTON_F2 -#define OSCILLOGRAPH_SPEED_RESET BUTTON_F3 -#define OSCILLOGRAPH_PAUSE BUTTON_PLAY - -#elif CONFIG_KEYPAD == ONDIO_PAD -#define OSCILLOGRAPH_QUIT BUTTON_OFF -#define OSCILLOGRAPH_SPEED_UP BUTTON_UP -#define OSCILLOGRAPH_SPEED_DOWN BUTTON_DOWN -#define OSCILLOGRAPH_ROLL BUTTON_RIGHT -#define OSCILLOGRAPH_MODE BUTTON_MENU -#define OSCILLOGRAPH_SPEED_RESET BUTTON_LEFT - -#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ - (CONFIG_KEYPAD == IRIVER_H300_PAD) -#define OSCILLOGRAPH_QUIT BUTTON_OFF -#define OSCILLOGRAPH_SPEED_UP BUTTON_UP -#define OSCILLOGRAPH_SPEED_DOWN BUTTON_DOWN -#define OSCILLOGRAPH_ROLL BUTTON_RIGHT -#define OSCILLOGRAPH_MODE BUTTON_SELECT -#define OSCILLOGRAPH_SPEED_RESET BUTTON_LEFT - -#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || \ - (CONFIG_KEYPAD == IPOD_4G_PAD) -#define OSCILLOGRAPH_QUIT BUTTON_MENU -#define OSCILLOGRAPH_SPEED_UP BUTTON_SCROLL_FWD -#define OSCILLOGRAPH_SPEED_DOWN BUTTON_SCROLL_BACK -#define OSCILLOGRAPH_ROLL BUTTON_RIGHT -#define OSCILLOGRAPH_MODE BUTTON_SELECT -#define OSCILLOGRAPH_SPEED_RESET BUTTON_LEFT - -#elif (CONFIG_KEYPAD == GIGABEAT_PAD) -#define OSCILLOGRAPH_QUIT BUTTON_POWER -#define OSCILLOGRAPH_SPEED_UP BUTTON_UP -#define OSCILLOGRAPH_SPEED_DOWN BUTTON_DOWN -#define OSCILLOGRAPH_ROLL BUTTON_RIGHT -#define OSCILLOGRAPH_MODE BUTTON_SELECT -#define OSCILLOGRAPH_SPEED_RESET BUTTON_LEFT - -#elif CONFIG_KEYPAD == IAUDIO_X5_PAD -#define OSCILLOGRAPH_QUIT BUTTON_POWER -#define OSCILLOGRAPH_SPEED_UP BUTTON_UP -#define OSCILLOGRAPH_SPEED_DOWN BUTTON_DOWN -#define OSCILLOGRAPH_ROLL BUTTON_RIGHT -#define OSCILLOGRAPH_MODE BUTTON_SELECT -#define OSCILLOGRAPH_SPEED_RESET BUTTON_LEFT - -#endif - -#if SIMULATOR && (CONFIG_CODEC != SWCODEC) -#define mas_codec_readreg(x) rand()%MAX_PEAK -#endif - -/* global api struct pointer */ -static struct plugin_api* rb; -/* number of ticks between two volume samples */ -static int speed = 1; -#ifndef SIMULATOR -/* roll == true -> lcd rolls */ -static bool roll = true; -#endif -/* see DRAW_MODE_XXX constants for valid values */ -static int drawMode = DRAW_MODE_FILLED; - -/** - * cleanup on return / usb - */ -void cleanup(void *parameter) -{ - (void)parameter; -#ifndef SIMULATOR - /* restore to default roll position. - Looks funny if you forget to do this... */ - rb->lcd_roll(0); -#endif - rb->lcd_update(); -} - -/** - * Displays a vertically scrolling oscillosgraph using - * hardware scrolling of the display. The user can change - * speed - */ -enum plugin_status plugin_start(struct plugin_api* api, void* parameter) -{ - int button; - /* stores current volume value left */ - int left; - /* stores current volume value right */ - int right; - /* specifies the current position on the lcd */ - int y = LCD_WIDTH - 1; - - /* only needed when drawing lines */ - int lastLeft = 0; - int lastRight = 0; - int lasty = 0; - - bool exit = false; - - (void)parameter; - rb = api; - - /* the main loop */ - while (!exit) { - - /* read the volume info */ -#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) - left = rb->mas_codec_readreg(0xC); - right = rb->mas_codec_readreg(0xD); -#elif (CONFIG_CODEC == SWCODEC) - rb->pcm_calculate_peaks(&left, &right); -#endif - - left = left / (MAX_PEAK / (LCD_WIDTH / 2 - 2)); - right = right / (MAX_PEAK / (LCD_WIDTH / 2 - 2)); - - /* delete current line */ - rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); - rb->lcd_drawline(0, y, LCD_WIDTH-1, y); - - rb->lcd_set_drawmode(DRMODE_SOLID); - switch (drawMode) { - case DRAW_MODE_FILLED: - rb->lcd_drawline(LCD_WIDTH / 2 + 1 , y, - LCD_WIDTH / 2 + 1 + right, y); - rb->lcd_drawline(LCD_WIDTH / 2 - 1 , y, - LCD_WIDTH / 2 - 1 -left , y); - break; - - case DRAW_MODE_OUTLINE: - /* last position needed for lines */ - lasty = MAX(y-1, 0); - - /* Here real lines were neccessary because - anything else was ugly. */ - rb->lcd_drawline(LCD_WIDTH / 2 + right , y, - LCD_WIDTH / 2 + lastRight , lasty); - rb->lcd_drawline(LCD_WIDTH / 2 - left , y, - LCD_WIDTH / 2 - lastLeft, lasty); - - /* have to store the old values for drawing lines - the next time */ - lastRight = right; - lastLeft = left; - break; - - case DRAW_MODE_PIXEL: - /* straight and simple */ - rb->lcd_drawpixel(LCD_WIDTH / 2 + right, y); - rb->lcd_drawpixel(LCD_WIDTH / 2 - left, y); - break; - } - - - /* increment and adjust the drawing position */ - y++; - if (y >= LCD_HEIGHT) - y = 0; - -#ifndef SIMULATOR - /* I roll before update because otherwise the new - line would appear at the wrong end of the display */ - if (roll) - rb->lcd_roll(y); -#endif - - /* now finally make the new sample visible */ - rb->lcd_update_rect(0, MAX(y-1, 0), LCD_WIDTH, 2); - - /* There are two mechanisms to alter speed: - 1.) slowing down is achieved by increasing - the time waiting for user input. This - mechanism uses positive values. - 2.) speeding up is achieved by leaving out - the user input check for (-speed) volume - samples. For this mechanism negative values - are used. - */ - - if (speed >= 0 || ((speed < 0) && (y % (-speed) == 0))) { - bool draw = false; - - /* speed values > 0 slow the oszi down. By user input - speed might become < 1. If a value < 1 was - passed user input would be disabled. Thus - it must be ensured that at least 1 is passed. */ - - /* react to user input */ - button = rb->button_get_w_tmo(MAX(speed, 1)); - switch (button) { - case OSCILLOGRAPH_SPEED_UP: - speed++; - draw = true; - break; - - case OSCILLOGRAPH_SPEED_DOWN: - speed--; - draw = true; - break; - -#ifdef OSCILLOGRAPH_PAUSE - case OSCILLOGRAPH_PAUSE: - /* pause the demo */ - rb->button_get(true); - break; -#endif - -#ifndef SIMULATOR - case OSCILLOGRAPH_ROLL: - /* toggle rolling */ - roll = !roll; - break; -#endif - - case OSCILLOGRAPH_MODE: - /* step through the display modes */ - drawMode ++; - drawMode = drawMode % DRAW_MODE_COUNT; - -#ifndef SIMULATOR - /* lcd buffer might be rolled so that - the transition from LCD_HEIGHT to 0 - takes place in the middle of the screen. - That produces ugly results in DRAW_MODE_OUTLINE - mode. If rolling is enabled this change will - be reverted before the next update anyway.*/ - rb->lcd_roll(0); -#endif - break; - - case OSCILLOGRAPH_SPEED_RESET: - speed = 1; - draw = true; - break; - - case OSCILLOGRAPH_QUIT: - exit = true; - break; - - default: - if (rb->default_event_handler_ex(button, cleanup, NULL) - == SYS_USB_CONNECTED) - return PLUGIN_USB_CONNECTED; - break; - } - - if (draw) { - char buf[16]; - rb->snprintf(buf, sizeof buf, "Speed: %d", -speed); - rb->lcd_putsxy(0, (y + LCD_HEIGHT - 8) % LCD_HEIGHT, buf); - rb->lcd_update_rect(0, (y + LCD_HEIGHT - 8) % LCD_HEIGHT, - LCD_WIDTH, 8); - } - } - } - - cleanup(NULL); - /* standard return */ - return PLUGIN_OK; -} - -#endif |