#ifndef __PACSDK_H #define __PACSDK_H #ifdef __cplusplus extern "C" { #endif #ifdef PACSDK_EXPORTS #define PAC_API extern "C" __declspec(dllexport) #else #define PAC_API extern "C" __declspec(dllimport) #endif #define PAC_PRIVATE_API PAC_API #define PAC_SERAL_NUMBER_LENGTH 8 //========================================================================= // 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 #define PAC_9K 9000 PAC_API bool pac_BackwardCompatible(); //W PAC_API void pac_ChangeSlot(BYTE slotNo); //W X PAC_API bool pac_CheckSDKVersion(DWORD version); //W X PAC_API void pac_EnableLED(bool bFlag); //W PAC_API void pac_EnableLEDs(int pin, bool bFlag); // X(A) PAC_API int pac_GetComMapping(int ndx); //W name diff doc PAC_API void pac_GetCPUVersion(LPSTR cpu_version); //W X PAC_API void pac_GetEbootVersion(LPSTR eboot_version); //W PAC_API void pac_GetMacAddress(BYTE LAN, LPSTR MacAddr); //W X PAC_API bool pac_ModuleExists(HANDLE hPort, int slot); //W X PAC_API int pac_GetModuleName(BYTE slot, LPSTR strName); //W X PAC_API int pac_GetModuleType(BYTE slot); //W X PAC_API int pac_GetModuleVersion(BYTE slot, LPSTR strName);//W X PAC_API void pac_GetOSVersion(LPSTR os_version); //W X PAC_API int pac_GetRotaryID(); //W X PAC_API void pac_GetSDKVersion(LPSTR sdk_version); //W X PAC_API void pac_GetSerialNumber(LPSTR SerialNumber); //W X PAC_API void pac_Reboot(); //W X PAC_API int pac_EthernetLinkState(BYTE LAN, bool *status); // //========================================================================= // 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); //W X PAC_API HANDLE pac_GetSlotInterruptEvent(BYTE slot); //W X PAC_API DWORD pac_GetSlotInterruptID(BYTE Slot); //W PAC_API void pac_InterruptDone(BYTE slot); //W X PAC_API bool pac_InterruptInitialize(BYTE slot); //W X PAC_API bool pac_RegisterSlotInterrupt(BYTE slot, PAC_CALLBACK_FUNC f);//W X PAC_API void pac_SetSlotInterruptEvent(BYTE slot, HANDLE hEvent); //W X PAC_API bool pac_SetSlotInterruptPriority(BYTE slot, int nPriority); //W X PAC_API void pac_SetTriggerType(BYTE slot, int iType) ; //W X PAC_API bool pac_UnregisterSlotInterrupt(BYTE slot); //W X //========================================================================= // 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(LPCTSTR KeyName); //W X PAC_API DWORD pac_RegCountValue(LPCTSTR KeyName); //W X PAC_API bool pac_RegCreateKey(LPCTSTR KeyName); //W X PAC_API bool pac_RegDeleteKey(LPCTSTR KeyName); //W X PAC_API bool pac_RegDeleteValue(LPCTSTR KeyName); //W X PAC_API DWORD pac_RegGetDWORD(LPCTSTR KeyName); //W X PAC_API bool pac_RegGetKeyByIndex(LPCTSTR KeyName, DWORD dwIndex, LPTSTR lpName); //W X PAC_API DWORD pac_RegGetKeyInfo(LPCTSTR KeyName); //W X PAC_API bool pac_RegGetString(LPCTSTR KeyName, LPTSTR lpData, DWORD dwLength); //W X PAC_API bool pac_RegGetValueByIndex(LPCTSTR KeyName, DWORD dwIndex, LPTSTR lpName);//W X PAC_API bool pac_RegKeyExist(LPCTSTR KeyName); //W X PAC_API bool pac_RegSave(LPCTSTR KeyName); //W X PAC_API bool pac_RegSetString(LPCTSTR KeyName, LPCTSTR assignStr, DWORD dwLength); //W X PAC_API bool pac_RegSetDWORD(LPCTSTR 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_DAISY_CHAIN_WIRING_MODULE_PORT_BASE (0x1000000) #define PAC_DAISY_CHAIN_WIRING_MODULE_PORT(slot,port) ((slot& PAC_REMOTE_IO_BASE)?(PAC_DAISY_CHAIN_WIRING_MODULE_PORT_BASE|((slot&0xFFF) <<8)|port|(0x1<<6)):((slot& PAC_REMOTE_iPAC_BASE)?(PAC_DAISY_CHAIN_WIRING_MODULE_PORT_BASE|((slot&0xFFFFF) <<8)|port|(0x2<<6)):(PAC_DAISY_CHAIN_WIRING_MODULE_PORT_BASE|(slot<<8)|port))) #define pac_GetBit(v, ndx) (v & (1<