153 lines
7.2 KiB
C
153 lines
7.2 KiB
C
//
|
|
// Coreco API - General I/O module functions
|
|
//
|
|
|
|
#ifndef _CAPIGIO_H_
|
|
#define _CAPIGIO_H_
|
|
|
|
#include <capidef.h>
|
|
#include <capicnt.h>
|
|
|
|
/******************************************************************************
|
|
* 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_
|