move the NET_FUNC* and NET_SUBFUNC* constants into proper namespaced enums;

pull/61/head
Bryan Biedenkapp 2 years ago
parent e512fd388f
commit 36c04a74ec

@ -122,7 +122,7 @@ bool BaseNetwork::writeGrantReq(const uint8_t mode, const uint32_t srcId, const
buffer[20U] = mode; // DVM Mode State
return writeMaster({ NET_FUNC_GRANT_REQ, NET_SUBFUNC_NOP }, buffer, MSG_HDR_SIZE, 0U, 0U);
return writeMaster({ NET_FUNC::GRANT_REQ, NET_SUBFUNC::NOP }, buffer, MSG_HDR_SIZE, 0U, 0U);
}
/// <summary>
@ -145,7 +145,7 @@ bool BaseNetwork::writeActLog(const char* message)
::strcpy(buffer + 11U, message);
return writeMaster({ NET_FUNC_TRANSFER, NET_TRANSFER_SUBFUNC_ACTIVITY }, (uint8_t*)buffer, (uint32_t)len + 12U,
return writeMaster({ NET_FUNC::TRANSFER, NET_SUBFUNC::TRANSFER_SUBFUNC_ACTIVITY }, (uint8_t*)buffer, (uint32_t)len + 12U,
0U, 0U, false, m_useAlternatePortForDiagnostics);
}
@ -169,7 +169,7 @@ bool BaseNetwork::writeDiagLog(const char* message)
::strcpy(buffer + 11U, message);
return writeMaster({ NET_FUNC_TRANSFER, NET_TRANSFER_SUBFUNC_DIAG }, (uint8_t*)buffer, (uint32_t)len + 12U,
return writeMaster({ NET_FUNC::TRANSFER, NET_SUBFUNC::TRANSFER_SUBFUNC_DIAG }, (uint8_t*)buffer, (uint32_t)len + 12U,
0U, 0U, false, m_useAlternatePortForDiagnostics);
}
@ -197,7 +197,7 @@ bool BaseNetwork::writePeerStatus(json::object obj)
::strcpy(buffer + 11U, json.c_str());
return writeMaster({ NET_FUNC_TRANSFER, NET_TRANSFER_SUBFUNC_STATUS }, (uint8_t*)buffer, (uint32_t)len + 12U,
return writeMaster({ NET_FUNC::TRANSFER, NET_SUBFUNC::TRANSFER_SUBFUNC_STATUS }, (uint8_t*)buffer, (uint32_t)len + 12U,
0U, 0U, false, m_useAlternatePortForDiagnostics);
}
@ -216,7 +216,7 @@ bool BaseNetwork::announceGroupAffiliation(uint32_t srcId, uint32_t dstId)
__SET_UINT16(srcId, buffer, 0U);
__SET_UINT16(dstId, buffer, 3U);
return writeMaster({ NET_FUNC_ANNOUNCE, NET_ANNC_SUBFUNC_GRP_AFFIL }, buffer, MSG_ANNC_GRP_AFFIL, 0U, 0U);
return writeMaster({ NET_FUNC::ANNOUNCE, NET_SUBFUNC::ANNC_SUBFUNC_GRP_AFFIL }, buffer, MSG_ANNC_GRP_AFFIL, 0U, 0U);
}
/// <summary>
@ -232,7 +232,7 @@ bool BaseNetwork::announceUnitRegistration(uint32_t srcId)
__SET_UINT16(srcId, buffer, 0U);
return writeMaster({ NET_FUNC_ANNOUNCE, NET_ANNC_SUBFUNC_UNIT_REG }, buffer, MSG_ANNC_UNIT_REG, 0U, 0U);
return writeMaster({ NET_FUNC::ANNOUNCE, NET_SUBFUNC::ANNC_SUBFUNC_UNIT_REG }, buffer, MSG_ANNC_UNIT_REG, 0U, 0U);
}
/// <summary>
@ -248,7 +248,7 @@ bool BaseNetwork::announceUnitDeregistration(uint32_t srcId)
__SET_UINT16(srcId, buffer, 0U);
return writeMaster({ NET_FUNC_ANNOUNCE, NET_ANNC_SUBFUNC_UNIT_DEREG }, buffer, MSG_ANNC_UNIT_REG, 0U, 0U);
return writeMaster({ NET_FUNC::ANNOUNCE, NET_SUBFUNC::ANNC_SUBFUNC_UNIT_DEREG }, buffer, MSG_ANNC_UNIT_REG, 0U, 0U);
}
/// <summary>
@ -273,7 +273,7 @@ bool BaseNetwork::announceAffiliationUpdate(const std::unordered_map<uint32_t, u
offs += 8U;
}
return writeMaster({ NET_FUNC_ANNOUNCE, NET_ANNC_SUBFUNC_AFFILS }, buffer, 4U + (affs.size() * 8U), 0U, 0U);
return writeMaster({ NET_FUNC::ANNOUNCE, NET_SUBFUNC::ANNC_SUBFUNC_AFFILS }, buffer, 4U + (affs.size() * 8U), 0U, 0U);
}
/// <summary>
@ -297,7 +297,7 @@ bool BaseNetwork::announceSiteVCs(const std::vector<uint32_t> peers)
offs += 4U;
}
return writeMaster({ NET_FUNC_ANNOUNCE, NET_ANNC_SUBFUNC_SITE_VC }, buffer, 4U + (peers.size() * 4U), 0U, 0U);
return writeMaster({ NET_FUNC::ANNOUNCE, NET_SUBFUNC::ANNC_SUBFUNC_SITE_VC }, buffer, 4U + (peers.size() * 4U), 0U, 0U);
}
/// <summary>
@ -475,7 +475,7 @@ bool BaseNetwork::writeDMR(const dmr::data::Data& data, bool noSequence)
seq = RTP_END_OF_CALL_SEQ;
}
return writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_DMR }, message.get(), messageLength, seq, m_dmrStreamId[slotIndex]);
return writeMaster({ NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_DMR }, message.get(), messageLength, seq, m_dmrStreamId[slotIndex]);
}
/// <summary>
@ -548,7 +548,7 @@ bool BaseNetwork::writeP25LDU1(const p25::lc::LC& control, const p25::data::LowS
return false;
}
return writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, pktSeq(resetSeq), m_p25StreamId);
return writeMaster({ NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, pktSeq(resetSeq), m_p25StreamId);
}
/// <summary>
@ -575,7 +575,7 @@ bool BaseNetwork::writeP25LDU2(const p25::lc::LC& control, const p25::data::LowS
return false;
}
return writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, pktSeq(resetSeq), m_p25StreamId);
return writeMaster({ NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, pktSeq(resetSeq), m_p25StreamId);
}
/// <summary>
@ -607,7 +607,7 @@ bool BaseNetwork::writeP25TDU(const p25::lc::LC& control, const p25::data::LowSp
seq = RTP_END_OF_CALL_SEQ;
}
return writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, seq, m_p25StreamId);
return writeMaster({ NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, seq, m_p25StreamId);
}
/// <summary>
@ -631,7 +631,7 @@ bool BaseNetwork::writeP25TSDU(const p25::lc::LC& control, const uint8_t* data)
return false;
}
return writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, RTP_END_OF_CALL_SEQ, m_p25StreamId);
return writeMaster({ NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, RTP_END_OF_CALL_SEQ, m_p25StreamId);
}
/// <summary>
@ -666,7 +666,7 @@ bool BaseNetwork::writeP25PDU(const p25::data::DataHeader& header, const uint8_t
seq = RTP_END_OF_CALL_SEQ;
}
return writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, seq, m_p25StreamId);
return writeMaster({ NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, seq, m_p25StreamId);
}
/// <summary>
@ -749,7 +749,7 @@ bool BaseNetwork::writeNXDN(const nxdn::lc::RTCH& lc, const uint8_t* data, const
seq = RTP_END_OF_CALL_SEQ;
}
return writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_NXDN }, message.get(), messageLength, seq, m_nxdnStreamId);
return writeMaster({ NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_NXDN }, message.get(), messageLength, seq, m_nxdnStreamId);
}
/// <summary>

