8 #ifndef ECLabInterface_H
9 #define ECLabInterface_H
17 #include <BLFunctions.h>
21 #define BLCONCAT(A,B) A##B
27 explicit ECLabException(
const std::string& what) : std::runtime_error(what) { }
32 std::ostringstream oss;
33 unsigned int mesg_size =
sizeof(mesg);
34 if ( BL_GetErrorMsg(code, mesg, &mesg_size) == 0)
40 oss <<
"unknown error code: " << code;
47 #define BL_CALL(__func, ... ) \
51 status = BLCONCAT(__func,Stub) ( __VA_ARGS__ ); \
55 status = __func ( __VA_ARGS__ ); \
59 throw ECLabException(#__func, status); \
70 BL_CALL(BL_GetLibVersion, pVersion, psize);
73 static void Connect(
const char* address, uint8 TimeOut,
int*
pID, TDeviceInfos_t*
pInfos)
75 BL_CALL(BL_Connect, address, TimeOut, pID, pInfos );
91 BL_CALL(BL_LoadFirmware, ID, pChannels, pResults, Length, ShowGauge, ForceReload, BinFile, XlxFile);
96 BL_CALL(BL_LoadTechnique, ID, channel, pFName, Params, FirstTechnique, LastTechnique, DisplayParams);
101 BL_CALL(BL_GetChannelInfos, ID, ch, pInfos);
106 BL_CALL(BL_StopChannel, ID, channel);
111 BL_CALL(BL_StartChannel, ID, channel);
118 return BL_IsChannelPluggedStub(ID, ch);
122 return BL_IsChannelPlugged(ID, ch);
128 BL_CALL(BL_GetCurrentValues, ID, channel, pValues);
133 BL_CALL(BL_UpdateParameters, ID, channel, TechIndx, Params, EccFileName);
138 BL_CALL(BL_GetData, ID, channel, pBuf, pInfos, pValues);
143 BL_CALL(BL_SetExperimentInfos, ID, channel, TExpInfos);
148 BL_CALL(BL_GetExperimentInfos, ID, channel, TExpInfos);
uint8 const char TEccParams_t bool FirstTechnique
uint8 int uint8 bool bool ForceReload
uint8 int TDeviceInfos_t * pInfos
ECLabException(const std::string &what)
Wraps all of the ECLab BL_* function in an interface class that converts the error code into an excep...
static void Disconnect(int ID)
static std::string translateCode(int code)
uint8 int uint8 bool bool const char const char * XlxFile
static void LoadFirmware(int ID, uint8 *pChannels, int *pResults, uint8 Length, bool ShowGauge, bool ForceReload, const char *BinFile, const char *XlxFile)
uint8 const char TEccParams_t bool bool LastTechnique
static void GetChannelInfos(int ID, uint8 ch, TChannelInfos_t *pInfos)
uint8 TExperimentInfos_t TExpInfos
static bool IsChannelPlugged(int ID, uint8 ch)
static void GetCurrentValues(int ID, uint8 channel, TCurrentValues_t *pValues)
uint8 const char TEccParams_t bool bool bool DisplayParams
static void StartChannel(int ID, uint8 channel)
uint8 int uint8 bool ShowGauge
ECLabException(const std::string &func, int code)
uint8 TDataBuffer_t * pBuf
static void SetExperimentInfos(int ID, uint8 channel, TExperimentInfos_t TExpInfos)
static void GetLibVersion(char *pVersion, unsigned int *psize)
static void StopChannel(int ID, uint8 channel)
static void Connect(const char *address, uint8 TimeOut, int *pID, TDeviceInfos_t *pInfos)
uint8 TCurrentValues_t * pValues
static void testConnect(int ID)
uint8 const char TEccParams_t Params
uint8 int TEccParams_t const char * EccFileName
uint8 int uint8 bool bool const char * BinFile
static void UpdateParameters(int ID, uint8 channel, int TechIndx, TEccParams_t Params, const char *EccFileName)
static void GetExperimentInfos(int ID, uint8 channel, TExperimentInfos_t *TExpInfos)
encapsulates an EC lab error code as an exception object
static void GetData(int ID, uint8 channel, TDataBuffer_t *pBuf, TDataInfos_t *pInfos, TCurrentValues_t *pValues)
static void LoadTechnique(int ID, uint8 channel, char *pFName, TEccParams_t Params, bool FirstTechnique, bool LastTechnique, bool DisplayParams)
uint8 const char * pFName
#define BL_CALL(__func,...)
call an ECLab function, converting error into an exception