mirror of
https://github.com/Show-maket/IR-protocol.git
synced 2025-05-03 23:00:16 +00:00
add customByte to Accept
This commit is contained in:
parent
9643237465
commit
9af3e95ec8
@ -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; }
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user