28 Commits
1.0.2 ... 1.1.1

Author SHA1 Message Date
Douglas Araujo
ca22a8166c Fix initial value for SensorCooler 2024-10-29 10:57:26 +01:00
Douglas Araujo
6f0f6357be Fix mbbi item string length 2024-10-29 10:55:30 +01:00
Caissa Roque
325821714a Merge branch 'temperature-control' into 'master'
Temperature control

See merge request epics-modules/adorca!25
2024-10-04 09:03:51 +00:00
Caissa Roque
1abd258517 Fix SensorCooler init value 2024-10-04 09:02:44 +00:00
Caissa Roque
4c0a03fd81 Add sensor cooler 2024-10-04 09:02:44 +00:00
Douglas Araujo
4f29439529 Merge branch 'ICSHWI-1929-fix-evr-properties' into 'master'
ICSHWI-19294: Update EVR property names

Closes ICSHWI-19294

See merge request epics-modules/adorca!24
2024-10-02 10:29:59 +00:00
Douglas Araujo
f7410e5473 Update evr property names 2024-09-30 13:53:34 +02:00
Douglas Araujo
6384a20af1 Merge branch 'ICSHWI-11121-tidy-up' into 'master'
ICSHWI-11121: Tidyup code

See merge request epics-modules/adorca!23
2024-09-24 07:41:57 +00:00
Douglas Araujo
7e496979ce Improve internalframe PV desc according DCAM-API 2024-09-23 15:37:33 +02:00
Douglas Araujo
5a14d155e3 Remove duplicate record 2024-09-23 15:23:53 +02:00
Douglas Araujo
429c991544 Remove empty if statement 2024-09-23 14:54:28 +02:00
Douglas Araujo
2d9bb69fb8 Remove unnecessary line 2024-09-23 14:53:15 +02:00
Douglas Araujo
2c23087d04 Improve descriptions 2024-09-23 14:52:29 +02:00
Douglas Araujo
7aacd3e881 Apply dbformat on template file, and add DESC field 2024-09-16 16:31:27 +02:00
Douglas Araujo
343a17ae9f Replace ao printError calls 2024-09-16 15:28:58 +02:00
Douglas Araujo
49c9eb4c20 Refactor writeFloat64 method 2024-09-16 14:22:38 +02:00
Douglas Araujo
a94ca36d90 Refactor writeInt32 method 2024-09-16 13:16:18 +02:00
Douglas Araujo
587c23cacc Add ERR message formatter 2024-09-16 13:11:54 +02:00
Douglas Araujo
7ac340473d Remove disconnect method once that it was only returning true always 2024-09-13 12:01:49 +02:00
Douglas Araujo
52c274d5b2 Remove unused class parameter and update the devOrcaConfig iocsh function 2024-09-13 11:59:44 +02:00
Douglas Araujo
6652bc2264 Remove FLOWs in the constructor 2024-09-13 11:52:45 +02:00
Douglas Araujo
9225d07a0d Replace printf to asynPrint 2024-09-12 12:59:05 +02:00
Douglas Araujo
481b7722c5 Remove unnecessary prints.
In the virtual asynFunctions the infos are available through  asynPrint using ASYN_TRACEIO_DRIVER
2024-09-12 12:46:42 +02:00
Douglas Araujo
1ec9ec9f50 Add createAsynParams method to tidy up the constructor 2024-09-12 11:59:37 +02:00
Douglas Araujo
aa7a350688 Remove unused methods 2024-09-12 11:36:56 +02:00
Douglas Araujo
3b0e24798f Remove commented code 2024-09-12 11:34:51 +02:00
Douglas Araujo
c587eabd00 Merge branch 'ICSHWI-11121-clang-format' into 'master'
Apply clang-format following google standards

See merge request epics-modules/adorca!22
2024-09-11 15:14:46 +00:00
Douglas Araujo
15fd21a1e0 Apply clang-format following google standards 2024-09-11 17:06:38 +02:00
6 changed files with 2909 additions and 3619 deletions

3
.gitignore vendored
View File

@@ -11,3 +11,6 @@ core.*
list.txt list.txt
kafka.conf kafka.conf
ecdc-kafka-ca.crt ecdc-kafka-ca.crt
.pre-commit-config.yaml
.clang-format
.iocsh_history

File diff suppressed because it is too large Load Diff

View File

