blob: 02e2408ce5f3f34ffe5280daa314c0c45cd8f747 [file] [log] [blame]
/*
* Copyright (C) 2005 Meilhaus Electronic GmbH (support@meilhaus.de)
*
* Source File : medriver.h
* Author : GG (Guenter Gebhardt) <g.gebhardt@meilhaus.de>
* Author: Krzysztof Gantzke <k.gantzke@meilhaus.de>
*/
#ifndef _MEDRIVER_H_
#define _MEDRIVER_H_
#include "metypes.h"
#include "meerror.h"
#include "medefines.h"
#ifdef __cplusplus
extern "C" {
#endif
/*===========================================================================
Functions to access the driver system
=========================================================================*/
int meOpen(int iFlags);
int meClose(int iFlags);
int meLockDriver(int iLock, int iFlags);
int meLockDevice(int iDevice, int iLock, int iFlags);
int meLockSubdevice(int iDevice, int iSubdevice, int iLock, int iFlags);
/*===========================================================================
Error handling functions
=========================================================================*/
int meErrorGetLastMessage(char *pcErrorMsg, int iCount);
int meErrorGetMessage(int iErrorCode, char *pcErrorMsg, int iCount);
int meErrorSetDefaultProc(int iSwitch);
int meErrorSetUserProc(meErrorCB_t pErrorProc);
/*===========================================================================
Functions to perform I/O on a device
=========================================================================*/
int meIOIrqSetCallback(
int iDevice,
int iSubdevice,
meIOIrqCB_t pCallback,
void *pCallbackContext,
int iFlags);
int meIOIrqStart(
int iDevice,
int iSubdevice,
int iChannel,
int iIrqSource,
int iIrqEdge,
int iIrqArg,
int iFlags);
int meIOIrqStop(
int iDevice,
int iSubdevice,
int iChannel,
int iFlags);
int meIOIrqWait(
int iDevice,
int iSubdevice,
int iChannel,
int *piIrqCount,
int *piValue,
int iTimeOut,
int iFlags);
int meIOResetDevice(int iDevice, int iFlags);
int meIOResetSubdevice(int iDevice, int iSubdevice, int iFlags);
int meIOStreamFrequencyToTicks(
int iDevice,
int iSubdevice,
int iTimer,
double *pdFrequency,
int *piTicksLow,
int *piTicksHigh,
int iFlags);
int meIOSingleConfig(
int iDevice,
int iSubdevice,
int iChannel,
int iSingleConfig,
int iRef,
int iTrigChan,
int iTrigType,
int iTrigEdge,
int iFlags);
int meIOSingle(meIOSingle_t *pSingleList, int iCount, int iFlags);
int meIOStreamConfig(
int iDevice,
int iSubdevice,
meIOStreamConfig_t *pConfigList,
int iCount,
meIOStreamTrigger_t *pTrigger,
int iFifoIrqThreshold,
int iFlags);
int meIOStreamNewValues(
int iDevice,
int iSubdevice,
int iTimeOut,
int *piCount,
int iFlags);
int meIOStreamRead(
int iDevice,
int iSubdevice,
int iReadMode,
int *piValues,
int *piCount,
int iFlags);
int meIOStreamWrite(
int iDevice,
int iSubdevice,
int iWriteMode,
int *piValues,
int *piCount,
int iFlags);
int meIOStreamStart(meIOStreamStart_t *pStartList, int iCount, int iFlags);
int meIOStreamStop(meIOStreamStop_t *pStopList, int iCount, int iFlags);
int meIOStreamStatus(
int iDevice,
int iSubdevice,
int iWait,
int *piStatus,
int *piCount,
int iFlags);
int meIOStreamSetCallbacks(
int iDevice,
int iSubdevice,
meIOStreamCB_t pStartCB,
void *pStartCBContext,
meIOStreamCB_t pNewValuesCB,
void *pNewValuesCBContext,
meIOStreamCB_t pEndCB,
void *pEndCBContext,
int iFlags);
int meIOStreamTimeToTicks(
int iDevice,
int iSubdevice,
int iTimer,
double *pdTime,
int *piTicksLow,
int *piTicksHigh,
int iFlags);
/*===========================================================================
Functions to query the driver system
=========================================================================*/
int meQueryDescriptionDevice(int iDevice, char *pcDescription, int iCount);
int meQueryInfoDevice(
int iDevice,
int *piVendorId,
int *piDeviceId,
int *piSerialNo,
int *piBusType,
int *piBusNo,
int *piDevNo,
int *piFuncNo,
int *piPlugged);
int meQueryNameDevice(int iDevice, char *pcName, int iCount);
int meQueryNameDeviceDriver(int iDevice, char *pcName, int iCount);
int meQueryNumberDevices(int *piNumber);
int meQueryNumberSubdevices(int iDevice, int *piNumber);
int meQueryNumberChannels(int iDevice, int iSubdevice, int *piNumber);
int meQueryNumberRanges(
int iDevice,
int iSubdevice,
int iUnit,
int *piNumber);
int meQueryRangeByMinMax(
int iDevice,
int iSubdevice,
int iUnit,
double *pdMin,
double *pdMax,
int *piMaxData,
int *piRange);
int meQueryRangeInfo(
int iDevice,
int iSubdevice,
int iRange,
int *piUnit,
double *pdMin,
double *pdMax,
int *piMaxData);
int meQuerySubdeviceByType(
int iDevice,
int iStartSubdevice,
int iType,
int iSubtype,
int *piSubdevice);
int meQuerySubdeviceType(
int iDevice,
int iSubdevice,
int *piType,
int *piSubtype);
int meQuerySubdeviceCaps(
int iDevice,
int iSubdevice,
int *piCaps);
int meQuerySubdeviceCapsArgs(
int iDevice,
int iSubdevice,
int iCap,
int *piArgs,
int iCount);
int meQueryVersionLibrary(int *piVersion);
int meQueryVersionMainDriver(int *piVersion);
int meQueryVersionDeviceDriver(int iDevice, int *piVersion);
/*===========================================================================
Common utility functions
=========================================================================*/
int meUtilityExtractValues(
int iChannel,
int *piAIBuffer,
int iAIBufferCount,
meIOStreamConfig_t *pConfigList,
int iConfigListCount,
int *piChanBuffer,
int *piChanBufferCount);
int meUtilityDigitalToPhysical(
double dMin,
double dMax,
int iMaxData,
int iData,
int iModuleType,
double dRefValue,
double *pdPhysical);
int meUtilityDigitalToPhysicalV(
double dMin,
double dMax,
int iMaxData,
int *piDataBuffer,
int iCount,
int iModuleType,
double dRefValue,
double *pdPhysicalBuffer);
int meUtilityPhysicalToDigital(
double dMin,
double dMax,
int iMaxData,
double dPhysical,
int *piData);
int meUtilityPWMStart(
int iDevice,
int iSubdevice1,
int iSubdevice2,
int iSubdevice3,
int iRef,
int iPrescaler,
int iDutyCycle,
int iFlag);
int meUtilityPWMStop(int iDevice,
int iSubdevice1);
int meUtilityPWMRestart(
int iDevice,
int iSubdevice1,
int iRef,
int iPrescaler);
/*===========================================================================
Load configuration from file into driver system
=========================================================================*/
int meConfigLoad(char *pcConfigFile);
/*===========================================================================
Functions to query a remote driver system
=========================================================================*/
int meRQueryDescriptionDevice(
char *location,
int iDevice,
char *pcDescription,
int iCount);
int meRQueryInfoDevice(
char *location,
int iDevice,
int *piVendorId,
int *piDeviceId,
int *piSerialNo,
int *piBusType,
int *piBusNo,
int *piDevNo,
int *piFuncNo,
int *piPlugged);
int meRQueryNameDevice(
char *location,
int iDevice,
char *pcName,
int iCount);
int meRQueryNumberDevices(char *location, int *piNumber);
int meRQueryNumberSubdevices(char *location, int iDevice, int *piNumber);
int meRQueryNumberChannels(
char *location,
int iDevice,
int iSubdevice,
int *piNumber);
int meRQueryNumberRanges(
char *location,
int iDevice,
int iSubdevice,
int iUnit,
int *piNumber);
int meRQueryRangeInfo(
char *location,
int iDevice,
int iSubdevice,
int iRange,
int *piUnit,
double *pdMin,
double *pdMax,
int *piMaxData);
int meRQuerySubdeviceType(
char *location,
int iDevice,
int iSubdevice,
int *piType,
int *piSubtype);
#ifdef __cplusplus
}
#endif
#endif