Merge pull request #276 from F4FXL/FM_Ext

Add FM EOT
This commit is contained in:
Jonathan Naylor 2020-05-16 12:57:33 +01:00 committed by GitHub
commit d75042dc4c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 1 deletions

14
FM.cpp
View File

@ -411,6 +411,9 @@ void CFM::kerchunkRFState(bool validSignal)
m_ackMinTimer.stop();
m_callsignTimer.stop();
m_statusTimer.stop();
if(m_extEnabled)
serial.writeFMEOT();
}
}
@ -423,6 +426,9 @@ void CFM::relayingRFState(bool validSignal)
m_ackMinTimer.stop();
m_timeoutTimer.stop();
m_timeoutTone.start();
if(m_extEnabled)
serial.writeFMEOT();
}
} else {
DEBUG1("State to RELAYING_WAIT_RF");
@ -574,10 +580,14 @@ void CFM::hangState(bool validRFSignal, bool validExtSignal)
m_hangTimer.stop();
m_statusTimer.stop();
if(m_extEnabled)
serial.writeFMEOT();
if (m_callsignAtEnd)
sendCallsign();
m_callsignTimer.stop();
}
}
@ -592,6 +602,10 @@ void CFM::timeoutRFState(bool validSignal)
if (!validSignal) {
DEBUG1("State to TIMEOUT_WAIT_RF");
m_state = FS_TIMEOUT_WAIT_RF;
if (m_callsignAtEnd)
sendCallsign();
m_ackDelayTimer.start();
}

View File

@ -71,6 +71,7 @@ const uint8_t MMDVM_FM_PARAMS3 = 0x62U;
const uint8_t MMDVM_FM_PARAMS4 = 0x63U;
const uint8_t MMDVM_FM_DATA = 0x65U;
const uint8_t MMDVM_FM_STATUS = 0x66U;
const uint8_t MMDVM_FM_EOT = 0x67U;
const uint8_t MMDVM_ACK = 0x70U;
const uint8_t MMDVM_NAK = 0x7FU;
@ -1286,7 +1287,24 @@ void CSerialPort::writeFMStatus(uint8_t status)
reply[2U] = MMDVM_FM_STATUS;
reply[3U] = status;
writeInt(1U, reply, 4);
writeInt(1U, reply, 4U);
}
void CSerialPort::writeFMEOT()
{
if (m_modemState != STATE_FM && m_modemState != STATE_IDLE)
return;
if (!m_fmEnable)
return;
uint8_t reply[10U];
reply[0U] = MMDVM_FRAME_START;
reply[1U] = 3U;
reply[2U] = MMDVM_FM_EOT;
writeInt(1U, reply, 3U);
}
void CSerialPort::writeCalData(const uint8_t* data, uint8_t length)

View File

@ -52,6 +52,7 @@ public:
void writeFMData(const uint8_t* data, uint8_t length);
void writeFMStatus(uint8_t status);
void writeFMEOT();
void writeCalData(const uint8_t* data, uint8_t length);
void writeRSSIData(const uint8_t* data, uint8_t length);