mirror of
https://github.com/Show-maket/IR-protocol.git
synced 2025-06-27 20:59:37 +00:00
refactor
This commit is contained in:
@ -20,6 +20,27 @@ IR_DecoderRaw::IR_DecoderRaw(const uint8_t isrPin, uint16_t addr, IR_Encoder *en
|
||||
#endif
|
||||
}
|
||||
|
||||
bool IR_DecoderRaw::isSubOverflow()
|
||||
{
|
||||
noInterrupts();
|
||||
volatile bool ret = isSubBufferOverflow;
|
||||
interrupts();
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool IR_DecoderRaw::availableRaw()
|
||||
{
|
||||
if (isAvailable)
|
||||
{
|
||||
isAvailable = false;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
//////////////////////////////////// isr ///////////////////////////////////////////
|
||||
volatile uint32_t time_;
|
||||
|
||||
@ -55,7 +76,6 @@ void IR_DecoderRaw::isr()
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
uint32_t wrCounter;
|
||||
void IR_DecoderRaw::firstRX()
|
||||
{
|
||||
|
||||
@ -77,9 +97,9 @@ void IR_DecoderRaw::firstRX()
|
||||
|
||||
isPreamb = true;
|
||||
riseSyncTime = bitTime /* 1100 */;
|
||||
|
||||
#ifdef IRDEBUG
|
||||
wrCounter = 0;
|
||||
|
||||
#endif
|
||||
memset(dataBuffer, 0x00, dataByteSizeMax);
|
||||
}
|
||||
|
||||
@ -92,6 +112,7 @@ void IR_DecoderRaw::listenStart()
|
||||
firstRX();
|
||||
}
|
||||
}
|
||||
|
||||
void IR_DecoderRaw::tick()
|
||||
{
|
||||
FrontStorage currentFront;
|
||||
@ -539,31 +560,31 @@ void IR_DecoderRaw::writeToBuffer(bool bit)
|
||||
isAvailable = crcCheck(packSize - crcBytes, crcValue);
|
||||
|
||||
#ifdef BRUTEFORCE_CHECK
|
||||
if (!isAvailable) // Исправление первого бита // Очень большая затычка...
|
||||
for (size_t i = 0; i < min(uint16_t(packSize - crcBytes*2U), uint16_t(dataByteSizeMax)); ++i)
|
||||
if (!isAvailable) // Исправление первого бита // Очень большая затычка...
|
||||
for (size_t i = 0; i < min(uint16_t(packSize - crcBytes * 2U), uint16_t(dataByteSizeMax)); ++i)
|
||||
{
|
||||
for (int j = 0; j < 8; ++j)
|
||||
{
|
||||
for (int j = 0; j < 8; ++j)
|
||||
// инвертируем бит
|
||||
dataBuffer[i] ^= 1 << j;
|
||||
|
||||
isAvailable = crcCheck(min(uint16_t(packSize - crcBytes), uint16_t(dataByteSizeMax - 1U)), crcValue);
|
||||
// обратно инвертируем бит в исходное состояние
|
||||
|
||||
if (isAvailable)
|
||||
{
|
||||
#ifdef IRDEBUG_INFO
|
||||
Serial.println("!!!INV!!!");
|
||||
#endif
|
||||
goto OUT_BRUTEFORCE;
|
||||
}
|
||||
else
|
||||
{
|
||||
// инвертируем бит
|
||||
dataBuffer[i] ^= 1 << j;
|
||||
|
||||
isAvailable = crcCheck(min(uint16_t(packSize - crcBytes), uint16_t(dataByteSizeMax - 1U)), crcValue);
|
||||
// обратно инвертируем бит в исходное состояние
|
||||
|
||||
if (isAvailable)
|
||||
{
|
||||
#ifdef IRDEBUG_INFO
|
||||
Serial.println("!!!INV!!!");
|
||||
#endif
|
||||
goto OUT_BRUTEFORCE;
|
||||
}
|
||||
else
|
||||
{
|
||||
dataBuffer[i] ^= 1 << j;
|
||||
}
|
||||
}
|
||||
}
|
||||
OUT_BRUTEFORCE:;
|
||||
}
|
||||
OUT_BRUTEFORCE:;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user