// // Coreco API - General I/O module functions // #ifndef _CAPIGIO_H_ #define _CAPIGIO_H_ #include #include /****************************************************************************** * General IO Capabilities ******************************************************************************/ #define CORGIO_CAP_FIRST 0 #define CORGIO_CAP(n, size) ((((n) + CORGIO_CAP_FIRST) << 16) | (size)) #define CORGIO_CAP_IO_COUNT CORGIO_CAP(0x00, 4) #define CORGIO_CAP_DIR_INPUT CORGIO_CAP(0x01, 4) #define CORGIO_CAP_DIR_OUTPUT CORGIO_CAP(0x02, 4) #define CORGIO_CAP_DIR_TRISTATE CORGIO_CAP(0x03, 4) #define CORGIO_CAP_INPUT_CONTROL_METHOD CORGIO_CAP(0x04, 4) #define CORGIO_CAP_INPUT_CONTROL_POLARITY CORGIO_CAP(0x05, 4) #define CORGIO_CAP_OUTPUT_CONTROL_METHOD CORGIO_CAP(0x06, 4) #define CORGIO_CAP_OUTPUT_CONTROL_POLARITY CORGIO_CAP(0x07, 4) #define CORGIO_CAP_OUTPUT_TYPE CORGIO_CAP(0x08, 4) #define CORGIO_CAP_INPUT_LEVEL CORGIO_CAP(0x09, 4) #define CORGIO_CAP_CONNECTOR CORGIO_CAP(0x0A, 4) #define CORGIO_CAP_EVENT_TYPE CORGIO_CAP(0x0B, 4) #define CORGIO_CAP_FAULT_DETECT CORGIO_CAP(0x0C, 4) #define CORGIO_CAP_POWER_GOOD CORGIO_CAP(0x0D, 4) #define CORGIO_CAP_READ_ONLY CORGIO_CAP(0x0E, 4) #define CORGIO_CAP_LAST (CORGIO_CAP_FIRST + 0x0F) /****************************************************************************** * General IO Parameters ******************************************************************************/ #define CORGIO_PRM_FIRST 0 #define CORGIO_PRM(n, size) ((((n) + CORGIO_PRM_FIRST) << 16) | (size)) #define CORGIO_PRM_LABEL CORGIO_PRM(0x00, 128) #define CORGIO_PRM_DEVICE_ID CORGIO_PRM(0x01, 4) // Parameter 0x02 is obsolete #define CORGIO_PRM_DIR_OUTPUT CORGIO_PRM(0x03, 4) #define CORGIO_PRM_DIR_TRISTATE CORGIO_PRM(0x04, 4) #define CORGIO_PRM_INPUT_CONTROL_METHOD CORGIO_PRM(0x05, 4) #define CORGIO_PRM_INPUT_CONTROL_POLARITY CORGIO_PRM(0x06, 4) #define CORGIO_PRM_OUTPUT_CONTROL_METHOD CORGIO_PRM(0x07, 4) #define CORGIO_PRM_OUTPUT_CONTROL_POLARITY CORGIO_PRM(0x08, 4) #define CORGIO_PRM_OUTPUT_TYPE CORGIO_PRM(0x09, 4) #define CORGIO_PRM_INPUT_LEVEL CORGIO_PRM(0x0A, 4) #define CORGIO_PRM_CONNECTOR CORGIO_PRM(0x0B, 4) #define CORGIO_PRM_FAULT_DETECT CORGIO_PRM(0x0C, 4) #define CORGIO_PRM_POWER_GOOD CORGIO_PRM(0x0D, 4) #define CORGIO_PRM_LAST (CORGIO_PRM_FIRST + 0x0E) /****************************************************************************** * General IO Values ******************************************************************************/ #define CORGIO_VAL_EVENT_TYPE_RISING_EDGE 0x00000001 #define CORGIO_VAL_EVENT_TYPE_FALLING_EDGE 0x00000002 #define CORGIO_VAL_EVENT_TYPE_FAULT 0x00000004 #define CORGIO_VAL_EVENT_MASK 0x00000007 #define CORGIO_VAL_INPUT_CONTROL_METHOD_OFF 0x00000000 #define CORGIO_VAL_INPUT_CONTROL_METHOD_1 0x00000001 // Hardware Latch #define CORGIO_VAL_INPUT_CONTROL_METHOD_2 0x00000002 // Input's are NOT readable #define CORGIO_VAL_INPUT_CONTROL_METHOD_3 0x00000004 // Not define #define CORGIO_VAL_INPUT_CONTROL_METHOD_4 0x00000008 // Not define #define CORGIO_VAL_INPUT_CONTROL_METHOD_5 0x00000010 // Not define #define CORGIO_VAL_OUTPUT_CONTROL_METHOD_OFF 0x00000000 #define CORGIO_VAL_OUTPUT_CONTROL_METHOD_1 0x00000001 // Latch generated by driver #define CORGIO_VAL_OUTPUT_CONTROL_METHOD_2 0x00000002 // Latch generated by user #define CORGIO_VAL_OUTPUT_CONTROL_METHOD_3 0x00000004 // Not define #define CORGIO_VAL_OUTPUT_CONTROL_METHOD_4 0x00000008 // Not define #define CORGIO_VAL_OUTPUT_CONTROL_METHOD_5 0x00000010 // Not define #define CORGIO_VAL_POLARITY_ACTIVE_LOW CORSIGNAL_ACTIVE_LOW #define CORGIO_VAL_POLARITY_ACTIVE_HIGH CORSIGNAL_ACTIVE_HIGH #define CORGIO_VAL_POLARITY_RISING_EDGE CORSIGNAL_RISING_EDGE #define CORGIO_VAL_POLARITY_FALLING_EDGE CORSIGNAL_FALLING_EDGE #define CORGIO_VAL_POLARITY_BOTH_EDGE CORSIGNAL_BOTH_EDGE #define CORGIO_VAL_POLARITY_DOUBLE_PULSE_RISING_EDGE CORSIGNAL_DOUBLE_PULSE_RISING_EDGE #define CORGIO_VAL_POLARITY_DOUBLE_PULSE_FALLING_EDGE CORSIGNAL_DOUBLE_PULSE_FALLING_EDGE #define CORGIO_VAL_POLARITY_INACTIVE 0x00000000 #define CORGIO_VAL_POLARITY_ACTIVE 0x00000001 #define CORGIO_VAL_OUTPUT_TYPE_PNP 0x00000001 // PNP transistor #define CORGIO_VAL_OUTPUT_TYPE_NPN 0x00000002 // NPN transistor #define CORGIO_VAL_OUTPUT_TYPE_LED 0x00000004 // LED output #define CORGIO_VAL_OUTPUT_TYPE_OPTOCOUPLE 0x00000008 // Opto #define CORGIO_VAL_OUTPUT_TYPE_TTL 0x00000010 // TTL #define CORGIO_VAL_OUTPUT_TYPE_LVTTL 0x00000020 // LVTTL #define CORGIO_VAL_INPUT_LEVEL_TTL CORSIGNAL_LEVEL_TTL #define CORGIO_VAL_INPUT_LEVEL_422 CORSIGNAL_LEVEL_422 #define CORGIO_VAL_INPUT_LEVEL_LVDS CORSIGNAL_LEVEL_LVDS #define CORGIO_VAL_INPUT_LEVEL_24VOLTS CORSIGNAL_LEVEL_24VOLTS #define CORGIO_VAL_INPUT_LEVEL_LVTTL CORSIGNAL_LEVEL_LVTTL #define CORGIO_VAL_INPUT_LEVEL_12VOLTS CORSIGNAL_LEVEL_12VOLTS #define CORGIO_VAL_CONNECTOR_1 0x00000001 #define CORGIO_VAL_CONNECTOR_2 0x00000002 #define CORGIO_VAL_CONNECTOR_3 0x00000004 #define CORGIO_VAL_CONNECTOR_4 0x00000008 /****************************************************************************** * Application programming interface ******************************************************************************/ #ifdef __cplusplus extern "C" { #endif CORSTATUS CORAPIFUNC CorGioGetCount(CORSERVER hServer, PUINT32 count); CORSTATUS CORAPIFUNC CorGioResetModule(CORSERVER hServer); CORSTATUS CORAPIFUNC CorGioGetHandle(CORSERVER hServer, UINT32 instance, PCORGIO hGio); CORSTATUS CORAPIFUNC CorGioRelease(CORGIO hGio); CORSTATUS CORAPIFUNC CorGioReset(CORGIO hGio); CORSTATUS CORAPIFUNC CorGioGetCap(CORGIO hGio, UINT32 cap, void *value); CORSTATUS CORAPIFUNC CorGioGetPrm(CORGIO hGio, UINT32 prm, void *value); CORSTATUS CORAPIFUNC CorGioSetPrm(CORGIO hGio, UINT32 prm, UINT32 value); CORSTATUS CORAPIFUNC CorGioSetPrmEx(CORGIO hGio, UINT32 prm, const void *value); #if !COR_WIN64 // Obsolete CORSTATUS CORAPIFUNC CorGioAutoTrigger(CORGIO hGio, CORCOUNTER hCounter, UINT32 io, CORCOUNT startCount, CORCOUNT stopCount, UINT32 state); #endif // !COR_WIN64 CORSTATUS CORAPIFUNC CorGioGetState(CORGIO hGio, PUINT32 value); CORSTATUS CORAPIFUNC CorGioSetState(CORGIO hGio, UINT32 ioMask, UINT32 value); CORSTATUS CORAPIFUNC CorGioSetOutputControlState(CORGIO hGio,UINT32 ioMask, UINT32 value); CORSTATUS CORAPIFUNC CorGioRegisterCallback(CORGIO hGio, UINT32 eventType, UINT32 io, PCORCALLBACK callbackFunc, void *context); CORSTATUS CORAPIFUNC CorGioRegisterCallbackEx(CORGIO hGio, UINT32 eventType, UINT32 io, PCOREVENTINFOCALLBACK callbackFunc, void *context); CORSTATUS CORAPIFUNC CorGioUnregisterCallback(CORGIO hGio, PCORCALLBACK callbackFunc); CORSTATUS CORAPIFUNC CorGioUnregisterCallbackEx(CORGIO hGio, PCOREVENTINFOCALLBACK callbackFunc); #ifdef __cplusplus } #endif #endif // _CAPIGIO_H_