using System; using System.Runtime.InteropServices; namespace phcs_TedKit2 { public class API { private readonly IntPtr instance; public API() { instance = phcsApiInt_Alloc(); } public ushort Run([In] ushort comp, [In, Out] Object param) { if (comp == Layer.PHTEDKITCOMPID_IO) { return phcsApiInt_Run(instance, comp, (IOData) param); } return phcsApiInt_Run(instance, comp, (BaseData) param); } public void dispose() { phcsApiInt_Destroy(instance); } /** * Returns a string created out of the given byte array. Each entry of * the byte array is interepreted as one ASCII character. The first * value of 0 in the array marks the end of the string. * * @param text The byte array being converted. * @return The text string. */ public static String toString(byte[] text) { int length = 0; for (int i = 0; i < text.Length; i++) { if (text[i] == 0) { break; } length++; } return new String( Array.ConvertAll(text, Convert.ToChar), 0, length); } public static class Layer { public const ushort PHTEDKITCOMPID_EXTAPI = 0x0200; public const ushort PHTEDKITCOMPID_BASEAPI = 0x0300; public const ushort PHTEDKITCOMPID_IO = 0x0400; } public static class Function { /** Ext API functions. */ public const ushort PHTEDKITEXTAPIFKT_PKEPOLLENABLE = 0; public const ushort PHTEDKITEXTAPIFKT_PKEPOLLIDE = 1; public const ushort PHTEDKITEXTAPIFKT_PKEPOLLMUTE = 2; public const ushort PHTEDKITEXTAPIFKT_PKEAUTHENT = 3; public const ushort PHTEDKITEXTAPIFKT_PKERSSISINGLE = 4; public const ushort PHTEDKITEXTAPIFKT_PKERSSIALL = 5; public const ushort PHTEDKITEXTAPIFKT_PKEREADVBAT = 6; public const ushort PHTEDKITEXTAPIFKT_PKEREADEEPROM = 7; public const ushort PHTEDKITEXTAPIFKT_PKEWRITEEEPROM = 8; public const ushort PHTEDKITEXTAPIFKT_HITAG2CRYPTOINIT = 0; public const ushort PHTEDKITEXTAPIFKT_HITAG2CRYPTOOPERATION = 1; public const ushort PHTEDKITEXTAPIFKT_HITAG3CRYPTOINIT = 0; public const ushort PHTEDKITEXTAPIFKT_HITAG3CRYPTOOPERATION = 1; public const ushort PHTEDKITEXTAPIFKT_AESCRYPTOINIT = 0; public const ushort PHTEDKITEXTAPIFKT_AESCRYPTOOPERATION = 1; /** Base API functions. */ public const ushort PHTEDKITBASEAPIFKT_GETFWVERSION = 0; public const ushort PHTEDKITBASEAPIFKT_RESETMAINBOARD = 1; public const ushort PHTEDKITBASEAPIFKT_GETDEVICESTATUS = 2; public const ushort PHTEDKITBASEAPIFKT_SETLEDSTATES = 3; public const ushort PHTEDKITBASEAPIFKT_GETLEDSTATES = 4; public const ushort PHTEDKITBASEAPIFKT_GETBUTTONSTATES = 5; public const ushort PHTEDKITBASEAPIFKT_EDITGPIOPIN = 6; public const ushort PHTEDKITBASEAPIFKT_DELAY = 7; public const ushort PHTEDKITBASEAPIFKT_DESELECTXSLOT = 8; public const ushort PHTEDKITBASEAPIFKT_GETXSLOTINFO = 9; public const ushort PHTEDKITBASEAPIFKT_SETXBOARDCONFIG = 10; public const ushort PHTEDKITBASEAPIFKT_GETXBOARDCONFIG = 11; public const ushort PHTEDKITBASEAPIFKT_SETTRANSMISSIONPARAMS = 12; public const ushort PHTEDKITBASEAPIFKT_GETTRANSMISSIONPARAMS = 13; public const ushort PHTEDKITBASEAPIFKT_SETRECEPTIONPARAMS = 14; public const ushort PHTEDKITBASEAPIFKT_GETRECEPTIONPARAMS = 15; public const ushort PHTEDKITBASEAPIFKT_TRANSMITRECEIVE = 16; public const ushort PHTEDKITBASEAPIFKT_ENABLECONTRECEPTION = 17; public const ushort PHTEDKITBASEAPIFKT_DISABLECONTRECEPTION = 18; public const ushort PHTEDKITBASEAPIFKT_GETCONTRECEIVEDDATA = 19; public const ushort PHTEDKITBASEAPIFKT_RESETXBOARD = 20; public const ushort PHTEDKITBASEAPIFKT_SETWORDSIZE = 21; public const ushort PHTEDKITBASEAPIFKT_GETWORDSIZE = 22; /** I/O API functions. */ public const ushort PHTEDKITIOFKT_GET_DEVICE_NUMBER = 0; public const ushort PHTEDKITIOFKT_GET_DEVICE_INFODETAIL = 1; public const ushort PHTEDKITIOFKT_OPEN = 2; public const ushort PHTEDKITIOFKT_CLOSE = 3; public const ushort PHTEDKITIOFKT_EE_UASIZE = 4; public const ushort PHTEDKITIOFKT_EE_UAREAD = 5; public const ushort PHTEDKITIOFKT_EE_UAWRITE = 6; public const ushort PHTEDKITIOFKT_GET_DRIVER_VERSION = 7; public const ushort PHTEDKITIOFKT_GET_LIBRARY_VERSION = 8; public const ushort PHTEDKITIOFKT_GET_API_VERSION = 9; } public static class ReturnCode { // Generic and function specific message codes 0000-7FFF public const ushort PHTEDKITSTATUS_OK = 0x0000; public const ushort PHTEDKITSTATUS_MSG_RX_TIMEOUT = 0x0001; public const ushort PHTEDKITSTATUS_MSG_RX_ERROR = 0x0002; public const ushort PHTEDKITSTATUS_MSG_RX_FRAMESIZE = 0x0003; // Generic and function specific error codes 8000-9FFF public const ushort PHTEDKITSTATUS_ERR_INVALID_FUNCTION = 0x8001; public const ushort PHTEDKITSTATUS_ERR_INVALID_CHECKSUM = 0x8002; public const ushort PHTEDKITSTATUS_ERR_MEM_ALLOC_COMMAND_RX = 0x8003; public const ushort PHTEDKITSTATUS_ERR_INVALID_PARAM_RANGE = 0x8004; public const ushort PHTEDKITSTATUS_ERR_INVALID_PARAM_LENGTH = 0x8005; public const ushort PHTEDKITSTATUS_ERR_NO_XBOARD_IN_XSLOT = 0x8006; public const ushort PHTEDKITSTATUS_ERR_FUNCTION_NOT_SUPPORTED = 0x8007; public const ushort PHTEDKITSTATUS_ERR_XBOARD_COMM_FAILURE = 0x8008; public const ushort PHTEDKITSTATUS_ERR_MEM_ALLOC_COMMAND_EXEC = 0x8009; // Transponder specific error codes B000-BFFF public const ushort PHTEDKITSTATUS_NO_TRANSPONDER_ANSWER = 0xB001; // Windows API USB/IO component codes C000-CFFF public const ushort PHTEDKITSTATUS_FT_INVALID_HANDLE = 0xC001; public const ushort PHTEDKITSTATUS_FT_DEVICE_NOT_FOUND = 0xC002; public const ushort PHTEDKITSTATUS_FT_DEVICE_NOT_OPENED = 0xC003; public const ushort PHTEDKITSTATUS_FT_IO_ERROR = 0xC004; public const ushort PHTEDKITSTATUS_FT_INSUFFICIENT_RESOURCES = 0xC005; public const ushort PHTEDKITSTATUS_FT_INVALID_PARAMETER = 0xC006; public const ushort PHTEDKITSTATUS_FT_INVALID_BAUD_RATE = 0xC007; public const ushort PHTEDKITSTATUS_FT_DEVICE_NOT_OPENED_FOR_ERASE = 0xC008; public const ushort PHTEDKITSTATUS_FT_DEVICE_NOT_OPENED_FOR_WRITE = 0xC009; public const ushort PHTEDKITSTATUS_FT_FAILED_TO_WRITE_DEVICE = 0xC00A; public const ushort PHTEDKITSTATUS_FT_EEPROM_READ_FAILED = 0xC00B; public const ushort PHTEDKITSTATUS_FT_EEPROM_WRITE_FAILED = 0xC00C; public const ushort PHTEDKITSTATUS_FT_EEPROM_ERASE_FAILED = 0xC00D; public const ushort PHTEDKITSTATUS_FT_EEPROM_NOT_PRESENT = 0xC00E; public const ushort PHTEDKITSTATUS_FT_EEPROM_NOT_PROGRAMMED = 0xC00F; public const ushort PHTEDKITSTATUS_FT_INVALID_ARGS = 0xC010; public const ushort PHTEDKITSTATUS_FT_NOT_SUPPORTED = 0xC011; public const ushort PHTEDKITSTATUS_FT_OTHER_ERROR = 0xC012; public const ushort PHTEDKITSTATUS_IO_READTIMEOUT = 0xC100; public const ushort PHTEDKITSTATUS_IO_INVALID_FUNCTION = 0xC101; public const ushort PHTEDKITSTATUS_IO_DOWNLOADFILE_OPEN_ERROR = 0xC102; public const ushort PHTEDKITSTATUS_IO_DOWNLOADFILE_DOWNLOAD_ERROR = 0xC103; // Windows API Base component codes E000-EFFF public const ushort PHTEDKITSTATUS_BASEAPI_INVALID_FUNCTION = 0xE000; public const ushort PHTEDKITSTATUS_BASEAPI_RX_FRAMESIZE_INVALID = 0xE001; public const ushort PHTEDKITSTATUS_BASEAPI_RX_CHECKSUM_INVALID = 0xE002; public const ushort PHTEDKITSTATUS_BASEAPI_INVALID_BOUNDARY = 0xE003; // Windows API Ext component codes F000-FFFE public const ushort PHTEDKITSTATUS_EXTAPI_INVALID_DEVICE = 0xF000; public const ushort PHTEDKITSTATUS_EXTAPI_INVALID_FUNCTION = 0xF001; public const ushort PHTEDKITSTATUS_EXTAPI_INVALID_TRANSPONDER_CMD = 0xF002; public const ushort PHTEDKITSTATUS_EXTAPI_INVALID_TRANSPONDER_CHK = 0xF003; public const ushort PHTEDKITSTATUS_EXTAPI_INVALID_RX_LENGTH = 0xF004; public const ushort PHTEDKITSTATUS_EXTAPI_INVALID_STATE = 0xF005; public const ushort PHTEDKITSTATUS_EXTAPI_INVALID_COMMAND_USE = 0xF006; public const ushort PHTEDKITSTATUS_EXTAPI_INVALID_ANSWER = 0xF007; public const ushort PHTEDKITSTATUS_WRONG_API_LAYER = 0xFFF0; } public static class XBoardType { public const ushort PHTEDKITXBOARD_SELFTESTING = 0x00; public const ushort PHTEDKITXBOARD_EXPERIMENT = 0x01; public const ushort PHTEDKITXBOARD_UAA3220 = 0x02; public const ushort PHTEDKITXBOARD_CRYPTO = 0x1C; public const ushort PHTEDKITXBOARD_LOPSTER = 0x1D; public const ushort PHTEDKITXBOARD_ABIC1 = 0x1F; public const ushort PHTEDKITXBOARD_ABIC2 = 0x1E; public const ushort PHTEDKITXBOARD_NONE = 0xFF; } public static class XBoardFeature { public const ushort PHTEDKITXBOARD_FEAT_LF = 1; public const ushort PHTEDKITXBOARD_FEAT_UHF = 2; public const ushort PHTEDKITXBOARD_FEAT_SPI = 4; public const ushort PHTEDKITXBOARD_FEAT_I2C = 8; public const ushort PHTEDKITXBOARD_FEAT_GPIO = 16; public const ushort PHTEDKITXBOARD_FEAT_LIN = 32; public const ushort PHTEDKITXBOARD_FEAT_INT = 64; public const ushort PHTEDKITXBOARD_FEAT_AIN = 128; public const ushort PHTEDKITXBOARD_FEAT_AOUT = 256; public const ushort PHTEDKITXBOARD_FEAT_TX = 512; public const ushort PHTEDKITXBOARD_FEAT_RX = 1024; public const ushort PHTEDKITXBOARD_FEAT_CONFIGTXRX = 2048; public const ushort PHTEDKITXBOARD_FEAT_DISABLED = 32768; } public static class XBoardXSlot { public const ushort PHTEDKITXBOARD_XSLOT_0 = 0; public const ushort PHTEDKITXBOARD_XSLOT_1 = 1; public const ushort PHTEDKITXBOARD_XSLOT_2 = 2; public const ushort PHTEDKITXBOARD_XSLOT_3 = 3; } public static class BufferSize { public const ushort PHTEDKITTRACE_BUFSIZE = 0x1000; public const ushort PHTEDKITBASE_BUFSIZE = 0x0200; public const ushort PHTEDKITIO_BUFSIZE = 0x0040; } public const ushort PHTEDKITIOFKT_NORMAL_OPERATION = 0; public const ushort PHTEDKITIOFKT_FIRMWARE_UPDATE = 1; public const uint PHTEDKITUSB_VIDPID = 0x0403BA18; public static class BaseStation { public const ushort PHTEDKITEXTAPIDEVICE_ABIC1 = 0; public const ushort PHTEDKITEXTAPIDEVICE_ABIC2 = 1; public const ushort PHTEDKITEXTAPIDEVICE_LOPSTER = 2; } public static class Transponder { public const ushort PHTEDKITEXTAPIDEVICE_HITAG2 = 3; public const ushort PHTEDKITEXTAPIDEVICE_HITAG2EXT = 4; public const ushort PHTEDKITEXTAPIDEVICE_HITAGPRO = 5; public const ushort PHTEDKITEXTAPIDEVICE_HITAG3 = 9; public const ushort PHTEDKITEXTAPIDEVICE_HITAGAES = 11; public const ushort PHTEDKITEXTAPIDEVICE_HITAG2PLUSEE = 12; } public static class VirtualDevice { public const ushort PHTEDKITEXTAPIDEVICE_PKE = 6; public const ushort PHTEDKITEXTAPIDEVICE_HITAG2CRYPTO = 7; public const ushort PHTEDKITEXTAPIDEVICE_AESCRYPTO = 8; public const ushort PHTEDKITEXTAPIDEVICE_HITAG3CRYPTO = 10; } public static class BodyDataEncoding { public const ushort PHTEDKITCODING_MANCHESTER = 0; public const ushort PHTEDKITCODING_CDP = 1; public const ushort PHTEDKITCODING_BPLM = 2; public const ushort PHTEDKITCODING_FREEWAVE = 3; public const ushort PHTEDKITCODING_ANALOG = 4; public const ushort PHTEDKITCODING_PLAIN = 5; public const ushort PHTEDKITCODING_GPIO = 6; } public static class State { public const byte PHTEDKITHITAG2STATE_WAIT = 0; public const byte PHTEDKITHITAG2STATE_AUTHORIZED = 1; public const byte PHTEDKITHITAG2STATE_XMA = 2; public const byte PHTEDKITHITAG2STATE_XMACFG = 3; public const byte PHTEDKITHITAG2STATE_TEST = 4; public const byte PHTEDKITHITAG2STATE_USER = 5; public const byte PHTEDKITHITAG2STATE_HALT = 6; public const byte PHTEDKITHITAGPROSTATE_WAIT = 0; public const byte PHTEDKITHITAGPROSTATE_AUTHENT = 1; public const byte PHTEDKITHITAGPROSTATE_CIPHER = 2; public const byte PHTEDKITHITAGPROSTATE_PLAIN = 3; public const byte PHTEDKITHITAGPROSTATE_CFG = 4; public const byte PHTEDKITHITAGPROSTATE_TEST = 5; public const byte PHTEDKITHITAGPROSTATE_USER = 6; } public static class Command { /** HITAG2 (and derivatives) commands. */ public const byte PHTEDKITHITAG2CMD_STARTAUTH = 0x18; public const byte PHTEDKITHITAG2CMD_READPAGE = 0x18; public const byte PHTEDKITHITAG2CMD_READPAGEINV = 0x08; public const byte PHTEDKITHITAG2CMD_WRITEPAGE = 0x10; public const byte PHTEDKITHITAG2CMD_HALT = 0x01; public const byte PHTEDKITHITAG2CMD_GETIDE64 = 0xd6; /** HITAG2-Extended (and derivatives) commands. */ public const byte PHTEDKITHITAG2CMD_XMAWAIT = 0x00; public const byte PHTEDKITHITAG2CMD_XMACFG = 0x14; public const byte PHTEDKITHITAG2CMD_TEST = 0x0F; public const byte PHTEDKITHITAG2CMD_XMA = 0x00; public const byte PHTEDKITHITAG2CMD_SELBLOCK = 0x08; public const byte PHTEDKITHITAG2CMD_READCFG = 0x08; public const byte PHTEDKITHITAG2CMD_WRITECFGM = 0x10; public const byte PHTEDKITHITAG2CMD_WRITECFGS = 0x18; public const byte PHTEDKITHITAG2CMD_THASHINIT = 0x00; public const byte PHTEDKITHITAG2CMD_THASHGET = 0x01; public const byte PHTEDKITHITAG2CMD_TWRITEPAGE = 0x10; public const byte PHTEDKITHITAG2CMD_TREADPAGE = 0x18; public const byte PHTEDKITHITAG2CMD_TGETCFG = 0x03; public const byte PHTEDKITHITAG2CMD_REFRESH = 0x55; public const byte PHTEDKITHITAG2CMD_SOFTRESET = 0xAA; /** HITAG2+ (and derivatives) commands. */ public const byte PHTEDKITHITAG2CMD_BATTTEST = 0x11; public const byte PHTEDKITHITAG2CMD_BUTTONTEST = 0x12; public const byte PHTEDKITHITAG2CMD_SETXON = 0x13; public const byte PHTEDKITHITAG2CMD_SETDOUT = 0x14; public const byte PHTEDKITHITAG2CMD_SETLED = 0x15; public const byte PHTEDKITHITAG2CMD_RESETALL = 0x16; /** HITAG2+EE commands. */ public const byte PHTEDKITHITAG2CMD_XMAPLUS = 0x07; public const byte PHTEDKITHITAG2CMD_INCBLKPTR = 0x04; public const byte PHTEDKITHITAG2CMD_DECBLKPTR = 0x05; public const byte PHTEDKITHITAG2CMD_INITBLKPTR = 0x06; /** HITAG3 commands. */ public const byte PHTEDKITHITAG3CMD_STARTAUTH = 0x1C; public const byte PHTEDKITHITAG3CMD_XMAWAIT = 0x08; public const byte PHTEDKITHITAG3CMD_XMACFG = 0x1D; public const byte PHTEDKITHITAG3CMD_USER = 0x10; public const byte PHTEDKITHITAG3CMD_TEST = 0x1F; public const byte PHTEDKITHITAG3CMD_GETIDE64 = 0xd0; /** HITAG-AES commands. */ public const byte PHTEDKITHITAGAESCMD_STARTAUTH250 = 0x1E; public const byte PHTEDKITHITAGAESCMD_STARTAUTH500 = 0x01; public const byte PHTEDKITHITAGAESCMD_GETIDE64 = 0xd1; public const byte PHTEDKITHITAGAESCMD_TAESINIT = 0xd4; public const byte PHTEDKITHITAGAESCMD_TAESGET = 0xd5; /** HITAG-Pro (and derivatives) commands. */ public const byte PHTEDKITHITAGPROCMD_GETIDE = 0x03; public const byte PHTEDKITHITAGPROCMD_AUTHENT = 0xC0; public const byte PHTEDKITHITAGPROCMD_PLAIN = 0x00; public const byte PHTEDKITHITAGPROCMD_CFG = 0xFF; public const byte PHTEDKITHITAGPROCMD_USER = 0x40; public const byte PHTEDKITHITAGPROCMD_TEST = 0xAA; public const byte PHTEDKITHITAGPROCMD_SEQINC = 0xCC; public const byte PHTEDKITHITAGPROCMD_SELBLOCK = 0xD8; public const byte PHTEDKITHITAGPROCMD_READPAGE = 0x00; public const byte PHTEDKITHITAGPROCMD_WRITEPAGE = 0x80; public const byte PHTEDKITHITAGPROCMD_READBYTE = 0x20; public const byte PHTEDKITHITAGPROCMD_WRITEBYTE = 0xA0; public const byte PHTEDKITHITAGPROCMD_TAESINIT = 0x00; public const byte PHTEDKITHITAGPROCMD_TAESGET = 0x9F; public const byte PHTEDKITHITAGPROCMD_TREADBYTE = 0x3C; public const byte PHTEDKITHITAGPROCMD_TWRITEBYTE = 0xBC; public const byte PHTEDKITHITAGPROCMD_THASHINIT = 0x60; public const byte PHTEDKITHITAGPROCMD_THASHGET = 0xFF; public const byte PHTEDKITHITAGPROCMD_TGETCFG = 0x40; public const byte PHTEDKITHITAGPROCMD_REFRESH = 0x55; public const byte PHTEDKITHITAGPROCMD_SOFTRESET = 0xAB; /** HITAG-Pro 2 commands. */ public const byte PHTEDKITHITAGPRO2CMD_WRITEDIST = 0xE0; public const byte PHTEDKITHITAGPRO2CMD_READDISTN = 0x60; public const byte PHTEDKITHITAGPRO2CMD_READMPAGE = 0x50; public const byte PHTEDKITHITAGPRO2CMD_SEQINC32 = 0xd2; public const byte PHTEDKITHITAGPRO2CMD_GETIDE64 = 0xd3; } [StructLayout(LayoutKind.Sequential)] public sealed class IOData { public ushort Function = 0; public ushort StatusCode = 0; public ushort OpenMode = 0; public ushort Port = 0; public uint DeviceNum = 0; public uint Flags = 0; public uint Type = 0; public uint ID = 0; public uint LocId = 0; public uint EESize = 0; [MarshalAs(UnmanagedType.ByValArray, SizeConst = BufferSize.PHTEDKITIO_BUFSIZE)] public byte[] SerialNumber = new byte[BufferSize.PHTEDKITIO_BUFSIZE]; [MarshalAs(UnmanagedType.ByValArray, SizeConst = BufferSize.PHTEDKITIO_BUFSIZE)] public byte[] Description = new byte[BufferSize.PHTEDKITIO_BUFSIZE]; [MarshalAs(UnmanagedType.ByValArray, SizeConst = BufferSize.PHTEDKITIO_BUFSIZE)] public byte[] EEData = new byte[BufferSize.PHTEDKITIO_BUFSIZE]; [MarshalAs(UnmanagedType.LPStr)] public string FileInfo = ""; public void reset() { Function = 0; StatusCode = 0; OpenMode = 0; Port = 0; DeviceNum = 0; Flags = 0; Type = 0; ID = 0; LocId = 0; EESize = 0; Array.Clear(SerialNumber, 0, API.BufferSize.PHTEDKITIO_BUFSIZE); Array.Clear(EEData, 0, API.BufferSize.PHTEDKITIO_BUFSIZE); Array.Clear(Description, 0, API.BufferSize.PHTEDKITIO_BUFSIZE); FileInfo = ""; } } [StructLayout(LayoutKind.Sequential)] public sealed class BaseData { public ushort Device = 0; public byte State = 0; public byte Command = 0; public ushort Function = 0; public ushort TxData1 = 0; public ushort TxData2 = 0; public ushort TxData3 = 0; public ushort TxData4 = 0; public ushort TxData5 = 0; public ushort TxData6 = 0; public ushort TxData7 = 0; public ushort TxData8 = 0; public ushort StatusCode = 0; public ushort RxData1 = 0; public ushort RxData2 = 0; public ushort RxData3 = 0; public ushort RxData4 = 0; public ushort RxData5 = 0; public ushort RxData6 = 0; public ushort RxData7 = 0; public ushort RxData8 = 0; public uint TxTime1 = 0; public uint TxTime2 = 0; public uint TxTime3 = 0; public uint RxTime1 = 0; public uint RxTime2 = 0; public uint RxTime3 = 0; [MarshalAs(UnmanagedType.ByValArray, SizeConst = BufferSize.PHTEDKITBASE_BUFSIZE)] public byte[] TxBuf1 = new byte[BufferSize.PHTEDKITBASE_BUFSIZE]; [MarshalAs(UnmanagedType.ByValArray, SizeConst = BufferSize.PHTEDKITBASE_BUFSIZE)] public byte[] TxBuf2 = new byte[BufferSize.PHTEDKITBASE_BUFSIZE]; [MarshalAs(UnmanagedType.ByValArray, SizeConst = BufferSize.PHTEDKITBASE_BUFSIZE)] public byte[] TxBuf3 = new byte[BufferSize.PHTEDKITBASE_BUFSIZE]; [MarshalAs(UnmanagedType.ByValArray, SizeConst = BufferSize.PHTEDKITBASE_BUFSIZE)] public byte[] RxBuf1 = new byte[BufferSize.PHTEDKITBASE_BUFSIZE]; [MarshalAs(UnmanagedType.ByValArray, SizeConst = BufferSize.PHTEDKITBASE_BUFSIZE)] public byte[] RxBuf2 = new byte[BufferSize.PHTEDKITBASE_BUFSIZE]; [MarshalAs(UnmanagedType.ByValArray, SizeConst = BufferSize.PHTEDKITBASE_BUFSIZE)] public byte[] RxBuf3 = new byte[BufferSize.PHTEDKITBASE_BUFSIZE]; [MarshalAs(UnmanagedType.ByValArray, SizeConst = BufferSize.PHTEDKITTRACE_BUFSIZE)] public byte[] TraceBuf = new byte[BufferSize.PHTEDKITTRACE_BUFSIZE]; public void reset() { Device = 0; Function = 0; StatusCode = 0; State = 0; Command = 0; TxData1 = 0; TxData2 = 0; TxData3 = 0; TxData4 = 0; TxData5 = 0; TxData6 = 0; TxData7 = 0; TxData8 = 0; RxData1 = 0; RxData2 = 0; RxData3 = 0; RxData4 = 0; RxData5 = 0; RxData6 = 0; RxData7 = 0; RxData8 = 0; TxTime1 = 0; TxTime2 = 0; TxTime3 = 0; RxTime1 = 0; RxTime2 = 0; RxTime3 = 0; Array.Clear(TxBuf1, 0, API.BufferSize.PHTEDKITBASE_BUFSIZE); Array.Clear(TxBuf2, 0, API.BufferSize.PHTEDKITBASE_BUFSIZE); Array.Clear(TxBuf3, 0, API.BufferSize.PHTEDKITBASE_BUFSIZE); Array.Clear(RxBuf1, 0, API.BufferSize.PHTEDKITBASE_BUFSIZE); Array.Clear(RxBuf2, 0, API.BufferSize.PHTEDKITBASE_BUFSIZE); Array.Clear(RxBuf3, 0, API.BufferSize.PHTEDKITBASE_BUFSIZE); Array.Clear(TraceBuf, 0, API.BufferSize.PHTEDKITTRACE_BUFSIZE); } } #if DEBUG [DllImport("tk2d")] #else [DllImport("tk2")] #endif private unsafe static extern IntPtr phcsApiInt_Alloc(); #if DEBUG [DllImport("tk2d")] #else [DllImport("tk2")] #endif private unsafe static extern ushort phcsApiInt_Run( [In] IntPtr inst, [In] ushort comp, [In, Out] IOData param); #if DEBUG [DllImport("tk2d")] #else [DllImport("tk2")] #endif private unsafe static extern ushort phcsApiInt_Run( [In] IntPtr inst, [In] ushort comp, [In, Out] BaseData param); #if DEBUG [DllImport("tk2d")] #else [DllImport("tk2")] #endif private unsafe static extern void phcsApiInt_Destroy(IntPtr instance); } }