mirror of https://github.com/g4klx/MMDVM.git
Add incoming network data buffer
This commit is contained in:
parent
c84dbd02e5
commit
0e2a83bc7b
22
FM.cpp
22
FM.cpp
|
@ -51,10 +51,11 @@ m_useCOS(true),
|
||||||
m_cosInvert(false),
|
m_cosInvert(false),
|
||||||
m_rfAudioBoost(1U),
|
m_rfAudioBoost(1U),
|
||||||
m_extAudioBoost(1U),
|
m_extAudioBoost(1U),
|
||||||
m_downsampler(128U),//Size might need adjustement
|
m_downsampler(1200U),// 100 ms of audio
|
||||||
m_extEnabled(false),
|
m_extEnabled(false),
|
||||||
m_rxLevel(1),
|
m_rxLevel(1),
|
||||||
m_outputRB(2400U) // 100ms of audio
|
m_outputRB(2400U), // 100ms of audio
|
||||||
|
m_incomingNetworkRB(2400U) //100ms of Audio
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -656,14 +657,11 @@ void CFM::beginRelaying()
|
||||||
uint8_t CFM::getSpace() const
|
uint8_t CFM::getSpace() const
|
||||||
{
|
{
|
||||||
// The amount of free space for receiving external audio, in bytes.
|
// The amount of free space for receiving external audio, in bytes.
|
||||||
return 0U;
|
return m_incomingNetworkRB.getSpace();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t CFM::writeData(const uint8_t* data, uint8_t length)
|
uint8_t CFM::writeData(const uint8_t* data, uint8_t length)
|
||||||
{
|
{
|
||||||
q15_t samples[170U];
|
|
||||||
uint8_t nSamples = 0U;
|
|
||||||
|
|
||||||
for (uint8_t i = 0U; i < length; i += 3U) {
|
for (uint8_t i = 0U; i < length; i += 3U) {
|
||||||
uint16_t sample1 = 0U;
|
uint16_t sample1 = 0U;
|
||||||
uint16_t sample2 = 0U;
|
uint16_t sample2 = 0U;
|
||||||
|
@ -679,9 +677,15 @@ uint8_t CFM::writeData(const uint8_t* data, uint8_t length)
|
||||||
sample2 = uint16_t(pack & MASK);
|
sample2 = uint16_t(pack & MASK);
|
||||||
sample1 = uint16_t(pack >> 12);
|
sample1 = uint16_t(pack >> 12);
|
||||||
|
|
||||||
// Convert from uint16_t (0 - +4095) to Q15 (-2048 - +2047)
|
// Convert from uint16_t (0 - +4095) to Q15 (-2048 - +2047).
|
||||||
samples[nSamples++] = q15_t(sample1) - 2048;
|
// Incoming data has sample rate 8kHz, just add 2 empty samples after
|
||||||
samples[nSamples++] = q15_t(sample2) - 2048;
|
// every incoming sample to upsample to 24kHz
|
||||||
|
m_incomingNetworkRB.put(q15_t(sample1) - 2048);
|
||||||
|
m_incomingNetworkRB.put(0);
|
||||||
|
m_incomingNetworkRB.put(0);
|
||||||
|
m_incomingNetworkRB.put(q15_t(sample2) - 2048);
|
||||||
|
m_incomingNetworkRB.put(0);
|
||||||
|
m_incomingNetworkRB.put(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Received audio is now in Q15 format in samples, with length nSamples.
|
// Received audio is now in Q15 format in samples, with length nSamples.
|
||||||
|
|
1
FM.h
1
FM.h
|
@ -96,6 +96,7 @@ private:
|
||||||
bool m_extEnabled;
|
bool m_extEnabled;
|
||||||
q15_t m_rxLevel;
|
q15_t m_rxLevel;
|
||||||
CFMRB m_outputRB;
|
CFMRB m_outputRB;
|
||||||
|
CFMRB m_incomingNetworkRB;
|
||||||
|
|
||||||
void stateMachine(bool validRFSignal, bool validExtSignal);
|
void stateMachine(bool validRFSignal, bool validExtSignal);
|
||||||
void listeningState(bool validRFSignal, bool validExtSignal);
|
void listeningState(bool validRFSignal, bool validExtSignal);
|
||||||
|
|
Loading…
Reference in New Issue