UI: Channel mode: load channel from cps and do basic validation
This commit is contained in:
parent
3365fe4d2f
commit
73c9ab56a6
|
|
@ -48,6 +48,7 @@ typedef struct
|
||||||
//bool tx_status;
|
//bool tx_status;
|
||||||
|
|
||||||
bool channelInfoUpdated;
|
bool channelInfoUpdated;
|
||||||
|
uint16_t channel_index;
|
||||||
channel_t channel;
|
channel_t channel;
|
||||||
uint8_t rtxStatus;
|
uint8_t rtxStatus;
|
||||||
uint8_t sqlLevel;
|
uint8_t sqlLevel;
|
||||||
|
|
|
||||||
|
|
@ -366,6 +366,12 @@ bool _ui_freq_check_limits(freq_t freq)
|
||||||
return valid;
|
return valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool _ui_channel_valid(channel_t* channel)
|
||||||
|
{
|
||||||
|
return _ui_freq_check_limits(channel->rx_frequency) &&
|
||||||
|
_ui_freq_check_limits(channel->tx_frequency);
|
||||||
|
}
|
||||||
|
|
||||||
bool _ui_drawDarkOverlay() {
|
bool _ui_drawDarkOverlay() {
|
||||||
// TODO: Make this 245 alpha and fix alpha frame swap
|
// TODO: Make this 245 alpha and fix alpha frame swap
|
||||||
color_t alpha_grey = {0, 0, 0, 255};
|
color_t alpha_grey = {0, 0, 0, 255};
|
||||||
|
|
@ -428,8 +434,18 @@ void ui_updateFSM(event_t event, bool *sync_rtx)
|
||||||
}
|
}
|
||||||
else if(msg.keys & KEY_ESC)
|
else if(msg.keys & KEY_ESC)
|
||||||
{
|
{
|
||||||
// Switch to MEM screen
|
// Try to load selected channel
|
||||||
state.ui_screen = MAIN_MEM;
|
channel_t channel;
|
||||||
|
int result = nvm_readChannelData(&channel, state.channel_index);
|
||||||
|
// Read successful and channel is valid
|
||||||
|
if(result != -1 && _ui_channel_valid(&channel))
|
||||||
|
{
|
||||||
|
// Copy channel read to state
|
||||||
|
state.channel = channel;
|
||||||
|
*sync_rtx = true;
|
||||||
|
// Switch to MEM screen
|
||||||
|
state.ui_screen = MAIN_MEM;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(input_isNumberPressed(msg))
|
else if(input_isNumberPressed(msg))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,10 @@ void _ui_drawVFOMiddle(state_t* last_state)
|
||||||
|
|
||||||
void _ui_drawMEMMiddle(state_t* last_state)
|
void _ui_drawMEMMiddle(state_t* last_state)
|
||||||
{
|
{
|
||||||
// Print VFO frequencies
|
// Print Channel name
|
||||||
|
gfx_print(layout.line1_left, last_state->channel.name, layout.line1_font, TEXT_ALIGN_CENTER,
|
||||||
|
color_white);
|
||||||
|
// Print Channel frequencies
|
||||||
char freq_buf[20] = "";
|
char freq_buf[20] = "";
|
||||||
snprintf(freq_buf, sizeof(freq_buf), " Rx:%03u.%05u",
|
snprintf(freq_buf, sizeof(freq_buf), " Rx:%03u.%05u",
|
||||||
last_state->channel.rx_frequency/1000000,
|
last_state->channel.rx_frequency/1000000,
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
// Simulate CPS with 8 channels
|
// Simulate CPS with 8 channels
|
||||||
const uint32_t maxNumChannels = 8;
|
const uint32_t maxNumChannels = 8;
|
||||||
|
const freq_t dummy_base_freq = 145500000;
|
||||||
|
|
||||||
void nvm_init()
|
void nvm_init()
|
||||||
{
|
{
|
||||||
|
|
@ -35,10 +36,11 @@ int nvm_readChannelData(channel_t *channel, uint16_t pos)
|
||||||
{
|
{
|
||||||
if(pos > maxNumChannels) return -1;
|
if(pos > maxNumChannels) return -1;
|
||||||
|
|
||||||
/*
|
/* Generate dummy channel name */
|
||||||
* Generate dummy channel name
|
|
||||||
*/
|
|
||||||
snprintf(channel->name, 16, "Channel %d", pos);
|
snprintf(channel->name, 16, "Channel %d", pos);
|
||||||
|
/* Generate dummy frequency values */
|
||||||
|
channel->rx_frequency = dummy_base_freq + pos * 100000;
|
||||||
|
channel->tx_frequency = dummy_base_freq + pos * 100000;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue