mirror of https://github.com/g4klx/MMDVM.git
Add the external audio parameters.
This commit is contained in:
parent
a816818e3f
commit
96364dc189
14
FM.cpp
14
FM.cpp
|
@ -23,6 +23,7 @@
|
|||
CFM::CFM() :
|
||||
m_callsign(),
|
||||
m_rfAck(),
|
||||
m_extAck(),
|
||||
m_ctcssRX(),
|
||||
m_ctcssTX(),
|
||||
m_timeoutTone(),
|
||||
|
@ -46,7 +47,9 @@ m_blanking(),
|
|||
m_useCOS(true),
|
||||
m_cosInvert(false),
|
||||
m_rfAudioBoost(1U),
|
||||
m_downsampler(128)//Size might need adjustement
|
||||
m_extAudioBoost(1U),
|
||||
m_downsampler(128U), //Size might need adjustement
|
||||
m_extEnabled(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -195,6 +198,15 @@ uint8_t CFM::setMisc(uint16_t timeout, uint8_t timeoutLevel, uint8_t ctcssFreque
|
|||
return m_ctcssTX.setParams(ctcssFrequency, ctcssLevel);
|
||||
}
|
||||
|
||||
uint8_t CFM::setExt(const char* ack, uint8_t audioBoost, uint8_t speed, uint16_t frequency, uint8_t level)
|
||||
{
|
||||
m_extEnabled = true;
|
||||
|
||||
m_extAudioBoost = q15_t(audioBoost);
|
||||
|
||||
return m_extAck.setParams(ack, speed, frequency, level, level);
|
||||
}
|
||||
|
||||
void CFM::stateMachine(bool validSignal)
|
||||
{
|
||||
switch (m_state) {
|
||||
|
|
6
FM.h
6
FM.h
|
@ -41,8 +41,6 @@ enum FM_STATE {
|
|||
};
|
||||
|
||||
|
||||
|
||||
|
||||
class CFM {
|
||||
public:
|
||||
CFM();
|
||||
|
@ -56,6 +54,7 @@ public:
|
|||
uint8_t setCallsign(const char* callsign, uint8_t speed, uint16_t frequency, uint8_t time, uint8_t holdoff, uint8_t highLevel, uint8_t lowLevel, bool callsignAtStart, bool callsignAtEnd, bool callsignAtLatch);
|
||||
uint8_t setAck(const char* rfAck, uint8_t speed, uint16_t frequency, uint8_t minTime, uint16_t delay, uint8_t level);
|
||||
uint8_t setMisc(uint16_t timeout, uint8_t timeoutLevel, uint8_t ctcssFrequency, uint8_t ctcssThreshold, uint8_t ctcssLevel, uint8_t kerchunkTime, uint8_t hangTime, bool useCOS, bool cosInvert, uint8_t rfAudioBoost, uint8_t maxDev, uint8_t rxLevel);
|
||||
uint8_t setExt(const char* ack, uint8_t audioBoost, uint8_t speed, uint16_t frequency, uint8_t level);
|
||||
|
||||
uint8_t getSpace() const;
|
||||
|
||||
|
@ -64,6 +63,7 @@ public:
|
|||
private:
|
||||
CFMKeyer m_callsign;
|
||||
CFMKeyer m_rfAck;
|
||||
CFMKeyer m_extAck;
|
||||
CFMCTCSSRX m_ctcssRX;
|
||||
CFMCTCSSTX m_ctcssTX;
|
||||
CFMTimeout m_timeoutTone;
|
||||
|
@ -87,7 +87,9 @@ private:
|
|||
bool m_useCOS;
|
||||
bool m_cosInvert;
|
||||
q15_t m_rfAudioBoost;
|
||||
q15_t m_extAudioBoost;
|
||||
CFMDownsampler m_downsampler;
|
||||
bool m_extEnabled;
|
||||
|
||||
void stateMachine(bool validSignal);
|
||||
void listeningState(bool validSignal);
|
||||
|
|
|
@ -68,6 +68,7 @@ const uint8_t MMDVM_POCSAG_DATA = 0x50U;
|
|||
const uint8_t MMDVM_FM_PARAMS1 = 0x60U;
|
||||
const uint8_t MMDVM_FM_PARAMS2 = 0x61U;
|
||||
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_ACK = 0x70U;
|
||||
|
@ -438,6 +439,25 @@ uint8_t CSerialPort::setFMParams3(const uint8_t* data, uint8_t length)
|
|||
return fm.setMisc(timeout, timeoutLevel, ctcssFrequency, ctcssThreshold, ctcssLevel, kerchunkTime, hangTime, useCOS, cosInvert, rfAudioBoost, maxDev, rxLevel);
|
||||
}
|
||||
|
||||
uint8_t CSerialPort::setFMParams4(const uint8_t* data, uint8_t length)
|
||||
{
|
||||
if (length < 4U)
|
||||
return 4U;
|
||||
|
||||
uint8_t audioBoost = data[0U];
|
||||
uint8_t speed = data[1U];
|
||||
uint16_t frequency = data[2U] * 10U;
|
||||
uint8_t level = data[3U];
|
||||
|
||||
char ack[50U];
|
||||
uint8_t n = 0U;
|
||||
for (uint8_t i = 4U; i < length; i++, n++)
|
||||
ack[n] = data[i];
|
||||
ack[n] = '\0';
|
||||
|
||||
return fm.setExt(ack, audioBoost, speed, frequency, level);
|
||||
}
|
||||
|
||||
uint8_t CSerialPort::setMode(const uint8_t* data, uint8_t length)
|
||||
{
|
||||
if (length < 1U)
|
||||
|
@ -666,6 +686,16 @@ void CSerialPort::process()
|
|||
}
|
||||
break;
|
||||
|
||||
case MMDVM_FM_PARAMS4:
|
||||
err = setFMParams4(m_buffer + 3U, m_len - 3U);
|
||||
if (err == 0U) {
|
||||
sendACK();
|
||||
} else {
|
||||
DEBUG2("Received invalid FM params 4", err);
|
||||
sendNAK(err);
|
||||
}
|
||||
break;
|
||||
|
||||
case MMDVM_CAL_DATA:
|
||||
if (m_modemState == STATE_DSTARCAL)
|
||||
err = calDStarTX.write(m_buffer + 3U, m_len - 3U);
|
||||
|
|
|
@ -78,6 +78,7 @@ private:
|
|||
uint8_t setFMParams1(const uint8_t* data, uint8_t length);
|
||||
uint8_t setFMParams2(const uint8_t* data, uint8_t length);
|
||||
uint8_t setFMParams3(const uint8_t* data, uint8_t length);
|
||||
uint8_t setFMParams4(const uint8_t* data, uint8_t length);
|
||||
|
||||
// Hardware versions
|
||||
void beginInt(uint8_t n, int speed);
|
||||
|
|
Loading…
Reference in New Issue