Start the AX.25 transmit path development.
This commit is contained in:
parent
27c9ad43ec
commit
c026471aec
|
@ -49,7 +49,7 @@ bool CAX25Control::writeModem(unsigned char *data, unsigned int len)
|
|||
if (m_trace)
|
||||
decode(data, len);
|
||||
|
||||
CUtils::dump(1U, "AX.25 raw packet", data, len);
|
||||
CUtils::dump(1U, "AX.25 received packet", data, len);
|
||||
|
||||
if (m_network == NULL)
|
||||
return true;
|
||||
|
@ -57,6 +57,24 @@ bool CAX25Control::writeModem(unsigned char *data, unsigned int len)
|
|||
return m_network->write(data, len);
|
||||
}
|
||||
|
||||
unsigned int CAX25Control::readModem(unsigned char* data)
|
||||
{
|
||||
assert(data != NULL);
|
||||
|
||||
if (m_network == NULL)
|
||||
return 0U;
|
||||
|
||||
if (!m_enabled)
|
||||
return 0U;
|
||||
|
||||
unsigned int length = m_network->read(data, 500U);
|
||||
|
||||
if (length > 0U)
|
||||
CUtils::dump(1U, "AX.25 transmitted packet", data, length);
|
||||
|
||||
return length;
|
||||
}
|
||||
|
||||
bool CAX25Control::openFile()
|
||||
{
|
||||
if (m_fp != NULL)
|
||||
|
|
|
@ -30,6 +30,8 @@ public:
|
|||
|
||||
bool writeModem(unsigned char* data, unsigned int len);
|
||||
|
||||
unsigned int readModem(unsigned char* data);
|
||||
|
||||
void enable(bool enabled);
|
||||
|
||||
private:
|
||||
|
|
|
@ -181,7 +181,7 @@ void CAX25Network::enable(bool enabled)
|
|||
{
|
||||
m_enabled = enabled;
|
||||
|
||||
if (enabled && !m_enabled) {
|
||||
if (enabled != m_enabled) {
|
||||
m_rxLastChar = 0U;
|
||||
m_rxLength = 0U;
|
||||
}
|
||||
|
|
|
@ -688,7 +688,7 @@ int CMMDVMHost::run()
|
|||
m_ump->setCD(cd);
|
||||
}
|
||||
|
||||
unsigned char data[220U];
|
||||
unsigned char data[500U];
|
||||
unsigned int len;
|
||||
bool ret;
|
||||
|
||||
|
@ -989,6 +989,20 @@ int CMMDVMHost::run()
|
|||
}
|
||||
}
|
||||
|
||||
if (m_ax25 != NULL) {
|
||||
ret = m_modem->hasAX25Space();
|
||||
if (ret) {
|
||||
len = m_ax25->readModem(data);
|
||||
if (len > 0U) {
|
||||
if (m_mode == MODE_IDLE || m_mode == MODE_FM) {
|
||||
m_modem->writeAX25Data(data, len);
|
||||
} else if (m_mode != MODE_LOCKOUT) {
|
||||
LogWarning("AX.25 data received when in mode %u", m_mode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (transparentSocket != NULL) {
|
||||
in_addr address;
|
||||
unsigned int port = 0U;
|
||||
|
|
2
Modem.h
2
Modem.h
|
@ -80,6 +80,7 @@ public:
|
|||
virtual bool hasP25Space() const;
|
||||
virtual bool hasNXDNSpace() const;
|
||||
virtual bool hasPOCSAGSpace() const;
|
||||
virtual bool hasAX25Space() const;
|
||||
|
||||
virtual bool hasTX() const;
|
||||
virtual bool hasCD() const;
|
||||
|
@ -95,6 +96,7 @@ public:
|
|||
virtual bool writeP25Data(const unsigned char* data, unsigned int length);
|
||||
virtual bool writeNXDNData(const unsigned char* data, unsigned int length);
|
||||
virtual bool writePOCSAGData(const unsigned char* data, unsigned int length);
|
||||
virtual bool writeAX25Data(const unsigned char* data, unsigned int length);
|
||||
|
||||
virtual bool writeTransparentData(const unsigned char* data, unsigned int length);
|
||||
|
||||
|
|
Loading…
Reference in a new issue