Rewind frame pulses whenever signal pulse is out of range

#36
#35
This commit is contained in:
Robert Strouse 2023-05-03 18:40:19 -07:00
parent fb677dc239
commit e8296d3782
2 changed files with 10 additions and 9 deletions

View file

@ -126,7 +126,7 @@ void somfy_frame_t::decodeFrame(byte* frame) {
if (this->valid) { if (this->valid) {
// Check for valid command. // Check for valid command.
switch (this->cmd) { switch (this->cmd) {
case somfy_commands::Unknown0: //case somfy_commands::Unknown0:
case somfy_commands::My: case somfy_commands::My:
case somfy_commands::Up: case somfy_commands::Up:
case somfy_commands::MyUp: case somfy_commands::MyUp:
@ -137,10 +137,12 @@ void somfy_frame_t::decodeFrame(byte* frame) {
case somfy_commands::Prog: case somfy_commands::Prog:
case somfy_commands::SunFlag: case somfy_commands::SunFlag:
case somfy_commands::Flag: case somfy_commands::Flag:
break;
case somfy_commands::UnknownC: case somfy_commands::UnknownC:
case somfy_commands::UnknownD: case somfy_commands::UnknownD:
case somfy_commands::UnknownE: case somfy_commands::UnknownE:
case somfy_commands::UnknownF: case somfy_commands::UnknownF:
this->valid = false;
break; break;
case somfy_commands::StepUp: case somfy_commands::StepUp:
case somfy_commands::StepDown: case somfy_commands::StepDown:
@ -151,8 +153,9 @@ void somfy_frame_t::decodeFrame(byte* frame) {
break; break;
} }
} }
if(this->valid && this->encKey == 0) this->valid = false;
if (this->valid) { if (this->valid) {
/*
Serial.print("KEY:"); Serial.print("KEY:");
Serial.print(this->encKey); Serial.print(this->encKey);
Serial.print(" ADDR:"); Serial.print(" ADDR:");
@ -165,6 +168,7 @@ void somfy_frame_t::decodeFrame(byte* frame) {
Serial.print(this->bitLength); Serial.print(this->bitLength);
Serial.print(" HWSYNC:"); Serial.print(" HWSYNC:");
Serial.println(this->hwsync); Serial.println(this->hwsync);
*/
} }
else { else {
Serial.print("INVALID FRAME "); Serial.print("INVALID FRAME ");
@ -691,7 +695,7 @@ void SomfyShade::checkMovement() {
this->moveStart = millis(); this->moveStart = millis();
this->startPos = this->currentPos; this->startPos = this->currentPos;
this->tiltDirection = 0; this->tiltDirection = 0;
Serial.println("Processed tilt first UP"); //Serial.println("Processed tilt first UP");
} }
} }
else if(this->currentTiltPos <= this->tiltTarget) { else if(this->currentTiltPos <= this->tiltTarget) {
@ -1870,20 +1874,17 @@ void RECEIVE_ATTR Transceiver::handleReceive() {
} }
} }
else { else {
//++somfy_rx.cpt_bits;
++somfy_rx.cpt_bits;
/*
// Start over we are not within our parameters for bit timing. // Start over we are not within our parameters for bit timing.
memset(&somfy_rx.payload, 0x00, sizeof(somfy_rx.payload)); memset(&somfy_rx.payload, 0x00, sizeof(somfy_rx.payload));
somfy_rx.pulseCount = 0; somfy_rx.pulseCount = 1;
somfy_rx.cpt_synchro_hw = 0; somfy_rx.cpt_synchro_hw = 0;
somfy_rx.previous_bit = 0x00; somfy_rx.previous_bit = 0x00;
somfy_rx.waiting_half_symbol = false; somfy_rx.waiting_half_symbol = false;
somfy_rx.cpt_bits = 0; somfy_rx.cpt_bits = 0;
somfy_rx.bit_length = 56; somfy_rx.bit_length = 56;
somfy_rx.status = waiting_synchro; somfy_rx.status = waiting_synchro;
*/ somfy_rx.pulses[0] = duration;
} }
break; break;
default: default:

Binary file not shown.