diff --git a/ADOrcaApp/src/orca.cpp b/ADOrcaApp/src/orca.cpp index a05d974..0a629f0 100644 --- a/ADOrcaApp/src/orca.cpp +++ b/ADOrcaApp/src/orca.cpp @@ -834,6 +834,7 @@ void Orca::imageTask() { uint64_t prevAcquisitionCount = 0; DCAMCAP_TRANSFERINFO captransferinfo; epicsTimeStamp prevAcqTime, currentAcqTime; + epicsTimeStamp acqTimestamp; epicsTimeStamp prev_trigger_time, current_trigger_time; double elapsedTime; int evr_counts = 0; @@ -929,14 +930,17 @@ void Orca::imageTask() { setIntegerParam(evrTriggerDropped, evr_trigger_dropped); // remember parsed timestamp values - sscanf(buf, "%u.%u", &mTimeStampSec, &mTimeStampNsec); - timestamp = mTimeStampSec + mTimeStampNsec / 1.e9; - FLOW_ARGS("mTimeStampSec: %u - mTimeStampNsec: %u\n", mTimeStampSec, - mTimeStampNsec); + sscanf(buf, "%u.%u", &acqTimestamp.secPastEpoch, &acqTimestamp.nsec); + acqTimestamp.secPastEpoch -= POSIX_TIME_AT_EPICS_EPOCH; + + timestamp = acqTimestamp.secPastEpoch + acqTimestamp.nsec / 1.e9; + FLOW_ARGS("acqTimestamp.secPastEpoch: %u - acqTimestamp.nsec: %u\n", acqTimestamp.secPastEpoch, + acqTimestamp.nsec); FLOW_ARGS("Timestamp from evr: %f\n", timestamp); } else { + updateTimeStamp(&acqTimestamp); timestamp = (ts_sec + ts_microsec / 1.0e6) - (exposure_time + readout_time); FLOW_ARGS("Timestamp from camera: %f\n", timestamp); @@ -966,7 +970,7 @@ void Orca::imageTask() { if (pImage) { pImage->uniqueId = count; pImage->timeStamp = timestamp; - updateTimeStamp(&pImage->epicsTS); + pImage->epicsTS = acqTimestamp; memcpy(pImage->pData, (epicsUInt16*)image, pImage->dataSize); diff --git a/ADOrcaApp/src/orca.h b/ADOrcaApp/src/orca.h index 0811ce5..e2ecbff 100644 --- a/ADOrcaApp/src/orca.h +++ b/ADOrcaApp/src/orca.h @@ -189,9 +189,6 @@ class epicsShareClass Orca : public ADDriver { int readParameter(int propertyID, bool processPV = true); int readParameterStr(int paramIndex); - epicsUInt32 mTimeStampSec; - epicsUInt32 mTimeStampNsec; - void imageTask(); void temperatureTask();