mirror of
https://github.com/Rockbox/rockbox.git
synced 2026-10-10 08:03:04 -04:00
Clipzip, ClipPlus other devices may be similar Autoscan from the main menu and the device hangs at scanning 88.1 try to record with no station set and it just records static Change-Id: I59fe17dde80736e4fae8445c0aea7fcf5e476317
161 lines
5.1 KiB
C
161 lines
5.1 KiB
C
/***************************************************************************
|
|
* __________ __ ___.
|
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
|
* \/ \/ \/ \/ \/
|
|
*
|
|
* Copyright (C) 2003 Linus Nielsen Feltzing
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
|
* KIND, either express or implied.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#include <stdio.h>
|
|
#include "config.h"
|
|
#include "menu.h"
|
|
#include "icon.h"
|
|
#include "radio.h"
|
|
#include "lang.h"
|
|
#include "settings.h"
|
|
#include "presets.h"
|
|
#include "exported_menus.h"
|
|
#include "sound_menu.h" /* recording_menu() */
|
|
#include "talk.h"
|
|
|
|
#ifdef HAVE_RECORDING
|
|
#include "recording.h" /* recording_screen() */
|
|
|
|
#if defined(HAVE_FMRADIO_REC)
|
|
#define FM_RECORDING_SCREEN
|
|
static int fm_recording_screen(void)
|
|
{
|
|
bool ret;
|
|
|
|
if (radio_get_current_frequency() == 0)
|
|
return 0;
|
|
|
|
/* switch recording source to FMRADIO for the duration */
|
|
int rec_source = global_settings.rec_source;
|
|
global_settings.rec_source = AUDIO_SRC_FMRADIO;
|
|
ret = recording_screen(true);
|
|
|
|
/* safe to reset as changing sources is prohibited here */
|
|
global_settings.rec_source = rec_source;
|
|
|
|
return ret;
|
|
}
|
|
|
|
MENUITEM_FUNCTION(recscreen_item, 0, ID2P(LANG_RECORDING),
|
|
fm_recording_screen, NULL, Icon_Recording);
|
|
#endif /* defined(HAVE_FMRADIO_REC) */
|
|
|
|
#if defined(HAVE_FMRADIO_REC)
|
|
#define FM_RECORDING_SETTINGS
|
|
static int fm_recording_settings(void)
|
|
{
|
|
int ret = recording_menu(true);
|
|
|
|
return ret;
|
|
}
|
|
|
|
MENUITEM_FUNCTION(recsettings_item, 0, ID2P(LANG_RECORDING_SETTINGS),
|
|
fm_recording_settings, NULL, Icon_Recording);
|
|
#endif /* defined(HAVE_FMRADIO_REC) */
|
|
#endif /* HAVE_RECORDING */
|
|
|
|
#ifndef FM_PRESET
|
|
MENUITEM_FUNCTION(radio_presets_item, 0, ID2P(LANG_PRESET),
|
|
handle_radio_presets, NULL, Icon_NOICON);
|
|
#endif
|
|
#ifndef FM_PRESET_ADD
|
|
MENUITEM_FUNCTION(radio_addpreset_item, 0, ID2P(LANG_FM_ADD_PRESET),
|
|
handle_radio_add_preset, NULL, Icon_NOICON);
|
|
#endif
|
|
|
|
MENUITEM_FUNCTION(presetload_item, 0, ID2P(LANG_FM_PRESET_LOAD),
|
|
preset_list_load, NULL, Icon_NOICON);
|
|
MENUITEM_FUNCTION(presetsave_item, 0, ID2P(LANG_FM_PRESET_SAVE),
|
|
preset_list_save, NULL, Icon_NOICON);
|
|
MENUITEM_FUNCTION(presetclear_item, 0, ID2P(LANG_FM_PRESET_CLEAR),
|
|
preset_list_clear, NULL, Icon_NOICON);
|
|
|
|
MENUITEM_SETTING(set_region, &global_settings.fm_region, NULL);
|
|
MENUITEM_SETTING(force_mono, &global_settings.fm_force_mono, NULL);
|
|
#if defined(HAVE_RDS_CAP) && defined(CONFIG_RTC)
|
|
MENUITEM_SETTING(sync_rds_time, &global_settings.sync_rds_time, NULL);
|
|
#endif
|
|
|
|
#ifndef FM_MODE
|
|
|
|
static char* get_mode_text(int selected_item, void * data,
|
|
char *buffer, size_t buffer_len)
|
|
{
|
|
int radio_mode = radio_get_mode();
|
|
(void)selected_item;
|
|
(void)data;
|
|
snprintf(buffer, buffer_len, "%s %s", str(LANG_MODE),
|
|
radio_mode ? str(LANG_PRESET) :
|
|
str(LANG_RADIO_SCAN_MODE));
|
|
return buffer;
|
|
}
|
|
static int mode_speak_item(int selected_item, void * data)
|
|
{
|
|
int radio_mode = radio_get_mode();
|
|
(void)selected_item;
|
|
(void)data;
|
|
long talk_ids[4];
|
|
talk_ids[0] = LANG_MODE;
|
|
talk_ids[1] = radio_mode != RADIO_SCAN_MODE? LANG_PRESET : LANG_RADIO_SCAN_MODE;
|
|
talk_ids[2] = TALK_FINAL_ID;
|
|
talk_idarray(talk_ids, true);
|
|
return 0;
|
|
}
|
|
static int toggle_radio_mode(void)
|
|
{
|
|
int radio_mode = radio_get_mode();
|
|
radio_set_mode((radio_mode == RADIO_SCAN_MODE) ?
|
|
RADIO_PRESET_MODE : RADIO_SCAN_MODE);
|
|
return 0;
|
|
}
|
|
MENUITEM_FUNCTION_DYNTEXT(radio_mode_item, 0, toggle_radio_mode,
|
|
get_mode_text, mode_speak_item,
|
|
NULL, NULL, Icon_NOICON);
|
|
#endif
|
|
|
|
MENUITEM_FUNCTION_W_PARAM(scan_presets_item, 0,
|
|
ID2P(LANG_FM_SCAN_PRESETS),
|
|
presets_scan, NULL, NULL, Icon_NOICON);
|
|
|
|
MAKE_MENU(radio_settings_menu, ID2P(LANG_FM_MENU), NULL,
|
|
Icon_Radio_screen,
|
|
#ifndef FM_PRESET
|
|
&radio_presets_item,
|
|
#endif
|
|
#ifndef FM_PRESET_ADD
|
|
&radio_addpreset_item,
|
|
#endif
|
|
&presetload_item, &presetsave_item, &presetclear_item,
|
|
&force_mono,
|
|
#ifndef FM_MODE
|
|
&radio_mode_item,
|
|
#endif
|
|
&set_region, &sound_settings,
|
|
#ifdef FM_RECORDING_SCREEN
|
|
&recscreen_item,
|
|
#endif
|
|
#ifdef FM_RECORDING_SETTINGS
|
|
&recsettings_item,
|
|
#endif
|
|
#if defined(HAVE_RDS_CAP) && defined(CONFIG_RTC)
|
|
&sync_rds_time,
|
|
#endif
|
|
&scan_presets_item);
|
|
|