add support for call start/end WebSocket events;

pull/121/merge
Bryan Biedenkapp 6 days ago
parent 15886661bd
commit c299d812e9

@ -180,6 +180,37 @@ std::string resolveTGID(uint32_t id)
return std::string("UNK"); return std::string("UNK");
} }
/* Helper to emit a call start or end event. */
void emitCallStartEndEvent(uint32_t srcId, uint32_t dstId, uint8_t slotNo, uint32_t streamId, const std::string& mode,
bool callEnd = false)
{
if (g_netDataEvent == nullptr)
return;
json::object event;
std::string type = "call_start";
if (callEnd) {
type = "call_end";
}
event["type"].set<std::string>(type);
event["mode"].set<std::string>(mode);
event["slot"].set<uint8_t>(slotNo);
std::string resolvedSrc = resolveRID(srcId);
std::string resolvedDst = resolveTGID(dstId);
event["srcId"].set<uint32_t>(srcId);
event["srcStr"].set<std::string>(resolvedSrc);
event["dstId"].set<uint32_t>(dstId);
event["dstStr"].set<std::string>(resolvedDst);
event["streamId"].set<uint32_t>(streamId);
g_netDataEvent(event);
}
/* Initializes peer network connectivity. */ /* Initializes peer network connectivity. */
bool createPeerNetwork() bool createPeerNetwork()
@ -402,6 +433,7 @@ void* threadNetworkPump(void* arg)
LogInfoEx(LOG_NET, "DMR, Call End, srcId = %u (%s), dstId = %u (%s), duration = %u", LogInfoEx(LOG_NET, "DMR, Call End, srcId = %u (%s), dstId = %u (%s), duration = %u",
srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str(), duration / 1000); srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str(), duration / 1000);
emitCallStartEndEvent(srcId, dstId, slotNo, status.streamId, "dmr", true);
} }
} }
@ -424,6 +456,7 @@ void* threadNetworkPump(void* arg)
LogInfoEx(LOG_NET, "DMR, Call Start, srcId = %u (%s), dstId = %u (%s)", LogInfoEx(LOG_NET, "DMR, Call Start, srcId = %u (%s), dstId = %u (%s)",
srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str()); srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str());
emitCallStartEndEvent(srcId, dstId, slotNo, status.streamId, "dmr");
} }
} }
@ -544,6 +577,7 @@ void* threadNetworkPump(void* arg)
LogInfoEx(LOG_NET, "P25, Call End, srcId = %u (%s), dstId = %u (%s), sysId = $%03X, netId = $%05X, duration = %u", LogInfoEx(LOG_NET, "P25, Call End, srcId = %u (%s), dstId = %u (%s), sysId = $%03X, netId = $%05X, duration = %u",
srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str(), sysId, netId, duration / 1000); srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str(), sysId, netId, duration / 1000);
emitCallStartEndEvent(srcId, dstId, 0U, status.streamId, "p25", true);
} }
} }
@ -565,6 +599,7 @@ void* threadNetworkPump(void* arg)
LogInfoEx(LOG_NET, "P25, Call Start, srcId = %u (%s), dstId = %u (%s), sysId = $%03X, netId = $%05X", LogInfoEx(LOG_NET, "P25, Call Start, srcId = %u (%s), dstId = %u (%s), sysId = $%03X, netId = $%05X",
srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str(), sysId, netId); srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str(), sysId, netId);
emitCallStartEndEvent(srcId, dstId, 0U, status.streamId, "p25");
} }
} }
} }
@ -982,6 +1017,7 @@ void* threadNetworkPump(void* arg)
LogInfoEx(LOG_NET, "NXDN, Call End, srcId = %u (%s), dstId = %u (%s), duration = %u", LogInfoEx(LOG_NET, "NXDN, Call End, srcId = %u (%s), dstId = %u (%s), duration = %u",
srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str(), duration / 1000); srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str(), duration / 1000);
emitCallStartEndEvent(srcId, dstId, 0U, status.streamId, "nxdn", true);
} }
} }
@ -1003,6 +1039,7 @@ void* threadNetworkPump(void* arg)
LogInfoEx(LOG_NET, "NXDN, Call Start, srcId = %u (%s), dstId = %u (%s)", LogInfoEx(LOG_NET, "NXDN, Call Start, srcId = %u (%s), dstId = %u (%s)",
srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str()); srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str());
emitCallStartEndEvent(srcId, dstId, 0U, status.streamId, "nxdn");
} }
} }
} }
@ -1035,6 +1072,7 @@ void* threadNetworkPump(void* arg)
LogInfoEx(LOG_NET, "Analog, Call End, srcId = %u (%s), dstId = %u (%s), duration = %u", LogInfoEx(LOG_NET, "Analog, Call End, srcId = %u (%s), dstId = %u (%s), duration = %u",
srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str(), duration / 1000); srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str(), duration / 1000);
emitCallStartEndEvent(srcId, dstId, 0U, status.streamId, "analog", true);
} }
} }
@ -1056,6 +1094,7 @@ void* threadNetworkPump(void* arg)
LogInfoEx(LOG_NET, "Analog, Call Start, srcId = %u (%s), dstId = %u (%s)", LogInfoEx(LOG_NET, "Analog, Call Start, srcId = %u (%s), dstId = %u (%s)",
srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str()); srcId, resolveRID(srcId).c_str(), dstId, resolveTGID(dstId).c_str());
emitCallStartEndEvent(srcId, dstId, 0U, status.streamId, "analog");
} }
} }

Loading…
Cancel
Save

Powered by TurnKey Linux.