mirror of
				https://github.com/Show-maket/IR-protocol.git
				synced 2025-10-29 01:52:35 +00:00 
			
		
		
		
	add customByte to Accept
This commit is contained in:
		| @ -14,7 +14,7 @@ | |||||||
|  |  | ||||||
| //////////////// Ini ///////////////// | //////////////// Ini ///////////////// | ||||||
|  |  | ||||||
| #define INFO "Машинка" | #define INFO "IR_FOX TEST" | ||||||
| #define SERIAL_SPEED 115200 | #define SERIAL_SPEED 115200 | ||||||
|  |  | ||||||
| //////////////// Var ///////////////// | //////////////// Var ///////////////// | ||||||
|  | |||||||
| @ -72,10 +72,11 @@ void IR_Encoder::sendData(uint16_t addrTo, uint8_t* data, uint8_t len, bool need | |||||||
|     rawSend(sendBuffer, packSize); |     rawSend(sendBuffer, packSize); | ||||||
| } | } | ||||||
|  |  | ||||||
| void IR_Encoder::sendAccept(uint16_t addrTo) { | void IR_Encoder::sendAccept(uint16_t addrTo, uint8_t customByte = 0) { | ||||||
|  |     constexpr uint8_t packsize = msgBytes + addrBytes + 1U + crcBytes; | ||||||
|     memset(sendBuffer, 0x00, dataByteSizeMax); |     memset(sendBuffer, 0x00, dataByteSizeMax); | ||||||
|     sendBuffer[0] = IR_MSG_ACCEPT << 5; |     sendBuffer[0] = IR_MSG_ACCEPT << 5; | ||||||
|     sendBuffer[0] |= msgBytes + addrBytes + crcBytes & IR_MASK_MSG_INFO; // размер пакета |     sendBuffer[0] |= packsize & IR_MASK_MSG_INFO; // размер пакета | ||||||
|  |  | ||||||
|     // addr_self |     // addr_self | ||||||
|     sendBuffer[1] = id >> 8 & 0xFF; |     sendBuffer[1] = id >> 8 & 0xFF; | ||||||
| @ -84,18 +85,20 @@ void IR_Encoder::sendAccept(uint16_t addrTo) { | |||||||
|     // Serial.print("\nRAW Accept to "); |     // Serial.print("\nRAW Accept to "); | ||||||
|     // Serial.println(addrTo); |     // Serial.println(addrTo); | ||||||
|  |  | ||||||
|  |     sendBuffer[3] = customByte; | ||||||
|  |  | ||||||
|     // data crc |     // data crc | ||||||
|     sendBuffer[3] = crc8(sendBuffer, 0, 3, poly1) & 0xFF; |     sendBuffer[4] = crc8(sendBuffer, 0, 4, poly1) & 0xFF; | ||||||
|     sendBuffer[4] = crc8(sendBuffer, 0, 4, poly2) & 0xFF; |     sendBuffer[5] = crc8(sendBuffer, 0, 5, poly2) & 0xFF; | ||||||
|  |  | ||||||
|     rawSend(sendBuffer, msgBytes + addrBytes + crcBytes); |     rawSend(sendBuffer, packsize); | ||||||
| } | } | ||||||
|  |  | ||||||
| void IR_Encoder::sendRequest(uint16_t addrTo) { | void IR_Encoder::sendRequest(uint16_t addrTo) { | ||||||
|  |      constexpr uint8_t packsize = msgBytes + addrBytes + addrBytes + crcBytes; | ||||||
|     memset(sendBuffer, 0x00, dataByteSizeMax); |     memset(sendBuffer, 0x00, dataByteSizeMax); | ||||||
|     sendBuffer[0] = IR_MSG_REQUEST << 5; |     sendBuffer[0] = IR_MSG_REQUEST << 5; | ||||||
|     sendBuffer[0] |= msgBytes + addrBytes + addrBytes + crcBytes & IR_MASK_MSG_INFO; |     sendBuffer[0] |= packsize & IR_MASK_MSG_INFO; | ||||||
|  |  | ||||||
|     // addr_self |     // addr_self | ||||||
|     sendBuffer[1] = id >> 8 & 0xFF; |     sendBuffer[1] = id >> 8 & 0xFF; | ||||||
| @ -109,7 +112,7 @@ void IR_Encoder::sendRequest(uint16_t addrTo) { | |||||||
|     sendBuffer[5] = crc8(sendBuffer, 0, 5, poly1) & 0xFF; |     sendBuffer[5] = crc8(sendBuffer, 0, 5, poly1) & 0xFF; | ||||||
|     sendBuffer[6] = crc8(sendBuffer, 0, 6, poly2) & 0xFF; |     sendBuffer[6] = crc8(sendBuffer, 0, 6, poly2) & 0xFF; | ||||||
|  |  | ||||||
|     rawSend(sendBuffer, msgBytes + addrBytes + addrBytes + crcBytes); |     rawSend(sendBuffer, packsize); | ||||||
| } | } | ||||||
|  |  | ||||||
| void IR_Encoder::sendBack(uint8_t* data = nullptr, uint8_t len = 0) { | void IR_Encoder::sendBack(uint8_t* data = nullptr, uint8_t len = 0) { | ||||||
|  | |||||||
| @ -45,7 +45,7 @@ public: | |||||||
|     void IR_Encoder::setBlindDecoders(IR_DecoderRaw* decoders [], uint8_t count); |     void IR_Encoder::setBlindDecoders(IR_DecoderRaw* decoders [], uint8_t count); | ||||||
|     void rawSend(uint8_t* ptr, uint8_t len); |     void rawSend(uint8_t* ptr, uint8_t len); | ||||||
|     void sendData(uint16_t addrTo, uint8_t* data, uint8_t len, bool needAccept = false); |     void sendData(uint16_t addrTo, uint8_t* data, uint8_t len, bool needAccept = false); | ||||||
|     void sendAccept(uint16_t addrTo); |     void sendAccept(uint16_t addrTo, uint8_t customByte = 0); | ||||||
|     void sendRequest(uint16_t addrTo); |     void sendRequest(uint16_t addrTo); | ||||||
|     void sendBack(uint8_t* data = nullptr, uint8_t len = 0); |     void sendBack(uint8_t* data = nullptr, uint8_t len = 0); | ||||||
|     void sendBackTo(uint16_t addrTo, uint8_t* data = nullptr, uint8_t len = 0); |     void sendBackTo(uint16_t addrTo, uint8_t* data = nullptr, uint8_t len = 0); | ||||||
|  | |||||||
							
								
								
									
										18
									
								
								IR_config.h
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								IR_config.h
									
									
									
									
									
								
							| @ -52,15 +52,15 @@ msg type: | |||||||
|  |  | ||||||
| /```````````````````` подтверждение ```````````````````\      /``````````````````````````````````````` запрос ``````````````````````````````````\ | /```````````````````` подтверждение ```````````````````\      /``````````````````````````````````````` запрос ``````````````````````````````````\ | ||||||
|                                                                                                                        |                                                                                                                        | ||||||
| {``````````} [````````````````````````] [``````````````]      {``````````} [````````````````````````] [````````````````````````] [``````````````] | {``````````} [````````````````````````] [``````````````````] [``````````````]      {``````````} [````````````````````````] [````````````````````````] [``````````````] | ||||||
| { msg type } [   addr_from uint16_t   ] [   CRC Bytes  ]      { msg type } [   addr_from uint16_t   ] [    addr_to uint16_t    ] [   CRC Bytes  ] | { msg type } [   addr_from uint16_t   ] [=== customByte ===] [   CRC Bytes  ]      { msg type } [   addr_from uint16_t   ] [    addr_to uint16_t    ] [   CRC Bytes  ] | ||||||
| {..........} [........................] [..............]      {..........} [........................] [........................] [..............] | {..........} [........................] [..................] [..............]      {..........} [........................] [........................] [..............] | ||||||
|                                                                                                                                                   |                                                                                                                                                              | ||||||
| { 001..... } [addr_from_H][addr_from_L] [ crc1 ][ crc2 ]      { 010..... } [addr_from_H][addr_from_L] [addr_from_H][addr_from_L] [ crc1 ][ crc2 ] | { 001..... } [addr_from_H][addr_from_L] [=== customByte ===] [ crc1 ][ crc2 ]      { 010..... } [addr_from_H][addr_from_L] [addr_from_H][addr_from_L] [ crc1 ][ crc2 ] | ||||||
| |     0            1           2           3       4          |     0            1           2              3           4           5       6     | |     0            1           2                  3              4       5          |     0            1           2              3           4           5       6     | ||||||
| \__________________________________________/       |          \_____________________________________________________________________/       |     | \________________________________________________________________/       |          \_____________________________________________________________________/       |     | ||||||
| |                                                  |          |                                                                             |     | |                                                                        |          |                                                                             |     | ||||||
| \__________________________________________________/          \_____________________________________________________________________________/     | \________________________________________________________________________/          \_____________________________________________________________________________/     | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
| @ -50,10 +50,6 @@ namespace PacketTypes { | |||||||
|         static uint8_t _getDataRawSize(BasePack* obj) { |         static uint8_t _getDataRawSize(BasePack* obj) { | ||||||
|             return obj->packInfo->packSize; |             return obj->packInfo->packSize; | ||||||
|         }; |         }; | ||||||
|         static uint8_t* _getDataRawPtr(BasePack* obj) { |  | ||||||
|             return obj->packInfo->buffer; |  | ||||||
|         }; |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     public: |     public: | ||||||
|         bool available() { if (isAvailable) { isAvailable = false; isRawAvailable = false; return true; } else { return false; } }; |         bool available() { if (isAvailable) { isAvailable = false; isRawAvailable = false; return true; } else { return false; } }; | ||||||
| @ -66,6 +62,7 @@ namespace PacketTypes { | |||||||
|         uint8_t getErrorHighSignal() { return packInfo->err.highSignal; }; |         uint8_t getErrorHighSignal() { return packInfo->err.highSignal; }; | ||||||
|         uint8_t getErrorOther() { return packInfo->err.other; }; |         uint8_t getErrorOther() { return packInfo->err.other; }; | ||||||
|         uint16_t getTunerTime() { return packInfo->rTime; }; |         uint16_t getTunerTime() { return packInfo->rTime; }; | ||||||
|  |         uint8_t* getDataRawPtr() { return packInfo->buffer; }; | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -84,7 +81,6 @@ namespace PacketTypes { | |||||||
|         uint8_t getDataSize() { return _getDataSize(this); }; |         uint8_t getDataSize() { return _getDataSize(this); }; | ||||||
|         uint8_t* getDataPrt() { return _getDataPrt(this); }; |         uint8_t* getDataPrt() { return _getDataPrt(this); }; | ||||||
|         uint8_t getDataRawSize() { return _getDataRawSize(this); }; |         uint8_t getDataRawSize() { return _getDataRawSize(this); }; | ||||||
|         uint8_t* getDataRawPtr() { return _getDataRawPtr(this); }; |  | ||||||
|  |  | ||||||
|     private: |     private: | ||||||
|         bool checkAddress() override { |         bool checkAddress() override { | ||||||
| @ -109,7 +105,6 @@ namespace PacketTypes { | |||||||
|         uint8_t getDataSize() { return _getDataSize(this); }; |         uint8_t getDataSize() { return _getDataSize(this); }; | ||||||
|         uint8_t* getDataPrt() { return _getDataPrt(this); }; |         uint8_t* getDataPrt() { return _getDataPrt(this); }; | ||||||
|         uint8_t getDataRawSize() { return _getDataRawSize(this); }; |         uint8_t getDataRawSize() { return _getDataRawSize(this); }; | ||||||
|         uint8_t* getDataRawPtr() { return _getDataRawPtr(this); }; |  | ||||||
|     private: |     private: | ||||||
|         bool checkAddress() override { |         bool checkAddress() override { | ||||||
|             bool ret; |             bool ret; | ||||||
| @ -129,10 +124,11 @@ namespace PacketTypes { | |||||||
|         Accept() { |         Accept() { | ||||||
|             msgOffset = 0; |             msgOffset = 0; | ||||||
|             addressFromOffset = 1; |             addressFromOffset = 1; | ||||||
|             DataOffset = 1; |             DataOffset = 3; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         uint16_t getAddrFrom() { return  _getAddrFrom(this); }; |         uint16_t getAddrFrom() { return  _getAddrFrom(this); }; | ||||||
|  |         uint8_t getCustomByte() { return packInfo->buffer[DataOffset]; }; | ||||||
|     private: |     private: | ||||||
|         bool checkAddress() override { return true; } |         bool checkAddress() override { return true; } | ||||||
|     }; |     }; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user