@ -74,46 +74,6 @@ namespace network
const uint32_t P25_LDU2_PACKET_LENGTH = 181U; // 24 byte header + DFSI data + 1 byte frame type
const uint32_t P25_TSDU_PACKET_LENGTH = 69U; // 24 byte header + TSDU data
const uint8_t NET_SUBFUNC_NOP = 0xFFU; // No Operation Sub-Function
const uint8_t NET_FUNC_PROTOCOL = 0x00U; // Network Protocol Function
const uint8_t NET_PROTOCOL_SUBFUNC_DMR = 0x00U; // DMR
const uint8_t NET_PROTOCOL_SUBFUNC_P25 = 0x01U; // P25
const uint8_t NET_PROTOCOL_SUBFUNC_NXDN = 0x02U; // NXDN
const uint8_t NET_FUNC_MASTER = 0x01U; // Network Master Function
const uint8_t NET_MASTER_SUBFUNC_WL_RID = 0x00U; // Whitelist RIDs
const uint8_t NET_MASTER_SUBFUNC_BL_RID = 0x01U; // Blacklist RIDs
const uint8_t NET_MASTER_SUBFUNC_ACTIVE_TGS = 0x02U; // Active TGIDs
const uint8_t NET_MASTER_SUBFUNC_DEACTIVE_TGS = 0x03U; // Deactive TGIDs
const uint8_t NET_FUNC_RPTL = 0x60U; // Repeater Login
const uint8_t NET_FUNC_RPTK = 0x61U; // Repeater Authorisation
const uint8_t NET_FUNC_RPTC = 0x62U; // Repeater Configuration
const uint8_t NET_FUNC_RPT_CLOSING = 0x70U; // Repeater Closing
const uint8_t NET_FUNC_MST_CLOSING = 0x71U; // Master Closing
const uint8_t NET_FUNC_PING = 0x74U; // Ping
const uint8_t NET_FUNC_PONG = 0x75U; // Pong
const uint8_t NET_FUNC_GRANT_REQ = 0x7AU; // Grant Request
const uint8_t NET_FUNC_ACK = 0x7EU; // Packet Acknowledge
const uint8_t NET_FUNC_NAK = 0x7FU; // Packet Negative Acknowledge
const uint8_t NET_FUNC_TRANSFER = 0x90U; // Network Transfer Function
const uint8_t NET_TRANSFER_SUBFUNC_ACTIVITY = 0x01U; // Activity Log Transfer
const uint8_t NET_TRANSFER_SUBFUNC_DIAG = 0x02U; // Diagnostic Log Transfer
const uint8_t NET_TRANSFER_SUBFUNC_STATUS = 0x03U; // Status Transfer
const uint8_t NET_FUNC_ANNOUNCE = 0x91U; // Network Announce Function
const uint8_t NET_ANNC_SUBFUNC_GRP_AFFIL = 0x00U; // Announce Group Affiliation
const uint8_t NET_ANNC_SUBFUNC_UNIT_REG = 0x01U; // Announce Unit Registration
const uint8_t NET_ANNC_SUBFUNC_UNIT_DEREG = 0x02U; // Announce Unit Deregistration
const uint8_t NET_ANNC_SUBFUNC_AFFILS = 0x90U; // Update All Affiliations
const uint8_t NET_ANNC_SUBFUNC_SITE_VC = 0x9AU; // Announce Site VCs
// ---------------------------------------------------------------------------
// Network Peer Connection Status
// ---------------------------------------------------------------------------

@ -34,7 +34,7 @@ namespace network
// ---------------------------------------------------------------------------
class HOST_SW_API FrameQueue : public RawFrameQueue {
public: typedef std::pair<const uint8_t, const uint8_t> OpcodePair;
public: typedef std::pair<const NET_FUNC::ENUM, const NET_SUBFUNC::ENUM> OpcodePair;
public:
auto operator=(FrameQueue&) -> FrameQueue& = delete;
auto operator=(FrameQueue&&) -> FrameQueue& = delete;

@ -27,8 +27,8 @@ using namespace network::frame;
RTPFNEHeader::RTPFNEHeader() :
RTPExtensionHeader(),
m_crc16(0U),
m_func(0U),
m_subFunc(0U),
m_func(NET_FUNC::ILLEGAL),
m_subFunc(NET_SUBFUNC::NOP),
m_streamId(0U),
m_peerId(0U),
m_messageLength(0U)
@ -59,8 +59,8 @@ bool RTPFNEHeader::decode(const uint8_t* data)
}
m_crc16 = (data[4U] << 8) | (data[5U] << 0); // CRC-16
m_func = data[6U]; // Function
m_subFunc = data[7U]; // Sub-Function
m_func = (NET_FUNC::ENUM)data[6U]; // Function
m_subFunc = (NET_SUBFUNC::ENUM)data[7U]; // Sub-Function
m_streamId = __GET_UINT32(data, 8U); // Stream ID
m_peerId = __GET_UINT32(data, 12U); // Peer ID
m_messageLength = __GET_UINT32(data, 16U); // Message Length

