diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/recorder/radio.c | 51 |
1 files changed, 37 insertions, 14 deletions
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c index 260708cfe9..cf949872bd 100644 --- a/apps/recorder/radio.c +++ b/apps/recorder/radio.c | |||
@@ -50,6 +50,20 @@ | |||
50 | 50 | ||
51 | #ifdef CONFIG_TUNER | 51 | #ifdef CONFIG_TUNER |
52 | 52 | ||
53 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
54 | #define FM_MENU (BUTTON_F1 | BUTTON_REL) | ||
55 | #define FM_PRESET (BUTTON_F2 | BUTTON_REL) | ||
56 | #define FM_RECORD BUTTON_F3 | ||
57 | #define FM_FREEZE BUTTON_PLAY | ||
58 | #define FM_STOP BUTTON_OFF | ||
59 | #define FM_EXIT (BUTTON_ON | BUTTON_REL) | ||
60 | #elif CONFIG_KEYPAD == ONDIO_PAD /* restricted keypad */ | ||
61 | #define FM_MENU (BUTTON_MENU | BUTTON_REPEAT) | ||
62 | #define FM_RECORD (BUTTON_MENU | BUTTON_REL) | ||
63 | #define FM_STOP (BUTTON_OFF | BUTTON_REL) | ||
64 | #define FM_EXIT (BUTTON_OFF | BUTTON_REPEAT) | ||
65 | #endif | ||
66 | |||
53 | #define MAX_FREQ (108000000) | 67 | #define MAX_FREQ (108000000) |
54 | #define MIN_FREQ (87500000) | 68 | #define MIN_FREQ (87500000) |
55 | #define PLL_FREQ_STEP 10000 | 69 | #define PLL_FREQ_STEP 10000 |
@@ -167,10 +181,6 @@ static void remember_frequency(void) | |||
167 | 181 | ||
168 | bool radio_screen(void) | 182 | bool radio_screen(void) |
169 | { | 183 | { |
170 | #if CONFIG_KEYPAD != RECORDER_PAD | ||
171 | splash(HZ*2, true, "Radio not supported yet"); | ||
172 | return false; | ||
173 | #else | ||
174 | char buf[MAX_PATH]; | 184 | char buf[MAX_PATH]; |
175 | bool done = false; | 185 | bool done = false; |
176 | int button; | 186 | int button; |
@@ -248,8 +258,10 @@ bool radio_screen(void) | |||
248 | 258 | ||
249 | curr_preset = find_preset(curr_freq); | 259 | curr_preset = find_preset(curr_freq); |
250 | 260 | ||
261 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
251 | buttonbar_set(str(LANG_BUTTONBAR_MENU), str(LANG_FM_BUTTONBAR_PRESETS), | 262 | buttonbar_set(str(LANG_BUTTONBAR_MENU), str(LANG_FM_BUTTONBAR_PRESETS), |
252 | str(LANG_FM_BUTTONBAR_RECORD)); | 263 | str(LANG_FM_BUTTONBAR_RECORD)); |
264 | #endif | ||
253 | 265 | ||
254 | while(!done) | 266 | while(!done) |
255 | { | 267 | { |
@@ -290,7 +302,7 @@ bool radio_screen(void) | |||
290 | button = button_get_w_tmo(HZ / peak_meter_fps); | 302 | button = button_get_w_tmo(HZ / peak_meter_fps); |
291 | switch(button) | 303 | switch(button) |
292 | { | 304 | { |
293 | case BUTTON_OFF: | 305 | case FM_STOP: |
294 | #ifndef SIMULATOR | 306 | #ifndef SIMULATOR |
295 | if(mpeg_status() == MPEG_STATUS_RECORD) | 307 | if(mpeg_status() == MPEG_STATUS_RECORD) |
296 | { | 308 | { |
@@ -305,7 +317,8 @@ bool radio_screen(void) | |||
305 | update_screen = true; | 317 | update_screen = true; |
306 | break; | 318 | break; |
307 | 319 | ||
308 | case BUTTON_F3: | 320 | #ifdef FM_RECORD |
321 | case FM_RECORD: | ||
309 | #ifndef SIMULATOR | 322 | #ifndef SIMULATOR |
310 | if(mpeg_status() == MPEG_STATUS_RECORD) | 323 | if(mpeg_status() == MPEG_STATUS_RECORD) |
311 | { | 324 | { |
@@ -322,8 +335,9 @@ bool radio_screen(void) | |||
322 | #endif | 335 | #endif |
323 | last_seconds = 0; | 336 | last_seconds = 0; |
324 | break; | 337 | break; |
338 | #endif /* #ifdef FM_RECORD */ | ||
325 | 339 | ||
326 | case BUTTON_ON | BUTTON_REL: | 340 | case FM_EXIT: |
327 | done = true; | 341 | done = true; |
328 | keep_playing = true; | 342 | keep_playing = true; |
329 | break; | 343 | break; |
@@ -380,30 +394,38 @@ bool radio_screen(void) | |||
380 | settings_save(); | 394 | settings_save(); |
381 | break; | 395 | break; |
382 | 396 | ||
383 | case BUTTON_F1 | BUTTON_REL: | 397 | #ifdef FM_MENU |
398 | case FM_MENU: | ||
384 | radio_menu(); | 399 | radio_menu(); |
385 | curr_preset = find_preset(curr_freq); | 400 | curr_preset = find_preset(curr_freq); |
386 | lcd_clear_display(); | 401 | lcd_clear_display(); |
387 | lcd_setmargins(0, 8); | 402 | lcd_setmargins(0, 8); |
403 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
388 | buttonbar_set(str(LANG_BUTTONBAR_MENU), | 404 | buttonbar_set(str(LANG_BUTTONBAR_MENU), |
389 | str(LANG_FM_BUTTONBAR_PRESETS), | 405 | str(LANG_FM_BUTTONBAR_PRESETS), |
390 | str(LANG_FM_BUTTONBAR_RECORD)); | 406 | str(LANG_FM_BUTTONBAR_RECORD)); |
407 | #endif | ||
391 | update_screen = true; | 408 | update_screen = true; |
392 | break; | 409 | break; |
410 | #endif | ||
393 | 411 | ||
394 | case BUTTON_F2 | BUTTON_REL: | 412 | #ifdef FM_PRESET |
413 | case FM_PRESET: | ||
395 | handle_radio_presets(); | 414 | handle_radio_presets(); |
396 | curr_preset = find_preset(curr_freq); | 415 | curr_preset = find_preset(curr_freq); |
397 | lcd_clear_display(); | 416 | lcd_clear_display(); |
398 | lcd_setmargins(0, 8); | 417 | lcd_setmargins(0, 8); |
418 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
399 | buttonbar_set(str(LANG_BUTTONBAR_MENU), | 419 | buttonbar_set(str(LANG_BUTTONBAR_MENU), |
400 | str(LANG_FM_BUTTONBAR_PRESETS), | 420 | str(LANG_FM_BUTTONBAR_PRESETS), |
401 | str(LANG_FM_BUTTONBAR_RECORD)); | 421 | str(LANG_FM_BUTTONBAR_RECORD)); |
422 | #endif | ||
402 | update_screen = true; | 423 | update_screen = true; |
403 | break; | 424 | break; |
425 | #endif | ||
404 | 426 | ||
405 | #if (BUTTON_UP != BUTTON_PLAY) /* FixMe, this is just to make the Ondio compile */ | 427 | #ifdef FM_FREEZE |
406 | case BUTTON_PLAY: | 428 | case FM_FREEZE: |
407 | if(!screen_freeze) | 429 | if(!screen_freeze) |
408 | { | 430 | { |
409 | splash(0, true, "Screen frozen"); | 431 | splash(0, true, "Screen frozen"); |
@@ -512,9 +534,9 @@ bool radio_screen(void) | |||
512 | 534 | ||
513 | /* Only force the redraw if update_screen is true */ | 535 | /* Only force the redraw if update_screen is true */ |
514 | status_draw(update_screen); | 536 | status_draw(update_screen); |
515 | 537 | #if CONFIG_KEYPAD == RECORDER_PAD | |
516 | buttonbar_draw(); | 538 | buttonbar_draw(); |
517 | 539 | #endif | |
518 | lcd_update(); | 540 | lcd_update(); |
519 | 541 | ||
520 | update_screen = false; | 542 | update_screen = false; |
@@ -558,7 +580,6 @@ bool radio_screen(void) | |||
558 | } | 580 | } |
559 | #endif | 581 | #endif |
560 | return have_recorded; | 582 | return have_recorded; |
561 | #endif /* ONDIO */ | ||
562 | } | 583 | } |
563 | 584 | ||
564 | void radio_save_presets(void) | 585 | void radio_save_presets(void) |
@@ -636,6 +657,7 @@ static void rebuild_preset_menu(void) | |||
636 | } | 657 | } |
637 | } | 658 | } |
638 | 659 | ||
660 | #ifdef FM_PRESET /* FIXME: that was just to kill a warning */ | ||
639 | static bool radio_add_preset(void) | 661 | static bool radio_add_preset(void) |
640 | { | 662 | { |
641 | char buf[27]; | 663 | char buf[27]; |
@@ -664,6 +686,7 @@ static bool radio_add_preset(void) | |||
664 | } | 686 | } |
665 | return true; | 687 | return true; |
666 | } | 688 | } |
689 | #endif /* #ifdef FM_PRESET */ | ||
667 | 690 | ||
668 | static int handle_radio_presets_menu_cb(int key, int m) | 691 | static int handle_radio_presets_menu_cb(int key, int m) |
669 | { | 692 | { |