fix syncBit

This commit is contained in:
DashyFox 2024-02-08 17:55:10 +03:00
parent b272b6031c
commit 9cd391bda7
2 changed files with 12 additions and 4 deletions

View File

@ -24,6 +24,13 @@ IR_Encoder::~IR_Encoder() {
delete [] sendBuffer; delete [] sendBuffer;
}; };
void IR_Encoder::sendData(uint16_t addrTo, uint8_t* data, uint8_t len, bool needAccept = false) {
uint8_t packSize = msgBytes + addrBytes + addrBytes + len + crcBytes;
uint8_t msgType =
((needAccept ? IR_MSG_DATA_ACCEPT : IR_MSG_DATA_NOACCEPT) << 5) | ((packSize - crcBytes) & IR_MASK_MSG_INFO);
_sendData(addrTo, data, len, msgType);
}
void IR_Encoder::sendACK(uint16_t addrTo, uint8_t addInfo, bool forAll = false) { void IR_Encoder::sendACK(uint16_t addrTo, uint8_t addInfo, bool forAll = false) {
uint8_t* ptr = new uint8_t[msgBytes + addrBytes + crcBytes] { 0 }; uint8_t* ptr = new uint8_t[msgBytes + addrBytes + crcBytes] { 0 };
@ -184,7 +191,7 @@ void IR_Encoder::isr() {
toggleCounter = currentBitSequence[!state]; toggleCounter = currentBitSequence[!state];
dataSequenceCounter--; dataSequenceCounter--;
} else { // Конец data, переход на следующий signal } else { // Конец data, переход на следующий signal
syncLastBit = !((sendBuffer[dataByteCounter]) & 1U); syncLastBit = ((sendBuffer[dataByteCounter]) & 1U);
dataByteCounter++; dataByteCounter++;
dataBitCounter = bitPerByte - 1; dataBitCounter = bitPerByte - 1;
dataSequenceCounter = bitPerByte * 2; dataSequenceCounter = bitPerByte * 2;

View File

@ -27,6 +27,7 @@ public:
template<typename T> template<typename T>
void sendData(uint16_t addrTo, T& data, bool needAccept = false); void sendData(uint16_t addrTo, T& data, bool needAccept = false);
void sendData(uint16_t addrTo, uint8_t* data, uint8_t len, bool needAccept = false);
void sendACK(uint16_t addrTo, uint8_t addInfo = 0, bool forAll = false); void sendACK(uint16_t addrTo, uint8_t addInfo = 0, bool forAll = false);
void sendRequest(uint16_t addrTo, uint8_t addInfo = 0); void sendRequest(uint16_t addrTo, uint8_t addInfo = 0);
void rawSend(uint8_t* ptr, uint8_t len); void rawSend(uint8_t* ptr, uint8_t len);
@ -46,8 +47,8 @@ private:
enum SignalPart : uint8_t { enum SignalPart : uint8_t {
noSignal = 0, noSignal = 0,
preamb = 1, preamb = 1,
data = 2, data = 2,
sync = 3 sync = 3
}; };
uint8_t sendLen; uint8_t sendLen;
@ -87,7 +88,6 @@ private:
volatile SignalPart signal; volatile SignalPart signal;
}; };
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
@ -102,3 +102,4 @@ void IR_Encoder::sendData(uint16_t addrTo, T& data, bool needAccept = false) { /
_sendData(addrTo, data, len, msgType); _sendData(addrTo, data, len, msgType);
} }