diff options
author | Peter D'Hoye <peter.dhoye@gmail.com> | 2008-05-07 21:59:45 +0000 |
---|---|---|
committer | Peter D'Hoye <peter.dhoye@gmail.com> | 2008-05-07 21:59:45 +0000 |
commit | ebdb89b519b8039b440a52b286f645266480e78a (patch) | |
tree | 3036931ad42d5db8afbb5d32653769b2dc6c2fb8 /apps/plugins/lamp.c | |
parent | d38f49f87b0a3a0343d6184a4add4fc630c72de9 (diff) |
Rename the flahslight plugin to lamp and add it to the manual
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17406 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/lamp.c')
-rw-r--r-- | apps/plugins/lamp.c | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/apps/plugins/lamp.c b/apps/plugins/lamp.c new file mode 100644 index 0000000000..c755219378 --- /dev/null +++ b/apps/plugins/lamp.c @@ -0,0 +1,215 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// __ \_/ ___\| |/ /| __ \ / __ \ \/ / + * Jukebox | | ( (__) ) \___| ( | \_\ ( (__) ) ( + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2007 Vuong Minh Hiep (vmh) + * Copyright (C) 2008 Thomas Martitz (kugel.) + * Copyright (C) 2008 Alexander Papst + * Copyright (C) 2008 Peter D'Hoye + * + * 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" +#include "helper.h" + +PLUGIN_HEADER + +#if defined(HAVE_BACKLIGHT) +/* variable button definitions - only targets with a colour display */ +#if defined(HAVE_LCD_COLOR) +#if (CONFIG_KEYPAD == IRIVER_H300_PAD) +# define LAMP_LEFT BUTTON_LEFT +# define LAMP_RIGHT BUTTON_RIGHT + +#elif (CONFIG_KEYPAD == IPOD_4G_PAD) +# define LAMP_LEFT BUTTON_LEFT +# define LAMP_RIGHT BUTTON_RIGHT +# define LAMP_NEXT BUTTON_SCROLL_FWD +# define LAMP_PREV BUTTON_SCROLL_BACK + +#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) +# define LAMP_LEFT BUTTON_LEFT +# define LAMP_RIGHT BUTTON_RIGHT + +#elif (CONFIG_KEYPAD == GIGABEAT_PAD) +# define LAMP_LEFT BUTTON_LEFT +# define LAMP_RIGHT BUTTON_RIGHT + +#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) +# define LAMP_LEFT BUTTON_LEFT +# define LAMP_RIGHT BUTTON_RIGHT + +#elif (CONFIG_KEYPAD == SANSA_E200_PAD) +# define LAMP_LEFT BUTTON_LEFT +# define LAMP_RIGHT BUTTON_RIGHT +# define LAMP_NEXT BUTTON_SCROLL_FWD +# define LAMP_PREV BUTTON_SCROLL_BACK + +#elif (CONFIG_KEYPAD == SANSA_C200_PAD) +# define LAMP_LEFT BUTTON_LEFT +# define LAMP_RIGHT BUTTON_RIGHT + +#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) +# define LAMP_LEFT BUTTON_LEFT +# define LAMP_RIGHT BUTTON_RIGHT +# define LAMP_NEXT BUTTON_SCROLL_UP +# define LAMP_PREV BUTTON_SCROLL_DOWN + +#elif CONFIG_KEYPAD == MROBE500_PAD +# define LAMP_LEFT BUTTON_LEFT +# define LAMP_RIGHT BUTTON_RIGHT + +#elif CONFIG_KEYPAD == COWOND2_PAD + +#else +# error Missing key definitions for this keypad +#endif +#endif + +#ifdef HAVE_TOUCHPAD +# ifndef LAMP_LEFT +# define LAMP_LEFT BUTTON_MIDLEFT +# endif +# ifndef LAMP_RIGHT +# define LAMP_RIGHT BUTTON_MIDRIGHT +# endif +# ifndef LAMP_NEXT +# define LAMP_NEXT BUTTON_TOPMIDDLE +# endif +# ifndef LAMP_PREV +# define LAMP_PREV BUTTON_BOTTOMMIDDLE +# endif +#endif + +static struct plugin_api* rb; /* global api struct pointer */ + +#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 */ +#endif /* HAVE_LCD_COLOR */ + +/* this is the plugin entry point */ +enum plugin_status plugin_start(struct plugin_api* api, void* parameter) +{ + (void)parameter; + rb = api; + +#ifdef HAVE_LCD_COLOR + int cs = 0; + bool quit = false; +#endif /* HAVE_LCD_COLOR */ + +#ifdef HAVE_BACKLIGHT_BRIGHTNESS + short old_brightness = rb->global_settings->brightness; +#endif /* HAVE_BACKLIGHT_BRIGHTNESS */ + +#if LCD_DEPTH > 1 + 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); +#endif /* HAVE_BACKLIGHT_BRIGHTNESS */ + +#ifdef HAVE_LCD_INVERT +#ifdef OLYMPUS_MROBE_100 + /* mrobe-100 has inverted display so invert it for max brightness */ + rb->lcd_set_invert_display(true); +#else + rb->lcd_set_invert_display(false); +#endif /* OLYMPUS_MROBE_100 */ +#endif /* HAVE_LCD_INVERT */ + + backlight_force_on(rb); + +#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(rb->button_get(true)) + { + case LAMP_RIGHT: +#ifdef LAMP_NEXT + case LAMP_NEXT: +#endif /* LAMP_NEXT */ + cs++; + break; + + case LAMP_LEFT: +#ifdef LAMP_PREV + case LAMP_PREV: +#endif /* LAMP_PREV */ + cs--; + 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; + } + } while (!quit); + +#else /* HAVE_LCD_COLOR */ + rb->lcd_clear_display(); + rb->lcd_update(); + /* wait */ + while(rb->button_get(false) == BUTTON_NONE) + { + rb->yield(); + } + +#endif /*HAVE_LCD_COLOR */ + + /* restore */ + backlight_use_settings(rb); + +#ifdef HAVE_LCD_INVERT + rb->lcd_set_invert_display(rb->global_settings->invert); +#endif /* HAVE_LCD_INVERT */ + +#ifdef HAVE_BACKLIGHT_BRIGHTNESS + rb->backlight_set_brightness(old_brightness); +#endif /* HAVE_BACKLIGHT_BRIGHTNESS */ + +#if LCD_DEPTH > 1 + rb->lcd_set_background(bg_color); +#endif + return PLUGIN_OK; +} +#endif |