mirror of
				https://github.com/Show-maket/IR-protocol.git
				synced 2025-10-29 18:12:36 +00:00 
			
		
		
		
	refactor
This commit is contained in:
		
							
								
								
									
										58
									
								
								IR_Decoder.h
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								IR_Decoder.h
									
									
									
									
									
								
							| @ -5,6 +5,11 @@ | ||||
|  | ||||
| class IR_Decoder : public IR_DecoderRaw | ||||
| { | ||||
| private: | ||||
|     // static std::list<IR_Decoder *> dec_list; | ||||
|     static std::list<IR_Decoder*>& get_dec_list(); | ||||
|     void _tick(); | ||||
|  | ||||
|     uint32_t acceptSendTimer; | ||||
|     bool isWaitingAcceptSend; | ||||
|     uint16_t addrAcceptSendTo; | ||||
| @ -19,59 +24,16 @@ public: | ||||
|     PacketTypes::Request gotRequest; | ||||
|     PacketTypes::BasePack gotRaw; | ||||
|  | ||||
|     IR_Decoder(const uint8_t isrPin, uint16_t addr, IR_Encoder *encPair = nullptr) : IR_DecoderRaw(isrPin, addr, encPair) {} | ||||
|     IR_Decoder(const uint8_t isrPin, uint16_t addr, IR_Encoder *encPair = nullptr); | ||||
|     ~IR_Decoder(); | ||||
|  | ||||
|     void tick() | ||||
|     { | ||||
|         IR_DecoderRaw::tick(); | ||||
|         if (availableRaw()) | ||||
|         { | ||||
| #ifdef IRDEBUG_INFO | ||||
|             Serial.println("PARSING RAW DATA"); | ||||
| #endif | ||||
|             isWaitingAcceptSend = false; | ||||
|             switch (packInfo.buffer[0] >> 5 & IR_MASK_MSG_TYPE) | ||||
|             { | ||||
|             case IR_MSG_DATA_ACCEPT: | ||||
|             case IR_MSG_DATA_NOACCEPT: | ||||
|                 gotData.set(&packInfo, id); | ||||
|                 break; | ||||
|             case IR_MSG_BACK: | ||||
|             case IR_MSG_BACK_TO: | ||||
|                 gotBackData.set(&packInfo, id); | ||||
|                 break; | ||||
|             case IR_MSG_REQUEST: | ||||
|                 gotRequest.set(&packInfo, id); | ||||
|                 break; | ||||
|             case IR_MSG_ACCEPT: | ||||
|                 gotAccept.set(&packInfo, id); | ||||
|                 break; | ||||
|     static void tick(); | ||||
|  | ||||
|             default: | ||||
|                 break; | ||||
|             } | ||||
|             if (gotData.isAvailable && (gotData.getMsgType() == IR_MSG_DATA_ACCEPT)) | ||||
|             { | ||||
|                 acceptSendTimer = millis(); | ||||
|                 addrAcceptSendTo = gotData.getAddrFrom(); | ||||
|                 acceptCustomByte = crc8(gotData.getDataPrt(), 0, gotData.getDataSize(), poly1); | ||||
|                 if (addrAcceptSendTo && addrAcceptSendTo < IR_Broadcast) | ||||
|                     isWaitingAcceptSend = true; | ||||
|             } | ||||
|             gotRaw.set(&packInfo, id); | ||||
|         } | ||||
|         if (isWaitingAcceptSend && millis() - acceptSendTimer > 75) | ||||
|         { | ||||
|             encoder->sendAccept(addrAcceptSendTo, acceptCustomByte); | ||||
|             isWaitingAcceptSend = false; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     void setAcceptDelay(uint16_t acceptDelay) | ||||
|     inline void setAcceptDelay(uint16_t acceptDelay) | ||||
|     { | ||||
|         this->acceptDelay = acceptDelay; | ||||
|     } | ||||
|     uint16_t getAcceptDelay() | ||||
|     inline uint16_t getAcceptDelay() | ||||
|     { | ||||
|         return this->acceptDelay; | ||||
|     } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user