Fix M17 callsign management

Now a default callsign "OPNRTX" is used in M17 mode, and when the user
sets its own callsign in the settings menu, that one is correctly used
instead. Add initialization to RTX data structure.
This commit is contained in:
Niccolò Izzo 2021-09-06 08:53:57 +02:00
parent e60d79241d
commit 120fd92d73
5 changed files with 21 additions and 13 deletions

View File

@ -77,9 +77,9 @@ void OpMode_M17::update(rtxStatus_t *const status, const bool newCfg)
audio_enableMic();
radio_enableTx();
// TODO: Allow destinations different than broadcast
std::string source_address("OPNRTX");
m17Tx.start(source_address);
std::string source_address(status->source_address);
std::string destination_address(status->destination_address);
m17Tx.start(source_address, destination_address);
status->opStatus = TX;
}

View File

@ -27,7 +27,7 @@
pthread_mutex_t *cfgMutex; // Mutex for incoming config messages
const rtxStatus_t *newCnf; // Pointer for incoming config messages
rtxStatus_t rtxStatus; // RTX driver status
rtxStatus_t rtxStatus = { 0 }; // RTX driver status
float rssi; // Current RSSI in dBm
bool reinitFilter; // Flag for RSSI filter re-initialisation

View File

@ -82,6 +82,9 @@ void state_init()
state.emergency = false;
// Initialize M17_data
strncpy(state.m17_data.callsign, "OPNRTX", 10);
// Read settings from flash memory
// NOTE: Disable reading VFO from flash until persistence is implemented
//int valid = nvm_readSettings(&state.settings);

View File

@ -103,6 +103,10 @@ void *ui_task(void *arg)
rtx_cfg.txTone = ctcss_tone[state.channel.fm.txTone];
pthread_mutex_unlock(&rtx_mutex);
// Copy new M17 source and destination addresses
strncpy(rtx_cfg.source_address, state.m17_data.callsign, 10);
strncpy(rtx_cfg.destination_address, "", 10);
rtx_configure(&rtx_cfg);
sync_rtx = false;
}

View File

@ -1324,8 +1324,9 @@ void ui_updateFSM(event_t event, bool *sync_rtx)
{
_ui_textInputConfirm(ui_state.new_callsign);
// Save selected callsign and disable input mode
strcpy(state.m17_data.callsign, ui_state.new_callsign);
strncpy(state.m17_data.callsign, ui_state.new_callsign, 10);
ui_state.edit_mode = false;
*sync_rtx = true;
}
else if(msg.keys & KEY_ESC)
// Discard selected callsign and disable input mode