Fix buffer underrun in FM

This commit is contained in:
Geoffrey Merck
2020-07-04 13:04:24 +02:00
parent 954231ccbc
commit 41dc96affe

View File

@@ -248,7 +248,7 @@ void CSerialModem::setSerialParams(const std::string& protocol, unsigned int add
m_serial = new CI2CController(m_port, address); m_serial = new CI2CController(m_port, address);
else else
#endif #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) 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) if (m_trace)
CUtils::dump(1U, "RX FM Data", m_buffer, m_length); 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)); m_rxFMData.addData((unsigned char*)&data1, sizeof(unsigned int));
unsigned char data2 = TAG_DATA; unsigned char data2 = TAG_DATA;
@@ -654,11 +654,11 @@ void CSerialModem::clock(unsigned int ms)
if (m_trace) if (m_trace)
CUtils::dump(1U, "RX FM Control", m_buffer, m_length); CUtils::dump(1U, "RX FM Control", m_buffer, m_length);
unsigned char data = m_length - m_offset + 1U; unsigned int data1 = m_length - m_offset;
m_rxFMData.addData(&data, 1U); m_rxFMData.addData((unsigned char*)&data1, sizeof(unsigned int));
data = TAG_HEADER; unsigned char data2 = TAG_DATA;
m_rxFMData.addData(&data, 1U); m_rxFMData.addData(&data2, 1U);
m_rxFMData.addData(m_buffer + m_offset, m_length - m_offset); m_rxFMData.addData(m_buffer + m_offset, m_length - m_offset);
} }
@@ -668,7 +668,7 @@ void CSerialModem::clock(unsigned int ms)
if(m_trace) if(m_trace)
CUtils::dump(1U, "RX FM End of transmission", m_buffer, m_length); 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); m_rxFMData.addData(&data, 1U);
data = TAG_EOT; data = TAG_EOT;