mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-21 23:45:49 +08:00
Start the AX.25 transmit path development.
This commit is contained in:
@@ -49,7 +49,7 @@ bool CAX25Control::writeModem(unsigned char *data, unsigned int len)
|
|||||||
if (m_trace)
|
if (m_trace)
|
||||||
decode(data, len);
|
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)
|
if (m_network == NULL)
|
||||||
return true;
|
return true;
|
||||||
@@ -57,6 +57,24 @@ bool CAX25Control::writeModem(unsigned char *data, unsigned int len)
|
|||||||
return m_network->write(data, 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()
|
bool CAX25Control::openFile()
|
||||||
{
|
{
|
||||||
if (m_fp != NULL)
|
if (m_fp != NULL)
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ public:
|
|||||||
|
|
||||||
bool writeModem(unsigned char* data, unsigned int len);
|
bool writeModem(unsigned char* data, unsigned int len);
|
||||||
|
|
||||||
|
unsigned int readModem(unsigned char* data);
|
||||||
|
|
||||||
void enable(bool enabled);
|
void enable(bool enabled);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ void CAX25Network::enable(bool enabled)
|
|||||||
{
|
{
|
||||||
m_enabled = enabled;
|
m_enabled = enabled;
|
||||||
|
|
||||||
if (enabled && !m_enabled) {
|
if (enabled != m_enabled) {
|
||||||
m_rxLastChar = 0U;
|
m_rxLastChar = 0U;
|
||||||
m_rxLength = 0U;
|
m_rxLength = 0U;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -688,7 +688,7 @@ int CMMDVMHost::run()
|
|||||||
m_ump->setCD(cd);
|
m_ump->setCD(cd);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char data[220U];
|
unsigned char data[500U];
|
||||||
unsigned int len;
|
unsigned int len;
|
||||||
bool ret;
|
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) {
|
if (transparentSocket != NULL) {
|
||||||
in_addr address;
|
in_addr address;
|
||||||
unsigned int port = 0U;
|
unsigned int port = 0U;
|
||||||
|
|||||||
2
Modem.h
2
Modem.h
@@ -80,6 +80,7 @@ public:
|
|||||||
virtual bool hasP25Space() const;
|
virtual bool hasP25Space() const;
|
||||||
virtual bool hasNXDNSpace() const;
|
virtual bool hasNXDNSpace() const;
|
||||||
virtual bool hasPOCSAGSpace() const;
|
virtual bool hasPOCSAGSpace() const;
|
||||||
|
virtual bool hasAX25Space() const;
|
||||||
|
|
||||||
virtual bool hasTX() const;
|
virtual bool hasTX() const;
|
||||||
virtual bool hasCD() const;
|
virtual bool hasCD() const;
|
||||||
@@ -95,6 +96,7 @@ public:
|
|||||||
virtual bool writeP25Data(const unsigned char* data, unsigned int length);
|
virtual bool writeP25Data(const unsigned char* data, unsigned int length);
|
||||||
virtual bool writeNXDNData(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 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);
|
virtual bool writeTransparentData(const unsigned char* data, unsigned int length);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user