summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/lamp.c99
-rw-r--r--apps/plugins/lib/helper.c12
-rw-r--r--apps/plugins/lib/helper.h5
-rw-r--r--manual/plugins/lamp.tex23
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}