mirror of
https://github.com/oe7drt/YSFClients.git
synced 2025-12-06 05:32:02 +01:00
Add Wires-X DX Request to any network.
This commit is contained in:
parent
baed7d67e2
commit
bee173f9e3
|
|
@ -429,11 +429,15 @@ void CWiresX::clock(unsigned int ms)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CWiresX::createReply(const unsigned char* data, unsigned int length)
|
void CWiresX::createReply(const unsigned char* data, unsigned int length, CYSFNetwork* network)
|
||||||
{
|
{
|
||||||
assert(data != NULL);
|
assert(data != NULL);
|
||||||
assert(length > 0U);
|
assert(length > 0U);
|
||||||
|
|
||||||
|
// If we don't explicitly pass a network, use the default one.
|
||||||
|
if (network == NULL)
|
||||||
|
network = m_network;
|
||||||
|
|
||||||
unsigned char bt = 0U;
|
unsigned char bt = 0U;
|
||||||
|
|
||||||
if (length > 260U) {
|
if (length > 260U) {
|
||||||
|
|
@ -475,7 +479,7 @@ void CWiresX::createReply(const unsigned char* data, unsigned int length)
|
||||||
buffer[34U] = seqNo;
|
buffer[34U] = seqNo;
|
||||||
seqNo += 2U;
|
seqNo += 2U;
|
||||||
|
|
||||||
m_network->write(buffer);
|
network->write(buffer);
|
||||||
|
|
||||||
fich.setFI(YSF_FI_COMMUNICATIONS);
|
fich.setFI(YSF_FI_COMMUNICATIONS);
|
||||||
|
|
||||||
|
|
@ -522,7 +526,7 @@ void CWiresX::createReply(const unsigned char* data, unsigned int length)
|
||||||
buffer[34U] = seqNo;
|
buffer[34U] = seqNo;
|
||||||
seqNo += 2U;
|
seqNo += 2U;
|
||||||
|
|
||||||
m_network->write(buffer);
|
network->write(buffer);
|
||||||
|
|
||||||
fn++;
|
fn++;
|
||||||
if (fn >= 8U) {
|
if (fn >= 8U) {
|
||||||
|
|
@ -542,7 +546,7 @@ void CWiresX::createReply(const unsigned char* data, unsigned int length)
|
||||||
|
|
||||||
buffer[34U] = seqNo | 0x01U;
|
buffer[34U] = seqNo | 0x01U;
|
||||||
|
|
||||||
m_network->write(buffer);
|
network->write(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char CWiresX::calculateFT(unsigned int length, unsigned int offset) const
|
unsigned char CWiresX::calculateFT(unsigned int length, unsigned int offset) const
|
||||||
|
|
@ -637,6 +641,27 @@ void CWiresX::sendDXReply()
|
||||||
m_seqNo++;
|
m_seqNo++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CWiresX::sendConnect(CYSFNetwork* network)
|
||||||
|
{
|
||||||
|
unsigned char data[20U];
|
||||||
|
::memset(data, 0x00U, 20U);
|
||||||
|
::memset(data, ' ', 16U);
|
||||||
|
|
||||||
|
data[0U] = m_seqNo;
|
||||||
|
|
||||||
|
for (unsigned int i = 0U; i < 3U; i++)
|
||||||
|
data[i + 1U] = DX_REQ[i];
|
||||||
|
|
||||||
|
data[15U] = 0x03U; // End of data marker
|
||||||
|
data[16U] = CCRC::addCRC(data, 16U);
|
||||||
|
|
||||||
|
CUtils::dump(1U, "CONNECT", data, 20U);
|
||||||
|
|
||||||
|
createReply(data, 20U, network);
|
||||||
|
|
||||||
|
m_seqNo++;
|
||||||
|
}
|
||||||
|
|
||||||
void CWiresX::sendConnectReply()
|
void CWiresX::sendConnectReply()
|
||||||
{
|
{
|
||||||
assert(m_reflector != NULL);
|
assert(m_reflector != NULL);
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,8 @@ public:
|
||||||
void processConnect(CYSFReflector* reflector);
|
void processConnect(CYSFReflector* reflector);
|
||||||
void processDisconnect(const unsigned char* source = NULL);
|
void processDisconnect(const unsigned char* source = NULL);
|
||||||
|
|
||||||
|
void sendConnect(CYSFNetwork* network);
|
||||||
|
|
||||||
void clock(unsigned int ms);
|
void clock(unsigned int ms);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
@ -102,7 +104,7 @@ private:
|
||||||
void sendSearchNotFoundReply();
|
void sendSearchNotFoundReply();
|
||||||
void sendCategoryReply();
|
void sendCategoryReply();
|
||||||
|
|
||||||
void createReply(const unsigned char* data, unsigned int length);
|
void createReply(const unsigned char* data, unsigned int length, CYSFNetwork* network = NULL);
|
||||||
unsigned char calculateFT(unsigned int length, unsigned int offset) const;
|
unsigned char calculateFT(unsigned int length, unsigned int offset) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue