mirror of https://github.com/g4klx/MMDVM.git
Remove unused I2C code and fix buffer handling bugs.
This commit is contained in:
parent
23ba73cabd
commit
ca4fff2ba6
|
@ -135,9 +135,7 @@ m_debug(false),
|
||||||
m_serialData(),
|
m_serialData(),
|
||||||
m_lastSerialAvail(0),
|
m_lastSerialAvail(0),
|
||||||
m_lastSerialAvailCount(0U),
|
m_lastSerialAvailCount(0U),
|
||||||
m_i2CData(),
|
m_i2CData()
|
||||||
m_lastI2CAvail(0),
|
|
||||||
m_lastI2CAvailCount(0U)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -888,7 +886,7 @@ void CSerialPort::process()
|
||||||
|
|
||||||
// The full packet has been received, process it
|
// The full packet has been received, process it
|
||||||
if (m_ptr == m_len)
|
if (m_ptr == m_len)
|
||||||
processMessage(m_buffer + 3U, m_len - 3U);
|
processMessage(m_buffer[2U], m_buffer + 3U, m_len - 3U);
|
||||||
} else {
|
} else {
|
||||||
// Any other bytes are added to the buffer
|
// Any other bytes are added to the buffer
|
||||||
m_buffer[m_ptr] = c;
|
m_buffer[m_ptr] = c;
|
||||||
|
@ -897,9 +895,9 @@ void CSerialPort::process()
|
||||||
// The full packet has been received, process it
|
// The full packet has been received, process it
|
||||||
if (m_ptr == m_len) {
|
if (m_ptr == m_len) {
|
||||||
if (m_len > 255U)
|
if (m_len > 255U)
|
||||||
processMessage(m_buffer + 4U, m_len - 4U);
|
processMessage(m_buffer[3U], m_buffer + 4U, m_len - 4U);
|
||||||
else
|
else
|
||||||
processMessage(m_buffer + 3U, m_len - 3U);
|
processMessage(m_buffer[2U], m_buffer + 3U, m_len - 3U);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -956,31 +954,14 @@ void CSerialPort::process()
|
||||||
writeInt(10U, &c, 1U);
|
writeInt(10U, &c, 1U);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read any incoming serial data, and send out in batches
|
|
||||||
int i2CAvail = availableForReadInt(10U);
|
|
||||||
if ((i2CAvail > 0 && i2CAvail == m_lastI2CAvail && m_lastI2CAvailCount >= MAX_SERIAL_COUNT) || (i2CAvail >= MAX_SERIAL_DATA)) {
|
|
||||||
uint8_t buffer[MAX_SERIAL_DATA];
|
|
||||||
for (int i = 0; i < i2CAvail && i < MAX_SERIAL_DATA; i++) {
|
|
||||||
buffer[i] = readInt(10U);
|
|
||||||
m_lastI2CAvail--;
|
|
||||||
}
|
|
||||||
writeI2CData(buffer, i2CAvail - m_lastI2CAvail);
|
|
||||||
m_lastI2CAvailCount = 0U;
|
|
||||||
} else if (i2CAvail > 0U && i2CAvail == m_lastI2CAvail) {
|
|
||||||
m_lastI2CAvailCount++;
|
|
||||||
} else {
|
|
||||||
m_lastI2CAvail = i2CAvail;
|
|
||||||
m_lastI2CAvailCount = 0U;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSerialPort::processMessage(const uint8_t* buffer, uint16_t length)
|
void CSerialPort::processMessage(uint8_t type, const uint8_t* buffer, uint16_t length)
|
||||||
{
|
{
|
||||||
uint8_t err = 2U;
|
uint8_t err = 2U;
|
||||||
|
|
||||||
switch (m_buffer[2U]) {
|
switch (type) {
|
||||||
case MMDVM_GET_STATUS:
|
case MMDVM_GET_STATUS:
|
||||||
getStatus();
|
getStatus();
|
||||||
break;
|
break;
|
||||||
|
@ -1176,12 +1157,12 @@ void CSerialPort::processMessage(const uint8_t* buffer, uint16_t length)
|
||||||
case MMDVM_DMR_START:
|
case MMDVM_DMR_START:
|
||||||
if (m_dmrEnable) {
|
if (m_dmrEnable) {
|
||||||
err = 4U;
|
err = 4U;
|
||||||
if (m_len == 4U) {
|
if (length == 1U) {
|
||||||
if (m_buffer[3U] == 0x01U && m_modemState == STATE_DMR) {
|
if (buffer[0U] == 0x01U && m_modemState == STATE_DMR) {
|
||||||
if (!m_tx)
|
if (!m_tx)
|
||||||
dmrTX.setStart(true);
|
dmrTX.setStart(true);
|
||||||
err = 0U;
|
err = 0U;
|
||||||
} else if (m_buffer[3U] == 0x00U && m_modemState == STATE_DMR) {
|
} else if (buffer[0U] == 0x00U && m_modemState == STATE_DMR) {
|
||||||
if (m_tx)
|
if (m_tx)
|
||||||
dmrTX.setStart(false);
|
dmrTX.setStart(false);
|
||||||
err = 0U;
|
err = 0U;
|
||||||
|
@ -1311,7 +1292,7 @@ void CSerialPort::processMessage(const uint8_t* buffer, uint16_t length)
|
||||||
case MMDVM_FM_DATA:
|
case MMDVM_FM_DATA:
|
||||||
if (m_fmEnable) {
|
if (m_fmEnable) {
|
||||||
if (m_modemState == STATE_IDLE || m_modemState == STATE_FM)
|
if (m_modemState == STATE_IDLE || m_modemState == STATE_FM)
|
||||||
err = fm.writeData(m_buffer + 3U, m_len - 3U);
|
err = fm.writeData(buffer, length);
|
||||||
}
|
}
|
||||||
if (err == 0U) {
|
if (err == 0U) {
|
||||||
if (m_modemState == STATE_IDLE)
|
if (m_modemState == STATE_IDLE)
|
||||||
|
@ -1343,16 +1324,16 @@ void CSerialPort::processMessage(const uint8_t* buffer, uint16_t length)
|
||||||
|
|
||||||
#if defined(SERIAL_REPEATER)
|
#if defined(SERIAL_REPEATER)
|
||||||
case MMDVM_SERIAL_DATA: {
|
case MMDVM_SERIAL_DATA: {
|
||||||
for (uint8_t i = 3U; i < m_len; i++)
|
for (uint16_t i = 0U; i < length; i++)
|
||||||
m_serialData.put(m_buffer[i]);
|
m_serialData.put(buffer[i]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(I2C_REPEATER)
|
#if defined(I2C_REPEATER)
|
||||||
case MMDVM_I2C_DATA: {
|
case MMDVM_I2C_DATA: {
|
||||||
for (uint8_t i = 3U; i < m_len; i++)
|
for (uint16_t i = 0U; i < length; i++)
|
||||||
m_i2CData.put(m_buffer[i]);
|
m_i2CData.put(buffer[i]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -105,8 +105,6 @@ private:
|
||||||
int m_lastSerialAvail;
|
int m_lastSerialAvail;
|
||||||
uint16_t m_lastSerialAvailCount;
|
uint16_t m_lastSerialAvailCount;
|
||||||
CRingBuffer<uint8_t> m_i2CData;
|
CRingBuffer<uint8_t> m_i2CData;
|
||||||
int m_lastI2CAvail;
|
|
||||||
uint16_t m_lastI2CAvailCount;
|
|
||||||
|
|
||||||
void sendACK();
|
void sendACK();
|
||||||
void sendNAK(uint8_t err);
|
void sendNAK(uint8_t err);
|
||||||
|
@ -115,7 +113,7 @@ private:
|
||||||
uint8_t setConfig(const uint8_t* data, uint16_t length);
|
uint8_t setConfig(const uint8_t* data, uint16_t length);
|
||||||
uint8_t setMode(const uint8_t* data, uint16_t length);
|
uint8_t setMode(const uint8_t* data, uint16_t length);
|
||||||
void setMode(MMDVM_STATE modemState);
|
void setMode(MMDVM_STATE modemState);
|
||||||
void processMessage(const uint8_t* data, uint16_t length);
|
void processMessage(uint8_t type, const uint8_t* data, uint16_t length);
|
||||||
|
|
||||||
#if defined(MODE_FM)
|
#if defined(MODE_FM)
|
||||||
uint8_t setFMParams1(const uint8_t* data, uint16_t length);
|
uint8_t setFMParams1(const uint8_t* data, uint16_t length);
|
||||||
|
|
Loading…
Reference in New Issue