Reset the mode's state machines when going to the disabled state.

This commit is contained in:
Jonathan Naylor
2019-01-19 17:15:24 +00:00
parent b16aaa653c
commit ae9e6ea6ab
15 changed files with 286 additions and 2 deletions

View File

@@ -71,6 +71,7 @@ m_maxRSSI(0U),
m_minRSSI(0U),
m_aveRSSI(0U),
m_rssiCount(0U),
m_enabled(true),
m_fp(NULL)
{
assert(display != NULL);
@@ -1086,3 +1087,30 @@ bool CNXDNControl::isBusy() const
{
return m_rfState != RS_RF_LISTENING || m_netState != RS_NET_IDLE;
}
void CNXDNControl::enable(bool enabled)
{
if (!enabled && m_enabled) {
m_queue.clear();
// Reset the RF section
m_rfState = RS_RF_LISTENING;
m_rfMask = 0x00U;
m_rfLayer3.reset();
m_rfTimeoutTimer.stop();
// Reset the networking section
m_netState = RS_NET_IDLE;
m_netMask = 0x00U;
m_netLayer3.reset();
m_netTimeoutTimer.stop();
m_networkWatchdog.stop();
m_packetTimer.stop();
}
m_enabled = enabled;
}