https://areadetector.github.io/areaDetector/ADCore/guidelines.html includes guidelines for developing drivers, but they are outdated/incomplete:
If NDArrayCallbacks is non-zero then drivers should do the following:
Call asynNDArrayDriver::getAttributes to attach any attributes defined for this driver to the current array.
Call doCallbacksGenericPointer() so that registered clients can get the values of the new arrays.
- It's missing the call to
asynNDArrayDriver::updateTimestamps
- Is it missing anything else?
|
void asynNDArrayDriver::updateTimeStamps(NDArray *pArray) |
|
{ |
|
updateTimeStamp(&pArray->epicsTS); |
|
pArray->timeStamp = pArray->epicsTS.secPastEpoch + pArray->epicsTS.nsec/1.e9; |
|
} |
Even though it makes sense to document such requirements, is there a reason they can't be shared functionality? e.g. doCallbacksGenericPointer returns early if NDArrayCallbacks is false, or some prepareArray function exists which calls getAttributes and updateTimestamps and any other functions which are added to the required list.