summaryrefslogtreecommitdiff
path: root/apps/plugins
diff options
context:
space:
mode:
authorDan Everton <dan@iocaine.org>2006-03-05 19:34:54 +0000
committerDan Everton <dan@iocaine.org>2006-03-05 19:34:54 +0000
commitd108849812280eb69b5a00bd1f79193237b2e51a (patch)
treed6210424ace3a29aca8a75f27a87b5df0be6fcff /apps/plugins
parent780e8dd0ef9b4325b35c0b680447488455d4e44f (diff)
downloadrockbox-d108849812280eb69b5a00bd1f79193237b2e51a.tar.gz
rockbox-d108849812280eb69b5a00bd1f79193237b2e51a.zip
Get VU Meter plugin working on SWCODEC targets. Still needs to be scaled to fit better on larger displays. Also requires bumping the plugin API versions.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8915 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
-rw-r--r--apps/plugins/vu_meter.c108
1 files changed, 89 insertions, 19 deletions
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index b486c3c94e..de0c4667bc 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -17,7 +17,7 @@
17 **************************************************************************/ 17 **************************************************************************/
18#include "plugin.h" 18#include "plugin.h"
19 19
20#if defined(HAVE_LCD_BITMAP) && (CONFIG_CODEC != SWCODEC) 20#if defined(HAVE_LCD_BITMAP)
21 21
22PLUGIN_HEADER 22PLUGIN_HEADER
23 23
@@ -28,6 +28,10 @@ PLUGIN_HEADER
28#define VUMETER_MENU BUTTON_F1 28#define VUMETER_MENU BUTTON_F1
29#define VUMETER_MENU_EXIT BUTTON_F1 29#define VUMETER_MENU_EXIT BUTTON_F1
30#define VUMETER_MENU_EXIT2 BUTTON_OFF 30#define VUMETER_MENU_EXIT2 BUTTON_OFF
31#define VUMETER_LEFT BUTTON_LEFT
32#define VUMETER_RIGHT BUTTON_RIGHT
33#define VUMETER_UP BUTTON_UP
34#define VUMETER_DOWN BUTTON_DOWN
31 35
32#elif CONFIG_KEYPAD == ONDIO_PAD 36#elif CONFIG_KEYPAD == ONDIO_PAD
33#define VUMETER_QUIT BUTTON_OFF 37#define VUMETER_QUIT BUTTON_OFF
@@ -37,12 +41,62 @@ PLUGIN_HEADER
37#define VUMETER_MENU (BUTTON_MENU | BUTTON_REPEAT) 41#define VUMETER_MENU (BUTTON_MENU | BUTTON_REPEAT)
38#define VUMETER_MENU_EXIT BUTTON_MENU 42#define VUMETER_MENU_EXIT BUTTON_MENU
39#define VUMETER_MENU_EXIT2 BUTTON_OFF 43#define VUMETER_MENU_EXIT2 BUTTON_OFF
44#define VUMETER_LEFT BUTTON_LEFT
45#define VUMETER_RIGHT BUTTON_RIGHT
46#define VUMETER_UP BUTTON_UP
47#define VUMETER_DOWN BUTTON_DOWN
48
49#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
50 (CONFIG_KEYPAD == IRIVER_H300_PAD)
51#define VUMETER_QUIT BUTTON_OFF
52#define VUMETER_HELP BUTTON_ON
53#define VUMETER_MENU BUTTON_SELECT
54#define VUMETER_MENU_EXIT BUTTON_SELECT
55#define VUMETER_MENU_EXIT2 BUTTON_OFF
56#define VUMETER_LEFT BUTTON_LEFT
57#define VUMETER_RIGHT BUTTON_RIGHT
58#define VUMETER_UP BUTTON_UP
59#define VUMETER_DOWN BUTTON_DOWN
60
61#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || \
62 (CONFIG_KEYPAD == IPOD_4G_PAD)
63#define VUMETER_QUIT BUTTON_MENU
64#define VUMETER_HELP BUTTON_PLAY
65#define VUMETER_MENU BUTTON_SELECT
66#define VUMETER_MENU_EXIT BUTTON_SELECT
67#define VUMETER_MENU_EXIT2 BUTTON_MENU
68#define VUMETER_LEFT BUTTON_LEFT
69#define VUMETER_RIGHT BUTTON_RIGHT
70#define VUMETER_UP BUTTON_SCROLL_FWD
71#define VUMETER_DOWN BUTTON_SCROLL_BACK
72
73#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
74#define VUMETER_QUIT BUTTON_POWER
75#define VUMETER_HELP BUTTON_A
76#define VUMETER_MENU BUTTON_SELECT
77#define VUMETER_MENU_EXIT BUTTON_SELECT
78#define VUMETER_MENU_EXIT2 BUTTON_POWER
79#define VUMETER_LEFT BUTTON_LEFT
80#define VUMETER_RIGHT BUTTON_RIGHT
81#define VUMETER_UP BUTTON_UP
82#define VUMETER_DOWN BUTTON_DOWN
83
84#elif CONFIG_KEYPAD == IAUDIO_X5_PAD
85#define VUMETER_QUIT BUTTON_POWER
86#define VUMETER_HELP BUTTON_PLAY
87#define VUMETER_MENU BUTTON_SELECT
88#define VUMETER_MENU_EXIT BUTTON_SELECT
89#define VUMETER_MENU_EXIT2 BUTTON_POWER
90#define VUMETER_LEFT BUTTON_LEFT
91#define VUMETER_RIGHT BUTTON_RIGHT
92#define VUMETER_UP BUTTON_UP
93#define VUMETER_DOWN BUTTON_DOWN
40 94
41#endif 95#endif
42 96
43const struct plugin_api* rb; 97const struct plugin_api* rb;
44 98
45#ifdef SIMULATOR 99#if SIMULATOR && (CONFIG_CODEC != SWCODEC)
46#define mas_codec_readreg(x) rand()%MAX_PEAK 100#define mas_codec_readreg(x) rand()%MAX_PEAK
47#endif 101#endif
48 102
@@ -229,7 +283,7 @@ void change_settings(void)
229 quit = true; 283 quit = true;
230 break; 284 break;
231 285
232 case BUTTON_LEFT: 286 case VUMETER_LEFT:
233 if(selected_setting==0) 287 if(selected_setting==0)
234 settings.meter_type == DIGITAL ? settings.meter_type = ANALOG : settings.meter_type++; 288 settings.meter_type == DIGITAL ? settings.meter_type = ANALOG : settings.meter_type++;
235 if(settings.meter_type==ANALOG) { 289 if(settings.meter_type==ANALOG) {
@@ -250,7 +304,7 @@ void change_settings(void)
250 } 304 }
251 break; 305 break;
252 306
253 case BUTTON_RIGHT: 307 case VUMETER_RIGHT:
254 if(selected_setting==0) 308 if(selected_setting==0)
255 settings.meter_type == DIGITAL ? settings.meter_type = ANALOG : settings.meter_type++; 309 settings.meter_type == DIGITAL ? settings.meter_type = ANALOG : settings.meter_type++;
256 if(settings.meter_type==ANALOG) { 310 if(settings.meter_type==ANALOG) {
@@ -271,11 +325,11 @@ void change_settings(void)
271 } 325 }
272 break; 326 break;
273 327
274 case BUTTON_DOWN: 328 case VUMETER_UP:
275 selected_setting == 3 ? selected_setting=0 : selected_setting++; 329 selected_setting == 3 ? selected_setting=0 : selected_setting++;
276 break; 330 break;
277 331
278 case BUTTON_UP: 332 case VUMETER_DOWN:
279 selected_setting == 0 ? selected_setting=3 : selected_setting--; 333 selected_setting == 0 ? selected_setting=3 : selected_setting--;
280 } 334 }
281 } 335 }
@@ -334,14 +388,22 @@ void draw_digital_minimeters(void) {
334} 388}
335 389
336void analog_meter(void) { 390void analog_meter(void) {
391
392#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
393 int left_peak = rb->mas_codec_readreg(0xC);
394 int right_peak = rb->mas_codec_readreg(0xD);
395#elif (CONFIG_CODEC == SWCODEC)
396 int left_peak, right_peak;
397 rb->pcm_calculate_peaks(&left_peak, &right_peak);
398#endif
399
337 if(settings.analog_use_db_scale) { 400 if(settings.analog_use_db_scale) {
338 left_needle_top_x = analog_db_scale[rb->mas_codec_readreg(0xC)*56/MAX_PEAK]; 401 left_needle_top_x = analog_db_scale[left_peak * 56 / MAX_PEAK];
339 right_needle_top_x = analog_db_scale[rb->mas_codec_readreg(0xD)*56/MAX_PEAK]+56; 402 right_needle_top_x = analog_db_scale[right_peak * 56 / MAX_PEAK] + 56;
340 } 403 }
341
342 else { 404 else {
343 left_needle_top_x = rb->mas_codec_readreg(0xC) * 56 / MAX_PEAK; 405 left_needle_top_x = left_peak * 56 / MAX_PEAK;
344 right_needle_top_x = (rb->mas_codec_readreg(0xD) * 56 / MAX_PEAK)+56; 406 right_needle_top_x = right_peak * 56 / MAX_PEAK + 56;
345 } 407 }
346 408
347 /* Makes a decay on the needle */ 409 /* Makes a decay on the needle */
@@ -382,13 +444,21 @@ void analog_meter(void) {
382} 444}
383 445
384void digital_meter(void) { 446void digital_meter(void) {
447#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
448 int left_peak = rb->mas_codec_readreg(0xC);
449 int right_peak = rb->mas_codec_readreg(0xD);
450#elif (CONFIG_CODEC == SWCODEC)
451 int left_peak, right_peak;
452 rb->pcm_calculate_peaks(&left_peak, &right_peak);
453#endif
454
385 if(settings.digital_use_db_scale) { 455 if(settings.digital_use_db_scale) {
386 num_left_leds = digital_db_scale[rb->mas_codec_readreg(0xC) * 44 / MAX_PEAK]; 456 num_left_leds = digital_db_scale[left_peak * 44 / MAX_PEAK];
387 num_right_leds = digital_db_scale[rb->mas_codec_readreg(0xD) * 44 / MAX_PEAK]; 457 num_right_leds = digital_db_scale[right_peak * 44 / MAX_PEAK];
388 } 458 }
389 else { 459 else {
390 num_left_leds = rb->mas_codec_readreg(0xC) * 11 / MAX_PEAK; 460 num_left_leds = left_peak * 11 / MAX_PEAK;
391 num_right_leds = rb->mas_codec_readreg(0xD) * 11 / MAX_PEAK; 461 num_right_leds = right_peak * 11 / MAX_PEAK;
392 } 462 }
393 463
394 num_left_leds = (num_left_leds+last_num_left_leds*settings.digital_decay)/(settings.digital_decay+1); 464 num_left_leds = (num_left_leds+last_num_left_leds*settings.digital_decay)/(settings.digital_decay+1);
@@ -481,13 +551,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) {
481 change_settings(); 551 change_settings();
482 break; 552 break;
483 553
484 case BUTTON_UP: 554 case VUMETER_UP:
485 case BUTTON_UP | BUTTON_REPEAT: 555 case VUMETER_UP | BUTTON_REPEAT:
486 change_volume(1); 556 change_volume(1);
487 break; 557 break;
488 558
489 case BUTTON_DOWN: 559 case VUMETER_DOWN:
490 case BUTTON_DOWN | BUTTON_REPEAT: 560 case VUMETER_DOWN | BUTTON_REPEAT:
491 change_volume(-1); 561 change_volume(-1);
492 break; 562 break;
493 563