Files
2024-05-18 23:53:26 +08:00

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_