Various MyTransport optimisations p2

This commit is contained in:
tekka007
2016-09-26 00:00:25 +02:00
27 changed files with 605 additions and 444 deletions
+23 -7
View File
@@ -74,6 +74,9 @@ void stInitTransition(void) {
}
void stInitUpdate(void) {
#if defined(MY_TRANSPORT_DONT_CARE_MODE)
TRANSPORT_DEBUG(PSTR("TSM:INIT:TDC\n")); // transport don't care mode
#endif
// initialise radio
if (!transportInit()) {
TRANSPORT_DEBUG(PSTR("!TSM:INIT:TSP FAIL\n"));
@@ -281,7 +284,6 @@ void stReadyUpdate(void) {
#if defined(MY_RAM_ROUTING_TABLE_ENABLED)
if (hwMillis() - _lastRoutingTableSave > MY_ROUTING_TABLE_SAVE_INTERVAL_MS) {
_lastRoutingTableSave = hwMillis();
TRANSPORT_DEBUG(PSTR("TSM:READY:SRT\n")); // save routing table
transportSaveRoutingTable();
}
#endif
@@ -341,6 +343,15 @@ bool isTransportSearchingParent(void) {
return _transportSM.findingParentNode;
}
bool isMessageReceived(void) {
return _transportSM.MsgReceived;
}
void resetMessageReceived(void) {
_transportSM.MsgReceived = false;
}
void transportInitialise(void) {
_transportSM.failureCounter = 0u; // reset failure counter
transportLoadRoutingTable(); // load routing table to RAM (if feature enabled)
@@ -566,6 +577,9 @@ void transportProcessMessage(void) {
transportSetRoute(sender, last);
}
#endif
// set message received flag
_transportSM.MsgReceived = true;
// Is message addressed to this node?
if (destination == _nc.nodeId) {
@@ -627,8 +641,8 @@ void transportProcessMessage(void) {
// general
if (type == I_PING) {
TRANSPORT_DEBUG(PSTR("TSF:MSG:PINGED,ID=%d,HP=%d\n"), sender, _msg.getByte()); // node pinged
// delay for slow nodes *****************************
#if defined(MY_GATEWAY_FEATURE) && (F_CPU<=16000000)
#if defined(MY_GATEWAY_FEATURE) && (F_CPU>16000000)
// delay for fast GW and slow nodes
delay(5);
#endif
(void)transportRouteMessage(build(_msgTmp, _nc.nodeId, sender, NODE_SENSOR_ID, C_INTERNAL, I_PONG, false).set((uint8_t)1));
@@ -819,8 +833,8 @@ bool transportSendWrite(const uint8_t to, MyMessage &message) {
}
void transportClearRoutingTable(void) {
for (uint8_t i = 0; i != 255; i++) {
transportSetRoute(i, BROADCAST_ADDRESS);
for (uint16_t i = 0; i < SIZE_ROUTES; i++) {
transportSetRoute((uint8_t)i, BROADCAST_ADDRESS);
}
transportSaveRoutingTable(); // save cleared routing table to EEPROM (if feature enabled)
TRANSPORT_DEBUG(PSTR("TSF:CRT:OK\n")); // clear routing table
@@ -828,13 +842,15 @@ void transportClearRoutingTable(void) {
void transportLoadRoutingTable(void) {
#if defined(MY_RAM_ROUTING_TABLE_ENABLED)
hwReadConfigBlock((void*)&_transportRoutingTable.route, (void*)EEPROM_ROUTES_ADDRESS, 256);
hwReadConfigBlock((void*)&_transportRoutingTable.route, (void*)EEPROM_ROUTES_ADDRESS, SIZE_ROUTES);
TRANSPORT_DEBUG(PSTR("TSF:LRT:OK\n")); // load routing table
#endif
}
void transportSaveRoutingTable(void) {
#if defined(MY_RAM_ROUTING_TABLE_ENABLED)
hwWriteConfigBlock((void*)EEPROM_ROUTES_ADDRESS, (void*)&_transportRoutingTable.route, 256);
hwWriteConfigBlock((void*)EEPROM_ROUTES_ADDRESS, (void*)&_transportRoutingTable.route, SIZE_ROUTES);
TRANSPORT_DEBUG(PSTR("TSF:SRT:OK\n")); // save routing table
#endif
}