1
0
Fork 0
forked from len0rd/rockbox

radio.c presets.c small clean-up

remove some extern vars in favor of get/set functions

Change-Id: Ic4effae2acdd480beeab76c9f0319b1783a3bab3
This commit is contained in:
William Wilgus 2024-11-30 15:24:47 -05:00
parent fdc17096b5
commit 80a0bf590f
7 changed files with 65 additions and 42 deletions

View file

@ -46,15 +46,19 @@
static int curr_preset = -1;
extern int curr_freq; /* from radio.c.. naughty but meh */
extern int radio_mode;
int snap_freq_to_grid(int freq);
void remember_frequency(void);
#define FREQ_DISP_DIVISOR (10000)
#define MAX_PRESETS 64
static bool presets_loaded = false;
static bool presets_changed = false;
static struct fmstation presets[MAX_PRESETS];
static struct fmstation
{
int frequency; /* In Hz */
char name[MAX_FMPRESET_LEN+1];
} presets[MAX_PRESETS];
static char filepreset[MAX_PATH]; /* preset filename variable */
@ -68,10 +72,6 @@ int radio_preset_count(void)
{
return num_presets;
}
const struct fmstation *radio_get_preset(int preset)
{
return &presets[preset];
}
bool presets_have_changed(void)
{
@ -149,6 +149,8 @@ void preset_next(int direction)
if (num_presets < 1)
return;
int curr_freq = radio_get_current_frequency();
if (curr_preset == -1)
curr_preset = find_closest_preset(curr_freq, direction);
else
@ -156,7 +158,7 @@ void preset_next(int direction)
/* Must stay on the current grid for the region */
curr_freq = snap_freq_to_grid(presets[curr_preset].frequency);
radio_set_current_frequency(curr_freq);
tuner_set(RADIO_FREQUENCY, curr_freq);
remember_frequency();
}
@ -263,6 +265,13 @@ void radio_load_presets(char *filename)
presets_changed = false;
}
int radio_get_preset_freq(int preset)
{
if (preset < num_presets)
return presets[preset].frequency;
return -1;
}
const char* radio_get_preset_name(int preset)
{
if (preset < num_presets)
@ -282,7 +291,7 @@ int handle_radio_add_preset(void)
{
struct fmstation * const fms = &presets[num_presets];
strcpy(fms->name, buf);
fms->frequency = curr_freq;
fms->frequency = radio_get_current_frequency();
num_presets++;
presets_changed = true;
presets_loaded = num_presets > 0;
@ -340,7 +349,7 @@ static int radio_delete_preset(void)
if (!presets_changed)
{
/* The preset list will be cleared, switch to Scan Mode. */
radio_mode = RADIO_SCAN_MODE;
radio_set_mode(RADIO_SCAN_MODE);
curr_preset = -1;
presets_loaded = false;
}
@ -425,7 +434,7 @@ int preset_list_clear(void)
num_presets = 0;
presets_loaded = false;
/* The preset list will be cleared switch to Scan Mode. */
radio_mode = RADIO_SCAN_MODE;
radio_set_mode(RADIO_SCAN_MODE);
curr_preset = -1;
presets_changed = false; /* Don't ask to save when clearing the list. */
@ -459,7 +468,7 @@ static const char* presets_get_name(int selected_item, void *data,
struct fmstation *p = &presets[selected_item];
if(p->name[0])
return p->name;
int freq = p->frequency / 10000;
int freq = p->frequency / FREQ_DISP_DIVISOR;
int frac = freq % 100;
freq /= 100;
snprintf(buffer, buffer_len,
@ -509,7 +518,7 @@ int handle_radio_presets(void)
break;
case ACTION_STD_OK:
curr_preset = gui_synclist_get_sel_pos(&lists);
curr_freq = presets[curr_preset].frequency;
radio_set_current_frequency(presets[curr_preset].frequency);
next_station(0);
result = 1;
break;
@ -532,6 +541,7 @@ int handle_radio_presets(void)
int presets_scan(void *viewports)
{
bool do_scan = true;
int curr_freq = radio_get_current_frequency();
struct viewport *vp = (struct viewport *)viewports;
FOR_NB_SCREENS(i)
@ -556,7 +566,7 @@ int presets_scan(void *viewports)
if(num_presets >= MAX_PRESETS || action_userabort(TIMEOUT_NOBLOCK))
break;
freq = curr_freq / 10000;
freq = curr_freq / FREQ_DISP_DIVISOR;
frac = freq % 100;
freq /= 100;
@ -572,6 +582,7 @@ int presets_scan(void *viewports)
curr_freq += fmr->freq_step;
}
radio_set_current_frequency(curr_freq);
if (get_radio_status() == FMRADIO_PLAYING)
tuner_set(RADIO_MUTE, 0);
@ -586,8 +597,8 @@ int presets_scan(void *viewports)
if(num_presets > 0)
{
curr_freq = presets[0].frequency;
radio_mode = RADIO_PRESET_MODE;
radio_set_current_frequency(presets[0].frequency);
radio_set_mode(RADIO_PRESET_MODE);
presets_loaded = true;
next_station(0);
}