diff --git a/RFControl.cpp b/RFControl.cpp index 2bb46e4..49badb0 100644 --- a/RFControl.cpp +++ b/RFControl.cpp @@ -104,7 +104,7 @@ bool RFControl::existNewDuration(){ } bool probablyFooter(unsigned int duration) { - return duration >= MIN_FOOTER_LENGTH; + return duration >= MIN_FOOTER_LENGTH && ((int)duration >0); } bool matchesFooter(unsigned int duration) { @@ -117,6 +117,9 @@ void startRecording(unsigned int duration) { printf(" => start recoding"); #endif footer_length = duration; + #ifdef RF_CONTROL_SIMULATE_ARDUINO + printf(" footer = %u",duration); + #endif data_end[0] = 0; data_end[1] = 0; data_end[2] = 0; @@ -164,7 +167,14 @@ void recording(unsigned int duration, int package) { else if (duration < 100000) printf(" duration=%i", duration); #endif - if (matchesFooter(duration)) //test for footer (+-25%). + if ((int)duration < 0){ + +#ifdef RF_CONTROL_SIMULATE_ARDUINO + printf("invalid duration=%i", duration); +#endif + RFControl::startReceiving(interruptPin); + + }else if (matchesFooter(duration)) //test for footer (+-25%). { //Package is complete!!!! timings[data_end[package]] = duration;