returns elapsed time as a double

This commit is contained in:
2025-11-07 14:05:37 +01:00
parent 8f8b78a9bf
commit 77ed74a203
3 changed files with 15 additions and 6 deletions

View File

@@ -90,12 +90,19 @@ static void detectorProducerTask(void *drvPvt) {
*/
asynStatus asynStreamGeneratorDriver::createInt32Param(
// TODO should show error if there is one
asynStatus status, char *name, int *variable, epicsInt32 initialValue) {
// TODO should show error if there is one
return (asynStatus)(status | createParam(name, asynParamInt32, variable) |
setIntegerParam(*variable, initialValue));
}
asynStatus asynStreamGeneratorDriver::createFloat64Param(
asynStatus status, char *name, int *variable, double initialValue) {
// TODO should show error if there is one
return (asynStatus)(status | createParam(name, asynParamFloat64, variable) |
setDoubleParam(*variable, initialValue));
}
/*******************************************************************************
* Stream Generator Methods
*/
@@ -106,9 +113,9 @@ asynStreamGeneratorDriver::asynStreamGeneratorDriver(
const char *detectorTopic, const int kafkaQueueSize,
const int kafkaMaxPacketSize)
: asynPortDriver(portName, 1, /* maxAddr */
asynInt32Mask | asynInt64Mask |
asynInt32Mask | asynFloat64Mask |
asynDrvUserMask, /* Interface mask */
asynInt32Mask | asynInt64Mask, /* Interrupt mask */
asynInt32Mask, // | asynFloat64Mask, /* Interrupt mask */
0, /* asynFlags. This driver does not block and it is
not multi-device, but has a
destructor ASYN_DESTRUCTIBLE our version of the Asyn
@@ -139,7 +146,7 @@ asynStreamGeneratorDriver::asynStreamGeneratorDriver(
status = createInt32Param(status, P_StopString, &P_Stop);
status = createInt32Param(status, P_CountPresetString, &P_CountPreset);
status = createInt32Param(status, P_TimePresetString, &P_TimePreset);
status = createInt32Param(status, P_ElapsedTimeString, &P_ElapsedTime);
status = createFloat64Param(status, P_ElapsedTimeString, &P_ElapsedTime);
status =
createInt32Param(status, P_ClearElapsedTimeString, &P_ClearElapsedTime);
status =
@@ -688,7 +695,7 @@ void asynStreamGeneratorDriver::processEvents() {
for (size_t i = 0; i < num_channels; ++i) {
setIntegerParam(P_Counts[i], counts[i]);
}
setIntegerParam(P_ElapsedTime, (epicsInt32)elapsedSeconds);
setDoubleParam(P_ElapsedTime, elapsedSeconds);
if ((countPreset && counts[presetChannel] >= countPreset) ||
(timePreset && elapsedSeconds > (double)timePreset)) {