forked from len0rd/rockbox
Fixes: (1) metronome didn't yield() at all, (2) possible race condition, (3) complete cleanup when detecting USB connection, (4) removed TAB chars
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5022 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
bf955a8b6b
commit
0df29b2157
1 changed files with 75 additions and 73 deletions
|
@ -91,9 +91,9 @@ static unsigned char sound[]={
|
||||||
|
|
||||||
void led(bool on){
|
void led(bool on){
|
||||||
if(on)
|
if(on)
|
||||||
or_b(0x40, &PBDRL);
|
or_b(0x40, &PBDRL);
|
||||||
else
|
else
|
||||||
and_b(~0x40, &PBDRL);
|
and_b(~0x40, &PBDRL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void calc_period(void){
|
void calc_period(void){
|
||||||
|
@ -140,9 +140,9 @@ void draw_display(void){
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
rb->lcd_drawline(0, 12, 111, 12);
|
rb->lcd_drawline(0, 12, 111, 12);
|
||||||
if(sound_paused)
|
if(sound_paused)
|
||||||
rb->lcd_puts(0,2,"press play");
|
rb->lcd_puts(0,2,"press play");
|
||||||
else
|
else
|
||||||
rb->lcd_puts(0,2,"press pause");
|
rb->lcd_puts(0,2,"press pause");
|
||||||
rb->lcd_update();
|
rb->lcd_update();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -157,10 +157,10 @@ void change_volume(int delta){
|
||||||
if (vol != rb->global_settings->volume) {
|
if (vol != rb->global_settings->volume) {
|
||||||
rb->mpeg_sound_set(SOUND_VOLUME, vol);
|
rb->mpeg_sound_set(SOUND_VOLUME, vol);
|
||||||
rb->global_settings->volume = vol;
|
rb->global_settings->volume = vol;
|
||||||
rb->snprintf(buffer, sizeof(buffer), "Vol: %d ", vol);
|
rb->snprintf(buffer, sizeof(buffer), "Vol: %d ", vol);
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
rb->lcd_puts(10,7, buffer);
|
rb->lcd_puts(10,7, buffer);
|
||||||
rb->lcd_update();
|
rb->lcd_update();
|
||||||
#else
|
#else
|
||||||
rb->lcd_puts(0,1, buffer);
|
rb->lcd_puts(0,1, buffer);
|
||||||
#endif
|
#endif
|
||||||
|
@ -169,13 +169,13 @@ void change_volume(int delta){
|
||||||
|
|
||||||
void timer_callback(void){
|
void timer_callback(void){
|
||||||
if(minitick>=period){
|
if(minitick>=period){
|
||||||
minitick = 0;
|
minitick = 0;
|
||||||
if(!sound_active && !sound_paused){
|
if(!sound_active && !sound_paused){
|
||||||
play_tock();
|
play_tock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
minitick++;
|
minitick++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +189,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
|
||||||
rb->bitswap(sound, sizeof(sound));
|
rb->bitswap(sound, sizeof(sound));
|
||||||
|
|
||||||
if (rb->mp3_is_playing())
|
if (rb->mp3_is_playing())
|
||||||
rb->mp3_play_stop(); // stop audio ISR
|
rb->mp3_play_stop(); // stop audio ISR
|
||||||
|
|
||||||
calc_period();
|
calc_period();
|
||||||
rb->plugin_register_timer((FREQ/1024), 1, timer_callback);
|
rb->plugin_register_timer((FREQ/1024), 1, timer_callback);
|
||||||
|
@ -199,82 +199,84 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
|
||||||
/* main loop */
|
/* main loop */
|
||||||
while (true){
|
while (true){
|
||||||
|
|
||||||
switch (rb->button_get(false)) {
|
switch (rb->button_get(true)) {
|
||||||
#ifdef HAVE_RECORDER_KEYPAD
|
#ifdef HAVE_RECORDER_KEYPAD
|
||||||
case BUTTON_OFF:
|
case BUTTON_OFF:
|
||||||
#else
|
#else
|
||||||
case BUTTON_STOP:
|
case BUTTON_STOP:
|
||||||
#endif
|
#endif
|
||||||
/* get out of here */
|
/* get out of here */
|
||||||
rb->mp3_play_stop(); /* stop audio ISR */
|
rb->plugin_unregister_timer();
|
||||||
rb->plugin_unregister_timer();
|
rb->mp3_play_stop(); /* stop audio ISR */
|
||||||
led(0);
|
led(0);
|
||||||
return PLUGIN_OK;
|
return PLUGIN_OK;
|
||||||
|
|
||||||
case BUTTON_PLAY:
|
case BUTTON_PLAY:
|
||||||
if(sound_paused)
|
if(sound_paused)
|
||||||
sound_paused = false;
|
sound_paused = false;
|
||||||
else
|
else
|
||||||
sound_paused = true;
|
sound_paused = true;
|
||||||
calc_period();
|
calc_period();
|
||||||
draw_display();
|
draw_display();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef HAVE_RECORDER_KEYPAD
|
#ifdef HAVE_RECORDER_KEYPAD
|
||||||
case BUTTON_UP:
|
case BUTTON_UP:
|
||||||
case BUTTON_UP | BUTTON_REPEAT:
|
case BUTTON_UP | BUTTON_REPEAT:
|
||||||
#else
|
#else
|
||||||
case BUTTON_ON | BUTTON_RIGHT:
|
case BUTTON_ON | BUTTON_RIGHT:
|
||||||
case BUTTON_ON | BUTTON_RIGHT | BUTTON_REPEAT:
|
case BUTTON_ON | BUTTON_RIGHT | BUTTON_REPEAT:
|
||||||
#endif
|
#endif
|
||||||
change_volume(1);
|
change_volume(1);
|
||||||
calc_period();
|
calc_period();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef HAVE_RECORDER_KEYPAD
|
#ifdef HAVE_RECORDER_KEYPAD
|
||||||
case BUTTON_DOWN:
|
case BUTTON_DOWN:
|
||||||
case BUTTON_DOWN | BUTTON_REPEAT:
|
case BUTTON_DOWN | BUTTON_REPEAT:
|
||||||
#else
|
#else
|
||||||
case BUTTON_ON | BUTTON_LEFT:
|
case BUTTON_ON | BUTTON_LEFT:
|
||||||
case BUTTON_ON | BUTTON_LEFT | BUTTON_REPEAT:
|
case BUTTON_ON | BUTTON_LEFT | BUTTON_REPEAT:
|
||||||
#endif
|
#endif
|
||||||
change_volume(-1);
|
change_volume(-1);
|
||||||
calc_period();
|
calc_period();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BUTTON_LEFT:
|
case BUTTON_LEFT:
|
||||||
if (bpm > 1)
|
if (bpm > 1)
|
||||||
bpm--;
|
bpm--;
|
||||||
calc_period();
|
calc_period();
|
||||||
draw_display();
|
draw_display();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BUTTON_LEFT | BUTTON_REPEAT:
|
case BUTTON_LEFT | BUTTON_REPEAT:
|
||||||
if (bpm > 10)
|
if (bpm > 10)
|
||||||
bpm=bpm-10;
|
bpm=bpm-10;
|
||||||
calc_period();
|
calc_period();
|
||||||
draw_display();
|
draw_display();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BUTTON_RIGHT:
|
case BUTTON_RIGHT:
|
||||||
if(bpm < 400)
|
if(bpm < 400)
|
||||||
bpm++;
|
bpm++;
|
||||||
calc_period();
|
calc_period();
|
||||||
draw_display();
|
draw_display();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BUTTON_RIGHT | BUTTON_REPEAT:
|
case BUTTON_RIGHT | BUTTON_REPEAT:
|
||||||
if (bpm < 400)
|
if (bpm < 400)
|
||||||
bpm=bpm+10;
|
bpm=bpm+10;
|
||||||
calc_period();
|
calc_period();
|
||||||
draw_display();
|
draw_display();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SYS_USB_CONNECTED:
|
case SYS_USB_CONNECTED:
|
||||||
rb->plugin_unregister_timer();
|
rb->plugin_unregister_timer();
|
||||||
rb->usb_screen();
|
rb->mp3_play_stop(); /* stop audio ISR */
|
||||||
return PLUGIN_USB_CONNECTED;
|
led(0);
|
||||||
}
|
rb->usb_screen();
|
||||||
|
return PLUGIN_USB_CONNECTED;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* #ifndef SIMULATOR */
|
#endif /* #ifndef SIMULATOR */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue