// stFailure: entered upon HW init failure or max retries exceeded void stFailureTransition(void) { if (_transportSM.failureCounter < MY_TRANSPORT_MAX_TSM_FAILURES) { _transportSM.failureCounter++; // increment consecutive TSM failure counter } TRANSPORT_DEBUG(PSTR("TSM:FAIL:CNT=%d\n"),_transportSM.failureCounter); _transportSM.uplinkOk = false; // uplink nok _transportSM.transportActive = false; // transport inactive setIndication(INDICATION_ERR_INIT_TRANSPORT); #if defined(MY_SENSOR_NETWORK) TRANSPORT_DEBUG(PSTR("TSM:FAIL:PDT\n")); // power down transport, no need until re-init transportPowerDown(); #endif }
void nodeLock(const char* str) { // Make sure EEPROM is updated to locked status hwWriteConfig(EEPROM_NODE_LOCK_COUNTER, 0); while (1) { debug(PSTR("Node is locked. Ground pin %d and reset to unlock.\n"), MY_NODE_UNLOCK_PIN); #if defined(MY_GATEWAY_ESP8266) yield(); #endif _sendRoute(build(_msg, _nc.nodeId, GATEWAY_ADDRESS, NODE_SENSOR_ID, C_INTERNAL, I_LOCKED, false).set(str)); #if defined(MY_RADIO_FEATURE) transportPowerDown(); #endif (void)hwSleep((unsigned long)1000*60*30); // Sleep for 30 min before resending LOCKED message } }
int8_t sleep(unsigned long ms) { #if defined(MY_OTA_FIRMWARE_FEATURE) if (_fwUpdateOngoing) { // Do not sleep node while fw update is ongoing wait(ms); return -1; } #endif // if repeater, do not sleep #if defined(MY_REPEATER_FEATURE) wait(ms); return -1; #else #if defined(MY_RADIO_FEATURE) transportPowerDown(); #endif return hwSleep(ms); #endif }
int8_t sleep(uint8_t interrupt, uint8_t mode, unsigned long ms) { #if defined(MY_OTA_FIRMWARE_FEATURE) if (_fwUpdateOngoing) { // not supported return -2; } #endif #if defined(MY_REPEATER_FEATURE) // not supported (void)interrupt; (void)mode; (void)ms; return -2; #else #if defined(MY_RADIO_FEATURE) transportPowerDown(); #endif return hwSleep(interrupt, mode, ms); #endif }