|  | @ -190,46 +190,48 @@ void app::tickSend(void) { | 
			
		
	
		
		
			
				
					|  |  |         } while ((NULL == iv) && ((maxLoop--) > 0)); |  |  |         } while ((NULL == iv) && ((maxLoop--) > 0)); | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |         if (NULL != iv) { |  |  |         if (NULL != iv) { | 
			
		
	
		
		
			
				
					
					|  |  |             if (!mPayload.isComplete(iv)) |  |  |             if(iv->config->enabled) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 mPayload.process(false, mConfig->nrf.maxRetransPerPyld, &mStat); |  |  |                 if (!mPayload.isComplete(iv)) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 
 |  |  |                     mPayload.process(false, mConfig->nrf.maxRetransPerPyld, &mStat); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             if (!mPayload.isComplete(iv)) { |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 if (0 == mPayload.getMaxPacketId(iv)) |  |  |                 if (!mPayload.isComplete(iv)) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                     mStat.rxFailNoAnser++; |  |  |                     if (0 == mPayload.getMaxPacketId(iv)) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 else |  |  |                         mStat.rxFailNoAnser++; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                     mStat.rxFail++; |  |  |                     else | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  | 
 |  |  |                         mStat.rxFail++; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 iv->setQueuedCmdFinished();  // command failed
 |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 if (mConfig->serial.debug) |  |  |                     iv->setQueuedCmdFinished();  // command failed
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                     DPRINTLN(DBG_INFO, F("enqueued cmd failed/timeout")); |  |  |                     if (mConfig->serial.debug) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 if (mConfig->serial.debug) { |  |  |                         DPRINTLN(DBG_INFO, F("enqueued cmd failed/timeout")); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                     DPRINT(DBG_INFO, F("(#") + String(iv->id) + ") "); |  |  |                     if (mConfig->serial.debug) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                     DPRINTLN(DBG_INFO, F("no Payload received! (retransmits: ") + String(mPayload.getRetransmits(iv)) + ")"); |  |  |                         DPRINT(DBG_INFO, F("(#") + String(iv->id) + ") "); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  |                         DPRINTLN(DBG_INFO, F("no Payload received! (retransmits: ") + String(mPayload.getRetransmits(iv)) + ")"); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					|  |  |                 } |  |  |                 } | 
			
		
	
		
		
			
				
					|  |  |             } |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |             mPayload.reset(iv, mTimestamp); |  |  |                 mPayload.reset(iv, mTimestamp); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             mPayload.request(iv); |  |  |                 mPayload.request(iv); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |             yield(); |  |  |                 yield(); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             if (mConfig->serial.debug) { |  |  |                 if (mConfig->serial.debug) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 DPRINTLN(DBG_DEBUG, F("app:loop WiFi WiFi.status ") + String(WiFi.status())); |  |  |                     DPRINTLN(DBG_DEBUG, F("app:loop WiFi WiFi.status ") + String(WiFi.status())); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 DPRINTLN(DBG_INFO, F("(#") + String(iv->id) + F(") Requesting Inv SN ") + String(iv->config->serial.u64, HEX)); |  |  |                     DPRINTLN(DBG_INFO, F("(#") + String(iv->id) + F(") Requesting Inv SN ") + String(iv->config->serial.u64, HEX)); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             } |  |  |                 } | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |             if (iv->devControlRequest) { |  |  |                 if (iv->devControlRequest) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 if (mConfig->serial.debug) |  |  |                     if (mConfig->serial.debug) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                     DPRINTLN(DBG_INFO, F("(#") + String(iv->id) + F(") Devcontrol request ") + String(iv->devControlCmd) + F(" power limit ") + String(iv->powerLimit[0])); |  |  |                         DPRINTLN(DBG_INFO, F("(#") + String(iv->id) + F(") Devcontrol request ") + String(iv->devControlCmd) + F(" power limit ") + String(iv->powerLimit[0])); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 mSys->Radio.sendControlPacket(iv->radioId.u64, iv->devControlCmd, iv->powerLimit); |  |  |                     mSys->Radio.sendControlPacket(iv->radioId.u64, iv->devControlCmd, iv->powerLimit); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 mPayload.setTxCmd(iv, iv->devControlCmd); |  |  |                     mPayload.setTxCmd(iv, iv->devControlCmd); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 iv->clearCmdQueue(); |  |  |                     iv->clearCmdQueue(); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 iv->enqueCommand<InfoCommand>(SystemConfigPara); // read back power limit
 |  |  |                     iv->enqueCommand<InfoCommand>(SystemConfigPara); // read back power limit
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             } else { |  |  |                 } else { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 uint8_t cmd = iv->getQueuedCmd(); |  |  |                     uint8_t cmd = iv->getQueuedCmd(); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 DPRINTLN(DBG_INFO, F("(#") + String(iv->id) + F(") sendTimePacket")); |  |  |                     DPRINTLN(DBG_INFO, F("(#") + String(iv->id) + F(") sendTimePacket")); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 mSys->Radio.sendTimePacket(iv->radioId.u64, cmd, mPayload.getTs(iv), iv->alarmMesIndex); |  |  |                     mSys->Radio.sendTimePacket(iv->radioId.u64, cmd, mPayload.getTs(iv), iv->alarmMesIndex); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 mPayload.setTxCmd(iv, cmd); |  |  |                     mPayload.setTxCmd(iv, cmd); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 mRxTicker = 0; |  |  |                     mRxTicker = 0; | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					|  |  |             } |  |  |             } | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |         } | 
			
		
	
		
		
			
				
					|  |  |     } else { |  |  |     } else { | 
			
		
	
	
		
		
			
				
					|  | 
 |