Fix buffer underrun in FM

This commit is contained in:
Geoffrey Merck 2020-07-04 13:04:24 +02:00
parent ba1b6a8751
commit 192e8e2435

View file

@ -248,7 +248,7 @@ void CSerialModem::setSerialParams(const std::string& protocol, unsigned int add
m_serial = new CI2CController(m_port, address);
else
#endif
m_serial = new CSerialController(m_port, speed, true);
m_serial = new CSerialController(m_port, speed, false);
}
void CSerialModem::setRFParams(unsigned int rxFrequency, int rxOffset, unsigned int txFrequency, int txOffset, int txDCOffset, int rxDCOffset, float rfLevel, unsigned int pocsagFrequency)
@ -640,7 +640,7 @@ void CSerialModem::clock(unsigned int ms)
if (m_trace)
CUtils::dump(1U, "RX FM Data", m_buffer, m_length);
unsigned int data1 = m_length - m_offset + 1U;
unsigned int data1 = m_length - m_offset;
m_rxFMData.addData((unsigned char*)&data1, sizeof(unsigned int));
unsigned char data2 = TAG_DATA;
@ -654,11 +654,11 @@ void CSerialModem::clock(unsigned int ms)
if (m_trace)
CUtils::dump(1U, "RX FM Control", m_buffer, m_length);
unsigned char data = m_length - m_offset + 1U;
m_rxFMData.addData(&data, 1U);
unsigned int data1 = m_length - m_offset;
m_rxFMData.addData((unsigned char*)&data1, sizeof(unsigned int));
data = TAG_HEADER;
m_rxFMData.addData(&data, 1U);
unsigned char data2 = TAG_DATA;
m_rxFMData.addData(&data2, 1U);
m_rxFMData.addData(m_buffer + m_offset, m_length - m_offset);
}
@ -668,7 +668,7 @@ void CSerialModem::clock(unsigned int ms)
if(m_trace)
CUtils::dump(1U, "RX FM End of transmission", m_buffer, m_length);
unsigned char data = m_length - m_offset + 1U;
unsigned char data = m_length - m_offset;
m_rxFMData.addData(&data, 1U);
data = TAG_EOT;