Skip to content

Commit 8e34cab

Browse files
committed
Add validation for M17 end bit.
1 parent 200986b commit 8e34cab

File tree

6 files changed

+9
-21
lines changed

6 files changed

+9
-21
lines changed

M17Control.cpp

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ m_rfErrs(0U),
7878
m_rfBits(1U),
7979
m_rfLSF(),
8080
m_rfLSFn(0U),
81-
m_rfFN(0U),
8281
m_netLSF(),
8382
m_netLSFn(0U),
8483
m_rssiMapper(rssiMapper),
@@ -189,7 +188,6 @@ bool CM17Control::writeModem(unsigned char* data, unsigned int len)
189188
m_aveRSSI = m_rssi;
190189
m_rssiCount = 1U;
191190
m_rfLSFn = 0U;
192-
m_rfFN = 0U;
193191

194192
#if defined(DUMP_M17)
195193
openFile();
@@ -238,7 +236,6 @@ bool CM17Control::writeModem(unsigned char* data, unsigned int len)
238236
m_maxRSSI = m_rssi;
239237
m_aveRSSI = m_rssi;
240238
m_rssiCount = 1U;
241-
m_rfFN = 0U;
242239

243240
#if defined(DUMP_M17)
244241
openFile();
@@ -257,11 +254,9 @@ bool CM17Control::writeModem(unsigned char* data, unsigned int len)
257254
unsigned char frame[M17_FN_LENGTH_BYTES + M17_PAYLOAD_LENGTH_BYTES];
258255
unsigned int errors = conv.decodeData(data + 2U + M17_SYNC_LENGTH_BYTES + M17_LICH_FRAGMENT_FEC_LENGTH_BYTES, frame);
259256

260-
m_rfFN = (frame[0U] << 8) + (frame[1U] << 0);
257+
uint16_t fn = (frame[0U] << 8) + (frame[1U] << 0);
261258

262-
LogDebug("M17, audio: FN: %u, errs: %u/272 (%.1f%%)", m_rfFN & 0x7FFFU, errors, float(errors) / 2.72F);
263-
264-
m_rfFN++;
259+
LogDebug("M17, audio: FN: %u, errs: %u/272 (%.1f%%)", fn & 0x7FFFU, errors, float(errors) / 2.72F);
265260

266261
m_rfBits += 272U;
267262
m_rfErrs += errors;
@@ -324,8 +319,10 @@ bool CM17Control::writeModem(unsigned char* data, unsigned int len)
324319
if (m_rfLSFn >= 6U)
325320
m_rfLSFn = 0U;
326321

327-
// Only check for the EOT marker if the frame has a reasonable BER
328-
if ((m_rfFN & 0x8000U) == 0x8000U) {
322+
bool bValid = (fn & 0x7FFFU) < (210U * 25U); // 210 seconds maximum
323+
bool bEnd = (fn & 0x8000U) == 0x8000U;
324+
325+
if (bValid && bEnd) {
329326
std::string source = m_rfLSF.getSource();
330327
std::string dest = m_rfLSF.getDest();
331328

M17Control.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ class CM17Control {
6868
unsigned int m_rfBits;
6969
CM17LSF m_rfLSF;
7070
unsigned int m_rfLSFn;
71-
unsigned int m_rfFN;
7271
CM17LSF m_netLSF;
7372
unsigned int m_netLSFn;
7473
CRSSIInterpolator* m_rssiMapper;

M17Defines.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ const unsigned int M17_FRAME_LENGTH_BYTES = M17_FRAME_LENGTH_BITS / 8U;
2626

2727
const unsigned char M17_LINK_SETUP_SYNC_BYTES[] = {0x55U, 0xF7U};
2828
const unsigned char M17_STREAM_SYNC_BYTES[] = {0xFFU, 0x5DU};
29-
const unsigned char M17_PACKET_SYNC_BYTES[] = {0x75U, 0xFFU};
3029

3130
const unsigned int M17_SYNC_LENGTH_BITS = 16U;
3231
const unsigned int M17_SYNC_LENGTH_BYTES = M17_SYNC_LENGTH_BITS / 8U;

Sync.cpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2015,2016,2018,2020 by Jonathan Naylor G4KLX
2+
* Copyright (C) 2015,2016,2018,2020,2021 by Jonathan Naylor G4KLX
33
*
44
* This program is free software; you can redistribute it and/or modify
55
* it under the terms of the GNU General Public License as published by
@@ -99,9 +99,3 @@ void CSync::addM17StreamSync(unsigned char* data)
9999
::memcpy(data, M17_STREAM_SYNC_BYTES, M17_SYNC_LENGTH_BYTES);
100100
}
101101

102-
void CSync::addM17PacketSync(unsigned char* data)
103-
{
104-
assert(data != NULL);
105-
106-
::memcpy(data, M17_PACKET_SYNC_BYTES, M17_SYNC_LENGTH_BYTES);
107-
}

Sync.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2015,2016,2018,2020 by Jonathan Naylor G4KLX
2+
* Copyright (C) 2015,2016,2018,2020,2021 by Jonathan Naylor G4KLX
33
*
44
* This program is free software; you can redistribute it and/or modify
55
* it under the terms of the GNU General Public License as published by
@@ -35,7 +35,6 @@ class CSync
3535

3636
static void addM17LinkSetupSync(unsigned char* data);
3737
static void addM17StreamSync(unsigned char* data);
38-
static void addM17PacketSync(unsigned char* data);
3938

4039
private:
4140
};

Version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
#if !defined(VERSION_H)
2020
#define VERSION_H
2121

22-
const char* VERSION = "20210817";
22+
const char* VERSION = "20210818";
2323

2424
#endif

0 commit comments

Comments
 (0)