no isSubOverflow, todo

This commit is contained in:
DashyFox 2024-02-29 15:35:49 +03:00
parent c3b5997d84
commit c2506fe1dc
2 changed files with 10 additions and 10 deletions

View File

@ -21,11 +21,11 @@ void IR_DecoderRaw::isr() {
if (firstUnHandledFront == nullptr) { if (firstUnHandledFront == nullptr) {
firstUnHandledFront = &subBuffer[currentSubBufferIndex]; // Если нет необработанных данных - добавляем их firstUnHandledFront = &subBuffer[currentSubBufferIndex]; // Если нет необработанных данных - добавляем их
isSubBufferOverflow = false; // isSubBufferOverflow = false;
} else { } else {
if (firstUnHandledFront == &subBuffer[currentSubBufferIndex]) { // Если контроллер не успел обработать новый сигнал, принудительно пропускаем его if (firstUnHandledFront == &subBuffer[currentSubBufferIndex]) { // Если контроллер не успел обработать новый сигнал, принудительно пропускаем его
firstUnHandledFront = firstUnHandledFront->next; firstUnHandledFront = firstUnHandledFront->next;
isSubBufferOverflow = true; // isSubBufferOverflow = true;
#ifdef IRDEBUG_INFO #ifdef IRDEBUG_INFO
// Serial.println(); // Serial.println();
Serial.println(" ISR BUFFER OVERFLOW "); Serial.println(" ISR BUFFER OVERFLOW ");
@ -82,7 +82,7 @@ void IR_DecoderRaw::tick() {
FrontStorage currentFront; FrontStorage currentFront;
noInterrupts(); noInterrupts();
listenStart(); listenStart();
if (firstUnHandledFront == nullptr) { isSubBufferOverflow = false; interrupts(); return; } //Если данных нет - ничего не делаем if (firstUnHandledFront == nullptr) {/* isSubBufferOverflow = false; */ interrupts(); return; } //Если данных нет - ничего не делаем
currentFront = *((FrontStorage*)firstUnHandledFront); //найти следующий необработанный фронт/спад currentFront = *((FrontStorage*)firstUnHandledFront); //найти следующий необработанный фронт/спад
interrupts(); interrupts();
if (currentFront.next == nullptr) { isRecive = false; return; } if (currentFront.next == nullptr) { isRecive = false; return; }

View File

@ -43,13 +43,13 @@ public:
void tick(); // Обработка приёмника, необходима для работы void tick(); // Обработка приёмника, необходима для работы
bool isOverflow() { return isBufferOverflow; }; // Буффер переполнился bool isOverflow() { return isBufferOverflow; }; // Буффер переполнился
bool isSubOverflow() { // bool isSubOverflow() { //TODO: При опросе volatile сваливается в постоянно true
uint8_t oldSREG = SREG; // uint8_t oldSREG = SREG;
cli(); // cli();
bool ret = isSubBufferOverflow; // bool ret = isSubBufferOverflow;
SREG = oldSREG; // SREG = oldSREG;
return ret; // return ret;
}; // };
bool isReciving() { return isBufferOverflow; }; // Возвращает true, если происходит приём пакета bool isReciving() { return isBufferOverflow; }; // Возвращает true, если происходит приём пакета
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////