mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-24 01:25:41 +08:00
Change the handling of the sequence numbers in iAX.
This commit is contained in:
123
FMIAXNetwork.cpp
123
FMIAXNetwork.cpp
@@ -140,8 +140,10 @@ m_retryTimer(1000U, 0U, 500U),
|
|||||||
m_pingTimer(1000U, 2U),
|
m_pingTimer(1000U, 2U),
|
||||||
m_seed(),
|
m_seed(),
|
||||||
m_timestamp(),
|
m_timestamp(),
|
||||||
m_sCallNo(0U),
|
m_sAuthCallNo(0U),
|
||||||
m_dCallNo(0U),
|
m_dAuthCallNo(0U),
|
||||||
|
m_sLinkCallNo(0U),
|
||||||
|
m_dLinkCallNo(0U),
|
||||||
m_iSeqNo(0U),
|
m_iSeqNo(0U),
|
||||||
m_oSeqNo(0U),
|
m_oSeqNo(0U),
|
||||||
m_callToken(),
|
m_callToken(),
|
||||||
@@ -204,14 +206,14 @@ bool CFMIAXNetwork::open()
|
|||||||
if (!ret)
|
if (!ret)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
m_dCallNo = 0U;
|
m_dAuthCallNo = 0U;
|
||||||
|
m_dLinkCallNo = 0U;
|
||||||
m_rxFrames = 0U;
|
m_rxFrames = 0U;
|
||||||
m_keyed = false;
|
m_keyed = false;
|
||||||
|
|
||||||
std::uniform_int_distribution<uint16_t> dist(0x0001U, 0x7FFFU);
|
std::uniform_int_distribution<uint16_t> dist(0x0001U, 0x7FFFU);
|
||||||
m_sCallNo = dist(m_random);
|
m_sAuthCallNo = dist(m_random);
|
||||||
|
m_sLinkCallNo = dist(m_random);
|
||||||
LogMessage("Source call number set to %u", m_sCallNo);
|
|
||||||
|
|
||||||
ret = writeRegReq();
|
ret = writeRegReq();
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
@@ -317,12 +319,6 @@ void CFMIAXNetwork::clock(unsigned int ms)
|
|||||||
unsigned int ts = (buffer[4U] << 24) | (buffer[5U] << 16) | (buffer[6U] << 8) | (buffer[7U] << 0);
|
unsigned int ts = (buffer[4U] << 24) | (buffer[5U] << 16) | (buffer[6U] << 8) | (buffer[7U] << 0);
|
||||||
unsigned char iSeqNo = buffer[8U];
|
unsigned char iSeqNo = buffer[8U];
|
||||||
|
|
||||||
// Grab the destination call number if we don't have it already
|
|
||||||
if (m_dCallNo == 0U) {
|
|
||||||
m_dCallNo = ((buffer[0U] << 8) | (buffer[1U] << 0)) & 0x7FFFU;
|
|
||||||
LogMessage("Destination call number set to %u", m_dCallNo);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (compareFrame(buffer, AST_FRAME_IAX, IAX_COMMAND_ACK)) {
|
if (compareFrame(buffer, AST_FRAME_IAX, IAX_COMMAND_ACK)) {
|
||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
CUtils::dump(1U, "FM IAX Network Data Received", buffer, length);
|
CUtils::dump(1U, "FM IAX Network Data Received", buffer, length);
|
||||||
@@ -351,6 +347,8 @@ void CFMIAXNetwork::clock(unsigned int ms)
|
|||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
CUtils::dump(1U, "FM IAX Network Data Received", buffer, length);
|
CUtils::dump(1U, "FM IAX Network Data Received", buffer, length);
|
||||||
#endif
|
#endif
|
||||||
|
m_dLinkCallNo = ((buffer[0U] << 8) | (buffer[1U] << 0)) & 0x7FFFU;
|
||||||
|
|
||||||
m_callToken = getIEString(buffer, length, IAX_IE_CALLTOKEN);
|
m_callToken = getIEString(buffer, length, IAX_IE_CALLTOKEN);
|
||||||
|
|
||||||
LogMessage("IAX CALLTOKEN received: \"%s\"", m_callToken.c_str());
|
LogMessage("IAX CALLTOKEN received: \"%s\"", m_callToken.c_str());
|
||||||
@@ -406,6 +404,8 @@ void CFMIAXNetwork::clock(unsigned int ms)
|
|||||||
CUtils::dump(1U, "FM IAX Network Data Received", buffer, length);
|
CUtils::dump(1U, "FM IAX Network Data Received", buffer, length);
|
||||||
LogDebug("IAX REGAUTH received");
|
LogDebug("IAX REGAUTH received");
|
||||||
#endif
|
#endif
|
||||||
|
m_dAuthCallNo = ((buffer[0U] << 8) | (buffer[1U] << 0)) & 0x7FFFU;
|
||||||
|
|
||||||
m_rxFrames++;
|
m_rxFrames++;
|
||||||
m_iSeqNo = iSeqNo + 1U;
|
m_iSeqNo = iSeqNo + 1U;
|
||||||
|
|
||||||
@@ -632,7 +632,7 @@ bool CFMIAXNetwork::writeNew()
|
|||||||
LogDebug("IAX NEW sent");
|
LogDebug("IAX NEW sent");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
unsigned short sCall = m_sLinkCallNo | 0x8000U;
|
||||||
|
|
||||||
m_timestamp.start();
|
m_timestamp.start();
|
||||||
|
|
||||||
@@ -686,6 +686,8 @@ bool CFMIAXNetwork::writeNew()
|
|||||||
#endif
|
#endif
|
||||||
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, length);
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, length);
|
||||||
|
|
||||||
|
m_oSeqNo++;
|
||||||
|
|
||||||
return m_socket.write(buffer, length, m_serverAddr, m_serverAddrLen);
|
return m_socket.write(buffer, length, m_serverAddr, m_serverAddrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -694,9 +696,8 @@ bool CFMIAXNetwork::writeKey(bool key)
|
|||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX KEY/UNKEY sent");
|
LogDebug("IAX KEY/UNKEY sent");
|
||||||
#endif
|
#endif
|
||||||
m_oSeqNo++;
|
|
||||||
|
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
unsigned short sCall = m_sLinkCallNo | 0x8000U;
|
||||||
unsigned int ts = m_timestamp.elapsed();
|
unsigned int ts = m_timestamp.elapsed();
|
||||||
|
|
||||||
unsigned char buffer[15U];
|
unsigned char buffer[15U];
|
||||||
@@ -704,8 +705,8 @@ bool CFMIAXNetwork::writeKey(bool key)
|
|||||||
buffer[0U] = (sCall >> 8) & 0xFFU;
|
buffer[0U] = (sCall >> 8) & 0xFFU;
|
||||||
buffer[1U] = (sCall >> 0) & 0xFFU;
|
buffer[1U] = (sCall >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[2U] = (m_dCallNo >> 8) & 0xFFU;
|
buffer[2U] = (m_dLinkCallNo >> 8) & 0xFFU;
|
||||||
buffer[3U] = (m_dCallNo >> 0) & 0xFFU;
|
buffer[3U] = (m_dLinkCallNo >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[4U] = (ts >> 24) & 0xFFU;
|
buffer[4U] = (ts >> 24) & 0xFFU;
|
||||||
buffer[5U] = (ts >> 16) & 0xFFU;
|
buffer[5U] = (ts >> 16) & 0xFFU;
|
||||||
@@ -725,6 +726,8 @@ bool CFMIAXNetwork::writeKey(bool key)
|
|||||||
#endif
|
#endif
|
||||||
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 12U);
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 12U);
|
||||||
|
|
||||||
|
m_oSeqNo++;
|
||||||
|
|
||||||
return m_socket.write(buffer, 12U, m_serverAddr, m_serverAddrLen);
|
return m_socket.write(buffer, 12U, m_serverAddr, m_serverAddrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -735,9 +738,8 @@ bool CFMIAXNetwork::writePing(const sockaddr_storage& addr, unsigned int addrLen
|
|||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX PING sent");
|
LogDebug("IAX PING sent");
|
||||||
#endif
|
#endif
|
||||||
m_oSeqNo++;
|
|
||||||
|
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
unsigned short sCall = m_sLinkCallNo | 0x8000U;
|
||||||
unsigned int ts = m_timestamp.elapsed();
|
unsigned int ts = m_timestamp.elapsed();
|
||||||
|
|
||||||
unsigned char buffer[15U];
|
unsigned char buffer[15U];
|
||||||
@@ -745,8 +747,8 @@ bool CFMIAXNetwork::writePing(const sockaddr_storage& addr, unsigned int addrLen
|
|||||||
buffer[0U] = (sCall >> 8) & 0xFFU;
|
buffer[0U] = (sCall >> 8) & 0xFFU;
|
||||||
buffer[1U] = (sCall >> 0) & 0xFFU;
|
buffer[1U] = (sCall >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[2U] = (m_dCallNo >> 8) & 0xFFU;
|
buffer[2U] = (m_dLinkCallNo >> 8) & 0xFFU;
|
||||||
buffer[3U] = (m_dCallNo >> 0) & 0xFFU;
|
buffer[3U] = (m_dLinkCallNo >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[4U] = (ts >> 24) & 0xFFU;
|
buffer[4U] = (ts >> 24) & 0xFFU;
|
||||||
buffer[5U] = (ts >> 16) & 0xFFU;
|
buffer[5U] = (ts >> 16) & 0xFFU;
|
||||||
@@ -766,6 +768,8 @@ bool CFMIAXNetwork::writePing(const sockaddr_storage& addr, unsigned int addrLen
|
|||||||
#endif
|
#endif
|
||||||
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 12U);
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 12U);
|
||||||
|
|
||||||
|
m_oSeqNo++;
|
||||||
|
|
||||||
return m_socket.write(buffer, 12U, addr, addrLen);
|
return m_socket.write(buffer, 12U, addr, addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -776,17 +780,16 @@ bool CFMIAXNetwork::writePong(const sockaddr_storage& addr, unsigned int addrLen
|
|||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX PONG sent");
|
LogDebug("IAX PONG sent");
|
||||||
#endif
|
#endif
|
||||||
m_oSeqNo++;
|
|
||||||
|
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
unsigned short sCall = m_sLinkCallNo | 0x8000U;
|
||||||
|
|
||||||
unsigned char buffer[50U];
|
unsigned char buffer[50U];
|
||||||
|
|
||||||
buffer[0U] = (sCall >> 8) & 0xFFU;
|
buffer[0U] = (sCall >> 8) & 0xFFU;
|
||||||
buffer[1U] = (sCall >> 0) & 0xFFU;
|
buffer[1U] = (sCall >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[2U] = (m_dCallNo >> 8) & 0xFFU;
|
buffer[2U] = (m_dLinkCallNo >> 8) & 0xFFU;
|
||||||
buffer[3U] = (m_dCallNo >> 0) & 0xFFU;
|
buffer[3U] = (m_dLinkCallNo >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[4U] = (ts >> 24) & 0xFFU;
|
buffer[4U] = (ts >> 24) & 0xFFU;
|
||||||
buffer[5U] = (ts >> 16) & 0xFFU;
|
buffer[5U] = (ts >> 16) & 0xFFU;
|
||||||
@@ -819,6 +822,8 @@ bool CFMIAXNetwork::writePong(const sockaddr_storage& addr, unsigned int addrLen
|
|||||||
#endif
|
#endif
|
||||||
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 46U);
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 46U);
|
||||||
|
|
||||||
|
m_oSeqNo++;
|
||||||
|
|
||||||
return m_socket.write(buffer, 46U, addr, addrLen);
|
return m_socket.write(buffer, 46U, addr, addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -829,15 +834,25 @@ bool CFMIAXNetwork::writeAck(const sockaddr_storage& addr, unsigned int addrLen,
|
|||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX ACK sent");
|
LogDebug("IAX ACK sent");
|
||||||
#endif
|
#endif
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
|
||||||
|
unsigned short sCallNo = 0U;
|
||||||
|
unsigned short dCallNo = 0U;
|
||||||
|
|
||||||
|
if (m_status == IAXS_REGISTERING) {
|
||||||
|
sCallNo = m_sAuthCallNo | 0x8000U;
|
||||||
|
dCallNo = m_dAuthCallNo;
|
||||||
|
} else {
|
||||||
|
sCallNo = m_sLinkCallNo | 0x8000U;
|
||||||
|
dCallNo = m_dLinkCallNo;
|
||||||
|
}
|
||||||
|
|
||||||
unsigned char buffer[15U];
|
unsigned char buffer[15U];
|
||||||
|
|
||||||
buffer[0U] = (sCall >> 8) & 0xFFU;
|
buffer[0U] = (sCallNo >> 8) & 0xFFU;
|
||||||
buffer[1U] = (sCall >> 0) & 0xFFU;
|
buffer[1U] = (sCallNo >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[2U] = (m_dCallNo >> 8) & 0xFFU;
|
buffer[2U] = (dCallNo >> 8) & 0xFFU;
|
||||||
buffer[3U] = (m_dCallNo >> 0) & 0xFFU;
|
buffer[3U] = (dCallNo >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[4U] = (ts >> 24) & 0xFFU;
|
buffer[4U] = (ts >> 24) & 0xFFU;
|
||||||
buffer[5U] = (ts >> 16) & 0xFFU;
|
buffer[5U] = (ts >> 16) & 0xFFU;
|
||||||
@@ -867,17 +882,16 @@ bool CFMIAXNetwork::writeLagRp(const sockaddr_storage& addr, unsigned int addrLe
|
|||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX LAGRP sent");
|
LogDebug("IAX LAGRP sent");
|
||||||
#endif
|
#endif
|
||||||
m_oSeqNo++;
|
|
||||||
|
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
unsigned short sCall = m_sLinkCallNo | 0x8000U;
|
||||||
|
|
||||||
unsigned char buffer[15U];
|
unsigned char buffer[15U];
|
||||||
|
|
||||||
buffer[0U] = (sCall >> 8) & 0xFFU;
|
buffer[0U] = (sCall >> 8) & 0xFFU;
|
||||||
buffer[1U] = (sCall >> 0) & 0xFFU;
|
buffer[1U] = (sCall >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[2U] = (m_dCallNo >> 8) & 0xFFU;
|
buffer[2U] = (m_dLinkCallNo >> 8) & 0xFFU;
|
||||||
buffer[3U] = (m_dCallNo >> 0) & 0xFFU;
|
buffer[3U] = (m_dLinkCallNo >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[4U] = (ts >> 24) & 0xFFU;
|
buffer[4U] = (ts >> 24) & 0xFFU;
|
||||||
buffer[5U] = (ts >> 16) & 0xFFU;
|
buffer[5U] = (ts >> 16) & 0xFFU;
|
||||||
@@ -897,6 +911,8 @@ bool CFMIAXNetwork::writeLagRp(const sockaddr_storage& addr, unsigned int addrLe
|
|||||||
#endif
|
#endif
|
||||||
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 12U);
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 12U);
|
||||||
|
|
||||||
|
m_oSeqNo++;
|
||||||
|
|
||||||
return m_socket.write(buffer, 12U, addr, addrLen);
|
return m_socket.write(buffer, 12U, addr, addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -907,9 +923,8 @@ bool CFMIAXNetwork::writeLagRq(const sockaddr_storage& addr, unsigned int addrLe
|
|||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX LAGRQ sent");
|
LogDebug("IAX LAGRQ sent");
|
||||||
#endif
|
#endif
|
||||||
m_oSeqNo++;
|
|
||||||
|
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
unsigned short sCall = m_sLinkCallNo | 0x8000U;
|
||||||
unsigned int ts = m_timestamp.elapsed();
|
unsigned int ts = m_timestamp.elapsed();
|
||||||
|
|
||||||
unsigned char buffer[15U];
|
unsigned char buffer[15U];
|
||||||
@@ -917,8 +932,8 @@ bool CFMIAXNetwork::writeLagRq(const sockaddr_storage& addr, unsigned int addrLe
|
|||||||
buffer[0U] = (sCall >> 8) & 0xFFU;
|
buffer[0U] = (sCall >> 8) & 0xFFU;
|
||||||
buffer[1U] = (sCall >> 0) & 0xFFU;
|
buffer[1U] = (sCall >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[2U] = (m_dCallNo >> 8) & 0xFFU;
|
buffer[2U] = (m_dLinkCallNo >> 8) & 0xFFU;
|
||||||
buffer[3U] = (m_dCallNo >> 0) & 0xFFU;
|
buffer[3U] = (m_dLinkCallNo >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[4U] = (ts >> 24) & 0xFFU;
|
buffer[4U] = (ts >> 24) & 0xFFU;
|
||||||
buffer[5U] = (ts >> 16) & 0xFFU;
|
buffer[5U] = (ts >> 16) & 0xFFU;
|
||||||
@@ -938,6 +953,8 @@ bool CFMIAXNetwork::writeLagRq(const sockaddr_storage& addr, unsigned int addrLe
|
|||||||
#endif
|
#endif
|
||||||
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 12U);
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 12U);
|
||||||
|
|
||||||
|
m_oSeqNo++;
|
||||||
|
|
||||||
return m_socket.write(buffer, 12U, addr, addrLen);
|
return m_socket.write(buffer, 12U, addr, addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -946,9 +963,8 @@ bool CFMIAXNetwork::writeHangup()
|
|||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX HANGUP sent");
|
LogDebug("IAX HANGUP sent");
|
||||||
#endif
|
#endif
|
||||||
m_oSeqNo++;
|
|
||||||
|
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
unsigned short sCall = m_sLinkCallNo | 0x8000U;
|
||||||
unsigned int ts = m_timestamp.elapsed();
|
unsigned int ts = m_timestamp.elapsed();
|
||||||
|
|
||||||
unsigned char buffer[50U];
|
unsigned char buffer[50U];
|
||||||
@@ -956,8 +972,8 @@ bool CFMIAXNetwork::writeHangup()
|
|||||||
buffer[0U] = (sCall >> 8) & 0xFFU;
|
buffer[0U] = (sCall >> 8) & 0xFFU;
|
||||||
buffer[1U] = (sCall >> 0) & 0xFFU;
|
buffer[1U] = (sCall >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[2U] = (m_dCallNo >> 8) & 0xFFU;
|
buffer[2U] = (m_dLinkCallNo >> 8) & 0xFFU;
|
||||||
buffer[3U] = (m_dCallNo >> 0) & 0xFFU;
|
buffer[3U] = (m_dLinkCallNo >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[4U] = (ts >> 24) & 0xFFU;
|
buffer[4U] = (ts >> 24) & 0xFFU;
|
||||||
buffer[5U] = (ts >> 16) & 0xFFU;
|
buffer[5U] = (ts >> 16) & 0xFFU;
|
||||||
@@ -981,6 +997,8 @@ bool CFMIAXNetwork::writeHangup()
|
|||||||
|
|
||||||
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, length);
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, length);
|
||||||
|
|
||||||
|
m_oSeqNo++;
|
||||||
|
|
||||||
return m_socket.write(buffer, length, m_serverAddr, m_serverAddrLen);
|
return m_socket.write(buffer, length, m_serverAddr, m_serverAddrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1050,8 +1068,8 @@ bool CFMIAXNetwork::writeRegReq()
|
|||||||
LogDebug("IAX REGREQ sent");
|
LogDebug("IAX REGREQ sent");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
unsigned short sCall = m_sAuthCallNo | 0x8000U;
|
||||||
unsigned short dCall = m_dCallNo;
|
unsigned short dCall = m_dAuthCallNo;
|
||||||
|
|
||||||
unsigned int ts = m_timestamp.elapsed();
|
unsigned int ts = m_timestamp.elapsed();
|
||||||
|
|
||||||
@@ -1081,7 +1099,7 @@ bool CFMIAXNetwork::writeRegReq()
|
|||||||
|
|
||||||
setIEUInt16(buffer, pos, IAX_IE_REFRESH, REFRESH_TIME);
|
setIEUInt16(buffer, pos, IAX_IE_REFRESH, REFRESH_TIME);
|
||||||
|
|
||||||
if (m_dCallNo > 0U) {
|
if (m_dAuthCallNo > 0U) {
|
||||||
std::string password = m_seed + m_password;
|
std::string password = m_seed + m_password;
|
||||||
|
|
||||||
#if defined(_WIN32) || defined(_WIN64)
|
#if defined(_WIN32) || defined(_WIN64)
|
||||||
@@ -1134,6 +1152,8 @@ bool CFMIAXNetwork::writeRegReq()
|
|||||||
#endif
|
#endif
|
||||||
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, length);
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, length);
|
||||||
|
|
||||||
|
m_oSeqNo++;
|
||||||
|
|
||||||
return m_socket.write(buffer, length, m_domainAddr, m_domainAddrLen);
|
return m_socket.write(buffer, length, m_domainAddr, m_domainAddrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1145,9 +1165,8 @@ bool CFMIAXNetwork::writeAudio(const short* audio, unsigned int length)
|
|||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX ULAW sent");
|
LogDebug("IAX ULAW sent");
|
||||||
#endif
|
#endif
|
||||||
m_oSeqNo++;
|
|
||||||
|
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
unsigned short sCall = m_sLinkCallNo | 0x8000U;
|
||||||
unsigned int ts = m_timestamp.elapsed();
|
unsigned int ts = m_timestamp.elapsed();
|
||||||
|
|
||||||
unsigned char buffer[300U];
|
unsigned char buffer[300U];
|
||||||
@@ -1155,8 +1174,8 @@ bool CFMIAXNetwork::writeAudio(const short* audio, unsigned int length)
|
|||||||
buffer[0U] = (sCall >> 8) & 0xFFU;
|
buffer[0U] = (sCall >> 8) & 0xFFU;
|
||||||
buffer[1U] = (sCall >> 0) & 0xFFU;
|
buffer[1U] = (sCall >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[2U] = (m_dCallNo >> 8) & 0xFFU;
|
buffer[2U] = (m_dLinkCallNo >> 8) & 0xFFU;
|
||||||
buffer[3U] = (m_dCallNo >> 0) & 0xFFU;
|
buffer[3U] = (m_dLinkCallNo >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[4U] = (ts >> 24) & 0xFFU;
|
buffer[4U] = (ts >> 24) & 0xFFU;
|
||||||
buffer[5U] = (ts >> 16) & 0xFFU;
|
buffer[5U] = (ts >> 16) & 0xFFU;
|
||||||
@@ -1178,6 +1197,8 @@ bool CFMIAXNetwork::writeAudio(const short* audio, unsigned int length)
|
|||||||
#endif
|
#endif
|
||||||
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 12U + length);
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 12U + length);
|
||||||
|
|
||||||
|
m_oSeqNo++;
|
||||||
|
|
||||||
return m_socket.write(buffer, 12U + length, m_serverAddr, m_serverAddrLen);
|
return m_socket.write(buffer, 12U + length, m_serverAddr, m_serverAddrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1193,8 +1214,8 @@ bool CFMIAXNetwork::writeMiniFrame(const short* audio, unsigned int length)
|
|||||||
|
|
||||||
unsigned char buffer[300U];
|
unsigned char buffer[300U];
|
||||||
|
|
||||||
buffer[0U] = (m_sCallNo >> 8) & 0xFFU;
|
buffer[0U] = (m_sLinkCallNo >> 8) & 0xFFU;
|
||||||
buffer[1U] = (m_sCallNo >> 0) & 0xFFU;
|
buffer[1U] = (m_sLinkCallNo >> 0) & 0xFFU;
|
||||||
|
|
||||||
buffer[2U] = (ts >> 8) & 0xFFU;
|
buffer[2U] = (ts >> 8) & 0xFFU;
|
||||||
buffer[3U] = (ts >> 0) & 0xFFU;
|
buffer[3U] = (ts >> 0) & 0xFFU;
|
||||||
|
|||||||
@@ -83,8 +83,10 @@ private:
|
|||||||
CTimer m_pingTimer;
|
CTimer m_pingTimer;
|
||||||
std::string m_seed;
|
std::string m_seed;
|
||||||
CStopWatch m_timestamp;
|
CStopWatch m_timestamp;
|
||||||
unsigned short m_sCallNo;
|
unsigned short m_sAuthCallNo;
|
||||||
unsigned short m_dCallNo;
|
unsigned short m_dAuthCallNo;
|
||||||
|
unsigned short m_sLinkCallNo;
|
||||||
|
unsigned short m_dLinkCallNo;
|
||||||
unsigned char m_iSeqNo;
|
unsigned char m_iSeqNo;
|
||||||
unsigned char m_oSeqNo;
|
unsigned char m_oSeqNo;
|
||||||
std::string m_callToken;
|
std::string m_callToken;
|
||||||
|
|||||||
Reference in New Issue
Block a user