diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2006-07-21 08:42:28 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2006-07-21 08:42:28 +0000 |
commit | ed4d7a33bdeba5ce11512ee617398a2840797203 (patch) | |
tree | 1027077148ace8e13c8fa49ae3794b2038a2d67a /apps/recorder | |
parent | e8818efbe9c814ad3b46ee0e5d0ae250b7c96cf4 (diff) | |
download | rockbox-ed4d7a33bdeba5ce11512ee617398a2840797203.tar.gz rockbox-ed4d7a33bdeba5ce11512ee617398a2840797203.zip |
Patch #5347 by Rani Hod - Adds FM radio and recording features to the iAudio X5.
Also includes a rewrite of the Coldfire I2C driver to include both read and write.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10272 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/recorder')
-rw-r--r-- | apps/recorder/radio.c | 57 | ||||
-rw-r--r-- | apps/recorder/recording.c | 16 |
2 files changed, 68 insertions, 5 deletions
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c index 291079b4b0..a29620b46c 100644 --- a/apps/recorder/radio.c +++ b/apps/recorder/radio.c | |||
@@ -64,7 +64,13 @@ | |||
64 | #ifdef CONFIG_TUNER | 64 | #ifdef CONFIG_TUNER |
65 | 65 | ||
66 | #if CONFIG_CODEC == SWCODEC | 66 | #if CONFIG_CODEC == SWCODEC |
67 | #ifdef HAVE_UDA1380 | ||
67 | #include "uda1380.h" | 68 | #include "uda1380.h" |
69 | #endif | ||
70 | #ifdef HAVE_TLV320 | ||
71 | #include "tlv320.h" | ||
72 | #endif | ||
73 | |||
68 | #include "pcm_record.h" | 74 | #include "pcm_record.h" |
69 | #endif | 75 | #endif |
70 | 76 | ||
@@ -109,6 +115,35 @@ | |||
109 | #define FM_STOP BUTTON_OFF | 115 | #define FM_STOP BUTTON_OFF |
110 | #define FM_RC_STOP BUTTON_RC_STOP | 116 | #define FM_RC_STOP BUTTON_RC_STOP |
111 | 117 | ||
118 | #elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) | ||
119 | /* pause/play - short PLAY */ | ||
120 | #define FM_PLAY_PRE BUTTON_PLAY | ||
121 | #define FM_RC_PLAY_PRE BUTTON_RC_PLAY | ||
122 | #define FM_PLAY (BUTTON_PLAY | BUTTON_REL) | ||
123 | #define FM_RC_PLAY (BUTTON_RC_PLAY | BUTTON_REL) | ||
124 | /* preset/scan mode - long PLAY */ | ||
125 | #define FM_MODE (BUTTON_PLAY | BUTTON_REPEAT) | ||
126 | #define FM_RC_MODE (BUTTON_RC_PLAY | BUTTON_REPEAT) | ||
127 | /* preset menu - short SELECT */ | ||
128 | #define FM_PRESET_PRE BUTTON_SELECT | ||
129 | #define FM_RC_PRESET_PRE BUTTON_RC_MENU | ||
130 | #define FM_PRESET (BUTTON_SELECT | BUTTON_REL) | ||
131 | #define FM_RC_PRESET (BUTTON_RC_MENU | BUTTON_REL) | ||
132 | /* fm menu - long SELECT */ | ||
133 | #define FM_MENU (BUTTON_SELECT | BUTTON_REPEAT) | ||
134 | #define FM_RC_MENU (BUTTON_RC_MENU | BUTTON_REPEAT) | ||
135 | /* main menu(exit radio while playing) - REC */ | ||
136 | #define FM_EXIT_PRE BUTTON_REC | ||
137 | #define FM_EXIT (BUTTON_REC | BUTTON_REL) | ||
138 | #define FM_RC_EXIT_PRE BUTTON_RC_MODE | ||
139 | #define FM_RC_EXIT (BUTTON_RC_MODE | BUTTON_REL) | ||
140 | /* prev/next preset on the remote - REW/FF */ | ||
141 | #define FM_NEXT_PRESET (BUTTON_RC_FF | BUTTON_REL) | ||
142 | #define FM_PREV_PRESET (BUTTON_RC_REW | BUTTON_REL) | ||
143 | /* stop and exit radio - ON */ | ||
144 | #define FM_STOP BUTTON_POWER | ||
145 | #define FM_RC_STOP (BUTTON_RC_MODE | BUTTON_REPEAT) | ||
146 | |||
112 | #elif CONFIG_KEYPAD == ONDIO_PAD /* restricted keypad */ | 147 | #elif CONFIG_KEYPAD == ONDIO_PAD /* restricted keypad */ |
113 | #define FM_MENU (BUTTON_MENU | BUTTON_REPEAT) | 148 | #define FM_MENU (BUTTON_MENU | BUTTON_REPEAT) |
114 | #define FM_RECORD_DBLPRE BUTTON_MENU | 149 | #define FM_RECORD_DBLPRE BUTTON_MENU |
@@ -158,7 +193,7 @@ int radio_get(int setting); | |||
158 | #if CONFIG_TUNER == S1A0903X01 /* FM recorder */ | 193 | #if CONFIG_TUNER == S1A0903X01 /* FM recorder */ |
159 | #define radio_set samsung_set | 194 | #define radio_set samsung_set |
160 | #define radio_get samsung_get | 195 | #define radio_get samsung_get |
161 | #elif CONFIG_TUNER == TEA5767 /* Iriver */ | 196 | #elif CONFIG_TUNER == TEA5767 /* iriver, iaudio */ |
162 | #define radio_set philips_set | 197 | #define radio_set philips_set |
163 | #define radio_get philips_get | 198 | #define radio_get philips_get |
164 | #elif CONFIG_TUNER == (S1A0903X01 | TEA5767) /* OndioFM */ | 199 | #elif CONFIG_TUNER == (S1A0903X01 | TEA5767) /* OndioFM */ |
@@ -387,8 +422,15 @@ bool radio_screen(void) | |||
387 | 422 | ||
388 | #else | 423 | #else |
389 | peak_meter_enabled = false; | 424 | peak_meter_enabled = false; |
425 | |||
426 | #ifdef HAVE_UDA1380 | ||
390 | uda1380_enable_recording(false); | 427 | uda1380_enable_recording(false); |
391 | uda1380_set_monitor(true); | 428 | uda1380_set_monitor(true); |
429 | #elif defined(HAVE_TLV320) | ||
430 | //tlv320_enable_recording(false); | ||
431 | tlv320_set_recvol(23, 23, AUDIO_GAIN_LINEIN); /* 0dB */ | ||
432 | tlv320_set_monitor(true); | ||
433 | #endif | ||
392 | 434 | ||
393 | /* Set the input multiplexer to FM */ | 435 | /* Set the input multiplexer to FM */ |
394 | pcm_rec_mux(1); | 436 | pcm_rec_mux(1); |
@@ -971,7 +1013,7 @@ bool radio_screen(void) | |||
971 | while(1) | 1013 | while(1) |
972 | { | 1014 | { |
973 | button = button_get(true); | 1015 | button = button_get(true); |
974 | if(button == (BUTTON_OFF | BUTTON_REL)) | 1016 | if(button == (FM_STOP | BUTTON_REL)) |
975 | break; | 1017 | break; |
976 | } | 1018 | } |
977 | } | 1019 | } |
@@ -1004,6 +1046,11 @@ bool radio_screen(void) | |||
1004 | radio_stop(); | 1046 | radio_stop(); |
1005 | #ifndef SIMULATOR /* SIMULATOR. Catch FMRADIO_OFF status for the sim. */ | 1047 | #ifndef SIMULATOR /* SIMULATOR. Catch FMRADIO_OFF status for the sim. */ |
1006 | #if CONFIG_CODEC == SWCODEC | 1048 | #if CONFIG_CODEC == SWCODEC |
1049 | #ifdef HAVE_TLV320 | ||
1050 | //tlv320_disable_recording(); | ||
1051 | tlv320_set_monitor(false); | ||
1052 | #endif | ||
1053 | |||
1007 | pcm_rec_mux(0); /* Line In */ | 1054 | pcm_rec_mux(0); /* Line In */ |
1008 | peak_meter_enabled = true; | 1055 | peak_meter_enabled = true; |
1009 | #endif | 1056 | #endif |
@@ -1320,7 +1367,7 @@ int handle_radio_presets_cb(int key, int m) | |||
1320 | key = BUTTON_NONE; | 1367 | key = BUTTON_NONE; |
1321 | break; | 1368 | break; |
1322 | #endif | 1369 | #endif |
1323 | #if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) | 1370 | #if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) && (CONFIG_KEYPAD != IAUDIO_X5_PAD) |
1324 | #ifdef FM_PRESET | 1371 | #ifdef FM_PRESET |
1325 | case FM_PRESET: | 1372 | case FM_PRESET: |
1326 | menu_draw(m); | 1373 | menu_draw(m); |
@@ -1565,7 +1612,7 @@ int radio_menu_cb(int key, int m) | |||
1565 | (void)m; | 1612 | (void)m; |
1566 | switch(key) | 1613 | switch(key) |
1567 | { | 1614 | { |
1568 | #if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) | 1615 | #if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) && (CONFIG_KEYPAD != IAUDIO_X5_PAD) |
1569 | #ifdef MENU_ENTER2 | 1616 | #ifdef MENU_ENTER2 |
1570 | case MENU_ENTER2: | 1617 | case MENU_ENTER2: |
1571 | #endif | 1618 | #endif |
@@ -1574,7 +1621,7 @@ int radio_menu_cb(int key, int m) | |||
1574 | key = BUTTON_NONE; /* eat the downpress, next menu reacts on release */ | 1621 | key = BUTTON_NONE; /* eat the downpress, next menu reacts on release */ |
1575 | break; | 1622 | break; |
1576 | 1623 | ||
1577 | #if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) | 1624 | #if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) && (CONFIG_KEYPAD != IAUDIO_X5_PAD) |
1578 | #ifdef MENU_ENTER2 | 1625 | #ifdef MENU_ENTER2 |
1579 | case MENU_ENTER2 | BUTTON_REL: | 1626 | case MENU_ENTER2 | BUTTON_REL: |
1580 | #endif | 1627 | #endif |
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c index 09ec0f43f5..d4094a2511 100644 --- a/apps/recorder/recording.c +++ b/apps/recorder/recording.c | |||
@@ -34,6 +34,9 @@ | |||
34 | #ifdef HAVE_UDA1380 | 34 | #ifdef HAVE_UDA1380 |
35 | #include "uda1380.h" | 35 | #include "uda1380.h" |
36 | #endif | 36 | #endif |
37 | #ifdef HAVE_TLV320 | ||
38 | #include "tlv320.h" | ||
39 | #endif | ||
37 | 40 | ||
38 | #include "mp3_playback.h" | 41 | #include "mp3_playback.h" |
39 | #include "mas.h" | 42 | #include "mas.h" |
@@ -109,6 +112,16 @@ | |||
109 | #define REC_RC_PREV BUTTON_RC_REW | 112 | #define REC_RC_PREV BUTTON_RC_REW |
110 | #define REC_RC_SETTINGS BUTTON_RC_MODE | 113 | #define REC_RC_SETTINGS BUTTON_RC_MODE |
111 | 114 | ||
115 | #elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) | ||
116 | #define REC_SHUTDOWN (BUTTON_POWER | BUTTON_REPEAT) | ||
117 | #define REC_STOPEXIT BUTTON_POWER | ||
118 | #define REC_RECPAUSE BUTTON_REC | ||
119 | #define REC_INC BUTTON_RIGHT | ||
120 | #define REC_DEC BUTTON_LEFT | ||
121 | #define REC_NEXT BUTTON_DOWN | ||
122 | #define REC_PREV BUTTON_UP | ||
123 | #define REC_SETTINGS BUTTON_PLAY | ||
124 | |||
112 | #elif CONFIG_KEYPAD == GMINI100_PAD | 125 | #elif CONFIG_KEYPAD == GMINI100_PAD |
113 | #define REC_SHUTDOWN (BUTTON_OFF | BUTTON_REPEAT) | 126 | #define REC_SHUTDOWN (BUTTON_OFF | BUTTON_REPEAT) |
114 | #define REC_STOPEXIT BUTTON_OFF | 127 | #define REC_STOPEXIT BUTTON_OFF |
@@ -362,6 +375,9 @@ bool recording_screen(void) | |||
362 | audio_stop(); | 375 | audio_stop(); |
363 | /* Set peak meter to recording mode */ | 376 | /* Set peak meter to recording mode */ |
364 | peak_meter_playback(false); | 377 | peak_meter_playback(false); |
378 | #ifdef IAUDIO_X5 | ||
379 | pcm_rec_mux(0); /* select line-in (not radio) */ | ||
380 | #endif | ||
365 | 381 | ||
366 | #if defined(HAVE_SPDIF_IN) && !defined(SIMULATOR) | 382 | #if defined(HAVE_SPDIF_IN) && !defined(SIMULATOR) |
367 | if (global_settings.rec_source == SOURCE_SPDIF) | 383 | if (global_settings.rec_source == SOURCE_SPDIF) |