Skip to content

Commit ff89821

Browse files
authored
Improve radio fail state check (#498)
1 parent 0a26d85 commit ff89821

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

libraries/MySensors/core/MyTransport.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ void stInitTransition() {
3636
// initialize status variables
3737
_transportSM.failedUplinkTransmissions = 0;
3838
_transportSM.pingActive = false;
39+
_transportSM.transportActive = false;
3940

4041
// Read node settings (ID, parentId, GW distance) from EEPROM
4142
hwReadConfigBlock((void*)&_nc, (void*)EEPROM_NODE_ID_ADDRESS, sizeof(NodeConfig));
@@ -48,6 +49,7 @@ void stInitTransition() {
4849
}
4950
else {
5051
debug(PSTR("RADIO:OK\n"));
52+
_transportSM.transportActive = true;
5153
#if defined(MY_GATEWAY_FEATURE)
5254
// Set configuration for gateway
5355
debug(PSTR("TSM:GW MODE\n"));
@@ -170,6 +172,7 @@ void stOKUpdate() {
170172
void stFailureTransition() {
171173
debug(PSTR("!TSM:FAILURE\n"));
172174
_transportSM.uplinkOk = false;
175+
_transportSM.transportActive = false;
173176
// power down transport, no need until re-init
174177
debug(PSTR("TSM:PDT\n"));
175178
transportPowerDown();
@@ -221,7 +224,7 @@ void transportProcess() {
221224
// update state machine
222225
transportUpdateSM();
223226
// process transport FIFO
224-
transportProcessFIFO();
227+
if (_transportSM.transportActive) transportProcessFIFO();
225228
}
226229

227230

libraries/MySensors/core/MyTransport.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ typedef struct {
6363
bool preferredParentFound : 1; //!< flag preferred parent found
6464
bool uplinkOk : 1; //!< flag uplink ok
6565
bool pingActive : 1; //!< flag ping active
66-
uint8_t reserved : 4; //!< reserved
66+
bool transportActive : 1; //!< flag transport active
67+
uint8_t reserved : 3; //!< reserved
6768
uint8_t retries : 4; //!< retries / state re-enter
6869
uint8_t failedUplinkTransmissions : 4; //!< counter failed uplink transmissions
6970
uint8_t pingResponse; //!< stores hops received in I_PONG

0 commit comments

Comments
 (0)