#ifndef __XPACSDK_H #define __XPACSDK_H #ifdef __cplusplus extern "C" { #endif #include #include #include #include #include #ifdef XPACSDK_EXPORTS #define XPAC_API __declspec(dllexport) #else #define XPAC_API __declspec(dllimport) #endif #define XPAC_PRIVATE_API XPAC_API #define XPAC_SERAL_NUMBER_LENGTH 8 #define PAC_PARALLEL 0x80 #define PAC_SCAN 0x40 #define PAC_DI32 0xE3 #define PAC_32BIT 0x20 #define PAC_DO32 0xE0 #define PAC_DI16DO16 0xE2 #define PAC_DI16 0xC3 #define PAC_DO16 0xC0 #define PAC_DI8DO8 0xC2 #define PAC_8K 8000 //============================================================================= // System Functions //============================================================================= XPAC_API int pac_GetModuleType(BYTE slot); XPAC_API int pac_GetModuleName(BYTE slot, LPSTR strName); XPAC_API int pac_GetRotaryID(); XPAC_API void pac_GetSerialNumber(LPSTR SerialNumber); XPAC_API void pac_GetCPUVersion(LPSTR cpu_version); XPAC_API void pac_GetOSVersion(LPSTR os_version); XPAC_API void pac_GetSDKVersion(LPSTR sdk_version); XPAC_API void pac_GetMacAddress(BYTE LAN, LPSTR MacAddr); XPAC_API void pac_ChangeSlot(BYTE slotNo); XPAC_API BOOL pac_CheckSDKVersion(DWORD version); XPAC_API void pac_Reboot(); //============================================================================= // Backplane API //============================================================================= XPAC_API int pac_GetDIPSwitch(); XPAC_API int pac_GetSlotCount(); XPAC_API void pac_GetBackplaneID(LPSTR backplane_version); XPAC_API BOOL pac_ModuleExists(HANDLE hPort, int slot); XPAC_API void pac_RegistryHotPlug(DWORD hWnd, DWORD msgID); XPAC_API void pac_UnregistryHotPlug(DWORD hWnd); XPAC_API void pac_EnableRetrigger(BYTE iValues); XPAC_API int pac_GetBatteryLevel(int nBattery); XPAC_API void pac_EnableHotPlug(BOOL bEnable); //undocumented API XPAC_API BOOL pac_GetHotPlugStatus(); //undocumented API XPAC_API void pac_ClearHotPlug(); //undocumented API XPAC_API BOOL pac_GetHotPlugIRQState(); //undocumented API XPAC_API void pac_ResetSystemToDefault(); //undocumented API XPAC_API void pac_EOI(); //undocumented API XPAC_API void pac_ResetBackplane(); //undocumented API //============================================================================= // Memory API //============================================================================= #define XPAC_MEM_SRAM 0 #define XPAC_MEM_EEPROM 1 XPAC_API DWORD pac_GetMemorySize(int mem_type); XPAC_API BOOL pac_ReadMemory(DWORD address, LPBYTE lpBuffer, DWORD dwLength, int mem_type); XPAC_API BOOL pac_WriteMemory(DWORD address, LPBYTE lpBuffer, DWORD dwLength, int mem_type); XPAC_API void pac_EnableEEPROM(BOOL bEnable); //============================================================================= // Watch Dog Timer Functions //============================================================================= #define XPAC_WDT_HW 0 #define XPAC_WDT_OS 1 XPAC_API BOOL pac_EnableWatchDog(int wdt, DWORD value); XPAC_API void pac_DisableWatchDog(int wdt); XPAC_API void pac_RefreshWatchDog(int wdt); XPAC_API BOOL pac_GetWatchDogState(int wdt); XPAC_API DWORD pac_GetWatchDogTime(int wdt); XPAC_API BOOL pac_SetWatchDogTime(int wdt, DWORD value); //============================================================================= // UART API //============================================================================= #define CTO_TIMEOUT_ALL 0 #define CTO_READ_RETRY_TIMEOUT 1 #define CTO_READ_TOTAL_TIMEOUT 2 #define CTO_WRITE_TOTAL_TIMEOUT 3 XPAC_API HANDLE uart_Open(LPCSTR ConnectionString); XPAC_API HANDLE uart_OpenEx(LPCSTR ConnectionString); XPAC_API BOOL uart_Close(HANDLE hPort); XPAC_API BOOL uart_Write(HANDLE hPort, LPCSTR buf); XPAC_API BOOL uart_Read(HANDLE hPort, LPSTR buf); XPAC_API BOOL uart_Send(HANDLE hPort, LPCSTR buf); XPAC_API BOOL uart_Recv(HANDLE hPort, LPSTR buf); XPAC_API BOOL uart_SendCmd(HANDLE hPort, LPCSTR cmd, LPSTR szResult); XPAC_API void uart_SetTimeOut(HANDLE hPort, DWORD msec, int ctoType); XPAC_API void uart_EnableCheckSum(HANDLE hPort, BOOL bEnable); // Disable by default XPAC_API void uart_SetTerminator(HANDLE hPort, LPCSTR szTerm); // CR by default XPAC_API BOOL uart_BinSend(HANDLE hPort, LPCSTR buf, DWORD in_Len); XPAC_API BOOL uart_BinSendCmd(HANDLE hPort, LPCSTR ByteCmd, DWORD in_Len, LPSTR ByteResult, DWORD out_Len); XPAC_API BOOL uart_BinRecv(HANDLE hPort, LPSTR buf, DWORD in_Len); //============================================================================= // Slot Interrupt API //============================================================================= #define PAC_INTR_DONE 0 #define PAC_INTR_EXIT 1 #define PAC_INTR_FAIL 2 #define INTR_RISING_TRIG 0 #define INTR_LEVEL_TRIG 1 #define INTR_Falling_TRIG 2 typedef int (CALLBACK * PAC_CALLBACK_FUNC)(); XPAC_API BOOL pac_RegisterSlotInterrupt(BYTE slot, PAC_CALLBACK_FUNC f); XPAC_API BOOL pac_UnregisterSlotInterrupt(BYTE slot); XPAC_API BOOL pac_SetSlotInterruptPriority(BYTE slot, int nPriority); XPAC_API void pac_EnableSlotInterrupt(BYTE slot, BOOL bEnable); XPAC_API void pac_InterruptDone(BYTE slot); XPAC_API HANDLE pac_GetSlotInterruptEvent(BYTE slot); XPAC_API void pac_SetTriggerType(BYTE slot, int iType); //0: Rising edge trigger(default), 1: Level trigger, 2: Falling edge trigger XPAC_API BOOL pac_InterruptInitialize( BYTE slot ); XPAC_API void pac_SetSlotInterruptEvent(BYTE slot, HANDLE hEvent); //============================================================================= // Error Handling API //============================================================================= XPAC_API DWORD pac_GetLastError(); XPAC_API void pac_SetLastError(DWORD errno); XPAC_API void pac_ClearLastError(DWORD errno); XPAC_API void pac_GetErrorMessage(DWORD dwMessageID, LPSTR lpBuffer); //============================================================================= // PAC Local/Remote IO API //============================================================================= #define PAC_REMOTE_IO_BASE (0x1000) #define PAC_REMOTE_IO(iAddress) (PAC_REMOTE_IO_BASE+iAddress) #define pac_GetBit(v, ndx) (v & (1<