forked from len0rd/rockbox
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
This commit is contained in:
parent
37f529cc3c
commit
06bc627c99
10 changed files with 21 additions and 441 deletions
|
@ -104,9 +104,6 @@ static const struct plugin_api rockbox_api = {
|
||||||
PREFIX(lcd_icon),
|
PREFIX(lcd_icon),
|
||||||
lcd_double_height,
|
lcd_double_height,
|
||||||
#else
|
#else
|
||||||
#ifndef SIMULATOR
|
|
||||||
lcd_roll,
|
|
||||||
#endif
|
|
||||||
lcd_set_drawmode,
|
lcd_set_drawmode,
|
||||||
lcd_get_drawmode,
|
lcd_get_drawmode,
|
||||||
lcd_setfont,
|
lcd_setfont,
|
||||||
|
@ -155,9 +152,6 @@ static const struct plugin_api rockbox_api = {
|
||||||
lcd_remote_puts,
|
lcd_remote_puts,
|
||||||
lcd_remote_puts_scroll,
|
lcd_remote_puts_scroll,
|
||||||
lcd_remote_stop_scroll,
|
lcd_remote_stop_scroll,
|
||||||
#ifndef SIMULATOR
|
|
||||||
lcd_remote_roll,
|
|
||||||
#endif
|
|
||||||
lcd_remote_set_drawmode,
|
lcd_remote_set_drawmode,
|
||||||
lcd_remote_get_drawmode,
|
lcd_remote_get_drawmode,
|
||||||
lcd_remote_setfont,
|
lcd_remote_setfont,
|
||||||
|
@ -245,6 +239,14 @@ static const struct plugin_api rockbox_api = {
|
||||||
profile_func_exit,
|
profile_func_exit,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef SIMULATOR
|
||||||
|
/* special simulator hooks */
|
||||||
|
#if defined(HAVE_LCD_BITMAP) && LCD_DEPTH < 8
|
||||||
|
sim_lcd_ex_init,
|
||||||
|
sim_lcd_ex_update_rect,
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/* strings and memory */
|
/* strings and memory */
|
||||||
snprintf,
|
snprintf,
|
||||||
strcpy,
|
strcpy,
|
||||||
|
@ -290,6 +292,7 @@ static const struct plugin_api rockbox_api = {
|
||||||
pcm_set_frequency,
|
pcm_set_frequency,
|
||||||
pcm_is_playing,
|
pcm_is_playing,
|
||||||
pcm_play_pause,
|
pcm_play_pause,
|
||||||
|
pcm_calculate_peaks,
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -401,18 +404,10 @@ static const struct plugin_api rockbox_api = {
|
||||||
screen_dump_set_hook,
|
screen_dump_set_hook,
|
||||||
#endif
|
#endif
|
||||||
show_logo,
|
show_logo,
|
||||||
|
tree_get_context,
|
||||||
|
|
||||||
/* new stuff at the end, sort into place next time
|
/* new stuff at the end, sort into place next time
|
||||||
the API gets incompatible */
|
the API gets incompatible */
|
||||||
tree_get_context,
|
|
||||||
#if defined(SIMULATOR) && defined(HAVE_LCD_BITMAP) && LCD_DEPTH < 8
|
|
||||||
sim_lcd_ex_init,
|
|
||||||
sim_lcd_ex_update_rect,
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if (CONFIG_CODEC == SWCODEC)
|
|
||||||
pcm_calculate_peaks,
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int plugin_load(const char* plugin, void* parameter)
|
int plugin_load(const char* plugin, void* parameter)
|
||||||
|
|
|
@ -99,12 +99,12 @@
|
||||||
#define PLUGIN_MAGIC 0x526F634B /* RocK */
|
#define PLUGIN_MAGIC 0x526F634B /* RocK */
|
||||||
|
|
||||||
/* increase this every time the api struct changes */
|
/* increase this every time the api struct changes */
|
||||||
#define PLUGIN_API_VERSION 10
|
#define PLUGIN_API_VERSION 11
|
||||||
|
|
||||||
/* update this to latest version if a change to the api struct breaks
|
/* update this to latest version if a change to the api struct breaks
|
||||||
backwards compatibility (and please take the opportunity to sort in any
|
backwards compatibility (and please take the opportunity to sort in any
|
||||||
new function which are "waiting" at the end of the function table) */
|
new function which are "waiting" at the end of the function table) */
|
||||||
#define PLUGIN_MIN_API_VERSION 10
|
#define PLUGIN_MIN_API_VERSION 11
|
||||||
|
|
||||||
/* plugin return codes */
|
/* plugin return codes */
|
||||||
enum plugin_status {
|
enum plugin_status {
|
||||||
|
@ -137,9 +137,6 @@ struct plugin_api {
|
||||||
void (*PREFIX(lcd_icon))(int icon, bool enable);
|
void (*PREFIX(lcd_icon))(int icon, bool enable);
|
||||||
void (*lcd_double_height)(bool on);
|
void (*lcd_double_height)(bool on);
|
||||||
#else
|
#else
|
||||||
#ifndef SIMULATOR
|
|
||||||
void (*lcd_roll)(int pixels);
|
|
||||||
#endif
|
|
||||||
void (*lcd_set_drawmode)(int mode);
|
void (*lcd_set_drawmode)(int mode);
|
||||||
int (*lcd_get_drawmode)(void);
|
int (*lcd_get_drawmode)(void);
|
||||||
void (*lcd_setfont)(int font);
|
void (*lcd_setfont)(int font);
|
||||||
|
@ -200,9 +197,6 @@ struct plugin_api {
|
||||||
void (*lcd_remote_puts)(int x, int y, const unsigned char *string);
|
void (*lcd_remote_puts)(int x, int y, const unsigned char *string);
|
||||||
void (*lcd_remote_lcd_puts_scroll)(int x, int y, const unsigned char* string);
|
void (*lcd_remote_lcd_puts_scroll)(int x, int y, const unsigned char* string);
|
||||||
void (*lcd_remote_lcd_stop_scroll)(void);
|
void (*lcd_remote_lcd_stop_scroll)(void);
|
||||||
#ifndef SIMULATOR
|
|
||||||
void (*lcd_remote_roll)(int pixels);
|
|
||||||
#endif
|
|
||||||
void (*lcd_remote_set_drawmode)(int mode);
|
void (*lcd_remote_set_drawmode)(int mode);
|
||||||
int (*lcd_remote_get_drawmode)(void);
|
int (*lcd_remote_get_drawmode)(void);
|
||||||
void (*lcd_remote_setfont)(int font);
|
void (*lcd_remote_setfont)(int font);
|
||||||
|
@ -298,6 +292,14 @@ struct plugin_api {
|
||||||
void (*profile_func_exit)(void *this_fn, void *call_site);
|
void (*profile_func_exit)(void *this_fn, void *call_site);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef SIMULATOR
|
||||||
|
/* special simulator hooks */
|
||||||
|
#if defined(HAVE_LCD_BITMAP) && LCD_DEPTH < 8
|
||||||
|
void (*sim_lcd_ex_init)(int shades, unsigned long (*getpixel)(int, int));
|
||||||
|
void (*sim_lcd_ex_update_rect)(int x, int y, int width, int height);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/* strings and memory */
|
/* strings and memory */
|
||||||
int (*snprintf)(char *buf, size_t size, const char *fmt, ...);
|
int (*snprintf)(char *buf, size_t size, const char *fmt, ...);
|
||||||
char* (*strcpy)(char *dst, const char *src);
|
char* (*strcpy)(char *dst, const char *src);
|
||||||
|
@ -344,6 +346,7 @@ struct plugin_api {
|
||||||
void (*pcm_set_frequency)(unsigned int frequency);
|
void (*pcm_set_frequency)(unsigned int frequency);
|
||||||
bool (*pcm_is_playing)(void);
|
bool (*pcm_is_playing)(void);
|
||||||
void (*pcm_play_pause)(bool play);
|
void (*pcm_play_pause)(bool play);
|
||||||
|
void (*pcm_calculate_peaks)(int *left, int *right);
|
||||||
#endif
|
#endif
|
||||||
#endif /* !SIMULATOR */
|
#endif /* !SIMULATOR */
|
||||||
|
|
||||||
|
@ -466,16 +469,7 @@ struct plugin_api {
|
||||||
void (*screen_dump_set_hook)(void (*hook)(int fh));
|
void (*screen_dump_set_hook)(void (*hook)(int fh));
|
||||||
#endif
|
#endif
|
||||||
int (*show_logo)(void);
|
int (*show_logo)(void);
|
||||||
|
|
||||||
struct tree_context* (*tree_get_context)(void);
|
struct tree_context* (*tree_get_context)(void);
|
||||||
#if defined(SIMULATOR) && defined(HAVE_LCD_BITMAP) && LCD_DEPTH < 8
|
|
||||||
void (*sim_lcd_ex_init)(int shades, unsigned long (*getpixel)(int, int));
|
|
||||||
void (*sim_lcd_ex_update_rect)(int x, int y, int width, int height);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if (CONFIG_CODEC == SWCODEC)
|
|
||||||
void (*pcm_calculate_peaks)(int *left, int *right);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* new stuff at the end, sort into place next time
|
/* new stuff at the end, sort into place next time
|
||||||
the API gets incompatible */
|
the API gets incompatible */
|
||||||
|
|
|
@ -44,7 +44,6 @@ chip8.c
|
||||||
demystify.c
|
demystify.c
|
||||||
flipit.c
|
flipit.c
|
||||||
minesweeper.c
|
minesweeper.c
|
||||||
oscillograph.c
|
|
||||||
oscilloscope.c
|
oscilloscope.c
|
||||||
pong.c
|
pong.c
|
||||||
rockblox.c
|
rockblox.c
|
||||||
|
|
|
@ -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
|
|
|
@ -100,7 +100,6 @@ static bool remote_initialized = false;
|
||||||
static bool cached_invert = false;
|
static bool cached_invert = false;
|
||||||
static bool cached_flip = false;
|
static bool cached_flip = false;
|
||||||
static int cached_contrast = 32;
|
static int cached_contrast = 32;
|
||||||
static int cached_roll = 0;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* scrolling */
|
/* scrolling */
|
||||||
|
@ -393,30 +392,6 @@ void lcd_remote_set_flip(bool yesno)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Rolls up the lcd display by the specified amount of lines.
|
|
||||||
* Lines that are rolled out over the top of the screen are
|
|
||||||
* rolled in from the bottom again. This is a hardware
|
|
||||||
* remapping only and all operations on the lcd are affected.
|
|
||||||
* ->
|
|
||||||
* @param int lines - The number of lines that are rolled.
|
|
||||||
* The value must be 0 <= pixels < LCD_REMOTE_HEIGHT. */
|
|
||||||
void lcd_remote_roll(int lines)
|
|
||||||
{
|
|
||||||
char data[2];
|
|
||||||
|
|
||||||
cached_roll = lines;
|
|
||||||
|
|
||||||
if (remote_initialized)
|
|
||||||
{
|
|
||||||
lines &= LCD_REMOTE_HEIGHT-1;
|
|
||||||
data[0] = lines & 0xff;
|
|
||||||
data[1] = lines >> 8;
|
|
||||||
|
|
||||||
lcd_remote_write_command(LCD_REMOTE_CNTL_INIT_LINE | 0x0); // init line
|
|
||||||
lcd_remote_write_data(data, 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The actual LCD init */
|
/* The actual LCD init */
|
||||||
static void remote_lcd_init(void)
|
static void remote_lcd_init(void)
|
||||||
{
|
{
|
||||||
|
@ -443,7 +418,6 @@ static void remote_lcd_init(void)
|
||||||
lcd_remote_set_flip(cached_flip);
|
lcd_remote_set_flip(cached_flip);
|
||||||
lcd_remote_set_contrast(cached_contrast);
|
lcd_remote_set_contrast(cached_contrast);
|
||||||
lcd_remote_set_invert_display(cached_invert);
|
lcd_remote_set_invert_display(cached_invert);
|
||||||
lcd_remote_roll(cached_roll);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int _remote_type = 0;
|
static int _remote_type = 0;
|
||||||
|
|
|
@ -136,19 +136,6 @@ void lcd_set_flip(bool yesno)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Rolls up the lcd display by the specified amount of lines.
|
|
||||||
* Lines that are rolled out over the top of the screen are
|
|
||||||
* rolled in from the bottom again. This is a hardware
|
|
||||||
* remapping only and all operations on the lcd are affected.
|
|
||||||
* ->
|
|
||||||
* @param int lines - The number of lines that are rolled.
|
|
||||||
* The value must be 0 <= pixels < LCD_HEIGHT. */
|
|
||||||
void lcd_roll(int lines)
|
|
||||||
{
|
|
||||||
lines &= LCD_HEIGHT-1;
|
|
||||||
lcd_write_command_ex(LCD_CNTL_DISPLAY_START_LINE, lines, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* !SIMULATOR */
|
#endif /* !SIMULATOR */
|
||||||
|
|
||||||
/* LCD init */
|
/* LCD init */
|
||||||
|
@ -163,8 +150,6 @@ void lcd_init(void)
|
||||||
|
|
||||||
void lcd_init(void)
|
void lcd_init(void)
|
||||||
{
|
{
|
||||||
static unsigned char area_data[4] = { 0x01, 0x00, 0x7f, 0x80 };
|
|
||||||
|
|
||||||
/* GPO35 is the LCD A0 pin
|
/* GPO35 is the LCD A0 pin
|
||||||
GPO46 is LCD RESET */
|
GPO46 is LCD RESET */
|
||||||
or_l(0x00004008, &GPIO1_OUT);
|
or_l(0x00004008, &GPIO1_OUT);
|
||||||
|
@ -198,9 +183,6 @@ void lcd_init(void)
|
||||||
sleep(HZ/10); /* 100 ms pause */
|
sleep(HZ/10); /* 100 ms pause */
|
||||||
lcd_write_command_ex(LCD_CNTL_POWER_CONTROL, 0x17, -1);
|
lcd_write_command_ex(LCD_CNTL_POWER_CONTROL, 0x17, -1);
|
||||||
|
|
||||||
lcd_write_command(LCD_CNTL_AREA_SCROLL);
|
|
||||||
lcd_write_data(area_data, sizeof(area_data));
|
|
||||||
|
|
||||||
lcd_write_command_ex(LCD_CNTL_DISPLAY_START_LINE, 0, -1);
|
lcd_write_command_ex(LCD_CNTL_DISPLAY_START_LINE, 0, -1);
|
||||||
lcd_write_command_ex(LCD_CNTL_GRAY_SCALE_PATTERN, 0x42, -1);
|
lcd_write_command_ex(LCD_CNTL_GRAY_SCALE_PATTERN, 0x42, -1);
|
||||||
lcd_write_command_ex(LCD_CNTL_DISPLAY_MODE, 0, -1); /* Greyscale mode */
|
lcd_write_command_ex(LCD_CNTL_DISPLAY_MODE, 0, -1); /* Greyscale mode */
|
||||||
|
|
|
@ -107,19 +107,6 @@ void lcd_set_flip(bool yesno)
|
||||||
(void)yesno;
|
(void)yesno;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Rolls up the lcd display by the specified amount of lines.
|
|
||||||
* Lines that are rolled out over the top of the screen are
|
|
||||||
* rolled in from the bottom again. This is a hardware
|
|
||||||
* remapping only and all operations on the lcd are affected.
|
|
||||||
* ->
|
|
||||||
* @param int lines - The number of lines that are rolled.
|
|
||||||
* The value must be 0 <= pixels < LCD_HEIGHT. */
|
|
||||||
void lcd_roll(int lines)
|
|
||||||
{
|
|
||||||
(void)lines;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* LCD init */
|
/* LCD init */
|
||||||
void lcd_init_device(void)
|
void lcd_init_device(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -141,19 +141,6 @@ void lcd_blit(const unsigned char* data, int x, int by, int width,
|
||||||
(void)stride;
|
(void)stride;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Rolls up the lcd display by the specified amount of lines.
|
|
||||||
* Lines that are rolled out over the top of the screen are
|
|
||||||
* rolled in from the bottom again. This is a hardware
|
|
||||||
* remapping only and all operations on the lcd are affected.
|
|
||||||
* ->
|
|
||||||
* @param int lines - The number of lines that are rolled.
|
|
||||||
* The value must be 0 <= pixels < LCD_HEIGHT. */
|
|
||||||
void lcd_roll(int lines)
|
|
||||||
{
|
|
||||||
/* TODO Implement lcd_roll() */
|
|
||||||
lines &= LCD_HEIGHT-1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*** hardware configuration ***/
|
/*** hardware configuration ***/
|
||||||
|
|
||||||
/* Update the display.
|
/* Update the display.
|
||||||
|
@ -314,19 +301,6 @@ void lcd_set_flip(bool yesno)
|
||||||
(void)yesno;
|
(void)yesno;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Rolls up the lcd display by the specified amount of lines.
|
|
||||||
* Lines that are rolled out over the top of the screen are
|
|
||||||
* rolled in from the bottom again. This is a hardware
|
|
||||||
* remapping only and all operations on the lcd are affected.
|
|
||||||
* ->
|
|
||||||
* @param int lines - The number of lines that are rolled.
|
|
||||||
* The value must be 0 <= pixels < LCD_HEIGHT. */
|
|
||||||
void lcd_roll(int lines)
|
|
||||||
{
|
|
||||||
/* TODO: Implement lcd_roll() */
|
|
||||||
lines &= LCD_HEIGHT-1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* LCD init */
|
/* LCD init */
|
||||||
void lcd_init_device(void)
|
void lcd_init_device(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,19 +50,6 @@ void lcd_set_flip(bool yesno)
|
||||||
(void)yesno;
|
(void)yesno;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Rolls up the lcd display by the specified amount of lines.
|
|
||||||
* Lines that are rolled out over the top of the screen are
|
|
||||||
* rolled in from the bottom again. This is a hardware
|
|
||||||
* remapping only and all operations on the lcd are affected.
|
|
||||||
* ->
|
|
||||||
* @param int lines - The number of lines that are rolled.
|
|
||||||
* The value must be 0 <= pixels < LCD_HEIGHT. */
|
|
||||||
void lcd_roll(int lines)
|
|
||||||
{
|
|
||||||
/* TODO: Implement lcd_roll() */
|
|
||||||
lines &= LCD_HEIGHT-1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* LCD init */
|
/* LCD init */
|
||||||
void lcd_init_device(void)
|
void lcd_init_device(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -226,18 +226,6 @@ void lcd_set_flip(bool yesno)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Rolls up the lcd display by the specified amount of lines.
|
|
||||||
* Lines that are rolled out over the top of the screen are
|
|
||||||
* rolled in from the bottom again. This is a hardware
|
|
||||||
* remapping only and all operations on the lcd are affected.
|
|
||||||
* ->
|
|
||||||
* @param int lines - The number of lines that are rolled.
|
|
||||||
* The value must be 0 <= pixels < LCD_HEIGHT. */
|
|
||||||
void lcd_roll(int lines)
|
|
||||||
{
|
|
||||||
lcd_write_command(LCD_SET_DISPLAY_START_LINE | (lines & (LCD_HEIGHT-1)));
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* !SIMULATOR */
|
#endif /* !SIMULATOR */
|
||||||
|
|
||||||
/* LCD init */
|
/* LCD init */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue