| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -57,6 +57,7 @@ class Communication : public CommQueue<> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        mHeu.printStatus(q->iv); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        mHeu.getTxCh(q->iv); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        mGotFragment = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        mFirstTry = mFirstTry ? false : ( (IV_HM == q->iv->ivGen) || (IV_MI == q->iv->ivGen) ) && (q->iv->isAvailable()); //) || (millis() < 120000));}
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        if(NULL == q->iv->radio) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            cmdDone(true); // can't communicate while radio is not defined!
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        mState = States::START; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -98,7 +99,7 @@ class Communication : public CommQueue<> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            DBGPRINT(String(millis() - mWaitTimeout + timeout)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            DBGPRINTLN(F("ms")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            if(!mGotFragment) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            if(!mGotFragment && !mFirstTry) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                q->iv->radioStatistics.rxFailNoAnser++; // got nothing
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                mHeu.setGotNothing(q->iv); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                                if((IV_HMS == q->iv->ivGen) || (IV_HMT == q->iv->ivGen)) { | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -112,6 +113,7 @@ class Communication : public CommQueue<> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        mGotFragment = true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        mFirstTry = false; // for correct reset
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        States nextState = States::RESET; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        while(!q->iv->radio->mBufCtrl.empty()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            packet_t *p = &q->iv->radio->mBufCtrl.front(); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -270,6 +272,7 @@ class Communication : public CommQueue<> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                record_t<> *rec = q->iv->getRecordStruct(RealTimeRunData_Debug);  // choose the record structure
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                rec->ts = q->ts; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                miStsConsolidate(q, ((p->packet[0] == 0x88) ? 1 : 2), rec, p->packet[10], p->packet[12], p->packet[9], p->packet[11]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                mHeu.setGotFragment(q->iv); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -512,6 +515,9 @@ class Communication : public CommQueue<> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                cmdDone(true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                mState = States::RESET; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                q->iv->radioStatistics.rxSuccess++; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                mHeu.setGotAll(q->iv); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                mHeu.setGotFragment(q->iv); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            /*if (mPayload[iv->id].multi_parts > 5) {
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -572,12 +578,14 @@ class Communication : public CommQueue<> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    //mPayload[iv->id].retransmits = 0; // reserve retransmissions for each response
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    //mPayload[iv->id].complete = false;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    miNextRequest((p->packet[0] - ALL_FRAMES + 1), q); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    mHeu.setGotFragment(q->iv); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                } else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    miComplete(q->iv); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } else if((p->packet[0] == (MI_REQ_CH1 + ALL_FRAMES)) && (q->iv->type == INV_TYPE_2CH)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                //addImportant(q->iv, MI_REQ_CH2);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                miNextRequest(MI_REQ_CH2, q); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                mHeu.setGotFragment(q->iv); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } else {                                    // first data msg for 1ch, 2nd for 2ch
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                miComplete(q->iv); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -709,7 +717,12 @@ class Communication : public CommQueue<> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            // update status state-machine,
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (ac_pow) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                iv->isProducing(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            mHeu.setGotAll(iv); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            cmdDone(true); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if(NULL != mCbPayload) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                (mCbPayload)(RealTimeRunData_Debug, iv); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            mState = States::RESET; // everything ok, next request
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    private: | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -729,6 +742,7 @@ class Communication : public CommQueue<> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        uint32_t mWaitTimeout = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        std::array<frame_t, MAX_PAYLOAD_ENTRIES> mLocalBuf; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        bool mGotFragment = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        bool mFirstTry = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        uint8_t mMaxFrameId; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        uint8_t mPayload[MAX_BUFFER]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        payloadListenerType mCbPayload = NULL; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |