diff --git a/IR_Decoder.cpp b/IR_Decoder.cpp index 6f5ae71..fb33897 100644 --- a/IR_Decoder.cpp +++ b/IR_Decoder.cpp @@ -6,7 +6,7 @@ ((uint16_t)((dataBuffer[h] << 8) | dataBuffer[l]) >= IR_Broadcast)\ ) -IR_Decoder::IR_Decoder(uint16_t addr, IR_Encoder* encPair = nullptr) : addrSelf(addr), encoder(encPair) { +IR_Decoder::IR_Decoder(const uint8_t isrPin, uint16_t addr, IR_Encoder* encPair = nullptr) : isrPin(isrPin), addrSelf(addr), encoder(encPair) { rawBuffer = new uint8_t[bufferRawSize] { 0 }; prevRise = prevFall = prevPrevFall = prevPrevRise = 0; start_RX(); @@ -191,7 +191,7 @@ void IR_Decoder::isr() { // в прерывании вызываем isr() } if (frontCounter > 0) { // в преамбуле uint32_t risePeriod = micros() - prevRise; - if ((PIND >> 2) & 1 && risePeriod < IR_timeout) { // __/``` ↑ и мы в внутри пакета + if ((PIND >> isrPin) & 1 && risePeriod < IR_timeout) { // __/``` ↑ и мы в внутри пакета if (risePeriod < riseTimeMin << 1) { // fix рваной единицы frontCounter += 2; @@ -210,7 +210,7 @@ void IR_Decoder::isr() { // в прерывании вызываем isr() } // определить направление фронта - if ((PIND >> 2) & 1) { // Если __/``` ↑ + if ((PIND >> isrPin) & 1) { // Если __/``` ↑ uint16_t risePeriod = micros() - prevRise; uint16_t highTime = micros() - prevFall; diff --git a/IR_Decoder.h b/IR_Decoder.h index 926b146..8397273 100644 --- a/IR_Decoder.h +++ b/IR_Decoder.h @@ -27,7 +27,7 @@ class IR_Decoder : private IR_FOX { public: uint16_t addrSelf; - IR_Decoder(uint16_t addr, IR_Encoder* encPair = nullptr); + IR_Decoder(const uint8_t isrPin, uint16_t addr, IR_Encoder* encPair = nullptr); ~IR_Decoder(); // @brief Для прерывания @@ -38,7 +38,7 @@ public: bool isOverflow() { return isBufferOverflow; }; bool isReciving() { return isRecive; }; // @brief Слушатель для работы isReciving() - void listen(); + void listen(); ////////////////////////////////////////////////////////////////////////// @@ -101,7 +101,7 @@ public: String printData(uint8_t mode = 10) { return printBytes(data(), dataSize(), mode); } - ~Data(){}; + ~Data() {}; private: void ini() override { _addrFrom = (_data[1] << 8) | _data[2]; @@ -147,7 +147,7 @@ public: uint16_t getTune() { return _tune; }; uint16_t errorCount() { return _errCount; }; void resetAvaliable() { _isAvaliable = false; }; - private: + private: void _set(uint16_t val) { _tune = val; _isAvaliable = true; @@ -163,6 +163,8 @@ public: private: + const uint8_t isrPin; + IR_Encoder* encoder; bool isPairSending = false; bool IsPairSendLOW = false;