Improved overlap packet detection

Improved overlap detection and reduced the threshold
This commit is contained in:
heurist1 2021-11-01 19:28:56 +00:00
parent 0d51e3569f
commit 1a21e06bbe
2 changed files with 27 additions and 14 deletions

View File

@ -88,17 +88,14 @@ void ADSBRXProcessor::execute(const buffer_c8_t& buffer) {
if ( (bit_count == 8) && !(byte & (0x10<<3)) ) { if ( (bit_count == 8) && !(byte & (0x10<<3)) ) {
msgLen = 56; // DFs 16 or greater are long 112. DFs 15 or less are short 56. msgLen = 56; // DFs 16 or greater are long 112. DFs 15 or less are short 56.
} }
// If not DF type 17
if ( (bit_count == 8) && (byte>>3 != 17) ) {
decoding = false;
bit = (prev_mag > mag) ? 1 : 0;
}
} // last bit of a byte } // last bit of a byte
} // Second sample of each bit } // Second sample of each bit
sample_count++; sample_count++;
} else { }
// Continue looking for preamble even if in a packet
// switch is new preamble id higher magnitude
{
// Look for preamble // Look for preamble
// Shift // Shift
@ -126,7 +123,8 @@ void ADSBRXProcessor::execute(const buffer_c8_t& buffer) {
// of the high spikes level. We don't test bits too near to // of the high spikes level. We don't test bits too near to
// the high levels as signals can be out of phase so part of the // the high levels as signals can be out of phase so part of the
// energy can be in the near samples // energy can be in the near samples
float high = (shifter[0] + shifter[2] + shifter[7] + shifter[9]) / 12; float thisAmp = (shifter[0] + shifter[2] + shifter[7] + shifter[9]);
float high = thisAmp / 6.0f;
if (shifter[4] < high && if (shifter[4] < high &&
shifter[5] < high) shifter[5] < high)
{ {
@ -139,12 +137,26 @@ void ADSBRXProcessor::execute(const buffer_c8_t& buffer) {
shifter[13] < high && shifter[13] < high &&
shifter[14] < high) shifter[14] < high)
{ {
bool newPacket = false;
if (decoding == false)
{
newPacket = true;
}
else if (decoding == true)
{
if(thisAmp > amp)
newPacket = true;
}
//if (c == ADSB_PREAMBLE_LENGTH) { //if (c == ADSB_PREAMBLE_LENGTH) {
decoding = true; if (newPacket == true)
msgLen = 112; {
sample_count = 0; decoding = true;
bit_count = 0; msgLen = 112;
frame.clear(); amp = thisAmp;
sample_count = 0;
bit_count = 0;
frame.clear();
}
} // 11-14 low } // 11-14 low
} // 4 & 5 high } // 4 & 5 high

View File

@ -62,6 +62,7 @@ private:
uint8_t cur_bit { 0 }; uint8_t cur_bit { 0 };
uint32_t sample { 0 }; uint32_t sample { 0 };
int8_t re { }, im { }; int8_t re { }, im { };
float amp {0.0f};
}; };
#endif #endif