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 ///////////////// | ||||
|  | ||||
| #define INFO "Машинка" | ||||
| #define INFO "IR_FOX TEST" | ||||
| #define SERIAL_SPEED 115200 | ||||
|  | ||||
| //////////////// Var ///////////////// | ||||
|  | ||||
| @ -72,10 +72,11 @@ void IR_Encoder::sendData(uint16_t addrTo, uint8_t* data, uint8_t len, bool need | ||||
|     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); | ||||
|     sendBuffer[0] = IR_MSG_ACCEPT << 5; | ||||
|     sendBuffer[0] |= msgBytes + addrBytes + crcBytes & IR_MASK_MSG_INFO; // размер пакета | ||||
|     sendBuffer[0] |= packsize & IR_MASK_MSG_INFO; // размер пакета | ||||
|  | ||||
|     // addr_self | ||||
|     sendBuffer[1] = id >> 8 & 0xFF; | ||||
| @ -84,18 +85,20 @@ void IR_Encoder::sendAccept(uint16_t addrTo) { | ||||
|     // Serial.print("\nRAW Accept to "); | ||||
|     // Serial.println(addrTo); | ||||
|  | ||||
|     sendBuffer[3] = customByte; | ||||
|  | ||||
|     // data crc | ||||
|     sendBuffer[3] = crc8(sendBuffer, 0, 3, poly1) & 0xFF; | ||||
|     sendBuffer[4] = crc8(sendBuffer, 0, 4, poly2) & 0xFF; | ||||
|     sendBuffer[4] = crc8(sendBuffer, 0, 4, poly1) & 0xFF; | ||||
|     sendBuffer[5] = crc8(sendBuffer, 0, 5, poly2) & 0xFF; | ||||
|  | ||||
|     rawSend(sendBuffer, msgBytes + addrBytes + crcBytes); | ||||
|     rawSend(sendBuffer, packsize); | ||||
| } | ||||
|  | ||||
| void IR_Encoder::sendRequest(uint16_t addrTo) { | ||||
|      constexpr uint8_t packsize = msgBytes + addrBytes + addrBytes + crcBytes; | ||||
|     memset(sendBuffer, 0x00, dataByteSizeMax); | ||||
|     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 | ||||
|     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[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) { | ||||
|  | ||||
| @ -45,7 +45,7 @@ public: | ||||
|     void IR_Encoder::setBlindDecoders(IR_DecoderRaw* decoders [], uint8_t count); | ||||
|     void rawSend(uint8_t* ptr, uint8_t len); | ||||
|     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 sendBack(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  ] | ||||
| {..........} [........................] [..............]      {..........} [........................] [........................] [..............] | ||||
|                                                                                                                                                   | ||||
| { 001..... } [addr_from_H][addr_from_L] [ 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     | ||||
| \__________________________________________/       |          \_____________________________________________________________________/       |     | ||||
| |                                                  |          |                                                                             |     | ||||
| \__________________________________________________/          \_____________________________________________________________________________/     | ||||
| {``````````} [````````````````````````] [``````````````````] [``````````````]      {``````````} [````````````````````````] [````````````````````````] [``````````````] | ||||
| { 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] [=== customByte ===] [ crc1 ][ crc2 ]      { 010..... } [addr_from_H][addr_from_L] [addr_from_H][addr_from_L] [ crc1 ][ crc2 ] | ||||
| |     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) { | ||||
|             return obj->packInfo->packSize; | ||||
|         }; | ||||
|         static uint8_t* _getDataRawPtr(BasePack* obj) { | ||||
|             return obj->packInfo->buffer; | ||||
|         }; | ||||
|  | ||||
|  | ||||
|     public: | ||||
|         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 getErrorOther() { return packInfo->err.other; }; | ||||
|         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* getDataPrt() { return _getDataPrt(this); }; | ||||
|         uint8_t getDataRawSize() { return _getDataRawSize(this); }; | ||||
|         uint8_t* getDataRawPtr() { return _getDataRawPtr(this); }; | ||||
|  | ||||
|     private: | ||||
|         bool checkAddress() override { | ||||
| @ -109,7 +105,6 @@ namespace PacketTypes { | ||||
|         uint8_t getDataSize() { return _getDataSize(this); }; | ||||
|         uint8_t* getDataPrt() { return _getDataPrt(this); }; | ||||
|         uint8_t getDataRawSize() { return _getDataRawSize(this); }; | ||||
|         uint8_t* getDataRawPtr() { return _getDataRawPtr(this); }; | ||||
|     private: | ||||
|         bool checkAddress() override { | ||||
|             bool ret; | ||||
| @ -129,10 +124,11 @@ namespace PacketTypes { | ||||
|         Accept() { | ||||
|             msgOffset = 0; | ||||
|             addressFromOffset = 1; | ||||
|             DataOffset = 1; | ||||
|             DataOffset = 3; | ||||
|         } | ||||
|  | ||||
|         uint16_t getAddrFrom() { return  _getAddrFrom(this); }; | ||||
|         uint8_t getCustomByte() { return packInfo->buffer[DataOffset]; }; | ||||
|     private: | ||||
|         bool checkAddress() override { return true; } | ||||
|     }; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user