From 899ac506ae312f42624619e0470d5f2b2d033ea6 Mon Sep 17 00:00:00 2001 From: Ondrej Lycka Date: Wed, 21 Jun 2017 23:38:43 +0200 Subject: [PATCH] repare reduce repeat and add reduce noise in beginning packets, change SIGNAL_TIMEOUT=4 (SIGNAL_TIMEOUT is used as sync signal timeout) --- RPi_rflink/Base.h | 4 +- RPi_rflink/RFlink | Bin 168700 -> 168608 bytes RPi_rflink/RawSignal.cpp | 127 +++++++++++++++++++-------------------- RPi_rflink/RawSignal.o | Bin 7264 -> 8400 bytes 4 files changed, 63 insertions(+), 68 deletions(-) diff --git a/RPi_rflink/Base.h b/RPi_rflink/Base.h index d73a9f7..4dbfc68 100644 --- a/RPi_rflink/Base.h +++ b/RPi_rflink/Base.h @@ -23,8 +23,8 @@ #define MIN_RAW_PULSES 20 // =8 bits. Minimal number of bits*2 that need to have been received before we spend CPU time on decoding the signal. #define RAWSIGNAL_SAMPLE_RATE 30 // Sample width / resolution in uSec for raw RF pulses. #define MIN_PULSE_LENGTH 25 // Pulses shorter than this value in uSec. will be seen as garbage and not taken as actual pulses. -#define SIGNAL_TIMEOUT 5 // Timeout, after this time in mSec. the RF signal will be considered to have stopped. -#define SIGNAL_REPEAT_TIME 500 // Time in mSec. in which the same RF signal should not be accepted again. Filters out retransmits. +#define SIGNAL_TIMEOUT 4 // Timeout, after this time in mSec. the RF signal will be considered to have stopped. +#define SIGNAL_REPEAT_TIME 1000 // Time in mSec. in which the same RF signal should not be accepted again. Filters out retransmits. #define BAUD 57600 // Baudrate for serial communication. #define TRANSMITTER_STABLE_DELAY 500 // delay to let the transmitter become stable (Note: Aurel RTX MID needs 500µS/0,5ms). #define RAW_BUFFER_SIZE 512 // Maximum number of pulses that is received in one go. diff --git a/RPi_rflink/RFlink b/RPi_rflink/RFlink index 5b35e127e7ffc4eaee3d28c721ec122459b2d694..9d75c2e41ab05a6d0bdc636bfd51e4712deab4fe 100755 GIT binary patch delta 41816 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 delta 42131 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 Z8Bz)7_ia@J{nD_F> this is no packet or time out - //Serial.println("S"); - PulseLength=0L; - RawCodeLength=1; - return; - } - - if ( RawCodeLength= SIGNAL_TIMEOUT*1000 ) { - if ( PulseLength >= 3500 ) { - - //Serial.println("S"); - //Serial.println(abs(FristPulseLength-PulseLength)); - if (abs(FristPulseLength-PulseLength) < 200 and LastRawCodeLength==RawCodeLength) { - //Serial.println("SS"); - // This long signal is close in length to the long signal which - // started the previously recorded timings; this suggests that - // it may indeed by a a gap between two transmissions (we assume - // here that a sender will send the signal multiple times, - // with roughly the same gap between them). - RawSignal.Repeats++; - if (RawSignal.Repeats == 2) { - //Serial.println("SSS"); - if (RawCodeLength>MIN_RAW_PULSES) { - //Serial.println("SSSS"); - setRawSignal(RawCodeLength); // go to search right - } - RawSignal.Repeats = 0; - } + // reduce repeated signal + // After a positive packet reception, the packet is assumed to be repeated. + // Therefore, all subsequent communications into the long signal (significant termination of transmissions) is ignored. + // In the case of long uninterrupted transmissions, where long signal not present, the SIGNAL_REPEAT_TIME terminates reduction. + // Some modules do not set RawSignal.Repeats=true and use own solve. + if (RawSignal.Repeats==true){ + if (log_repeat==true){ + log(LOG_STATUS,"RawSignal: RawSignal.Repeats=true."); + log_repeat=false; } - FristPulseLength=PulseLength; - LastRawCodeLength=RawCodeLength; - RawCodeLength=1; + //if ((RawSignal.Time+SIGNAL_REPEAT_TIME)>millis()) { + if (RepeatingTimer>millis()) { + if (PulseLength this is no packet or time out + //Serial.println("S"); + RawCodeLength=0; + return; + } - /* - if ( RawCodeLength=RAW_BUFFER_SIZE) { // Raw data reach max size (too mach long for corect data) //setRawSignal(RawCodeLength); - PulseLength=0L; - RawCodeLength=1; + RawCodeLength=0; return; } - if ( PulseLength < MIN_PULSE_LENGTH or PulseLength >= SIGNAL_TIMEOUT*1000 ) { // puls is so short -> this is no packet or time out + + if ( PulseLength >= SIGNAL_TIMEOUT*1000 ) { //Serial.println("S"); if (RawCodeLength>=MIN_RAW_PULSES) { // Raw data satisfy min. size - //setRawSignal(RawCodeLength); + setRawSignal(RawCodeLength); + RawCodeLength=0; + } + else { // frist sync pulse + RawCodeLength=1; // Start at 1 for legacy reasons and indicate start new scanining } - PulseLength=0L; - RawCodeLength=1; return; } - */ } /** diff --git a/RPi_rflink/RawSignal.o b/RPi_rflink/RawSignal.o index 72d364871b828f0996cd3cf26484d21b8ea4f906..1da6ee0d8a692b6f74a253dfd3aef56136d0f6a1 100644 GIT binary patch literal 8400 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 Nk*&x-JJ9i&@jp8KFFybP