summaryrefslogtreecommitdiff
path: root/apps/recorder
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2006-07-21 08:42:28 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2006-07-21 08:42:28 +0000
commited4d7a33bdeba5ce11512ee617398a2840797203 (patch)
tree1027077148ace8e13c8fa49ae3794b2038a2d67a /apps/recorder
parente8818efbe9c814ad3b46ee0e5d0ae250b7c96cf4 (diff)
downloadrockbox-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.c57
-rw-r--r--apps/recorder/recording.c16
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)