@ -31,6 +31,70 @@
namespace network
{
// ---------------------------------------------------------------------------
// Constants
// ---------------------------------------------------------------------------
/// <summary>
/// Network Functions
/// </summary>
namespace NET_FUNC {
enum ENUM : uint8_t {
ILLEGAL = 0xFFU, //
PROTOCOL = 0x00U, // Network Protocol Function
MASTER = 0x01U, // Network Master Function
RPTL = 0x60U, // Repeater Login
RPTK = 0x61U, // Repeater Authorisation
RPTC = 0x62U, // Repeater Configuration
RPT_CLOSING = 0x70U, // Repeater Closing
MST_CLOSING = 0x71U, // Master Closing
PING = 0x74U, // Ping
PONG = 0x75U, // Pong
GRANT_REQ = 0x7AU, // Grant Request
ACK = 0x7EU, // Packet Acknowledge
NAK = 0x7FU, // Packet Negative Acknowledge
TRANSFER = 0x90U, // Network Transfer Function
ANNOUNCE = 0x91U // Network Announce Function
};
};
/// <summary>
/// Network Sub-Functions
/// </summary>
namespace NET_SUBFUNC {
enum ENUM : uint8_t {
NOP = 0xFFU, // No Operation Sub-Function
PROTOCOL_SUBFUNC_DMR = 0x00U, // DMR
PROTOCOL_SUBFUNC_P25 = 0x01U, // P25
PROTOCOL_SUBFUNC_NXDN = 0x02U, // NXDN
MASTER_SUBFUNC_WL_RID = 0x00U, // Whitelist RIDs
MASTER_SUBFUNC_BL_RID = 0x01U, // Blacklist RIDs
MASTER_SUBFUNC_ACTIVE_TGS = 0x02U, // Active TGIDs
MASTER_SUBFUNC_DEACTIVE_TGS = 0x03U, // Deactive TGIDs
TRANSFER_SUBFUNC_ACTIVITY = 0x01U, // Activity Log Transfer
TRANSFER_SUBFUNC_DIAG = 0x02U, // Diagnostic Log Transfer
TRANSFER_SUBFUNC_STATUS = 0x03U, // Status Transfer
ANNC_SUBFUNC_GRP_AFFIL = 0x00U, // Announce Group Affiliation
ANNC_SUBFUNC_UNIT_REG = 0x01U, // Announce Unit Registration
ANNC_SUBFUNC_UNIT_DEREG = 0x02U, // Announce Unit Deregistration
ANNC_SUBFUNC_AFFILS = 0x90U, // Update All Affiliations
ANNC_SUBFUNC_SITE_VC = 0x9AU // Announce Site VCs
};
};
namespace frame
{
// ---------------------------------------------------------------------------
@ -60,9 +124,9 @@ namespace network
/// <summary>Traffic payload packet CRC-16.</summary>
__PROPERTY(uint16_t, crc16, CRC);
/// <summary>Function.</summary>
__PROPERTY(uint8_t, func, Function);
__PROPERTY(NET_FUNC::ENUM, func, Function);
/// <summary>Sub-function.</summary>
__PROPERTY(uint8_t, subFunc, SubFunction);
__PROPERTY(NET_SUBFUNC::ENUM, subFunc, SubFunction);
/// <summary>Traffic Stream ID.</summary>
__PROPERTY(uint32_t, streamId, StreamId);
/// <summary>Traffic Peer ID.</summary>

@ -78,7 +78,7 @@ bool DfsiPeerNetwork::writeP25LDU1(const p25::lc::LC& control, const p25::data::
return false;
}
return writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, pktSeq(resetSeq), m_p25StreamId);
return writeMaster({ NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, pktSeq(resetSeq), m_p25StreamId);
}
/// <summary>
@ -105,7 +105,7 @@ bool DfsiPeerNetwork::writeP25LDU2(const p25::lc::LC& control, const p25::data::
return false;
}
return writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, pktSeq(resetSeq), m_p25StreamId);
return writeMaster({ NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, pktSeq(resetSeq), m_p25StreamId);
}
// ---------------------------------------------------------------------------
@ -170,7 +170,7 @@ bool DfsiPeerNetwork::writeConfig()
Utils::dump(1U, "Network Message, Configuration", (uint8_t*)buffer, json.length() + 8U);
}
return writeMaster({ NET_FUNC_RPTC, NET_SUBFUNC_NOP }, (uint8_t*)buffer, json.length() + 8U, pktSeq(), m_loginStreamId);
return writeMaster({ NET_FUNC::RPTC, NET_SUBFUNC::NOP }, (uint8_t*)buffer, json.length() + 8U, pktSeq(), m_loginStreamId);
}
// ---------------------------------------------------------------------------

