From 7a549e96bad2fdb553703ddec40275c21248fa8a Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Tue, 14 Apr 2020 12:23:26 +0100 Subject: [PATCH] Handle the net ack parameter. --- FM.cpp | 4 ++-- FM.h | 4 ++-- SerialPort.cpp | 12 +++++++++--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/FM.cpp b/FM.cpp index f500ccb..2fc7909 100644 --- a/FM.cpp +++ b/FM.cpp @@ -40,10 +40,10 @@ void CFM::setCallsign(const char* callsign, uint8_t speed, uint16_t frequency, u { } -void CFM::setAck(const char* ack, uint8_t speed, uint16_t frequency, uint8_t minTime, uint16_t delay, uint8_t level) +void CFM::setAck(const char* rfAck, uint8_t speed, uint16_t frequency, uint8_t minTime, uint16_t delay, uint8_t level) { } -void CFM::setMisc(uint16_t timeout, uint8_t timeoutLevel, uint8_t ctcssFrequency, uint8_t ctcssThreshold, uint8_t ctcssLevel, uint8_t kerchunkTime, uint8_t hangTime) +void CFM::setMisc(const char* netAck, uint16_t timeout, uint8_t timeoutLevel, uint8_t ctcssFrequency, uint8_t ctcssThreshold, uint8_t ctcssLevel, uint8_t kerchunkTime, uint8_t hangTime) { } diff --git a/FM.h b/FM.h index cbbd72b..ec2cb6f 100644 --- a/FM.h +++ b/FM.h @@ -32,8 +32,8 @@ public: void reset(); void setCallsign(const char* callsign, uint8_t speed, uint16_t frequency, uint8_t time, uint8_t holdoff, uint8_t highLevel, uint8_t lowLevel, bool callAtStart, bool callAtEnd); - void setAck(const char* ack, uint8_t speed, uint16_t frequency, uint8_t minTime, uint16_t delay, uint8_t level); - void setMisc(uint16_t timeout, uint8_t timeoutLevel, uint8_t ctcssFrequency, uint8_t ctcssThreshold, uint8_t ctcssLevel, uint8_t kerchunkTime, uint8_t hangTime); + void setAck(const char* rfAck, uint8_t speed, uint16_t frequency, uint8_t minTime, uint16_t delay, uint8_t level); + void setMisc(const char* netAck, uint16_t timeout, uint8_t timeoutLevel, uint8_t ctcssFrequency, uint8_t ctcssThreshold, uint8_t ctcssLevel, uint8_t kerchunkTime, uint8_t hangTime); private: }; diff --git a/SerialPort.cpp b/SerialPort.cpp index 62ded18..a942159 100644 --- a/SerialPort.cpp +++ b/SerialPort.cpp @@ -391,7 +391,7 @@ uint8_t CSerialPort::setFMParams1(const uint8_t* data, uint8_t length) uint8_t CSerialPort::setFMParams2(const uint8_t* data, uint8_t length) { - if (length < 5U) + if (length < 6U) return 4U; uint8_t speed = data[0U]; @@ -413,7 +413,7 @@ uint8_t CSerialPort::setFMParams2(const uint8_t* data, uint8_t length) uint8_t CSerialPort::setFMParams3(const uint8_t* data, uint8_t length) { - if (length < 7U) + if (length < 8U) return 4U; uint16_t timeout = data[0U] * 5U; @@ -426,7 +426,13 @@ uint8_t CSerialPort::setFMParams3(const uint8_t* data, uint8_t length) uint8_t kerchunkTime = data[5U]; uint8_t hangTime = data[6U]; - fm.setMisc(timeout, timeoutLevel, ctcssFrequency, ctcssThreshold, ctcssLevel, kerchunkTime, hangTime); + char ack[50U]; + uint8_t n = 0U; + for (uint8_t i = 7U; i < length; i++, n++) + ack[n] = data[i]; + ack[n] = '\0'; + + fm.setMisc(ack, timeout, timeoutLevel, ctcssFrequency, ctcssThreshold, ctcssLevel, kerchunkTime, hangTime); return 0U; }