#ifndef __PACSDK_H #define __PACSDK_H #include #ifdef __cplusplus extern "C" { #endif //VB6 dll=> type is __stdcall, true is -1, after building,change name to xpacsdk_vb.dll //vc dll => type is __cdecl, true=1 //OutputDebugString + dbgview=>print debug string #ifdef PACSDK_EXPORTS #define PAC_API(type) __declspec(dllexport) type __cdecl #else #define PAC_API(type) type #endif #define PUBLIC_API(type) type #define PRIVATE(type) static type #define PAC_PRIVATE_API PAC_API #define PAC_PRIVATE_API PAC_API #define PAC_SERAL_NUMBER_LENGTH 8 #define AddressMultiplica 1 //========================================================================= // 01. System Information API //========================================================================= #define PAC_PARALLEL 0x80 #define PAC_PARALLEL_RW 0x81 #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 PAC_API(BOOL) pac_BackwardCompatible(); PAC_API(void) pac_ChangeSlot(BYTE slotNo); PAC_API(BOOL) pac_CheckSDKVersion(DWORD version); PAC_API(void) pac_EnableLED(BOOL bFlag); PAC_API(void) pac_EnableLEDs(int pin, BOOL bFlag); PAC_API(int) pac_GetComMapping(int ndx); PAC_API(void) pac_GetCPUVersion(LPSTR cpu_version); PAC_API(BOOL) pac_ModuleExists(HANDLE hPort, int slot); PAC_API(int) pac_GetModuleName(BYTE slot, LPSTR strName); PAC_API(int) pac_GetModuleType(BYTE slot); PAC_API(int) pac_GetModuleVersion(BYTE slot, LPSTR strName); PAC_API(void) pac_GetOSVersion(LPSTR os_version); PAC_API(int) pac_GetRotaryID(); PAC_API(void) pac_GetSDKVersion(LPSTR sdk_version); PAC_API(void) pac_GetSerialNumber(LPSTR SerialNumber); //========================================================================= // 02. Backplane API //========================================================================= PAC_API(void) pac_EnableRetrigger(BYTE iValues); //W X PAC_API(void) pac_GetBackplaneID(LPSTR backplane_version); //W X PAC_API(int) pac_GetBatteryLevel(int nBattery); //W X PAC_API(int) pac_GetDIPSwitch(); //W X PAC_API(int) pac_GetSlotCount(); //W X PAC_API(void) pac_RegistryHotPlug(DWORD hWnd, DWORD msgID);//W PAC_API(void) pac_UnregistryHotPlug(DWORD hWnd); //W //undocumented API PAC_API(void) pac_ClearHotPlug(); //W PAC_API(void) pac_ClearRisingEdgeIRQ(BYTE slots); //W PAC_API(void) pac_EnableHotPlug(BOOL bEnable); //W PAC_API(void) pac_EnableRisingEdgeIRQ(BYTE slots, BOOL bEnable);//W PAC_API(void) pac_EOI(); //W X PAC_API(BOOL) pac_GetHotPlugIRQState(); //W PAC_API(BOOL) pac_GetHotPlugStatus(); //W PAC_API(BYTE) pac_GetRisingEdgeEnableStatus(); //W PAC_API(BYTE) pac_GetRisingEdgeIRQStatus(); //W PAC_API(void) pac_ResetBackplane(); //W X PAC_API(void) pac_ResetSystemToDefault(); //W X //========================================================================= // 03. Interrupt API //========================================================================= #define PAC_INTR_DONE 0 #define PAC_INTR_DONE1 1 #define PAC_INTR_FAIL 2 #define PAC_INTR_EXIT 3 #define INTR_RISING_TRIG 0 #define INTR_LEVEL_TRIG 1 #define INTR_Falling_TRIG 2 typedef int (CALLBACK * PAC_CALLBACK_FUNC)(); PAC_API(void) pac_EnableSlotInterrupt(BYTE slot, BOOL bEnable); PAC_API(HANDLE) pac_GetSlotInterruptEvent(BYTE slot); PAC_API(DWORD) pac_GetSlotInterruptID(BYTE Slot); PAC_API(void) pac_InterruptDone(BYTE slot); PAC_API(BOOL) pac_InterruptInitialize(BYTE slot); PAC_API(BOOL) pac_RegisterSlotInterrupt(BYTE slot, PAC_CALLBACK_FUNC f); PAC_API(void) pac_SetSlotInterruptEvent(BYTE slot, HANDLE hEvent); PAC_API(BOOL) pac_SetSlotInterruptPriority(BYTE slot, int nPriority); PAC_API(void) pac_SetTriggerType(BYTE slot, int iType) ; PAC_API(BOOL) pac_UnregisterSlotInterrupt(BYTE slot); //========================================================================= // 04. Memory Access API //========================================================================= #define PAC_MEM_SRAM 0 #define PAC_MEM_EEPROM 1 #define PAC_MEM_NVRAM 2 PAC_API(DWORD) pac_GetMemorySize(int mem_type); //W X PAC_API(BOOL) pac_ReadMemory(DWORD address, LPBYTE lpBuffer, DWORD dwLength, int mem_type); //W X PAC_API(BOOL) pac_WriteMemory(DWORD address, LPBYTE lpBuffer, DWORD dwLength, int mem_type); //W X PAC_API(void) pac_EnableEEPROM(BOOL bEnable); //W X //========================================================================= // 05. Watchdog API //========================================================================= #define PAC_WDT_HW 0 #define PAC_WDT_OS 1 PAC_API(void) pac_DisableWatchDog(int wdt); //W X PAC_API(BOOL) pac_EnableWatchDog(int wdt, DWORD value); //W X PAC_API(BOOL) pac_GetWatchDogState(int wdt); //W X PAC_API(DWORD) pac_GetWatchDogTime(int wdt); //W X PAC_API(void) pac_RefreshWatchDog(int wdt); //W X PAC_API(BOOL) pac_SetWatchDogTime(int wdt, DWORD value);//W X //========================================================================= // 06. microSD Management API (WinPAC only) //========================================================================= PAC_API(BOOL) pac_SDExists(); //W PAC_API(BOOL) pac_SDMount(LPTSTR szPartitionName);//W PAC_API(BOOL) pac_SDOnside(); //W PAC_API(BOOL) pac_SDUnmount(); //W //========================================================================= // 07. Registry API //========================================================================= #define PKT_NONE 0 #define PKT_KEY 1 #define PKT_STRING 2 #define PKT_DWORD 3 PAC_API(DWORD) pac_RegCountKey(LPCSTR KeyName); //W X PAC_API(DWORD) pac_RegCountValue(LPCSTR KeyName); //W X PAC_API(BOOL) pac_RegCreateKey(LPCSTR KeyName); //W X PAC_API(BOOL) pac_RegDeleteKey(LPCSTR KeyName); //W X PAC_API(BOOL) pac_RegDeleteValue(LPCSTR KeyName); //W X PAC_API(DWORD) pac_RegGetDWORD(LPCSTR KeyName); //W X PAC_API(BOOL) pac_RegGetKeyByIndex(LPCSTR KeyName, DWORD dwIndex, LPSTR lpName); //W X PAC_API(DWORD) pac_RegGetKeyInfo(LPCSTR KeyName); //W X PAC_API(BOOL) pac_RegGetString(LPCSTR KeyName, LPSTR lpData, DWORD dwLength); //W X PAC_API(BOOL) pac_RegGetValueByIndex(LPCSTR KeyName, DWORD dwIndex, LPSTR lpName);//W X PAC_API(BOOL) pac_RegKeyExist(LPCSTR KeyName); //W X PAC_API(BOOL) pac_RegSave(LPCSTR KeyName); //W X PAC_API(BOOL) pac_RegSetString(LPCSTR KeyName, LPCSTR assignStr, DWORD dwLength); //W X PAC_API(BOOL) pac_RegSetDWORD(LPCSTR KeyName, DWORD assignVal); //W X //========================================================================= // 08. 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 #define CTS 0 #define DSR 1 #define RI 2 #define CD 3 #define IN_DATA 0 #define OUT_DATA 1 PAC_API(HANDLE) uart_Open(LPCSTR ConnectionString); //W X PAC_API(HANDLE) uart_OpenEx(LPCSTR ConnectionString); //W X undoc PAC_API(BOOL) uart_Close(HANDLE hPort); //W X PAC_API(BOOL) uart_Write(HANDLE hPort, LPCSTR buf); //W X undoc PAC_API(BOOL) uart_Read(HANDLE hPort, LPSTR buf); //W X undoc PAC_API(BOOL) uart_WriteExt(HANDLE hPort, LPCSTR buf, DWORD out_Len); PAC_API(BOOL) uart_ReadExt(HANDLE hPort, LPSTR buf, DWORD in_Len); PAC_API(BOOL) uart_Send(HANDLE hPort, LPCSTR buf); //W X PAC_API(BOOL) uart_Recv(HANDLE hPort, LPSTR buf); //W X PAC_API(BOOL) uart_SendCmd(HANDLE hPort, LPCSTR cmd, LPSTR szResult); //W X PAC_API(BOOL) uart_SendExt(HANDLE hPort, LPCSTR buf, DWORD out_Len); PAC_API(BOOL) uart_RecvExt(HANDLE hPort, LPSTR buf, DWORD in_Len); PAC_API(BOOL) uart_SendCmdExt(HANDLE hPort, LPCSTR cmd, DWORD out_Len, LPSTR szResult, DWORD in_Len); PAC_API(void) uart_SetTimeOut(HANDLE hPort, DWORD msec, int ctoType); //W X PAC_API(void) uart_EnableCheckSum(HANDLE hPort, BOOL bEnable); //W X PAC_API(void) uart_SetTerminator(HANDLE hPort, LPCSTR szTerm); //W X PAC_API(BOOL) uart_BinSend(HANDLE hPort, LPCSTR buf, DWORD in_Len); //W X PAC_API(BOOL) uart_BinRecv(HANDLE hPort, LPSTR buf, DWORD in_Len); //W X PAC_API(BOOL) uart_BinSendCmd(HANDLE hPort, LPCSTR ByteCmd, DWORD in_Len, LPSTR ByteResult, DWORD out_Len); //W X PAC_API(DWORD) uart_GetDataSize(HANDLE hPort, int data_type); //W X PAC_API(BOOL) uart_GetLineStatus(HANDLE hPort, int pin); //W X PAC_API(DWORD) uart_SetLineStatus(HANDLE port, int pin, int mode); //W X undoc PAC_API(DWORD) uart_GetOutputLineStatus(HANDLE hPort); //W X undoc //========================================================================= // 09. PAC_IO API //========================================================================= #define PAC_REMOTE_IO_BASE (0x1000) #define PAC_REMOTE_IO(iAddress) (PAC_REMOTE_IO_BASE|iAddress) #define PAC_REMOTE_iPAC_BASE (0x100000) #define PAC_REMOTE_iPAC(iAddr, iSlot) (PAC_REMOTE_iPAC_BASE|iAddr<<8|iSlot) #define pac_GetBit(v, ndx) (v & (1<