@ -207,9 +207,9 @@ void* DiagNetwork::threadedNetworkRx(void* arg)
// process incoming message frame opcodes
switch (req->fneHeader.getFunction()) {
case NET_FUNC_TRANSFER:
case NET_FUNC::TRANSFER:
{
if (req->fneHeader.getSubFunction() == NET_TRANSFER_SUBFUNC_ACTIVITY) { // Peer Activity Log Transfer
if (req->fneHeader.getSubFunction() == NET_SUBFUNC::TRANSFER_SUBFUNC_ACTIVITY) { // Peer Activity Log Transfer
if (network->m_allowActivityTransfer) {
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
@ -243,7 +243,7 @@ void* DiagNetwork::threadedNetworkRx(void* arg)
}
}
}
else if (req->fneHeader.getSubFunction() == NET_TRANSFER_SUBFUNC_DIAG) { // Peer Diagnostic Log Transfer
else if (req->fneHeader.getSubFunction() == NET_SUBFUNC::TRANSFER_SUBFUNC_DIAG) { // Peer Diagnostic Log Transfer
if (network->m_allowDiagnosticTransfer) {
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
@ -280,7 +280,7 @@ void* DiagNetwork::threadedNetworkRx(void* arg)
}
}
}
else if (req->fneHeader.getSubFunction() == NET_TRANSFER_SUBFUNC_STATUS) { // Peer Status Transfer
else if (req->fneHeader.getSubFunction() == NET_SUBFUNC::TRANSFER_SUBFUNC_STATUS) { // Peer Status Transfer
// report peer status to InfluxDB
if (network->m_enableInfluxDB) {
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {

@ -395,7 +395,7 @@ void FNENetwork::close()
::memset(buffer, 0x00U, 1U);
for (auto peer : m_peers) {
writePeer(peer.first, { NET_FUNC_MST_CLOSING, NET_SUBFUNC_NOP }, buffer, 1U, (ushort)0U, 0U);
writePeer(peer.first, { NET_FUNC::MST_CLOSING, NET_SUBFUNC::NOP }, buffer, 1U, (ushort)0U, 0U);
}
}
@ -460,7 +460,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
// if we don't have a stream ID and are receiving call data -- throw an error and discard
if (streamId == 0 && req->fneHeader.getFunction() == NET_FUNC_PROTOCOL) {
if (streamId == 0 && req->fneHeader.getFunction() == NET_FUNC::PROTOCOL) {
std::string peerIdentity = network->resolvePeerIdentity(peerId);
LogError(LOG_NET, "PEER %u (%s) malformed packet (no stream ID for a call?)", peerId, peerIdentity.c_str());
@ -473,9 +473,9 @@ void* FNENetwork::threadedNetworkRx(void* arg)
// process incoming message frame opcodes
switch (req->fneHeader.getFunction()) {
case NET_FUNC_PROTOCOL:
case NET_FUNC::PROTOCOL:
{
if (req->fneHeader.getSubFunction() == NET_PROTOCOL_SUBFUNC_DMR) { // Encapsulated DMR data frame
if (req->fneHeader.getSubFunction() == NET_SUBFUNC::PROTOCOL_SUBFUNC_DMR) { // Encapsulated DMR data frame
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
if (connection != nullptr) {
@ -498,7 +498,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
network->writePeerNAK(peerId, TAG_DMR_DATA, NET_CONN_NAK_FNE_UNAUTHORIZED);
}
}
else if (req->fneHeader.getSubFunction() == NET_PROTOCOL_SUBFUNC_P25) { // Encapsulated P25 data frame
else if (req->fneHeader.getSubFunction() == NET_SUBFUNC::PROTOCOL_SUBFUNC_P25) { // Encapsulated P25 data frame
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
if (connection != nullptr) {
@ -521,7 +521,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
network->writePeerNAK(peerId, TAG_P25_DATA, NET_CONN_NAK_FNE_UNAUTHORIZED);
}
}
else if (req->fneHeader.getSubFunction() == NET_PROTOCOL_SUBFUNC_NXDN) { // Encapsulated NXDN data frame
else if (req->fneHeader.getSubFunction() == NET_SUBFUNC::PROTOCOL_SUBFUNC_NXDN) { // Encapsulated NXDN data frame
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
if (connection != nullptr) {
@ -550,7 +550,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
break;
case NET_FUNC_RPTL: // Repeater Login
case NET_FUNC::RPTL: // Repeater Login
{
if (peerId > 0 && (network->m_peers.find(peerId) == network->m_peers.end())) {
if (network->m_peers.size() >= MAX_HARD_CONN_CAP) {
@ -639,7 +639,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
}
break;
case NET_FUNC_RPTK: // Repeater Authentication
case NET_FUNC::RPTK: // Repeater Authentication
{
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
@ -737,7 +737,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
}
break;
case NET_FUNC_RPTC: // Repeater Configuration
case NET_FUNC::RPTC: // Repeater Configuration
{
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
@ -838,7 +838,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
break;
case NET_FUNC_RPT_CLOSING: // Repeater Closing (Disconnect)
case NET_FUNC::RPT_CLOSING: // Repeater Closing (Disconnect)
{
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
@ -857,7 +857,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
}
break;
case NET_FUNC_PING: // Repeater Ping
case NET_FUNC::PING: // Repeater Ping
{
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
@ -884,7 +884,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
network->m_peers[peerId] = connection;
network->writePeerCommand(peerId, { NET_FUNC_PONG, NET_SUBFUNC_NOP });
network->writePeerCommand(peerId, { NET_FUNC::PONG, NET_SUBFUNC::NOP });
if (network->m_reportPeerPing) {
LogInfoEx(LOG_NET, "PEER %u (%s) ping, pingsReceived = %u, lastPing = %u", peerId, connection->identity().c_str(),
@ -899,7 +899,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
break;
case NET_FUNC_GRANT_REQ: // Repeater Grant Request
case NET_FUNC::GRANT_REQ: // Repeater Grant Request
{
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
@ -958,15 +958,15 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
break;
case NET_FUNC_TRANSFER:
case NET_FUNC::TRANSFER:
{
// are activity/diagnostic transfers occurring from the alternate port?
if (network->m_host->m_useAlternatePortForDiagnostics) {
break; // for performance and other reasons -- simply ignore the entire NET_FUNC_TRANSFER at this point
break; // for performance and other reasons -- simply ignore the entire NET_FUNC::TRANSFER at this point
// since they should be coming from the alternate port anyway
}
if (req->fneHeader.getSubFunction() == NET_TRANSFER_SUBFUNC_ACTIVITY) { // Peer Activity Log Transfer
if (req->fneHeader.getSubFunction() == NET_SUBFUNC::TRANSFER_SUBFUNC_ACTIVITY) { // Peer Activity Log Transfer
if (network->m_allowActivityTransfer) {
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
@ -1000,7 +1000,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
}
}
else if (req->fneHeader.getSubFunction() == NET_TRANSFER_SUBFUNC_DIAG) { // Peer Diagnostic Log Transfer
else if (req->fneHeader.getSubFunction() == NET_SUBFUNC::TRANSFER_SUBFUNC_DIAG) { // Peer Diagnostic Log Transfer
if (network->m_allowDiagnosticTransfer) {
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
@ -1037,7 +1037,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
}
}
else if (req->fneHeader.getSubFunction() == NET_TRANSFER_SUBFUNC_STATUS) { // Peer Status Transfer
else if (req->fneHeader.getSubFunction() == NET_SUBFUNC::TRANSFER_SUBFUNC_STATUS) { // Peer Status Transfer
// main traffic port status transfers aren't supported for performance reasons
}
else {
@ -1047,9 +1047,9 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
break;
case NET_FUNC_ANNOUNCE:
case NET_FUNC::ANNOUNCE:
{
if (req->fneHeader.getSubFunction() == NET_ANNC_SUBFUNC_GRP_AFFIL) { // Announce Group Affiliation
if (req->fneHeader.getSubFunction() == NET_SUBFUNC::ANNC_SUBFUNC_GRP_AFFIL) { // Announce Group Affiliation
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
if (connection != nullptr) {
@ -1072,7 +1072,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
}
}
else if (req->fneHeader.getSubFunction() == NET_ANNC_SUBFUNC_UNIT_REG) { // Announce Unit Registration
else if (req->fneHeader.getSubFunction() == NET_SUBFUNC::ANNC_SUBFUNC_UNIT_REG) { // Announce Unit Registration
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
if (connection != nullptr) {
@ -1093,7 +1093,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
}
}
else if (req->fneHeader.getSubFunction() == NET_ANNC_SUBFUNC_UNIT_DEREG) { // Announce Unit Deregistration
else if (req->fneHeader.getSubFunction() == NET_SUBFUNC::ANNC_SUBFUNC_UNIT_DEREG) { // Announce Unit Deregistration
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
if (connection != nullptr) {
@ -1114,7 +1114,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
}
}
else if (req->fneHeader.getSubFunction() == NET_ANNC_SUBFUNC_AFFILS) { // Announce Update All Affiliations
else if (req->fneHeader.getSubFunction() == NET_SUBFUNC::ANNC_SUBFUNC_AFFILS) { // Announce Update All Affiliations
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
if (connection != nullptr) {
@ -1149,7 +1149,7 @@ void* FNENetwork::threadedNetworkRx(void* arg)
}
}
}
else if (req->fneHeader.getSubFunction() == NET_ANNC_SUBFUNC_SITE_VC) { // Announce Site VCs
else if (req->fneHeader.getSubFunction() == NET_SUBFUNC::ANNC_SUBFUNC_SITE_VC) { // Announce Site VCs
if (peerId > 0 && (network->m_peers.find(peerId) != network->m_peers.end())) {
FNEPeerConnection* connection = network->m_peers[peerId];
if (connection != nullptr) {
@ -1474,7 +1474,7 @@ void FNENetwork::writeWhitelistRIDs(uint32_t peerId)
offs += 4U;
}
writePeerCommand(peerId, { NET_FUNC_MASTER, NET_MASTER_SUBFUNC_WL_RID },
writePeerCommand(peerId, { NET_FUNC::MASTER, NET_SUBFUNC::MASTER_SUBFUNC_WL_RID },
payload, bufSize, true);
}
@ -1549,7 +1549,7 @@ void FNENetwork::writeBlacklistRIDs(uint32_t peerId)
offs += 4U;
}
writePeerCommand(peerId, { NET_FUNC_MASTER, NET_MASTER_SUBFUNC_BL_RID },
writePeerCommand(peerId, { NET_FUNC::MASTER, NET_SUBFUNC::MASTER_SUBFUNC_BL_RID },
payload, bufSize, true);
}
@ -1632,7 +1632,7 @@ void FNENetwork::writeTGIDs(uint32_t peerId)
offs += 5U;
}
writePeerCommand(peerId, { NET_FUNC_MASTER, NET_MASTER_SUBFUNC_ACTIVE_TGS },
writePeerCommand(peerId, { NET_FUNC::MASTER, NET_SUBFUNC::MASTER_SUBFUNC_ACTIVE_TGS },
payload, 4U + (tgidList.size() * 5U), true);
}
@ -1694,7 +1694,7 @@ void FNENetwork::writeDeactiveTGIDs(uint32_t peerId)
offs += 5U;
}
writePeerCommand(peerId, { NET_FUNC_MASTER, NET_MASTER_SUBFUNC_DEACTIVE_TGS },
writePeerCommand(peerId, { NET_FUNC::MASTER, NET_SUBFUNC::MASTER_SUBFUNC_DEACTIVE_TGS },
payload, 4U + (tgidList.size() * 5U), true);
}
@ -1807,7 +1807,7 @@ bool FNENetwork::writePeerACK(uint32_t peerId, const uint8_t* data, uint32_t len
::memcpy(buffer + 6U, data, length);
}
return writePeer(peerId, { NET_FUNC_ACK, NET_SUBFUNC_NOP }, buffer, length + 10U, RTP_END_OF_CALL_SEQ, false, true);
return writePeer(peerId, { NET_FUNC::ACK, NET_SUBFUNC::NOP }, buffer, length + 10U, RTP_END_OF_CALL_SEQ, false, true);
}
/// <summary>
@ -1869,7 +1869,7 @@ bool FNENetwork::writePeerNAK(uint32_t peerId, const char* tag, NET_CONN_NAK_REA
__SET_UINT16B((uint16_t)reason, buffer, 10U); // Reason
logPeerNAKReason(peerId, tag, reason);
return writePeer(peerId, { NET_FUNC_NAK, NET_SUBFUNC_NOP }, buffer, 10U, RTP_END_OF_CALL_SEQ, false, true);
return writePeer(peerId, { NET_FUNC::NAK, NET_SUBFUNC::NOP }, buffer, 10U, RTP_END_OF_CALL_SEQ, false, true);
}
/// <summary>
@ -1893,5 +1893,5 @@ bool FNENetwork::writePeerNAK(uint32_t peerId, const char* tag, NET_CONN_NAK_REA
logPeerNAKReason(peerId, tag, reason);
return m_frameQueue->write(buffer, 12U, createStreamId(), peerId, m_peerId,
{ NET_FUNC_NAK, NET_SUBFUNC_NOP }, 0U, addr, addrLen);
{ NET_FUNC::NAK, NET_SUBFUNC::NOP }, 0U, addr, addrLen);
}

@ -133,5 +133,5 @@ bool PeerNetwork::writeConfig()
Utils::dump(1U, "Network Message, Configuration", (uint8_t*)buffer, json.length() + 8U);
}
return writeMaster({ NET_FUNC_RPTC, NET_SUBFUNC_NOP }, (uint8_t*)buffer, json.length() + 8U, pktSeq(), m_loginStreamId);
return writeMaster({ NET_FUNC::RPTC, NET_SUBFUNC::NOP }, (uint8_t*)buffer, json.length() + 8U, pktSeq(), m_loginStreamId);
}

@ -274,7 +274,7 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId
// perform TGID route rewrites if configured
routeRewrite(outboundPeerBuffer, peer.first, dmrData, dataType, dstId, slotNo);
m_network->writePeer(peer.first, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_DMR }, outboundPeerBuffer, len, pktSeq, streamId, true);
m_network->writePeer(peer.first, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_DMR }, outboundPeerBuffer, len, pktSeq, streamId, true);
if (m_network->m_debug) {
LogDebug(LOG_NET, "DMR, srcPeer = %u, dstPeer = %u, seqNo = %u, srcId = %u, dstId = %u, flco = $%02X, slotNo = %u, len = %u, pktSeq = %u, stream = %u, external = %u",
peerId, peer.first, seqNo, srcId, dstId, flco, slotNo, len, pktSeq, streamId, external);
@ -318,7 +318,7 @@ bool TagDMRData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId
// perform TGID route rewrites if configured
routeRewrite(outboundPeerBuffer, dstPeerId, dmrData, dataType, dstId, slotNo);
peer.second->writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_DMR }, outboundPeerBuffer, len, pktSeq, streamId);
peer.second->writeMaster({ NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_DMR }, outboundPeerBuffer, len, pktSeq, streamId);
if (m_network->m_debug) {
LogDebug(LOG_NET, "DMR, srcPeer = %u, dstPeer = %u, seqNo = %u, srcId = %u, dstId = %u, flco = $%02X, slotNo = %u, len = %u, pktSeq = %u, stream = %u, external = %u",
peerId, dstPeerId, seqNo, srcId, dstId, flco, slotNo, len, pktSeq, streamId, external);
@ -398,7 +398,7 @@ void TagDMRData::playbackParrot()
auto& pkt = m_parrotFrames[0];
if (pkt.buffer != nullptr) {
if (m_network->m_parrotOnlyOriginating) {
m_network->writePeer(pkt.peerId, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_DMR }, pkt.buffer, pkt.bufferLen, pkt.pktSeq, pkt.streamId, false);
m_network->writePeer(pkt.peerId, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_DMR }, pkt.buffer, pkt.bufferLen, pkt.pktSeq, pkt.streamId, false);
if (m_network->m_debug) {
LogDebug(LOG_NET, "DMR, parrot, dstPeer = %u, len = %u, pktSeq = %u, streamId = %u",
pkt.peerId, pkt.bufferLen, pkt.pktSeq, pkt.streamId);
@ -407,7 +407,7 @@ void TagDMRData::playbackParrot()
else {
// repeat traffic to the connected peers
for (auto peer : m_network->m_peers) {
m_network->writePeer(peer.first, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_DMR }, pkt.buffer, pkt.bufferLen, pkt.pktSeq, pkt.streamId, false);
m_network->writePeer(peer.first, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_DMR }, pkt.buffer, pkt.bufferLen, pkt.pktSeq, pkt.streamId, false);
if (m_network->m_debug) {
LogDebug(LOG_NET, "DMR, parrot, dstPeer = %u, len = %u, pktSeq = %u, streamId = %u",
peer.first, pkt.bufferLen, pkt.pktSeq, pkt.streamId);
@ -983,5 +983,5 @@ void TagDMRData::write_CSBK(uint32_t peerId, uint8_t slot, lc::CSBK* csbk)
return;
}
m_network->writePeer(peerId, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_DMR }, message.get(), messageLength, RTP_END_OF_CALL_SEQ, streamId, false, true);
m_network->writePeer(peerId, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_DMR }, message.get(), messageLength, RTP_END_OF_CALL_SEQ, streamId, false, true);
}

@ -239,7 +239,7 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI
// perform TGID route rewrites if configured
routeRewrite(outboundPeerBuffer, peer.first, messageType, dstId);
m_network->writePeer(peer.first, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_NXDN }, outboundPeerBuffer, len, pktSeq, streamId, true);
m_network->writePeer(peer.first, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_NXDN }, outboundPeerBuffer, len, pktSeq, streamId, true);
if (m_network->m_debug) {
LogDebug(LOG_NET, "NXDN, srcPeer = %u, dstPeer = %u, messageType = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u, external = %u",
peerId, peer.first, messageType, srcId, dstId, len, pktSeq, streamId, external);
@ -283,7 +283,7 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI
// perform TGID route rewrites if configured
routeRewrite(outboundPeerBuffer, dstPeerId, messageType, dstId);
peer.second->writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_NXDN }, outboundPeerBuffer, len, pktSeq, streamId);
peer.second->writeMaster({ NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_NXDN }, outboundPeerBuffer, len, pktSeq, streamId);
if (m_network->m_debug) {
LogDebug(LOG_NET, "NXDN, srcPeer = %u, dstPeer = %u, messageType = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u, external = %u",
peerId, dstPeerId, messageType, srcId, dstId, len, pktSeq, streamId, external);
@ -362,7 +362,7 @@ void TagNXDNData::playbackParrot()
auto& pkt = m_parrotFrames[0];
if (pkt.buffer != nullptr) {
if (m_network->m_parrotOnlyOriginating) {
m_network->writePeer(pkt.peerId, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_NXDN }, pkt.buffer, pkt.bufferLen, pkt.pktSeq, pkt.streamId, false);
m_network->writePeer(pkt.peerId, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_NXDN }, pkt.buffer, pkt.bufferLen, pkt.pktSeq, pkt.streamId, false);
if (m_network->m_debug) {
LogDebug(LOG_NET, "NXDN, parrot, dstPeer = %u, len = %u, pktSeq = %u, streamId = %u",
pkt.peerId, pkt.bufferLen, pkt.pktSeq, pkt.streamId);
@ -371,7 +371,7 @@ void TagNXDNData::playbackParrot()
else {
// repeat traffic to the connected peers
for (auto peer : m_network->m_peers) {
m_network->writePeer(peer.first, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_NXDN }, pkt.buffer, pkt.bufferLen, pkt.pktSeq, pkt.streamId, false);
m_network->writePeer(peer.first, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_NXDN }, pkt.buffer, pkt.bufferLen, pkt.pktSeq, pkt.streamId, false);
if (m_network->m_debug) {
LogDebug(LOG_NET, "NXDN, parrot, dstPeer = %u, len = %u, pktSeq = %u, streamId = %u",
peer.first, pkt.bufferLen, pkt.pktSeq, pkt.streamId);
@ -764,5 +764,5 @@ void TagNXDNData::write_Message(uint32_t peerId, lc::RCCH* rcch)
}
uint32_t streamId = m_network->createStreamId();
m_network->writePeer(peerId, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_NXDN }, message.get(), messageLength, RTP_END_OF_CALL_SEQ, streamId, false, true);
m_network->writePeer(peerId, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_NXDN }, message.get(), messageLength, RTP_END_OF_CALL_SEQ, streamId, false, true);
}

@ -313,7 +313,7 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId
// perform TGID route rewrites if configured
routeRewrite(outboundPeerBuffer, peer.first, duid, dstId);
m_network->writePeer(peer.first, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, outboundPeerBuffer, len, pktSeq, streamId, true);
m_network->writePeer(peer.first, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, outboundPeerBuffer, len, pktSeq, streamId, true);
if (m_network->m_debug) {
LogDebug(LOG_NET, "P25, srcPeer = %u, dstPeer = %u, duid = $%02X, lco = $%02X, MFId = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u, external = %u",
peerId, peer.first, duid, lco, MFId, srcId, dstId, len, pktSeq, streamId, external);
@ -359,7 +359,7 @@ bool TagP25Data::processFrame(const uint8_t* data, uint32_t len, uint32_t peerId
// process TSDUs going to external peers
if (processTSDUToExternal(outboundPeerBuffer, peerId, dstPeerId, duid)) {
peer.second->writeMaster({ NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, outboundPeerBuffer, len, pktSeq, streamId);
peer.second->writeMaster({ NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, outboundPeerBuffer, len, pktSeq, streamId);
if (m_network->m_debug) {
LogDebug(LOG_NET, "P25, srcPeer = %u, dstPeer = %u, duid = $%02X, lco = $%02X, MFId = $%02X, srcId = %u, dstId = %u, len = %u, pktSeq = %u, streamId = %u, external = %u",
peerId, dstPeerId, duid, lco, MFId, srcId, dstId, len, pktSeq, streamId, external);
@ -461,7 +461,7 @@ void TagP25Data::playbackParrot()
// repeat traffic to the connected peers
for (auto peer : m_network->m_peers) {
LogMessage(LOG_NET, "P25, Parrot Grant Demand, peer = %u, srcId = %u, dstId = %u", peer.first, srcId, dstId);
m_network->writePeer(peer.first, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, 0U, false);
m_network->writePeer(peer.first, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, 0U, false);
}
}
}
@ -470,7 +470,7 @@ void TagP25Data::playbackParrot()
}
if (m_network->m_parrotOnlyOriginating) {
m_network->writePeer(pkt.peerId, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, pkt.buffer, pkt.bufferLen, pkt.pktSeq, pkt.streamId, false);
m_network->writePeer(pkt.peerId, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, pkt.buffer, pkt.bufferLen, pkt.pktSeq, pkt.streamId, false);
if (m_network->m_debug) {
LogDebug(LOG_NET, "P25, parrot, dstPeer = %u, len = %u, pktSeq = %u, streamId = %u",
pkt.peerId, pkt.bufferLen, pkt.pktSeq, pkt.streamId);
@ -478,7 +478,7 @@ void TagP25Data::playbackParrot()
} else {
// repeat traffic to the connected peers
for (auto peer : m_network->m_peers) {
m_network->writePeer(peer.first, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, pkt.buffer, pkt.bufferLen, pkt.pktSeq, pkt.streamId, false);
m_network->writePeer(peer.first, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, pkt.buffer, pkt.bufferLen, pkt.pktSeq, pkt.streamId, false);
if (m_network->m_debug) {
LogDebug(LOG_NET, "P25, parrot, dstPeer = %u, len = %u, pktSeq = %u, streamId = %u",
peer.first, pkt.bufferLen, pkt.pktSeq, pkt.streamId);
@ -1331,5 +1331,5 @@ void TagP25Data::write_TSDU(uint32_t peerId, lc::TSBK* tsbk)
}
uint32_t streamId = m_network->createStreamId();
m_network->writePeer(peerId, { NET_FUNC_PROTOCOL, NET_PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, RTP_END_OF_CALL_SEQ, streamId, false, true);
m_network->writePeer(peerId, { NET_FUNC::PROTOCOL, NET_SUBFUNC::PROTOCOL_SUBFUNC_P25 }, message.get(), messageLength, RTP_END_OF_CALL_SEQ, streamId, false, true);
}

@ -295,9 +295,9 @@ void Network::clock(uint32_t ms)
// process incoming message frame opcodes
switch (fneHeader.getFunction()) {
case NET_FUNC_PROTOCOL:
case NET_FUNC::PROTOCOL:
{
if (fneHeader.getSubFunction() == NET_PROTOCOL_SUBFUNC_DMR) { // Encapsulated DMR data frame
if (fneHeader.getSubFunction() == NET_SUBFUNC::PROTOCOL_SUBFUNC_DMR) { // Encapsulated DMR data frame
if (m_enabled && m_dmrEnabled) {
uint32_t slotNo = (buffer[15U] & 0x80U) == 0x80U ? 2U : 1U;
if (m_rxDMRStreamId[slotNo] == 0U) {
@ -324,7 +324,7 @@ void Network::clock(uint32_t ms)
m_rxDMRData.addData(buffer.get(), len);
}
}
else if (fneHeader.getSubFunction() == NET_PROTOCOL_SUBFUNC_P25) { // Encapsulated P25 data frame
else if (fneHeader.getSubFunction() == NET_SUBFUNC::PROTOCOL_SUBFUNC_P25) { // Encapsulated P25 data frame
if (m_enabled && m_p25Enabled) {
if (m_rxP25StreamId == 0U) {
m_rxP25StreamId = streamId;
@ -350,7 +350,7 @@ void Network::clock(uint32_t ms)
m_rxP25Data.addData(buffer.get(), len);
}
}
else if (fneHeader.getSubFunction() == NET_PROTOCOL_SUBFUNC_NXDN) { // Encapsulated NXDN data frame
else if (fneHeader.getSubFunction() == NET_SUBFUNC::PROTOCOL_SUBFUNC_NXDN) { // Encapsulated NXDN data frame
if (m_enabled && m_nxdnEnabled) {
if (m_rxNXDNStreamId == 0U) {
m_rxNXDNStreamId = streamId;
@ -382,9 +382,9 @@ void Network::clock(uint32_t ms)
}
break;
case NET_FUNC_MASTER:
case NET_FUNC::MASTER:
{
if (fneHeader.getSubFunction() == NET_MASTER_SUBFUNC_WL_RID) { // Radio ID Whitelist
if (fneHeader.getSubFunction() == NET_SUBFUNC::MASTER_SUBFUNC_WL_RID) { // Radio ID Whitelist
if (m_enabled && m_updateLookup) {
if (m_debug)
Utils::dump(1U, "Network Received, WL RID", buffer.get(), length);
@ -408,7 +408,7 @@ void Network::clock(uint32_t ms)
}
}
}
else if (fneHeader.getSubFunction() == NET_MASTER_SUBFUNC_BL_RID) { // Radio ID Blacklist
else if (fneHeader.getSubFunction() == NET_SUBFUNC::MASTER_SUBFUNC_BL_RID) { // Radio ID Blacklist
if (m_enabled && m_updateLookup) {
if (m_debug)
Utils::dump(1U, "Network Received, BL RID", buffer.get(), length);
@ -432,7 +432,7 @@ void Network::clock(uint32_t ms)
}
}
}
else if (fneHeader.getSubFunction() == NET_MASTER_SUBFUNC_ACTIVE_TGS) { // Talkgroup Active IDs
else if (fneHeader.getSubFunction() == NET_SUBFUNC::MASTER_SUBFUNC_ACTIVE_TGS) { // Talkgroup Active IDs
if (m_enabled && m_updateLookup) {
if (m_debug)
Utils::dump(1U, "Network Received, ACTIVE TGS", buffer.get(), length);
@ -478,7 +478,7 @@ void Network::clock(uint32_t ms)
}
}
}
else if (fneHeader.getSubFunction() == NET_MASTER_SUBFUNC_DEACTIVE_TGS) { // Talkgroup Deactivated IDs
else if (fneHeader.getSubFunction() == NET_SUBFUNC::MASTER_SUBFUNC_DEACTIVE_TGS) { // Talkgroup Deactivated IDs
if (m_enabled && m_updateLookup) {
if (m_debug)
Utils::dump(1U, "Network Received, DEACTIVE TGS", buffer.get(), length);
@ -515,7 +515,7 @@ void Network::clock(uint32_t ms)
}
break;
case NET_FUNC_NAK: // Master Negative Ack
case NET_FUNC::NAK: // Master Negative Ack
{
// DVM 3.6 adds support to respond with a NAK reason, as such we just check if the NAK response is greater
// then 10 bytes and process the reason value
@ -573,7 +573,7 @@ void Network::clock(uint32_t ms)
}
}
break;
case NET_FUNC_ACK: // Repeater Ack
case NET_FUNC::ACK: // Repeater Ack
{
switch (m_status) {
case NET_STAT_WAITING_LOGIN:
@ -618,14 +618,14 @@ void Network::clock(uint32_t ms)
}
}
break;
case NET_FUNC_MST_CLOSING: // Master Shutdown
case NET_FUNC::MST_CLOSING: // Master Shutdown
{
LogError(LOG_NET, "PEER %u master is closing down, remotePeerId = %u", m_peerId, m_remotePeerId);
close();
open();
}
break;
case NET_FUNC_PONG: // Master Ping Response
case NET_FUNC::PONG: // Master Ping Response
m_timeoutTimer.start();
break;
default:
@ -699,7 +699,7 @@ void Network::close()
uint8_t buffer[1U];
::memset(buffer, 0x00U, 1U);
writeMaster({ NET_FUNC_RPT_CLOSING, NET_SUBFUNC_NOP }, buffer, 1U, pktSeq(true), createStreamId());
writeMaster({ NET_FUNC::RPT_CLOSING, NET_SUBFUNC::NOP }, buffer, 1U, pktSeq(true), createStreamId());
}
m_socket->close();
@ -742,7 +742,7 @@ bool Network::writeLogin()
m_loginStreamId = createStreamId();
m_remotePeerId = 0U;
return writeMaster({ NET_FUNC_RPTL, NET_SUBFUNC_NOP }, buffer, 8U, pktSeq(true), m_loginStreamId);
return writeMaster({ NET_FUNC::RPTL, NET_SUBFUNC::NOP }, buffer, 8U, pktSeq(true), m_loginStreamId);
}
/// <summary>
@ -775,7 +775,7 @@ bool Network::writeAuthorisation()
if (m_debug)
Utils::dump(1U, "Network Message, Authorisation", out, 40U);
return writeMaster({ NET_FUNC_RPTK, NET_SUBFUNC_NOP }, out, 40U, pktSeq(), m_loginStreamId);
return writeMaster({ NET_FUNC::RPTK, NET_SUBFUNC::NOP }, out, 40U, pktSeq(), m_loginStreamId);
}
/// <summary>
@ -837,7 +837,7 @@ bool Network::writeConfig()
Utils::dump(1U, "Network Message, Configuration", (uint8_t*)buffer, json.length() + 8U);
}
return writeMaster({ NET_FUNC_RPTC, NET_SUBFUNC_NOP }, (uint8_t*)buffer, json.length() + 8U, RTP_END_OF_CALL_SEQ, m_loginStreamId);
return writeMaster({ NET_FUNC::RPTC, NET_SUBFUNC::NOP }, (uint8_t*)buffer, json.length() + 8U, RTP_END_OF_CALL_SEQ, m_loginStreamId);
}
/// <summary>
@ -851,5 +851,5 @@ bool Network::writePing()
if (m_debug)
Utils::dump(1U, "Network Message, Ping", buffer, 11U);
return writeMaster({ NET_FUNC_PING, NET_SUBFUNC_NOP }, buffer, 1U, RTP_END_OF_CALL_SEQ, createStreamId());
return writeMaster({ NET_FUNC::PING, NET_SUBFUNC::NOP }, buffer, 1U, RTP_END_OF_CALL_SEQ, createStreamId());
}

Loading…
Cancel
Save

Powered by TurnKey Linux.