mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-23 00:35:53 +08:00
More IAX state machine and messages changes.
This commit is contained in:
126
FMIAXNetwork.cpp
126
FMIAXNetwork.cpp
@@ -160,7 +160,7 @@ bool CFMIAXNetwork::open()
|
|||||||
if (!ret)
|
if (!ret)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
ret = writeNew();
|
ret = writeNew(false);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
m_socket.close();
|
m_socket.close();
|
||||||
return false;
|
return false;
|
||||||
@@ -244,13 +244,10 @@ void CFMIAXNetwork::clock(unsigned int ms)
|
|||||||
if (m_retryTimer.isRunning() && m_retryTimer.hasExpired()) {
|
if (m_retryTimer.isRunning() && m_retryTimer.hasExpired()) {
|
||||||
switch (m_status) {
|
switch (m_status) {
|
||||||
case IAXS_CONNECTING:
|
case IAXS_CONNECTING:
|
||||||
writeNew();
|
writeNew(true);
|
||||||
break;
|
|
||||||
case IAXS_AUTHORISING:
|
|
||||||
writeAuthRep();
|
|
||||||
break;
|
break;
|
||||||
case IAXS_REGISTERING:
|
case IAXS_REGISTERING:
|
||||||
writeRegReq();
|
writeRegReq(true);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -315,15 +312,14 @@ void CFMIAXNetwork::clock(unsigned int ms)
|
|||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX ACCEPT received");
|
LogDebug("IAX ACCEPT received");
|
||||||
#endif
|
#endif
|
||||||
// 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;
|
|
||||||
|
|
||||||
m_rxFrames++;
|
m_rxFrames++;
|
||||||
m_iSeqNo = iSeqNo + 1U;
|
m_iSeqNo = iSeqNo + 1U;
|
||||||
|
|
||||||
writeAck(ts);
|
writeAck(ts);
|
||||||
|
|
||||||
|
m_status = IAXS_CONNECTED;
|
||||||
m_retryTimer.stop();
|
m_retryTimer.stop();
|
||||||
|
m_pingTimer.start();
|
||||||
} else if (compareFrame(buffer, AST_FRAME_IAX, IAX_COMMAND_REGREJ)) {
|
} else if (compareFrame(buffer, AST_FRAME_IAX, IAX_COMMAND_REGREJ)) {
|
||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX REGREJ received");
|
LogDebug("IAX REGREJ received");
|
||||||
@@ -359,17 +355,13 @@ void CFMIAXNetwork::clock(unsigned int ms)
|
|||||||
if ((buffer[12U] == IAX_IE_AUTHMETHODS) &&
|
if ((buffer[12U] == IAX_IE_AUTHMETHODS) &&
|
||||||
(buffer[15U] == IAX_AUTH_MD5) &&
|
(buffer[15U] == IAX_AUTH_MD5) &&
|
||||||
(buffer[16U] == IAX_IE_CHALLENGE)) {
|
(buffer[16U] == IAX_IE_CHALLENGE)) {
|
||||||
// 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;
|
|
||||||
|
|
||||||
m_seed = std::string((char*)(buffer + 18U), buffer[17U]);
|
m_seed = std::string((char*)(buffer + 18U), buffer[17U]);
|
||||||
|
|
||||||
m_status = IAXS_REGISTERING;
|
m_status = IAXS_REGISTERING;
|
||||||
m_iSeqNo = iSeqNo + 1U;
|
m_iSeqNo = iSeqNo + 1U;
|
||||||
|
|
||||||
m_retryTimer.start();
|
m_retryTimer.start();
|
||||||
writeRegReq();
|
writeRegReq(false);
|
||||||
}
|
}
|
||||||
} else if (compareFrame(buffer, AST_FRAME_IAX, IAX_COMMAND_AUTHREQ)) {
|
} else if (compareFrame(buffer, AST_FRAME_IAX, IAX_COMMAND_AUTHREQ)) {
|
||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
@@ -380,16 +372,10 @@ void CFMIAXNetwork::clock(unsigned int ms)
|
|||||||
if ((buffer[12U] == IAX_IE_AUTHMETHODS) &&
|
if ((buffer[12U] == IAX_IE_AUTHMETHODS) &&
|
||||||
(buffer[15U] == IAX_AUTH_MD5) &&
|
(buffer[15U] == IAX_AUTH_MD5) &&
|
||||||
(buffer[16U] == IAX_IE_CHALLENGE)) {
|
(buffer[16U] == IAX_IE_CHALLENGE)) {
|
||||||
// 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;
|
|
||||||
|
|
||||||
m_seed = std::string((char*)(buffer + 18U), buffer[17U]);
|
m_seed = std::string((char*)(buffer + 18U), buffer[17U]);
|
||||||
|
|
||||||
m_status = IAXS_AUTHORISING;
|
|
||||||
m_iSeqNo = iSeqNo + 1U;
|
m_iSeqNo = iSeqNo + 1U;
|
||||||
|
|
||||||
m_retryTimer.start();
|
|
||||||
writeAuthRep();
|
writeAuthRep();
|
||||||
}
|
}
|
||||||
} else if (compareFrame(buffer, AST_FRAME_IAX, IAX_COMMAND_REGACK)) {
|
} else if (compareFrame(buffer, AST_FRAME_IAX, IAX_COMMAND_REGACK)) {
|
||||||
@@ -401,8 +387,9 @@ void CFMIAXNetwork::clock(unsigned int ms)
|
|||||||
|
|
||||||
writeAck(ts);
|
writeAck(ts);
|
||||||
|
|
||||||
if (m_status == IAXS_CONNECTING)
|
m_status = IAXS_CONNECTED;
|
||||||
writeNew();
|
m_retryTimer.stop();
|
||||||
|
m_pingTimer.start();
|
||||||
} else if (compareFrame(buffer, AST_FRAME_IAX, IAX_COMMAND_HANGUP)) {
|
} else if (compareFrame(buffer, AST_FRAME_IAX, IAX_COMMAND_HANGUP)) {
|
||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX HANGUP received");
|
LogDebug("IAX HANGUP received");
|
||||||
@@ -419,18 +406,10 @@ void CFMIAXNetwork::clock(unsigned int ms)
|
|||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX ANSWER received");
|
LogDebug("IAX ANSWER received");
|
||||||
#endif
|
#endif
|
||||||
// Grab the destination call number if we don't have it already
|
m_rxFrames++;
|
||||||
if (m_dCallNo == 0U)
|
|
||||||
m_dCallNo = ((buffer[0U] << 8) | (buffer[1U] << 0)) & 0x7FFFU;
|
|
||||||
|
|
||||||
m_iSeqNo = iSeqNo + 1U;
|
m_iSeqNo = iSeqNo + 1U;
|
||||||
|
|
||||||
writeAck(ts);
|
writeAck(ts);
|
||||||
|
|
||||||
m_rxFrames++;
|
|
||||||
m_status = IAXS_CONNECTED;
|
|
||||||
m_retryTimer.stop();
|
|
||||||
m_pingTimer.start();
|
|
||||||
} else if (compareFrame(buffer, AST_FRAME_IAX, IAX_COMMAND_VNAK)) {
|
} else if (compareFrame(buffer, AST_FRAME_IAX, IAX_COMMAND_VNAK)) {
|
||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX VNAK received");
|
LogDebug("IAX VNAK received");
|
||||||
@@ -469,8 +448,9 @@ void CFMIAXNetwork::clock(unsigned int ms)
|
|||||||
m_rxFrames++;
|
m_rxFrames++;
|
||||||
m_iSeqNo = iSeqNo + 1U;
|
m_iSeqNo = iSeqNo + 1U;
|
||||||
|
|
||||||
writeAck(ts);
|
writeLagRq();
|
||||||
writeLagRp(ts);
|
writeLagRp(ts);
|
||||||
|
writeAck(ts);
|
||||||
} else if (compareFrame(buffer, AST_FRAME_VOICE, AST_FORMAT_ULAW)) {
|
} else if (compareFrame(buffer, AST_FRAME_VOICE, AST_FORMAT_ULAW)) {
|
||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX ULAW received");
|
LogDebug("IAX ULAW received");
|
||||||
@@ -550,12 +530,14 @@ void CFMIAXNetwork::enable(bool enabled)
|
|||||||
m_enabled = enabled;
|
m_enabled = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CFMIAXNetwork::writeNew()
|
bool CFMIAXNetwork::writeNew(bool retry)
|
||||||
{
|
{
|
||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX NEW sent");
|
LogDebug("IAX NEW sent");
|
||||||
#endif
|
#endif
|
||||||
|
if (!retry)
|
||||||
m_sCallNo++;
|
m_sCallNo++;
|
||||||
|
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
unsigned short sCall = m_sCallNo | 0x8000U;
|
||||||
|
|
||||||
m_timestamp.start();
|
m_timestamp.start();
|
||||||
@@ -620,8 +602,6 @@ 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_addr, m_addrLen);
|
return m_socket.write(buffer, length, m_addr, m_addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -630,6 +610,8 @@ bool CFMIAXNetwork::writeAuthRep()
|
|||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX AUTHREP sent");
|
LogDebug("IAX AUTHREP sent");
|
||||||
#endif
|
#endif
|
||||||
|
m_oSeqNo++;
|
||||||
|
|
||||||
std::string password = m_seed + m_password;
|
std::string password = m_seed + m_password;
|
||||||
|
|
||||||
char hash[MD5_DIGEST_STRING_LENGTH];
|
char hash[MD5_DIGEST_STRING_LENGTH];
|
||||||
@@ -668,8 +650,6 @@ bool CFMIAXNetwork::writeAuthRep()
|
|||||||
#endif
|
#endif
|
||||||
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 14U + MD5_DIGEST_STRING_LENGTH);
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 14U + MD5_DIGEST_STRING_LENGTH);
|
||||||
|
|
||||||
m_oSeqNo++;
|
|
||||||
|
|
||||||
return m_socket.write(buffer, 14U + MD5_DIGEST_STRING_LENGTH, m_addr, m_addrLen);
|
return m_socket.write(buffer, 14U + MD5_DIGEST_STRING_LENGTH, m_addr, m_addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -678,6 +658,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_sCallNo | 0x8000U;
|
||||||
unsigned int ts = m_timestamp.elapsed();
|
unsigned int ts = m_timestamp.elapsed();
|
||||||
|
|
||||||
@@ -707,8 +689,6 @@ 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_addr, m_addrLen);
|
return m_socket.write(buffer, 12U, m_addr, m_addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -717,6 +697,8 @@ bool CFMIAXNetwork::writePing()
|
|||||||
#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_sCallNo | 0x8000U;
|
||||||
unsigned int ts = m_timestamp.elapsed();
|
unsigned int ts = m_timestamp.elapsed();
|
||||||
|
|
||||||
@@ -746,8 +728,6 @@ bool CFMIAXNetwork::writePing()
|
|||||||
#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_addr, m_addrLen);
|
return m_socket.write(buffer, 12U, m_addr, m_addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -756,6 +736,8 @@ bool CFMIAXNetwork::writePong(unsigned int ts)
|
|||||||
#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_sCallNo | 0x8000U;
|
||||||
|
|
||||||
unsigned char buffer[50U];
|
unsigned char buffer[50U];
|
||||||
@@ -824,8 +806,6 @@ bool CFMIAXNetwork::writePong(unsigned int ts)
|
|||||||
#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, m_addr, m_addrLen);
|
return m_socket.write(buffer, 46U, m_addr, m_addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -834,6 +814,8 @@ bool CFMIAXNetwork::writeAck(unsigned int ts)
|
|||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX ACK sent");
|
LogDebug("IAX ACK sent");
|
||||||
#endif
|
#endif
|
||||||
|
m_oSeqNo++;
|
||||||
|
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
unsigned short sCall = m_sCallNo | 0x8000U;
|
||||||
|
|
||||||
unsigned char buffer[15U];
|
unsigned char buffer[15U];
|
||||||
@@ -862,8 +844,6 @@ bool CFMIAXNetwork::writeAck(unsigned int ts)
|
|||||||
#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_addr, m_addrLen);
|
return m_socket.write(buffer, 12U, m_addr, m_addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -872,6 +852,8 @@ bool CFMIAXNetwork::writeLagRp(unsigned int ts)
|
|||||||
#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_sCallNo | 0x8000U;
|
||||||
|
|
||||||
unsigned char buffer[15U];
|
unsigned char buffer[15U];
|
||||||
@@ -900,8 +882,45 @@ bool CFMIAXNetwork::writeLagRp(unsigned int ts)
|
|||||||
#endif
|
#endif
|
||||||
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 12U);
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 12U);
|
||||||
|
|
||||||
|
return m_socket.write(buffer, 12U, m_addr, m_addrLen);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CFMIAXNetwork::writeLagRq()
|
||||||
|
{
|
||||||
|
#if defined(DEBUG_IAX)
|
||||||
|
LogDebug("IAX LAGRQ sent");
|
||||||
|
#endif
|
||||||
m_oSeqNo++;
|
m_oSeqNo++;
|
||||||
|
|
||||||
|
unsigned short sCall = m_sCallNo | 0x8000U;
|
||||||
|
unsigned int ts = m_timestamp.elapsed();
|
||||||
|
|
||||||
|
unsigned char buffer[15U];
|
||||||
|
|
||||||
|
buffer[0U] = (sCall >> 8) & 0xFFU;
|
||||||
|
buffer[1U] = (sCall >> 0) & 0xFFU;
|
||||||
|
|
||||||
|
buffer[2U] = (m_dCallNo >> 8) & 0xFFU;
|
||||||
|
buffer[3U] = (m_dCallNo >> 0) & 0xFFU;
|
||||||
|
|
||||||
|
buffer[4U] = (ts >> 24) & 0xFFU;
|
||||||
|
buffer[5U] = (ts >> 16) & 0xFFU;
|
||||||
|
buffer[6U] = (ts >> 8) & 0xFFU;
|
||||||
|
buffer[7U] = (ts >> 0) & 0xFFU;
|
||||||
|
|
||||||
|
buffer[8U] = m_oSeqNo;
|
||||||
|
|
||||||
|
buffer[9U] = m_iSeqNo;
|
||||||
|
|
||||||
|
buffer[10U] = AST_FRAME_IAX;
|
||||||
|
|
||||||
|
buffer[11U] = IAX_COMMAND_LAGRQ;
|
||||||
|
|
||||||
|
#if !defined(DEBUG_IAX)
|
||||||
|
if (m_debug)
|
||||||
|
#endif
|
||||||
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 12U);
|
||||||
|
|
||||||
return m_socket.write(buffer, 12U, m_addr, m_addrLen);
|
return m_socket.write(buffer, 12U, m_addr, m_addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -912,6 +931,8 @@ bool CFMIAXNetwork::writeHangup()
|
|||||||
#endif
|
#endif
|
||||||
const char* REASON = "MMDVM Out";
|
const char* REASON = "MMDVM Out";
|
||||||
|
|
||||||
|
m_oSeqNo++;
|
||||||
|
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
unsigned short sCall = m_sCallNo | 0x8000U;
|
||||||
unsigned int ts = m_timestamp.elapsed();
|
unsigned int ts = m_timestamp.elapsed();
|
||||||
|
|
||||||
@@ -945,18 +966,19 @@ bool CFMIAXNetwork::writeHangup()
|
|||||||
#endif
|
#endif
|
||||||
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 14U + ::strlen(REASON));
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, 14U + ::strlen(REASON));
|
||||||
|
|
||||||
m_oSeqNo++;
|
|
||||||
|
|
||||||
return m_socket.write(buffer, 14U + ::strlen(REASON), m_addr, m_addrLen);
|
return m_socket.write(buffer, 14U + ::strlen(REASON), m_addr, m_addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CFMIAXNetwork::writeRegReq()
|
bool CFMIAXNetwork::writeRegReq(bool retry)
|
||||||
{
|
{
|
||||||
const unsigned short REFRESH_TIME = 60U;
|
const unsigned short REFRESH_TIME = 60U;
|
||||||
|
|
||||||
#if defined(DEBUG_IAX)
|
#if defined(DEBUG_IAX)
|
||||||
LogDebug("IAX REGREQ sent");
|
LogDebug("IAX REGREQ sent");
|
||||||
#endif
|
#endif
|
||||||
|
if (!retry)
|
||||||
|
m_oSeqNo++;
|
||||||
|
|
||||||
unsigned short sCall = m_sCallNo | 0x8000U;
|
unsigned short sCall = m_sCallNo | 0x8000U;
|
||||||
unsigned int ts = m_timestamp.elapsed();
|
unsigned int ts = m_timestamp.elapsed();
|
||||||
|
|
||||||
@@ -1010,8 +1032,6 @@ bool CFMIAXNetwork::writeRegReq()
|
|||||||
#endif
|
#endif
|
||||||
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, offset);
|
CUtils::dump(1U, "FM IAX Network Data Sent", buffer, offset);
|
||||||
|
|
||||||
m_oSeqNo++;
|
|
||||||
|
|
||||||
return m_socket.write(buffer, offset, m_addr, m_addrLen);
|
return m_socket.write(buffer, offset, m_addr, m_addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1078,6 +1098,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_sCallNo | 0x8000U;
|
||||||
unsigned int ts = m_timestamp.elapsed();
|
unsigned int ts = m_timestamp.elapsed();
|
||||||
|
|
||||||
@@ -1109,8 +1131,6 @@ 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_addr, m_addrLen);
|
return m_socket.write(buffer, 12U + length, m_addr, m_addrLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,6 @@
|
|||||||
enum IAX_STATUS {
|
enum IAX_STATUS {
|
||||||
IAXS_DISCONNECTED,
|
IAXS_DISCONNECTED,
|
||||||
IAXS_CONNECTING,
|
IAXS_CONNECTING,
|
||||||
IAXS_AUTHORISING,
|
|
||||||
IAXS_REGISTERING,
|
IAXS_REGISTERING,
|
||||||
IAXS_CONNECTED
|
IAXS_CONNECTED
|
||||||
};
|
};
|
||||||
@@ -86,15 +85,16 @@ private:
|
|||||||
unsigned int m_rxDropped;
|
unsigned int m_rxDropped;
|
||||||
unsigned int m_rxOOO;
|
unsigned int m_rxOOO;
|
||||||
|
|
||||||
bool writeNew();
|
bool writeNew(bool retry);
|
||||||
bool writeAuthRep();
|
bool writeAuthRep();
|
||||||
bool writeKey(bool key);
|
bool writeKey(bool key);
|
||||||
bool writePing();
|
bool writePing();
|
||||||
bool writePong(unsigned int ts);
|
bool writePong(unsigned int ts);
|
||||||
bool writeAck(unsigned int ts);
|
bool writeAck(unsigned int ts);
|
||||||
|
bool writeLagRq();
|
||||||
bool writeLagRp(unsigned int ts);
|
bool writeLagRp(unsigned int ts);
|
||||||
bool writeHangup();
|
bool writeHangup();
|
||||||
bool writeRegReq();
|
bool writeRegReq(bool retry);
|
||||||
bool writeAudio(const short* audio, unsigned int length);
|
bool writeAudio(const short* audio, unsigned int length);
|
||||||
|
|
||||||
void uLawEncode(const short* audio, unsigned char* buffer, unsigned int length) const;
|
void uLawEncode(const short* audio, unsigned char* buffer, unsigned int length) const;
|
||||||
|
|||||||
Reference in New Issue
Block a user