|
|
|
|
@@ -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)) {
|
|
|
|
|
|