Exemple #1
0
// 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
}
Exemple #2
0
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
	}
}
Exemple #3
0
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
}
Exemple #4
0
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
}