adds PV for number of missed udp packets
This commit is contained in:
@@ -211,6 +211,17 @@ record(ai,"$(INSTR)$(NAME):ELAPSED-TIME")
|
|||||||
################################################################################
|
################################################################################
|
||||||
# Stream Generator Status PVs
|
# 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")
|
record(longin,"$(INSTR)$(NAME):UDP_WATERMARK")
|
||||||
{
|
{
|
||||||
field(DESC, "Max Events in Queue")
|
field(DESC, "Max Events in Queue")
|
||||||
|
|||||||
@@ -167,6 +167,7 @@ asynStreamGeneratorDriver::asynStreamGeneratorDriver(
|
|||||||
status = createInt32Param(status, pv_name_buffer, P_ClearCounts + i);
|
status = createInt32Param(status, pv_name_buffer, P_ClearCounts + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status = createInt32Param(status, P_UdpDroppedString, &P_UdpDropped);
|
||||||
status = createInt32Param(status, P_UdpQueueHighWaterMarkString,
|
status = createInt32Param(status, P_UdpQueueHighWaterMarkString,
|
||||||
&P_UdpQueueHighWaterMark);
|
&P_UdpQueueHighWaterMark);
|
||||||
status = createInt32Param(status, P_SortedQueueHighWaterMarkString,
|
status = createInt32Param(status, P_SortedQueueHighWaterMarkString,
|
||||||
@@ -438,6 +439,8 @@ void asynStreamGeneratorDriver::receiveUDP() {
|
|||||||
lastBufferNumber[i] = 0;
|
lastBufferNumber[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
epicsInt32 droppedMessages = 0;
|
||||||
|
|
||||||
NormalisedEvent ne;
|
NormalisedEvent ne;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
@@ -472,6 +475,7 @@ void asynStreamGeneratorDriver::receiveUDP() {
|
|||||||
", last: %" PRIu64 "\n",
|
", last: %" PRIu64 "\n",
|
||||||
driverName, functionName, header->McpdID,
|
driverName, functionName, header->McpdID,
|
||||||
header->BufferNumber, lastBufferNumber[header->McpdID]);
|
header->BufferNumber, lastBufferNumber[header->McpdID]);
|
||||||
|
setIntegerParam(P_UdpDropped, ++droppedMessages);
|
||||||
}
|
}
|
||||||
lastBufferNumber[header->McpdID] = header->BufferNumber;
|
lastBufferNumber[header->McpdID] = header->BufferNumber;
|
||||||
|
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ struct __attribute__((__packed__)) NormalisedEvent {
|
|||||||
#define P_RateString "RATE%d"
|
#define P_RateString "RATE%d"
|
||||||
#define P_ClearCountsString "C_%d"
|
#define P_ClearCountsString "C_%d"
|
||||||
|
|
||||||
|
#define P_UdpDroppedString "DROP"
|
||||||
#define P_UdpQueueHighWaterMarkString "UDP"
|
#define P_UdpQueueHighWaterMarkString "UDP"
|
||||||
#define P_SortedQueueHighWaterMarkString "SORT"
|
#define P_SortedQueueHighWaterMarkString "SORT"
|
||||||
|
|
||||||
@@ -139,6 +140,7 @@ class asynStreamGeneratorDriver : public asynPortDriver {
|
|||||||
int *P_ClearCounts;
|
int *P_ClearCounts;
|
||||||
|
|
||||||
// System Status Parameter Identifying IDs
|
// System Status Parameter Identifying IDs
|
||||||
|
int P_UdpDropped;
|
||||||
int P_UdpQueueHighWaterMark;
|
int P_UdpQueueHighWaterMark;
|
||||||
int P_SortedQueueHighWaterMark;
|
int P_SortedQueueHighWaterMark;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user