@@ -3,22 +3,20 @@
/* Date: 2022-03-16 */ /* Date: 2022-03-16 */
#include <stddef.h> #include <stddef.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "epicsExit.h" #include "epicsExit.h"
#include "epicsThread.h" #include "epicsThread.h"
#include "iocsh.h" #include "iocsh.h"
int main(int argc,char *argv[]) int main(int argc, char *argv[]) {
{ if (argc >= 2) {
if(argc>=2) {
iocsh(argv[1]); iocsh(argv[1]);
epicsThreadSleep(.2); epicsThreadSleep(.2);
} }
iocsh(NULL); iocsh(NULL);
epicsExit(0); epicsExit(0);
return(0); return (0);
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,9 @@
#ifndef DRV_HAMA_H #ifndef DRV_HAMA_H
#define DRV_HAMA_H #define DRV_HAMA_H
// EPICS includes
#include <epicsExport.h>
#include <iocsh.h>
#include "ADDriver.h" #include "ADDriver.h"
#include "dcamapi4.h" #include "dcamapi4.h"
@@ -30,12 +33,14 @@
#define hTriggerSourceString "H_TRIGGER_SOURCE" /* asynInt32 rw */ #define hTriggerSourceString "H_TRIGGER_SOURCE" /* asynInt32 rw */
#define hTriggerModeString "H_TRIGGER_MODE" /* asynInt32 rw */ #define hTriggerModeString "H_TRIGGER_MODE" /* asynInt32 rw */
#define hTriggerActiveString "H_TRIGGER_ACTIVE" /* asynInt32 rw */ #define hTriggerActiveString "H_TRIGGER_ACTIVE" /* asynInt32 rw */
#define hTriggerGlobalExposureString "H_TRIGGER_GLOBAL_EXPOSURE" /* asynInt32 rw */ #define hTriggerGlobalExposureString \
"H_TRIGGER_GLOBAL_EXPOSURE" /* asynInt32 rw */
#define hTriggerPolarityString "H_TRIGGER_POLARITY" /* asynInt32 rw */ #define hTriggerPolarityString "H_TRIGGER_POLARITY" /* asynInt32 rw */
#define hTriggerConnectorString "H_TRIGGER_CONNECTOR" /* asynInt32 rw */ #define hTriggerConnectorString "H_TRIGGER_CONNECTOR" /* asynInt32 rw */
#define hTriggerTimesString "H_TRIGGER_TIMES" /* asynInt32 rw */ #define hTriggerTimesString "H_TRIGGER_TIMES" /* asynInt32 rw */
#define hTriggerDelayString "H_TRIGGER_DELAY" /* asynFloat64 rw */ #define hTriggerDelayString "H_TRIGGER_DELAY" /* asynFloat64 rw */
#define hInternalTriggerHandlingString "H_INTERNAL_TRIGGER_HANDLING" /* asynInt32 rw */ #define hInternalTriggerHandlingString \
"H_INTERNAL_TRIGGER_HANDLING" /* asynInt32 rw */
// Sensor cooler // Sensor cooler
#define hSensorTemperatureString "H_SENSOR_TEMPERATURE" /* asynFloat64 ro */ #define hSensorTemperatureString "H_SENSOR_TEMPERATURE" /* asynFloat64 ro */
@@ -49,84 +54,115 @@
#define hSubarrayVPosString "H_SUBARRAY_VPOS" /* asynInt32 rw */ #define hSubarrayVPosString "H_SUBARRAY_VPOS" /* asynInt32 rw */
#define hSubarrayVSizeString "H_SUBARRAY_VSIZE" /* asynInt32 rw */ #define hSubarrayVSizeString "H_SUBARRAY_VSIZE" /* asynInt32 rw */
#define hSubarrayModeString "H_SUBARRAY_MODE" /* asynInt32 rw */ #define hSubarrayModeString "H_SUBARRAY_MODE" /* asynInt32 rw */
// #define hFrameBundleMode (usb3 only not implemented)
// #define hFrameBundleNumber (usb3 only not implemented)
// ALU // ALU
#define hDefectCorrectModeString "H_DEFECTCORRECT_MODE" /* asynInt32 rw */ #define hDefectCorrectModeString "H_DEFECTCORRECT_MODE" /* asynInt32 rw */
#define hHotPixelCorrectLevelString "H_HOT_PIXEL_CORRECT_LEVEL" /* asynInt32 rw */ #define hHotPixelCorrectLevelString \
"H_HOT_PIXEL_CORRECT_LEVEL" /* asynInt32 rw */
#define hIntensityLutModeString "H_INTENSITY_LUT_MODE" /* asynInt32 rw */ #define hIntensityLutModeString "H_INTENSITY_LUT_MODE" /* asynInt32 rw */
#define hIntensityLutPageString "H_INTENSITY_LUT_PAGE" /* asynInt32 ro */ #define hIntensityLutPageString "H_INTENSITY_LUT_PAGE" /* asynInt32 ro */
#define hExtractionModeString "H_EXTRACTION_MODE" /* asynInt32 ro */ #define hExtractionModeString "H_EXTRACTION_MODE" /* asynInt32 ro */
// output trigger // output trigger
#define hNumberOfOutputTriggerConnectorString "H_NUMBEROF_OUTPUTTRIGGERCONNECTOR" /* asynInt32 ro */ #define hNumberOfOutputTriggerConnectorString \
#define hOutputTriggerSource0String "H_OUTPUT_TRIGGER_SOURCE0" /* asynInt32 rw */ "H_NUMBEROF_OUTPUTTRIGGERCONNECTOR" /* asynInt32 ro */
#define hOutputTriggerSource1String "H_OUTPUT_TRIGGER_SOURCE1" /* asynInt32 rw */ #define hOutputTriggerSource0String \
#define hOutputTriggerSource2String "H_OUTPUT_TRIGGER_SOURCE2" /* asynInt32 rw */ "H_OUTPUT_TRIGGER_SOURCE0" /* asynInt32 rw */
#define hOutputTriggerPolarity0String "H_OUTPUT_TRIGGER_POLARITY0" /* asynInt32 rw */ #define hOutputTriggerSource1String \
#define hOutputTriggerPolarity1String "H_OUTPUT_TRIGGER_POLARITY1" /* asynInt32 rw */ "H_OUTPUT_TRIGGER_SOURCE1" /* asynInt32 rw */
#define hOutputTriggerPolarity2String "H_OUTPUT_TRIGGER_POLARITY2" /* asynInt32 rw */ #define hOutputTriggerSource2String \
#define hOutputTriggerActive0String "H_OUTPUT_TRIGGER_ACTIVE0" /* asynInt32 ro */ "H_OUTPUT_TRIGGER_SOURCE2" /* asynInt32 rw */
#define hOutputTriggerActive1String "H_OUTPUT_TRIGGER_ACTIVE1" /* asynInt32 ro */ #define hOutputTriggerPolarity0String \
#define hOutputTriggerActive2String "H_OUTPUT_TRIGGER_ACTIVE2" /* asynInt32 ro */ "H_OUTPUT_TRIGGER_POLARITY0" /* asynInt32 rw */
#define hOutputTriggerDelay0String "H_OUTPUT_TRIGGER_DELAY0" /* asynFloat64 rw */ #define hOutputTriggerPolarity1String \
#define hOutputTriggerDelay1String "H_OUTPUT_TRIGGER_DELAY1" /* asynFloat64 rw */ "H_OUTPUT_TRIGGER_POLARITY1" /* asynInt32 rw */
#define hOutputTriggerDelay2String "H_OUTPUT_TRIGGER_DELAY2" /* asynFloat64 rw */ #define hOutputTriggerPolarity2String \
#define hOutputTriggerPeriod0String "H_OUTPUT_TRIGGER_PERIOD0" /* asynFloat64 rw */ "H_OUTPUT_TRIGGER_POLARITY2" /* asynInt32 rw */
#define hOutputTriggerPeriod1String "H_OUTPUT_TRIGGER_PERIOD1" /* asynFloat64 rw */ #define hOutputTriggerActive0String \
#define hOutputTriggerPeriod2String "H_OUTPUT_TRIGGER_PERIOD2" /* asynFloat64 rw */ "H_OUTPUT_TRIGGER_ACTIVE0" /* asynInt32 ro */
#define hOutputTriggerActive1String \
"H_OUTPUT_TRIGGER_ACTIVE1" /* asynInt32 ro */
#define hOutputTriggerActive2String \
"H_OUTPUT_TRIGGER_ACTIVE2" /* asynInt32 ro */
#define hOutputTriggerDelay0String \
"H_OUTPUT_TRIGGER_DELAY0" /* asynFloat64 rw */
#define hOutputTriggerDelay1String \
"H_OUTPUT_TRIGGER_DELAY1" /* asynFloat64 rw */
#define hOutputTriggerDelay2String \
"H_OUTPUT_TRIGGER_DELAY2" /* asynFloat64 rw */
#define hOutputTriggerPeriod0String \
"H_OUTPUT_TRIGGER_PERIOD0" /* asynFloat64 rw */
#define hOutputTriggerPeriod1String \
"H_OUTPUT_TRIGGER_PERIOD1" /* asynFloat64 rw */
#define hOutputTriggerPeriod2String \
"H_OUTPUT_TRIGGER_PERIOD2" /* asynFloat64 rw */
#define hOutputTriggerKind0String "H_OUTPUT_TRIGGER_KIND0" /* asynInt32 rw */ #define hOutputTriggerKind0String "H_OUTPUT_TRIGGER_KIND0" /* asynInt32 rw */
#define hOutputTriggerKind1String "H_OUTPUT_TRIGGER_KIND1" /* asynInt32 rw */ #define hOutputTriggerKind1String "H_OUTPUT_TRIGGER_KIND1" /* asynInt32 rw */
#define hOutputTriggerKind2String "H_OUTPUT_TRIGGER_KIND2" /* asynInt32 rw */ #define hOutputTriggerKind2String "H_OUTPUT_TRIGGER_KIND2" /* asynInt32 rw */
#define hOutputTriggerBaseSensor0String "H_OUTPUT_TRIGGER_BASE_SENSOR0" /* asynInt32 rw */ #define hOutputTriggerBaseSensor0String \
#define hOutputTriggerBaseSensor1String "H_OUTPUT_TRIGGER_BASE_SENSOR1" /* asynInt32 rw */ "H_OUTPUT_TRIGGER_BASE_SENSOR0" /* asynInt32 rw */
#define hOutputTriggerBaseSensor2String "H_OUTPUT_TRIGGER_BASE_SENSOR2" /* asynInt32 rw */ #define hOutputTriggerBaseSensor1String \
#define hOutputTriggerPreHsyncCountString "H_OUTPUT_TRIGGER_PRE_HSYNC_COUNT" /* asynInt32 rw */ "H_OUTPUT_TRIGGER_BASE_SENSOR1" /* asynInt32 rw */
#define hOutputTriggerBaseSensor2String \
"H_OUTPUT_TRIGGER_BASE_SENSOR2" /* asynInt32 rw */
#define hOutputTriggerPreHsyncCountString \
"H_OUTPUT_TRIGGER_PRE_HSYNC_COUNT" /* asynInt32 rw */
// Master Puls // Master Puls
#define hMasterPulseModeString "H_MASTERPULSE_MODE" /* asynInt32 rw */ #define hMasterPulseModeString "H_MASTERPULSE_MODE" /* asynInt32 rw */
#define hMasterPulseTriggerSourceString "H_MASTERPULSE_TRIGGER_SOURCE" /* asynInt32 rw */ #define hMasterPulseTriggerSourceString \
#define hMasterPulseIntervalString "H_MASTERPULSE_INTERVAL" /* asynFloat64 rw */ "H_MASTERPULSE_TRIGGER_SOURCE" /* asynInt32 rw */
#define hMasterPulseBurstTimesString "H_MASTERPULSE_BURST_TIMES" /* asynInt32 rw */ #define hMasterPulseIntervalString \
"H_MASTERPULSE_INTERVAL" /* asynFloat64 rw */
#define hMasterPulseBurstTimesString \
"H_MASTERPULSE_BURST_TIMES" /* asynInt32 rw */
// Synchronious Timing // Synchronious Timing
#define hTimingReadoutTimeString "H_TIMING_READOUT_TIME" /* asynFloat64 ro */ #define hTimingReadoutTimeString "H_TIMING_READOUT_TIME" /* asynFloat64 ro */
#define hTimingCyclicTriggerPeriodString "H_TIMING_CYCLICTRIGGERPERIOD" /* asynFloat64 ro */ #define hTimingCyclicTriggerPeriodString \
#define hTimingMinTriggerBlankingString "H_TIMING_MIN_TRIGGER_BLANKING" /* asynFloat64 ro */ "H_TIMING_CYCLICTRIGGERPERIOD" /* asynFloat64 ro */
#define hTimingMinTriggerIntervalString "H_TIMING_MIN_TRIGGER_INTERVAL" /* asynFloat64 ro */ #define hTimingMinTriggerBlankingString \
#define hTimingGlobalExposureDelayString "H_TIMING_GLOBAL_EXPOSURE_DELAY" /* asynFloat64 ro */ "H_TIMING_MIN_TRIGGER_BLANKING" /* asynFloat64 ro */
#define hTimingMinTriggerIntervalString \
"H_TIMING_MIN_TRIGGER_INTERVAL" /* asynFloat64 ro */
#define hTimingGlobalExposureDelayString \
"H_TIMING_GLOBAL_EXPOSURE_DELAY" /* asynFloat64 ro */
#define hTimingExposureString "H_TIMING_EXPOSURE" /* asynInt32 ro */ #define hTimingExposureString "H_TIMING_EXPOSURE" /* asynInt32 ro */
#define hTimingInvalidExposurePeriodString "H_TIMING_INVALID_EXPOSURE_PERIOD" /* asynFloat64 ro */ #define hTimingInvalidExposurePeriodString \
"H_TIMING_INVALID_EXPOSURE_PERIOD" /* asynFloat64 ro */
#define hInternalFrameRateString "H_INTERNAL_FRAME_RATE" /* asynFloat64 rw */ #define hInternalFrameRateString "H_INTERNAL_FRAME_RATE" /* asynFloat64 rw */
#define hInternalFrameIntervalString "H_INTERNAL_FRAME_INTERVAL" /* asynFloat64 rw */ #define hInternalFrameIntervalString \
"H_INTERNAL_FRAME_INTERVAL" /* asynFloat64 rw */
#define hInternalLineSpeedString "H_INTERNAL_LINE_SPEED" /* asynFloat64 rw */ #define hInternalLineSpeedString "H_INTERNAL_LINE_SPEED" /* asynFloat64 rw */
#define hInternalLineIntervalString "H_INTERNAL_LINE_INTERVAL" /* asynFloat64 rw */ #define hInternalLineIntervalString \
"H_INTERNAL_LINE_INTERVAL" /* asynFloat64 rw */
// System information // System information
#define hColorTypeString "H_COLOR_TYPE" /* asynInt32 ro */ #define hColorTypeString "H_COLOR_TYPE" /* asynInt32 ro */
#define hBitPerChannelString "H_BIT_PER_CHANNEL" /* asynInt32 rw */ #define hBitPerChannelString "H_BIT_PER_CHANNEL" /* asynInt32 rw */
//#define hImageWidthString "H_IMAGE_WIDTH" /* asynInt32 ro */
//#define hImageHeightString "H_IMAGE_HEIGHT" /* asynInt32 ro */
#define hImageRowBytesString "H_IMAGE_ROWBYTES" /* asynInt32 ro */ #define hImageRowBytesString "H_IMAGE_ROWBYTES" /* asynInt32 ro */
#define hImageFrameBytesString "H_IMAGE_FRAMEBYTES" /* asynInt32 ro */ #define hImageFrameBytesString "H_IMAGE_FRAMEBYTES" /* asynInt32 ro */
#define hImageTopOffsetBytesString "H_IMAGE_TOP_OFFSETBYTES" /* asynInt32 ro */ #define hImageTopOffsetBytesString \
"H_IMAGE_TOP_OFFSETBYTES" /* asynInt32 ro \
*/
#define hImagePixelTypeString "H_IMAGE_PIXEL_TYPE" /* asynInt32 rw */ #define hImagePixelTypeString "H_IMAGE_PIXEL_TYPE" /* asynInt32 rw */
#define hBufferRowbytesString "H_BUFFER_ROWBYTES" /* asynInt32 ro */ #define hBufferRowbytesString "H_BUFFER_ROWBYTES" /* asynInt32 ro */
#define hBufferFramebytesString "H_BUFFER_FRAMEBYTES" /* asynInt32 ro */ #define hBufferFramebytesString "H_BUFFER_FRAMEBYTES" /* asynInt32 ro */
#define hBufferTopOffsetBytesString "H_BUFFER_TOP_OFFSETBYTES" /* asynInt32 ro */ #define hBufferTopOffsetBytesString \
"H_BUFFER_TOP_OFFSETBYTES" /* asynInt32 ro */
#define hBufferPixelTypeString "H_BUFFER_PIXEL_TYPE" /* asynInt32 ro */ #define hBufferPixelTypeString "H_BUFFER_PIXEL_TYPE" /* asynInt32 ro */
#define hRecordFixedBytesPerFileString "H_RECORD_FIXED_BYTES_PER_FILE" /* asynInt32 ro */ #define hRecordFixedBytesPerFileString \
#define hRecordFixedBytesPerSessionString "H_RECORD_FIXED_BYTES_PER_SESION" /* asynInt32 ro */ "H_RECORD_FIXED_BYTES_PER_FILE" /* asynInt32 ro */
#define hRecordFixedBytesPerFrameString "H_RECORD_FIXED_BYTES_PER_FRAME" /* asynInt32 ro */ #define hRecordFixedBytesPerSessionString \
"H_RECORD_FIXED_BYTES_PER_SESION" /* asynInt32 ro */
#define hRecordFixedBytesPerFrameString \
"H_RECORD_FIXED_BYTES_PER_FRAME" /* asynInt32 ro */
#define hSystemAliveString "H_SYSTEM_ALIVE" /* asynInt32 ro */ #define hSystemAliveString "H_SYSTEM_ALIVE" /* asynInt32 ro */
#define hConversionFactorCoeffString "H_CONVERSIONFACTOR_COEFF" /* asynFloat64 ro */ #define hConversionFactorCoeffString \
#define hConversionFactorOffsetString "H_CONVERSIONFACTOR_OFFSET" /* asynFloat64 ro */ "H_CONVERSIONFACTOR_COEFF" /* asynFloat64 ro */
#define hConversionFactorOffsetString \
"H_CONVERSIONFACTOR_OFFSET" /* asynFloat64 ro */
#define hNumberOfViewString "H_NUMBER_OF_VIEW" /* asynInt32 ro */ #define hNumberOfViewString "H_NUMBER_OF_VIEW" /* asynInt32 ro */
#define hImageDetectorPixelWidthString "H_IMAGE_DETECTOR_PIXEL_WIDTH" /* asynFloat64 ro */
#define hImageDetectorPixelHeightString "H_IMAGE_DETECTOR_PIXEL_HEIGHT" /* asynFloat64 ro */
#define hImageDetectorPixelNumHorzString "H_IMAGE_DETECTOR_PIXEL_NUM_HORZ" /* asynInt32 ro */
#define hImageDetectorPixelNumVertString "H_IMAGE_DETECTOR_PIXEL_NUM_VERT" /* asynInt32 ro */
#define hTimeStampProducerString "H_TIMESTAMP_PRODUCER" /* asynInt32 ro */ #define hTimeStampProducerString "H_TIMESTAMP_PRODUCER" /* asynInt32 ro */
#define hFrameStampProducerString "H_FRAMESTAMP_PRODUCER" /* asynInt32 ro */ #define hFrameStampProducerString "H_FRAMESTAMP_PRODUCER" /* asynInt32 ro */
#define evrTimeStampString "EVR_TIMESTAMP" #define evrTimeStampString "EVR_TIMESTAMP"
@@ -135,20 +171,21 @@
#define evrTriggerDroppedString "EVR_TRIGGER_DROPPED" #define evrTriggerDroppedString "EVR_TRIGGER_DROPPED"
#define hAcqControlString "H_ACQ_CONTROL" #define hAcqControlString "H_ACQ_CONTROL"
// For some reason these two addresses are not defined in the dcamapi4 neither in dcamprop.h // For some reason these two addresses are not defined in the dcamapi4 neither
// in dcamprop.h
#define DETECTOR_PIXEL_NUM_HORZ 0x00420830 #define DETECTOR_PIXEL_NUM_HORZ 0x00420830
#define DETECTOR_PIXEL_NUM_VERT 0x00420840 #define DETECTOR_PIXEL_NUM_VERT 0x00420840
class epicsShareClass Orca : public ADDriver { class epicsShareClass Orca : public ADDriver {
public:
public: Orca(const char*, int, size_t, int, int, int);
Orca(const char*, int, int, size_t, int, int, int); // ~Orca();
// ~Orca();
/* override ADDriver methods */ /* override ADDriver methods */
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value); virtual asynStatus writeInt32(asynUser* pasynUser, epicsInt32 value);
virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value); virtual asynStatus writeFloat64(asynUser* pasynUser, epicsFloat64 value);
virtual void report(FILE *fp, int details); virtual void report(FILE* fp, int details);
void createAsynParams();
int readParameter(int propertyID, bool processPV = true); int readParameter(int propertyID, bool processPV = true);
int readParameterStr(int paramIndex); int readParameterStr(int paramIndex);
@@ -158,9 +195,9 @@ public:
void imageTask(); void imageTask();
void temperatureTask(); void temperatureTask();
protected: protected:
int hFrameRate; int hFrameRate;
#define FIRST_HAMA_PARAM hFrameRate #define FIRST_HAMA_PARAM hFrameRate
int hOrcaName; int hOrcaName;
int hVendor; int hVendor;
int hModel; int hModel;
@@ -276,17 +313,13 @@ protected:
//---- //----
//#define LAST_HAMA_PARAM evrTimeStamp //#define LAST_HAMA_PARAM evrTimeStamp
private:
private:
HDCAM m_hdcam; HDCAM m_hdcam;
DCAMAPI_INIT m_apiInit; DCAMAPI_INIT m_apiInit;
DCAMDEV_OPEN m_devOpen; DCAMDEV_OPEN m_devOpen;
DCAMERR m_err; DCAMERR m_err;
// handle used to wait for events sent from the device
HDCAMWAIT hwait; HDCAMWAIT hwait;
int m_id;
int stopThread; int stopThread;
epicsEventId startEvent_; epicsEventId startEvent_;
@@ -294,9 +327,13 @@ private:
// Helper functions // Helper functions
asynStatus startAcquire(void); asynStatus startAcquire(void);
asynStatus stopAcquire(void); asynStatus stopAcquire(void);
void getImageInformation(HDCAM hdcam, int32& pixeltype, int32& width, int32& rowbytes, int32& height, int32& framebytes); void getImageInformation(HDCAM hdcam, int32& pixeltype, int32& width,
asynStatus accessCapturedImage(HDCAM hdcam, int32 iFrame, void* buf, int32 rowbytes, int32 cx, int32 cy, epicsUInt32& ts_sec, epicsUInt32& ts_microsec); int32& rowbytes, int32& height, int32& framebytes);
asynStatus imageTransferStatus(HDCAM hdcam, DCAMCAP_TRANSFERINFO &captransferinfo); asynStatus accessCapturedImage(HDCAM hdcam, int32 iFrame, void* buf,
int32 rowbytes, int32 cx, int32 cy,
epicsUInt32& ts_sec, epicsUInt32& ts_microsec);
asynStatus imageTransferStatus(HDCAM hdcam,
DCAMCAP_TRANSFERINFO& captransferinfo);
// wrapper functions for dcamapi // wrapper functions for dcamapi
int allocateBuffers(unsigned int); int allocateBuffers(unsigned int);
@@ -304,16 +341,11 @@ private:
// These function will be read only once // These function will be read only once
int connectCamera(); int connectCamera();
int disconnectCamera();
int initCamera(); int initCamera();
// helper functions for dcamapi bool checkAndLogError(DCAMERR err, const char* msg, int idx, double val,
void printError(HDCAM hdcam, DCAMERR errid, const char* apiname, const char* fmt=NULL, ...); const char* functionName);
void printInfo(HDCAM hdcam);
int dcamdev_string( DCAMERR& err, HDCAM hdcam, int32 idStr, char* text, int32 textbytes );
int getProperties();
int roundToNearestMultipleOfFour(int value); int roundToNearestMultipleOfFour(int value);
asynStatus setFeature(int featureIndex, double value); asynStatus setFeature(int featureIndex, double value);

View File

@@ -1,10 +1,8 @@
# This should be a test startup script
require adorca require adorca
require adpluginkafka require adpluginkafka
epicsEnvSet("PREFIX", "Orca:") epicsEnvSet("PREFIX", "YMIR-Det1:")
epicsEnvSet("PORT", "ORCA") epicsEnvSet("PORT", "ORCA")
epicsEnvSet("CAMERA", "0")
epicsEnvSet("QSIZE", "21") epicsEnvSet("QSIZE", "21")
epicsEnvSet("XSIZE", "2048") epicsEnvSet("XSIZE", "2048")
epicsEnvSet("YSIZE", "2048") epicsEnvSet("YSIZE", "2048")
@@ -14,17 +12,16 @@ epicsEnvSet("NELEMENTS", "4194304")
epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "64000000") epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "64000000")
#EVR settings #EVR settings
#epicsEnvSet("EVR", "LabS-NIDO:Ctrl-EVR-01") epicsEnvSet("EVR", "YMIR-TS:Ctrl-EVR-03")
epicsEnvSet("EVR", "Labs-ECDC:TS-EVR-11")
epicsEnvSet("EVR_EVENT", "B") epicsEnvSet("EVR_EVENT", "B")
# iocshLoad("$(adorca_DIR)ADOrca.iocsh") # iocshLoad("$(adorca_DIR)ADOrca.iocsh")
devOrcamatsuConfig("$(PORT)", $(CAMERA), 0, 0, 0, 0, 10) devOrcaConfig("$(PORT)", 0, 0, 0, 0, 10)
dbLoadRecords("$(adorca_DIR)db/orca.db","P=$(PREFIX),R=cam1:,EVR=$(EVR),E=$(EVR_EVENT),PORT=$(PORT),ADDR=0,TIMEOUT=1") dbLoadRecords("$(adorca_DIR)db/orca.db","P=$(PREFIX),R=cam1:,EVR=$(EVR),E=$(EVR_EVENT),PORT=$(PORT),ADDR=0,TIMEOUT=1")
#asynSetTraceMask("$(PORT)",-1,0x9) #asynSetTraceMask("$(PORT)",-1,0x10)
#asynSetTraceIOMask("$(PORT)",-1,0x2) #asynSetTraceIOMask("$(PORT)",-1,0x2)
@@ -42,30 +39,30 @@ NDStdArraysConfigure("Image1", "$(QSIZE)", 0, "$(PORT)", 0, 0)
dbLoadRecords("NDStdArrays.template", "P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT),TYPE=Int32,FTVL=LONG,NELEMENTS=$(NELEMENTS)") dbLoadRecords("NDStdArrays.template", "P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT),TYPE=Int32,FTVL=LONG,NELEMENTS=$(NELEMENTS)")
# Create a kafka plugin, set it to get data from orca driver. # Create a kafka plugin, set it to get data from orca driver.
#epicsEnvSet("KFK_TOPIC", "ymir_camera") epicsEnvSet("KFK_TOPIC", "ymir_camera")
epicsEnvSet("KFK_TOPIC", "nido_camera")
# Kafka plugin # Kafka plugin
epicsEnvSet("KFK_CONFIG_FILE_PATH", "/home/iocuser/git/adhama/cmds/kafka.conf") #epicsEnvSet("KFK_CONFIG_FILE_PATH", "/etc/kafka/kafka.conf")
KafkaPluginConfigure("KFK1", 3, 1, "$(PORT)", 0, -1, "$(KFK_TOPIC)", "hama_kfk1","$(KFK_CONFIG_FILE_PATH)") #KafkaPluginConfigure("KFK1", 3, 1, "$(PORT)", 0, -1, "$(KFK_TOPIC)", "hama_kfk1","$(KFK_CONFIG_FILE_PATH)")
dbLoadRecords("$(adpluginkafka_DIR)db/adpluginkafka.db", "P=$(PREFIX), R=Kfk1:, PORT=KFK1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=$(PORT)") #dbLoadRecords("$(adpluginkafka_DIR)db/adpluginkafka.db", "P=$(PREFIX), R=Kfk1:, PORT=KFK1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=$(PORT)")
startPVAServer # startPVAServer
iocInit() iocInit()
dbpf Orca:cam1:PoolUsedMem.SCAN 0 dbpf $(PREFIX)cam1:PoolUsedMem.SCAN 0
dbpf Orca:image1:EnableCallbacks 1 dbpf $(PREFIX)image1:EnableCallbacks 1
dbpf Orca:Kfk1:EnableCallbacks 1
dbpf Orca:cam1:AcquireTime .001 dbpf $(PREFIX)cam1:AcquireTime .05
dbpf Orca:cam1:AcquirePeriod .02 dbpf $(PREFIX)cam1:AcquirePeriod .1
dbpf Orca:cam1:TriggerSource-S 1 # external dbpf $(PREFIX)cam1:NumImages 10
dbpf Orca:cam1:NumImages 10 dbpf $(PREFIX)cam1:ImageMode 1
dbpf Orca:cam1:ImageMode 1
#dbpf Orca:cam1:TriggerPolarity-S # 2-positive, 1-negative #dbpf Orca:cam1:TriggerPolarity-S # 2-positive, 1-negative
epicsThreadSleep(1.0) epicsThreadSleep(1.0)
dbl > pv.list dbpf $(PREFIX)cam1:PoolUsedMem.SCAN 0
dbpf $(PREFIX)image1:EnableCallbacks 1
epicsThreadSleep(1.0)