diff --git a/CalM17.cpp b/CalM17.cpp index 5d4b1f82..4c567f2e 100644 --- a/CalM17.cpp +++ b/CalM17.cpp @@ -33,7 +33,8 @@ const uint8_t PREAMBLE[] = {0x00U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U, 0x77U}; -CCalM17::CCalM17() +CCalM17::CCalM17() : +m_transmit(false) { } @@ -41,6 +42,9 @@ void CCalM17::process() { m17TX.process(); + if (!m_transmit) + return; + uint16_t space = m17TX.getSpace(); if (space < 2U) return; @@ -48,5 +52,15 @@ void CCalM17::process() m17TX.writeData(PREAMBLE, M17_FRAME_LENGTH_BYTES + 1U); } +uint8_t CCalM17::write(const uint8_t* data, uint16_t length) +{ + if (length != 1U) + return 4U; + + m_transmit = data[0U] == 1U; + + return 0U; +} + #endif diff --git a/CalM17.h b/CalM17.h index 47c47e14..bf8257ea 100644 --- a/CalM17.h +++ b/CalM17.h @@ -31,7 +31,10 @@ class CCalM17 { void process(); + uint8_t write(const uint8_t* data, uint16_t length); + private: + bool m_transmit; }; #endif diff --git a/SerialPort.cpp b/SerialPort.cpp index 477db942..d552efa2 100644 --- a/SerialPort.cpp +++ b/SerialPort.cpp @@ -1109,7 +1109,7 @@ void CSerialPort::processMessage(uint8_t type, const uint8_t* buffer, uint16_t l #endif #if defined(MODE_M17) if (m_modemState == STATE_M17CAL) - err = 0U; + err = calM17.write(buffer, length); #endif #if defined(MODE_POCSAG) if (m_modemState == STATE_POCSAGCAL)