From f2dbbf45de036dfbcbea8f2650a50bfc5d088ff1 Mon Sep 17 00:00:00 2001 From: Teruaki Kawashima Date: Mon, 1 Nov 2010 13:37:00 +0000 Subject: lamp plugin: -handles sys_events. -disable idle poweroff (part of FS#11578 by Hayden Pearce.) -correct button table in the manual. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28429 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/lamp.c | 99 +++++++++++++++++++++++++---------------------- apps/plugins/lib/helper.c | 12 ++++++ apps/plugins/lib/helper.h | 5 +++ manual/plugins/lamp.tex | 23 +++++------ 4 files changed, 79 insertions(+), 60 deletions(-) diff --git a/apps/plugins/lamp.c b/apps/plugins/lamp.c index 0074933fd8..4dffcd06bf 100644 --- a/apps/plugins/lamp.c +++ b/apps/plugins/lamp.c @@ -123,40 +123,36 @@ #ifdef HAVE_LCD_COLOR /* RGB color sets */ #define NUM_COLORSETS 2 -static int colorset[NUM_COLORSETS][3] = { { 255, 255, 255 } , /* white */ - { 255, 0, 0 } }; /* red */ +static unsigned colorset[NUM_COLORSETS] = { + LCD_RGBPACK(255, 255, 255), /* white */ + LCD_RGBPACK(255, 0, 0), /* red */ +}; #endif /* HAVE_LCD_COLOR */ /* this is the plugin entry point */ enum plugin_status plugin_start(const void* parameter) { + enum plugin_status status = PLUGIN_OK; long button; (void)parameter; #ifdef HAVE_LCD_COLOR int cs = 0; bool quit = false; + bool update = true; #endif /* HAVE_LCD_COLOR */ -#ifdef HAVE_BACKLIGHT_BRIGHTNESS - short old_brightness = rb->global_settings->brightness; -#endif /* HAVE_BACKLIGHT_BRIGHTNESS */ -#ifdef HAVE_BUTTONLIGHT_BRIGHTNESS - short old_buttonlight_brightness = - rb->global_settings->buttonlight_brightness; -#endif /* HAVE_BUTTONLIGHT_BRIGHTNESS */ - #if LCD_DEPTH > 1 - unsigned bg_color=rb->lcd_get_background(); + unsigned bg_color = rb->lcd_get_background(); rb->lcd_set_backdrop(NULL); rb->lcd_set_background(LCD_WHITE); #endif #ifdef HAVE_BACKLIGHT_BRIGHTNESS - rb->backlight_set_brightness(MAX_BRIGHTNESS_SETTING); + backlight_brightness_set(MAX_BRIGHTNESS_SETTING); #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS - rb->buttonlight_set_brightness(MAX_BRIGHTNESS_SETTING); + buttonlight_brightness_set(MAX_BRIGHTNESS_SETTING); #endif /* HAVE_BUTTONLIGHT_BRIGHTNESS */ #ifdef HAVE_LCD_INVERT @@ -175,23 +171,26 @@ enum plugin_status plugin_start(const void* parameter) #ifdef HAVE_LCD_COLOR do { - if(cs < 0) - cs = NUM_COLORSETS-1; - if(cs >= NUM_COLORSETS) - cs = 0; - rb->lcd_set_background( LCD_RGBPACK( colorset[cs][0], - colorset[cs][1], - colorset[cs][2] ) ); - rb->lcd_clear_display(); - rb->lcd_update(); - - switch((button = rb->button_get(true))) + if(update) + { + if(cs < 0) + cs = NUM_COLORSETS-1; + if(cs >= NUM_COLORSETS) + cs = 0; + rb->lcd_set_background(colorset[cs]); + rb->lcd_clear_display(); + rb->lcd_update(); + update = false; + } + + switch((button = rb->button_get_w_tmo(HZ*30))) { case LAMP_RIGHT: #ifdef LAMP_NEXT case LAMP_NEXT: #endif /* LAMP_NEXT */ cs++; + update = true; break; case LAMP_LEFT: @@ -199,25 +198,24 @@ enum plugin_status plugin_start(const void* parameter) case LAMP_PREV: #endif /* LAMP_PREV */ cs--; + update = true; break; - case (LAMP_RIGHT|BUTTON_REPEAT): - case (LAMP_RIGHT|BUTTON_REL): - case (LAMP_LEFT|BUTTON_REPEAT): - case (LAMP_LEFT|BUTTON_REL): -#ifdef LAMP_NEXT - case (LAMP_NEXT|BUTTON_REPEAT): - case (LAMP_NEXT|BUTTON_REL): -#endif /* LAMP_NEXT */ -#ifdef LAMP_PREV - case (LAMP_PREV|BUTTON_REPEAT): - case (LAMP_PREV|BUTTON_REL): -#endif /* LAMP_PREV */ - /* eat these... */ - break; default: - quit = true; + if(button) + { + if(rb->default_event_handler(button) == SYS_USB_CONNECTED) + { + status = PLUGIN_USB_CONNECTED; + quit = true; + } + if(!(button & (BUTTON_REL|BUTTON_REPEAT)) + && !IS_SYSEVENT(button)) + quit = true; + } + break; } + rb->reset_poweroff_timer(); } while (!quit); #else /* HAVE_LCD_COLOR */ @@ -226,10 +224,18 @@ enum plugin_status plugin_start(const void* parameter) /* wait */ do { - button = rb->button_get(false); - if (button && !IS_SYSEVENT(button)) - break; - rb->yield(); + button = rb->button_get_w_tmo(HZ*30); + if(button) + { + if(rb->default_event_handler(button) == SYS_USB_CONNECTED) + { + status = PLUGIN_USB_CONNECTED; + break; + } + if(!IS_SYSEVENT(button)) + break; + } + rb->reset_poweroff_timer(); } while (1); #endif /*HAVE_LCD_COLOR */ @@ -245,15 +251,14 @@ enum plugin_status plugin_start(const void* parameter) #endif /* HAVE_LCD_INVERT */ #ifdef HAVE_BACKLIGHT_BRIGHTNESS - rb->backlight_set_brightness(old_brightness); + backlight_brightness_use_setting(); #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ #ifdef HAVE_BUTTONLIGHT_BRIGHTNESS - rb->buttonlight_set_brightness(old_buttonlight_brightness); + buttonlight_brightness_use_setting(); #endif /* HAVE_BUTTONLIGHT_BRIGHTNESS */ #if LCD_DEPTH > 1 rb->lcd_set_background(bg_color); #endif - return PLUGIN_OK; + return status; } - diff --git a/apps/plugins/lib/helper.c b/apps/plugins/lib/helper.c index b95ee7ab35..ce84915e02 100644 --- a/apps/plugins/lib/helper.c +++ b/apps/plugins/lib/helper.c @@ -107,3 +107,15 @@ void backlight_brightness_use_setting(void) rb->backlight_set_brightness(rb->global_settings->brightness); } #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ + +#ifdef HAVE_BUTTONLIGHT_BRIGHTNESS +void buttonlight_brightness_set(int brightness) +{ + rb->buttonlight_set_brightness(brightness); +} + +void buttonlight_brightness_use_setting(void) +{ + rb->buttonlight_set_brightness(rb->global_settings->buttonlight_brightness); +} +#endif /* HAVE_BUTTONLIGHT_BRIGHTNESS */ diff --git a/apps/plugins/lib/helper.h b/apps/plugins/lib/helper.h index 92c1c2f934..26baf0f6cd 100644 --- a/apps/plugins/lib/helper.h +++ b/apps/plugins/lib/helper.h @@ -32,6 +32,7 @@ void backlight_use_settings(void); void remote_backlight_force_on(void); void remote_backlight_use_settings(void); #endif + #ifdef HAVE_BUTTON_LIGHT void buttonlight_force_on(void); void buttonlight_use_settings(void); @@ -45,5 +46,9 @@ void backlight_brightness_set(int brightness); void backlight_brightness_use_setting(void); #endif +#ifdef HAVE_BUTTONLIGHT_BRIGHTNESS +void buttonlight_brightness_set(int brightness); +void buttonlight_brightness_use_setting(void); +#endif /* HAVE_BUTTONLIGHT_BRIGHTNESS */ #endif /* _LIB_HELPER_H_ */ diff --git a/manual/plugins/lamp.tex b/manual/plugins/lamp.tex index af2faa5578..b99bcce983 100644 --- a/manual/plugins/lamp.tex +++ b/manual/plugins/lamp.tex @@ -3,24 +3,21 @@ Lamp is a simple plugin to use your player as a lamp (flashlight, torch). You get an empty screen with maximum brightness. \begin{btnmap} - \opt{lcd_color}{ + \opt{lcd_color}{ \opt{PLAYER_PAD,RECORDER_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD% ,IPOD_4G_PAD,IPOD_3G_PAD,IRIVER_H10_PAD,IAUDIO_X5_PAD,SANSA_E200_PAD% ,SANSA_C200_PAD,GIGABEAT_PAD,MROBE100_PAD,SANSA_FUZE_PAD,PBELL_VIBE500_PAD} {\ButtonLeft/\ButtonRight} \opt{COWON_D2_PAD}{\TouchMidLeft{} / \TouchMidRight} - \opt{HAVEREMOTEKEYMAP}{& } + \opt{HAVEREMOTEKEYMAP}{& } & Toggle between colours\\ - } - \opt{PLAYER_PAD}{\ButtonMenu} - \opt{RECORDER_PAD,ONDIO_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOff} - \opt{IPOD_4G_PAD,IPOD_3G_PAD}{Long \ButtonPlay} - \opt{IRIVER_H10_PAD,IAUDIO_X5_PAD,SANSA_E200_PAD,SANSA_C200_PAD,GIGABEAT_PAD,MROBE100_PAD}{\ButtonPower} - \opt{SANSA_FUZE_PAD}{\ButtonHome} - \opt{COWON_D2_PAD}{\ButtonPower} - \opt{PBELL_VIBE500_PAD}{\ButtonRec} - \opt{HAVEREMOTEKEYMAP}{& - \opt{IRIVER_RC_H100_PAD}{\ButtonRCStop} - } + Any ohter key + \opt{HAVEREMOTEKEYMAP}{& } & Quit\\ + } + \nopt{lcd_color}{ + Any key + \opt{HAVEREMOTEKEYMAP}{& } + & Quit\\ + } \end{btnmap} -- cgit