adds PV for number of missed udp packets

This commit is contained in:
2025-11-07 09:00:53 +01:00
parent 18da14f6d6
commit 6faf23601e
3 changed files with 17 additions and 0 deletions

View File

@@ -211,6 +211,17 @@ record(ai,"$(INSTR)$(NAME):ELAPSED-TIME")
################################################################################
# Stream Generator Status PVs
record(longin,"$(INSTR)$(NAME):UDP_DROPPED")
{
field(DESC, "Max Events in Queue")
field(EGU, "Events")
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),0,$(TIMEOUT=1)) DROP")
# field(SCAN, "I/O Intr")
field(SCAN, "1 second")
field(PINI, "YES")
}
record(longin,"$(INSTR)$(NAME):UDP_WATERMARK")
{
field(DESC, "Max Events in Queue")

View File

@@ -167,6 +167,7 @@ asynStreamGeneratorDriver::asynStreamGeneratorDriver(
status = createInt32Param(status, pv_name_buffer, P_ClearCounts + i);
}
status = createInt32Param(status, P_UdpDroppedString, &P_UdpDropped);
status = createInt32Param(status, P_UdpQueueHighWaterMarkString,
&P_UdpQueueHighWaterMark);
status = createInt32Param(status, P_SortedQueueHighWaterMarkString,
@@ -438,6 +439,8 @@ void asynStreamGeneratorDriver::receiveUDP() {
lastBufferNumber[i] = 0;
}
epicsInt32 droppedMessages = 0;
NormalisedEvent ne;
while (true) {
@@ -472,6 +475,7 @@ void asynStreamGeneratorDriver::receiveUDP() {
", last: %" PRIu64 "\n",
driverName, functionName, header->McpdID,
header->BufferNumber, lastBufferNumber[header->McpdID]);
setIntegerParam(P_UdpDropped, ++droppedMessages);
}
lastBufferNumber[header->McpdID] = header->BufferNumber;

View File

@@ -96,6 +96,7 @@ struct __attribute__((__packed__)) NormalisedEvent {
#define P_RateString "RATE%d"
#define P_ClearCountsString "C_%d"
#define P_UdpDroppedString "DROP"
#define P_UdpQueueHighWaterMarkString "UDP"
#define P_SortedQueueHighWaterMarkString "SORT"
@@ -139,6 +140,7 @@ class asynStreamGeneratorDriver : public asynPortDriver {
int *P_ClearCounts;
// System Status Parameter Identifying IDs
int P_UdpDropped;
int P_UdpQueueHighWaterMark;
int P_SortedQueueHighWaterMark;