I2C is write-only.
This commit is contained in:
parent
14bb39af63
commit
d48939bd90
5 changed files with 3 additions and 62 deletions
1
Modem.h
1
Modem.h
|
@ -105,7 +105,6 @@ public:
|
||||||
virtual unsigned int readSerial(unsigned char* data, unsigned int length) = 0;
|
virtual unsigned int readSerial(unsigned char* data, unsigned int length) = 0;
|
||||||
|
|
||||||
virtual bool writeI2C(const unsigned char* data, unsigned int length) = 0;
|
virtual bool writeI2C(const unsigned char* data, unsigned int length) = 0;
|
||||||
virtual unsigned int readI2C(unsigned char* data, unsigned int length) = 0;
|
|
||||||
|
|
||||||
virtual unsigned char getMode() const = 0;
|
virtual unsigned char getMode() const = 0;
|
||||||
virtual bool setMode(unsigned char mode) = 0;
|
virtual bool setMode(unsigned char mode) = 0;
|
||||||
|
|
|
@ -107,7 +107,6 @@ public:
|
||||||
virtual unsigned int readSerial(unsigned char* data, unsigned int length) { return 0U; };
|
virtual unsigned int readSerial(unsigned char* data, unsigned int length) { return 0U; };
|
||||||
|
|
||||||
virtual bool writeI2C(const unsigned char* data, unsigned int length) { return true; };
|
virtual bool writeI2C(const unsigned char* data, unsigned int length) { return true; };
|
||||||
virtual unsigned int readI2C(unsigned char* data, unsigned int length) { return 0U; };
|
|
||||||
|
|
||||||
virtual unsigned char getMode() const { return MODE_IDLE; };
|
virtual unsigned char getMode() const { return MODE_IDLE; };
|
||||||
virtual bool setMode(unsigned char mode) { return true; };
|
virtual bool setMode(unsigned char mode) { return true; };
|
||||||
|
|
|
@ -184,9 +184,6 @@ m_txFMData(5000U, "Modem TX FM"),
|
||||||
m_rxAX25Data(1000U, "Modem RX AX.25"),
|
m_rxAX25Data(1000U, "Modem RX AX.25"),
|
||||||
m_txAX25Data(1000U, "Modem TX AX.25"),
|
m_txAX25Data(1000U, "Modem TX AX.25"),
|
||||||
m_rxSerialData(1000U, "Modem RX Serial"),
|
m_rxSerialData(1000U, "Modem RX Serial"),
|
||||||
m_txSerialData(1000U, "Modem TX Serial"),
|
|
||||||
m_rxI2CData(1000U, "Modem RX I2C"),
|
|
||||||
m_txI2CData(1000U, "Modem TX I2C"),
|
|
||||||
m_rxTransparentData(1000U, "Modem RX Transparent"),
|
m_rxTransparentData(1000U, "Modem RX Transparent"),
|
||||||
m_txTransparentData(1000U, "Modem TX Transparent"),
|
m_txTransparentData(1000U, "Modem TX Transparent"),
|
||||||
m_sendTransparentDataFrameType(0U),
|
m_sendTransparentDataFrameType(0U),
|
||||||
|
@ -875,12 +872,6 @@ void CSerialModem::clock(unsigned int ms)
|
||||||
m_rxSerialData.addData(m_buffer + m_offset, m_length - m_offset);
|
m_rxSerialData.addData(m_buffer + m_offset, m_length - m_offset);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MMDVM_I2C_DATA:
|
|
||||||
if (m_trace)
|
|
||||||
CUtils::dump(1U, "RX I2C Data", m_buffer, m_length);
|
|
||||||
m_rxI2CData.addData(m_buffer + m_offset, m_length - m_offset);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
LogMessage("Unknown message, type: %02X", m_type);
|
LogMessage("Unknown message, type: %02X", m_type);
|
||||||
CUtils::dump("Buffer dump", m_buffer, m_length);
|
CUtils::dump("Buffer dump", m_buffer, m_length);
|
||||||
|
@ -1099,32 +1090,6 @@ void CSerialModem::clock(unsigned int ms)
|
||||||
if (ret != int(len))
|
if (ret != int(len))
|
||||||
LogWarning("Error when writing Transparent data to the MMDVM");
|
LogWarning("Error when writing Transparent data to the MMDVM");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_txSerialData.isEmpty()) {
|
|
||||||
unsigned char len = 0U;
|
|
||||||
m_txSerialData.getData(&len, 1U);
|
|
||||||
m_txSerialData.getData(m_buffer, len);
|
|
||||||
|
|
||||||
if (m_trace)
|
|
||||||
CUtils::dump(1U, "TX Serial Data", m_buffer, len);
|
|
||||||
|
|
||||||
int ret = m_serial->write(m_buffer, len);
|
|
||||||
if (ret != int(len))
|
|
||||||
LogWarning("Error when writing Serial data to the MMDVM");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!m_txI2CData.isEmpty()) {
|
|
||||||
unsigned char len = 0U;
|
|
||||||
m_txI2CData.getData(&len, 1U);
|
|
||||||
m_txI2CData.getData(m_buffer, len);
|
|
||||||
|
|
||||||
if (m_trace)
|
|
||||||
CUtils::dump(1U, "TX I2C Data", m_buffer, len);
|
|
||||||
|
|
||||||
int ret = m_serial->write(m_buffer, len);
|
|
||||||
if (ret != int(len))
|
|
||||||
LogWarning("Error when writing I2C data to the MMDVM");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSerialModem::close()
|
void CSerialModem::close()
|
||||||
|
@ -1290,20 +1255,6 @@ unsigned int CSerialModem::readSerial(unsigned char* data, unsigned int length)
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int CSerialModem::readI2C(unsigned char* data, unsigned int length)
|
|
||||||
{
|
|
||||||
assert(data != NULL);
|
|
||||||
assert(length > 0U);
|
|
||||||
|
|
||||||
unsigned int n = 0U;
|
|
||||||
while (!m_rxI2CData.isEmpty() && n < length) {
|
|
||||||
m_rxI2CData.getData(data + n, 1U);
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CSerialModem::hasDStarSpace() const
|
bool CSerialModem::hasDStarSpace() const
|
||||||
{
|
{
|
||||||
unsigned int space = m_txDStarData.freeSpace() / (DSTAR_FRAME_LENGTH_BYTES + 4U);
|
unsigned int space = m_txDStarData.freeSpace() / (DSTAR_FRAME_LENGTH_BYTES + 4U);
|
||||||
|
@ -1670,9 +1621,7 @@ bool CSerialModem::writeSerial(const unsigned char* data, unsigned int length)
|
||||||
|
|
||||||
::memcpy(buffer + 3U, data, length);
|
::memcpy(buffer + 3U, data, length);
|
||||||
|
|
||||||
unsigned char len = length + 3U;
|
m_serial->write(buffer, length + 3U);
|
||||||
m_txSerialData.addData(&len, 1U);
|
|
||||||
m_txSerialData.addData(buffer, len);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1691,9 +1640,7 @@ bool CSerialModem::writeI2C(const unsigned char* data, unsigned int length)
|
||||||
|
|
||||||
::memcpy(buffer + 3U, data, length);
|
::memcpy(buffer + 3U, data, length);
|
||||||
|
|
||||||
unsigned char len = length + 3U;
|
m_serial->write(buffer, length + 3U);
|
||||||
m_txI2CData.addData(&len, 1U);
|
|
||||||
m_txI2CData.addData(buffer, len);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,7 +125,6 @@ public:
|
||||||
virtual unsigned int readSerial(unsigned char* data, unsigned int length);
|
virtual unsigned int readSerial(unsigned char* data, unsigned int length);
|
||||||
|
|
||||||
virtual bool writeI2C(const unsigned char* data, unsigned int length);
|
virtual bool writeI2C(const unsigned char* data, unsigned int length);
|
||||||
virtual unsigned int readI2C(unsigned char* data, unsigned int length);
|
|
||||||
|
|
||||||
virtual unsigned char getMode() const;
|
virtual unsigned char getMode() const;
|
||||||
virtual bool setMode(unsigned char mode);
|
virtual bool setMode(unsigned char mode);
|
||||||
|
@ -208,9 +207,6 @@ private:
|
||||||
CRingBuffer<unsigned char> m_rxAX25Data;
|
CRingBuffer<unsigned char> m_rxAX25Data;
|
||||||
CRingBuffer<unsigned char> m_txAX25Data;
|
CRingBuffer<unsigned char> m_txAX25Data;
|
||||||
CRingBuffer<unsigned char> m_rxSerialData;
|
CRingBuffer<unsigned char> m_rxSerialData;
|
||||||
CRingBuffer<unsigned char> m_txSerialData;
|
|
||||||
CRingBuffer<unsigned char> m_rxI2CData;
|
|
||||||
CRingBuffer<unsigned char> m_txI2CData;
|
|
||||||
CRingBuffer<unsigned char> m_rxTransparentData;
|
CRingBuffer<unsigned char> m_rxTransparentData;
|
||||||
CRingBuffer<unsigned char> m_txTransparentData;
|
CRingBuffer<unsigned char> m_txTransparentData;
|
||||||
unsigned int m_sendTransparentDataFrameType;
|
unsigned int m_sendTransparentDataFrameType;
|
||||||
|
|
|
@ -19,6 +19,6 @@
|
||||||
#if !defined(VERSION_H)
|
#if !defined(VERSION_H)
|
||||||
#define VERSION_H
|
#define VERSION_H
|
||||||
|
|
||||||
const char* VERSION = "20201113";
|
const char* VERSION = "20201115";
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue