123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 |
- #ifndef _SAPACQDEVICE_H_
- #define _SAPACQDEVICE_H_
- // SapAcqDevice.h : header file
- //
- #include "SapClassBasicDef.h"
- class SAPCLASSBASIC_CLASS SapBuffer;
- class SAPCLASSBASIC_CLASS SapFeature;
- class SAPCLASSBASIC_CLASS SapAcqDeviceCallbackInfo;
- typedef void (*SapAcqDeviceCallback)(SapAcqDeviceCallbackInfo*);
- //
- // SapAcqDevice class declaration
- //
- class SAPCLASSBASIC_CLASS SapAcqDevice : public SapXferNode
- {
- public:
- // Enumerations
- enum UpdateFeatureMode
- {
- UpdateFeatureAuto = CORACQDEVICE_VAL_UPDATE_FEATURE_MODE_AUTO,
- UpdateFeatureManual = CORACQDEVICE_VAL_UPDATE_FEATURE_MODE_MANUAL
- };
- enum FileProperty
- {
- FilePropertyAccessMode = CORACQDEVICE_FILE_PROPERTY_ACCESS_MODE,
- FilePropertySize = CORACQDEVICE_FILE_PROPERTY_FILE_SIZE
- };
- enum FilePropertyValues
- {
- FileAccessModeNone = CORACQDEVICE_VAL_FILE_ACCESS_MODE_NONE,
- FileAccessModeReadOnly = CORACQDEVICE_VAL_FILE_ACCESS_MODE_READ_ONLY,
- FileAccessModeWriteOnly = CORACQDEVICE_VAL_FILE_ACCESS_MODE_WRITE_ONLY,
- FileAccessModeReadWrite = CORACQDEVICE_VAL_FILE_ACCESS_MODE_READ_WRITE
- };
- // Various values
- enum MiscValues
- {
- MaxConfigNameSize = 64,
- MaxModeNameSize = 64,
- };
- public:
- // Constructor/Destructor
- SapAcqDevice(SapLocation location = SapLocation::ServerSystem, BOOL readOnly = FALSE);
- SapAcqDevice(SapLocation location, const char *configFile);
- SapAcqDevice(const SapAcqDevice &acqDevice);
- virtual ~SapAcqDevice();
- SapAcqDevice &operator= (const SapAcqDevice &acqDevice);
- // Creation/destruction
- virtual BOOL Create();
- virtual BOOL Destroy();
- // SapXferNode type information
- XferNodeType GetXferNodeType() { return NodeTypeAcqDevice; }
- // General Parameters
- const char *GetConfigFile() const { return m_ConfigFile; }
- BOOL GetReadOnly() const { return m_ReadOnly ; }
- UpdateFeatureMode GetUpdateFeatureMode() const { return m_UpdateFeatureMode; }
- const char *GetLabel() const { return m_Label; }
- const char *GetConfigName() const { return m_ConfigName; }
- const char *GetModeName() const { return m_ModeName; }
- BOOL SetConfigFile(const char *configFile);
- BOOL SetReadOnly(BOOL readOnly);
- BOOL SetUpdateFeatureMode(UpdateFeatureMode mode);
- BOOL SetConfigName(const char *configName);
- BOOL SetModeName(const char *modeName);
- // Direct capability/parameter access
- BOOL IsCapabilityValid(int cap);
- BOOL IsParameterValid(int param);
- BOOL GetCapability(int cap, void *pValue);
- BOOL GetParameter(int param, void *pValue);
- BOOL SetParameter(int param, int value);
- BOOL SetParameter(int param, void *pValue);
- // Feature Access Functions
- BOOL GetFeatureCount(int *featureCount);
- BOOL GetFeatureNameByIndex(int featureIndex, char *featureName, int featureNameSize);
- BOOL GetFeatureIndexByName(const char *featureName, int *featureIndex);
- BOOL IsFeatureAvailable(const char *featureName, BOOL *isAvailable);
- BOOL GetFeatureInfo(const char *featureName, SapFeature *feature);
- BOOL GetFeatureInfo(int featureIndex, SapFeature *feature);
- // There is no prototype with INT32 type because it is essentially the same as BOOL
- BOOL GetFeatureValue(const char *featureName, UINT32 *featureValue);
- BOOL GetFeatureValue(const char *featureName, INT64 *featureValue);
- BOOL GetFeatureValue(const char *featureName, UINT64 *featureValue);
- BOOL GetFeatureValue(const char *featureName, float *featureValue);
- BOOL GetFeatureValue(const char *featureName, double *featureValue);
- BOOL GetFeatureValue(const char *featureName, BOOL *featureValue);
- BOOL GetFeatureValue(const char *featureName, char *featureString, int featureStringSize);
- BOOL GetFeatureValue(const char *featureName, SapBuffer *featureBuffer);
- BOOL GetFeatureValue(const char *featureName, SapLut *featureLut);
- BOOL GetFeatureValue(int featureIndex, UINT32 *featureValue);
- BOOL GetFeatureValue(int featureIndex, INT64 *featureValue);
- BOOL GetFeatureValue(int featureIndex, UINT64 *featureValue);
- BOOL GetFeatureValue(int featureIndex, float *featureValue);
- BOOL GetFeatureValue(int featureIndex, double *featureValue);
- BOOL GetFeatureValue(int featureIndex, BOOL *featureValue);
- BOOL GetFeatureValue(int featureIndex, char *featureString, int featureStringSize);
- BOOL GetFeatureValue(int featureIndex, SapBuffer *featureBuffer);
- BOOL GetFeatureValue(int featureIndex, SapLut *featureLut);
- BOOL SetFeatureValue(const char *featureName, UINT32 featureValue);
- BOOL SetFeatureValue(const char *featureName, INT64 featureValue);
- BOOL SetFeatureValue(const char *featureName, UINT64 featureValue);
- BOOL SetFeatureValue(const char *featureName, float featureValue);
- BOOL SetFeatureValue(const char *featureName, double featureValue);
- BOOL SetFeatureValue(const char *featureName, BOOL featureValue);
- BOOL SetFeatureValue(const char *featureName, const char *featureString);
- BOOL SetFeatureValue(const char *featureName, SapBuffer *featureBuffer);
- BOOL SetFeatureValue(const char *featureName, SapLut *featureLut);
- BOOL SetFeatureValue(int featureIndex, UINT32 featureValue);
- BOOL SetFeatureValue(int featureIndex, INT64 featureValue);
- BOOL SetFeatureValue(int featureIndex, UINT64 featureValue);
- BOOL SetFeatureValue(int featureIndex, float featureValue);
- BOOL SetFeatureValue(int featureIndex, double featureValue);
- BOOL SetFeatureValue(int featureIndex, BOOL featureValue);
- BOOL SetFeatureValue(int featureIndex, const char *featureString);
- BOOL SetFeatureValue(int featureIndex, SapBuffer *featureBuffer);
- BOOL SetFeatureValue(int featureIndex, SapLut *featureLut);
- BOOL UpdateFeaturesFromDevice();
- BOOL UpdateFeaturesToDevice();
- BOOL UpdateLabel();
- BOOL LoadFeatures(const char *configFile);
- BOOL SaveFeatures(const char *configFile);
- // Event Management Functions
- BOOL GetEventCount(int *eventCount);
- BOOL GetEventNameByIndex(int eventIndex, char *eventName, int eventNameSize);
- BOOL GetEventIndexByName(const char *eventName, int *eventIndex);
- BOOL IsEventAvailable(const char *eventName, BOOL *isAvailable);
- BOOL RegisterCallback(const char *eventName, SapAcqDeviceCallback callback, void *context);
- BOOL RegisterCallback(int eventIndex, SapAcqDeviceCallback callback, void *context);
- BOOL UnregisterCallback(const char *eventName);
- BOOL UnregisterCallback(int eventIndex);
- BOOL IsCallbackRegistered(const char *eventName, BOOL *isRegistered);
- BOOL IsCallbackRegistered(int eventIndex, BOOL *isRegistered);
- // Command Management Functions
- BOOL GetCommandCount(int *commandCount);
- BOOL GetCommandNameByIndex(int commandIndex, char *commandName, int commandNameSize);
- BOOL GetCommandIndexByName(const char *commandName, int *commandIndex);
- BOOL IsCommandAvailable(const char *commandName, BOOL *isAvailable);
- BOOL SendCommand(const char *commandName, void *inData, int inDataSize, void *outData, int outDataSize);
- BOOL SendCommand(int commandIndex, void *inData, int inDataSize, void *outData, int outDataSize);
- // Flat field correction management
- BOOL IsFlatFieldAvailable();
- // Bayer management
- BOOL IsRawBayerOutput();
- // File access Functions
- BOOL GetFileCount(int *fileCount);
- BOOL GetFileNameByIndex(int fileIndex, char *fileName, int fileNameSize);
- BOOL GetFileIndexByName(const char *fileName, int *fileIndex);
- BOOL IsFileAccessAvailable();
- BOOL GetFileProperty(int fileIndex, FileProperty propertyType, UINT64 *filePropertyValue);
- BOOL GetFileProperty(char *fileName, FileProperty propertyType, UINT64 *filePropertyValue);
- BOOL WriteFile(const char *localFilePath, const char *deviceFileName);
- BOOL WriteFile(const char *localFilePath, int deviceFileIndex);
- BOOL ReadFile(const char *deviceFileName, const char *localFilePath);
- BOOL ReadFile(int deviceFileIndex, const char *localFilePath);
- BOOL DeleteDeviceFile(const char *deviceFileName);
- BOOL DeleteDeviceFile(int deviceFileIndex);
- // Category Functions
- BOOL GetCategoryCount(int *categoryCount);
- BOOL GetCategoryPath(int categoryIndex, char *path, int pathSize);
- protected:
- // Utility methods
- void Construct(const char *configFile, BOOL readOnly, UpdateFeatureMode featureMode);
- BOOL SetLabel(BOOL refreshResourceName);
- BOOL SetXferParams();
- BOOL GetFeatureValue(const char *featureName, void *featureValue, int featureValueSize);
- BOOL GetFeatureValue(int featureIndex, void *featureValue, int featureValueSize);
- BOOL SetFeatureValue(const char *featureName, const void *featureValue, int featureValueSize);
- BOOL SetFeatureValue(int featureIndex, const void *featureValue, int featureValueSize);
- BOOL IsTransferFeature(const char *featureName);
- BOOL IsTransferFeature(int featureIndex);
- BOOL IsTransferModifyingFeature(const char *featureName);
- BOOL IsTransferModifyingFeature(int featureIndex);
- static SAPSTATUS CCONV OnCallback(void *context, COREVENTINFO eventInfo);
- protected:
- // Parameters
- char m_ConfigFile[MAX_PATH]; // Configuration (.ccf) file name
- BOOL m_ReadOnly; // Read-only usage flag (only feature retrieval allowed)
- UpdateFeatureMode m_UpdateFeatureMode; // Auto vs. manual update mode when writing feature values
- char m_Label[MaxLabelSize]; // Name of the acquisition resource
- char m_ConfigName[MaxConfigNameSize]; // Configuration name saved to CCF file (as 'Vic Name')
- char m_ModeName[MaxModeNameSize]; // Mode name saved to CCF file (as 'Camera Name')
- UINT32 m_NumPorts; // Number of available streaming ports
- // Feature management
- int m_FeatureCount; // Number of available features
- static char *m_ValueChangeEventName; // Name of event for feature value change
- static char *m_InfoChangeEventName; // Name of event for feature info change
- int m_ValueChangeEventIndex; // Index of event for feature value change
- int m_InfoChangeEventIndex;
- // Event management
- int m_EventCount; // Number of available events
- SapAcqDeviceCallback *m_Callback; // Application callback functions
- void **m_Context; // Application context for each callback function
- // Command management
- int m_CommandCount; // Number of available commands
- // Feature names needed to set transfer parameters, and their indexes
- static const char *m_WidthFeatureName;
- static const char *m_HeightFeatureName;
- static const char *m_LowLevelFormatFeatureName;
- static const char *m_SaperaFormatFeatureName;
- static const char *m_BitsPerPixelFeatureName;
- int m_WidthFeatureIndex;
- int m_HeightFeatureIndex;
- int m_LowLevelFormatFeatureIndex;
- int m_SaperaFormatFeatureIndex;
- int m_BitsPerPixelFeatureIndex;
- BOOL m_IsGenie;
- // Feature corresponding to user name of acquisition device, and its index
- static const char *m_UserNameFeature;
- int m_UserNameIndex;
- // Feature corresponding to loading of camera configuration, and its index
- static const char *m_LoadConfigFeatureName;
- BOOL m_LoadConfigAvailable;
- int m_LoadConfigFeatureIndex;
- // Flat field correction management
- static const char *m_FlatFieldEnableFeatureName;
- BOOL m_FlatFieldAvailable;
- static const char *m_FlatFieldCalibEnableFeatureName;
- BOOL m_FlatFieldCalibAvailable;
- int m_FlatFieldCalibEnableFeatureIndex;
- static const char *m_BinningHorizontalFeatureName;
- BOOL m_BinningHorizontalAvailable;
- int m_BinningHorizontalFeatureIndex;
- static const char *m_BinningVerticalFeatureName;
- BOOL m_BinningVerticalAvailable;
- int m_BinningVerticalFeatureIndex;
- // File access management
- BOOL m_FileAccessAvailable;
- };
- //
- // SapAcqDeviceCallbackInfo class declaration
- //
- class SAPCLASSBASIC_CLASS SapAcqDeviceCallbackInfo
- {
- public:
- SapAcqDeviceCallbackInfo(SapAcqDevice *acqDevice, void *context, COREVENTINFO eventInfo);
- ~SapAcqDeviceCallbackInfo();
- // Attributes
- SapAcqDevice *GetAcqDevice() const { return m_AcqDevice; }
- void *GetContext() const { return m_Context; }
- COREVENTINFO GetEventInfo() const { return m_EventInfo; } // Direct Access (internal)
- // Common Parameters
- BOOL GetEventCount(int *eventCount);
- BOOL GetEventIndex(int *eventIndex);
- BOOL GetHostTimeStamp(UINT64 *hostTimeStamp);
- BOOL GetAuxiliaryTimeStamp(UINT64 *auxTimeStamp);
- // Custom Parameters
- BOOL GetCustomData(void **customData);
- BOOL GetCustomSize(int *customSize);
- // Unnamed Parameters
- BOOL GetGenericParam0(int *paramValue);
- BOOL GetGenericParam1(int *paramValue);
- BOOL GetGenericParam2(int *paramValue);
- BOOL GetGenericParam3(int *paramValue);
- // Event-specific Parameters
- BOOL GetFeatureIndex(int *featureIndex); // Used by "FeatureChanged" event
- protected:
- SapAcqDevice* m_AcqDevice;
- void *m_Context;
- COREVENTINFO m_EventInfo;
- };
- #endif // _SAPACQDEVICE_H_
|