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 | |
| parent | e8818efbe9c814ad3b46ee0e5d0ae250b7c96cf4 (diff) | |
| download | rockbox-ed4d7a33bdeba5ce11512ee617398a2840797203.zip rockbox-ed4d7a33bdeba5ce11512ee617398a2840797203.tar.gz rockbox-ed4d7a33bdeba5ce11512ee617398a2840797203.tar.bz2 rockbox-ed4d7a33bdeba5ce11512ee617398a2840797203.tar.xz | |
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')
| -rw-r--r-- | apps/main.c | 4 | ||||
| -rw-r--r-- | apps/recorder/radio.c | 57 | ||||
| -rw-r--r-- | apps/recorder/recording.c | 16 |
3 files changed, 70 insertions, 7 deletions
diff --git a/apps/main.c b/apps/main.c index 4f31cdb..8ee6adf 100644 --- a/apps/main.c +++ b/apps/main.c @@ -72,7 +72,7 @@ #else #define pcmbuf_init() #endif -#if (defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES)) && !defined(SIMULATOR) +#if (CONFIG_CODEC == SWCODEC) && defined(HAVE_RECORDING) && !defined(SIMULATOR) #include "pcm_record.h" #define SETTINGS_RESET BUTTON_REC #endif @@ -425,7 +425,7 @@ void init(void) talk_init(); audio_init(); -#if (defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES)) && !defined(SIMULATOR) +#if (CONFIG_CODEC == SWCODEC) && defined(HAVE_RECORDING) && !defined(SIMULATOR) pcm_rec_init(); #endif diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c index 291079b..a29620b 100644 --- a/apps/recorder/radio.c +++ b/apps/recorder/radio.c @@ -64,7 +64,13 @@ #ifdef CONFIG_TUNER #if CONFIG_CODEC == SWCODEC +#ifdef HAVE_UDA1380 #include "uda1380.h" +#endif +#ifdef HAVE_TLV320 +#include "tlv320.h" +#endif + #include "pcm_record.h" #endif @@ -109,6 +115,35 @@ #define FM_STOP BUTTON_OFF #define FM_RC_STOP BUTTON_RC_STOP +#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) +/* pause/play - short PLAY */ +#define FM_PLAY_PRE BUTTON_PLAY +#define FM_RC_PLAY_PRE BUTTON_RC_PLAY +#define FM_PLAY (BUTTON_PLAY | BUTTON_REL) +#define FM_RC_PLAY (BUTTON_RC_PLAY | BUTTON_REL) +/* preset/scan mode - long PLAY */ +#define FM_MODE (BUTTON_PLAY | BUTTON_REPEAT) +#define FM_RC_MODE (BUTTON_RC_PLAY | BUTTON_REPEAT) +/* preset menu - short SELECT */ +#define FM_PRESET_PRE BUTTON_SELECT +#define FM_RC_PRESET_PRE BUTTON_RC_MENU +#define FM_PRESET (BUTTON_SELECT | BUTTON_REL) +#define FM_RC_PRESET (BUTTON_RC_MENU | BUTTON_REL) +/* fm menu - long SELECT */ +#define FM_MENU (BUTTON_SELECT | BUTTON_REPEAT) +#define FM_RC_MENU (BUTTON_RC_MENU | BUTTON_REPEAT) +/* main menu(exit radio while playing) - REC */ +#define FM_EXIT_PRE BUTTON_REC +#define FM_EXIT (BUTTON_REC | BUTTON_REL) +#define FM_RC_EXIT_PRE BUTTON_RC_MODE +#define FM_RC_EXIT (BUTTON_RC_MODE | BUTTON_REL) +/* prev/next preset on the remote - REW/FF */ +#define FM_NEXT_PRESET (BUTTON_RC_FF | BUTTON_REL) +#define FM_PREV_PRESET (BUTTON_RC_REW | BUTTON_REL) +/* stop and exit radio - ON */ +#define FM_STOP BUTTON_POWER +#define FM_RC_STOP (BUTTON_RC_MODE | BUTTON_REPEAT) + #elif CONFIG_KEYPAD == ONDIO_PAD /* restricted keypad */ #define FM_MENU (BUTTON_MENU | BUTTON_REPEAT) #define FM_RECORD_DBLPRE BUTTON_MENU @@ -158,7 +193,7 @@ int radio_get(int setting); #if CONFIG_TUNER == S1A0903X01 /* FM recorder */ #define radio_set samsung_set #define radio_get samsung_get -#elif CONFIG_TUNER == TEA5767 /* Iriver */ +#elif CONFIG_TUNER == TEA5767 /* iriver, iaudio */ #define radio_set philips_set #define radio_get philips_get #elif CONFIG_TUNER == (S1A0903X01 | TEA5767) /* OndioFM */ @@ -387,8 +422,15 @@ bool radio_screen(void) #else peak_meter_enabled = false; + +#ifdef HAVE_UDA1380 uda1380_enable_recording(false); uda1380_set_monitor(true); +#elif defined(HAVE_TLV320) + //tlv320_enable_recording(false); + tlv320_set_recvol(23, 23, AUDIO_GAIN_LINEIN); /* 0dB */ + tlv320_set_monitor(true); +#endif /* Set the input multiplexer to FM */ pcm_rec_mux(1); @@ -971,7 +1013,7 @@ bool radio_screen(void) while(1) { button = button_get(true); - if(button == (BUTTON_OFF | BUTTON_REL)) + if(button == (FM_STOP | BUTTON_REL)) break; } } @@ -1004,6 +1046,11 @@ bool radio_screen(void) radio_stop(); #ifndef SIMULATOR /* SIMULATOR. Catch FMRADIO_OFF status for the sim. */ #if CONFIG_CODEC == SWCODEC +#ifdef HAVE_TLV320 + //tlv320_disable_recording(); + tlv320_set_monitor(false); +#endif + pcm_rec_mux(0); /* Line In */ peak_meter_enabled = true; #endif @@ -1320,7 +1367,7 @@ int handle_radio_presets_cb(int key, int m) key = BUTTON_NONE; break; #endif -#if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) +#if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) && (CONFIG_KEYPAD != IAUDIO_X5_PAD) #ifdef FM_PRESET case FM_PRESET: menu_draw(m); @@ -1565,7 +1612,7 @@ int radio_menu_cb(int key, int m) (void)m; switch(key) { -#if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) +#if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) && (CONFIG_KEYPAD != IAUDIO_X5_PAD) #ifdef MENU_ENTER2 case MENU_ENTER2: #endif @@ -1574,7 +1621,7 @@ int radio_menu_cb(int key, int m) key = BUTTON_NONE; /* eat the downpress, next menu reacts on release */ break; -#if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) +#if (CONFIG_KEYPAD != IRIVER_H100_PAD) && (CONFIG_KEYPAD != IRIVER_H300_PAD) && (CONFIG_KEYPAD != IAUDIO_X5_PAD) #ifdef MENU_ENTER2 case MENU_ENTER2 | BUTTON_REL: #endif diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c index 09ec0f4..d4094a2 100644 --- a/apps/recorder/recording.c +++ b/apps/recorder/recording.c @@ -34,6 +34,9 @@ #ifdef HAVE_UDA1380 #include "uda1380.h" #endif +#ifdef HAVE_TLV320 +#include "tlv320.h" +#endif #include "mp3_playback.h" #include "mas.h" @@ -109,6 +112,16 @@ #define REC_RC_PREV BUTTON_RC_REW #define REC_RC_SETTINGS BUTTON_RC_MODE +#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD) +#define REC_SHUTDOWN (BUTTON_POWER | BUTTON_REPEAT) +#define REC_STOPEXIT BUTTON_POWER +#define REC_RECPAUSE BUTTON_REC +#define REC_INC BUTTON_RIGHT +#define REC_DEC BUTTON_LEFT +#define REC_NEXT BUTTON_DOWN +#define REC_PREV BUTTON_UP +#define REC_SETTINGS BUTTON_PLAY + #elif CONFIG_KEYPAD == GMINI100_PAD #define REC_SHUTDOWN (BUTTON_OFF | BUTTON_REPEAT) #define REC_STOPEXIT BUTTON_OFF @@ -362,6 +375,9 @@ bool recording_screen(void) audio_stop(); /* Set peak meter to recording mode */ peak_meter_playback(false); +#ifdef IAUDIO_X5 + pcm_rec_mux(0); /* select line-in (not radio) */ +#endif #if defined(HAVE_SPDIF_IN) && !defined(SIMULATOR) if (global_settings.rec_source == SOURCE_SPDIF) |