public void run() { UInt32 deviceID = 0; IntPtr versionPtr = API.BS2_Version(); if (title.Length > 0) { Console.Title = title; } Console.WriteLine("SDK version : " + Marshal.PtrToStringAnsi(versionPtr)); sdkContext = API.BS2_AllocateContext(); if (sdkContext == IntPtr.Zero) { Console.WriteLine("Can't allocate sdk context."); return; } Console.WriteLine("Do you want to set up ssl configuration? [Y/n]"); Console.Write(">>>> "); if (Util.IsYes()) { cbPreferMethod = new API.PreferMethod(PreferMethodHandle); cbGetRootCaFilePath = new API.GetRootCaFilePath(GetRootCaFilePathHandle); cbGetServerCaFilePath = new API.GetServerCaFilePath(GetServerCaFilePathHandle); cbGetServerPrivateKeyFilePath = new API.GetServerPrivateKeyFilePath(GetServerPrivateKeyFilePathHandle); cbGetPassword = new API.GetPassword(GetPasswordHandle); cbOnErrorOccured = new API.OnErrorOccured(OnErrorOccuredHandle); BS2ErrorCode sdkResult = (BS2ErrorCode)API.BS2_SetSSLHandler(sdkContext, cbPreferMethod, cbGetRootCaFilePath, cbGetServerCaFilePath, cbGetServerPrivateKeyFilePath, cbGetPassword, null); if (sdkResult != BS2ErrorCode.BS_SDK_SUCCESS) { Console.WriteLine("BS2_SetSSLHandler failed with : {0}", sdkResult); API.BS2_ReleaseContext(sdkContext); return; } } BS2ErrorCode result = (BS2ErrorCode)API.BS2_Initialize(sdkContext); if (result != BS2ErrorCode.BS_SDK_SUCCESS) { Console.WriteLine("SDK initialization failed with : {0}", result); API.BS2_ReleaseContext(sdkContext); return; } cbOnDeviceFound = new API.OnDeviceFound(DeviceFound); cbOnDeviceAccepted = new API.OnDeviceAccepted(DeviceAccepted); cbOnDeviceConnected = new API.OnDeviceConnected(DeviceConnected); cbOnDeviceDisconnected = new API.OnDeviceDisconnected(DeviceDisconnected); result = (BS2ErrorCode)API.BS2_SetDeviceEventListener(sdkContext, cbOnDeviceFound, cbOnDeviceAccepted, cbOnDeviceConnected, cbOnDeviceDisconnected); if (result != BS2ErrorCode.BS_SDK_SUCCESS) { Console.WriteLine("Can't register a callback function/method to a sdk.({0})", result); API.BS2_ReleaseContext(sdkContext); return; } #if SDK_AUTO_CONNECTION result = (BS2ErrorCode)API.BS2_SetAutoConnection(sdkContext, 1); #endif Console.WriteLine("+-----------------------------------------------------------+"); Console.WriteLine("| 1. Search and connect device |"); Console.WriteLine("| 2. Connect to device via Ip |"); Console.WriteLine("| 3. Server mode test |"); Console.WriteLine("+-----------------------------------------------------------+"); Console.WriteLine("How to connect to device? [2(default)]"); Console.Write(">>>> "); int selection = Util.GetInput(2); switch (selection) { case 1: if (!SearchAndConnectDevice(ref deviceID)) { deviceID = 0; } break; case 2: if (!ConnectToDevice(ref deviceID)) { deviceID = 0; } break; case 3: { if (deviceIDForServerMode == 0) { Console.WriteLine("Waiting for client connection"); eventWaitHandle.WaitOne(); } deviceID = deviceIDForServerMode; result = (BS2ErrorCode)API.BS2_ConnectDevice(sdkContext, deviceID); if (result != BS2ErrorCode.BS_SDK_SUCCESS) { Console.WriteLine("Can't connect to device(errorCode : {0}).", result); deviceID = 0; } else { Console.WriteLine(">>>> Successfully connected to the device[{0}].", deviceID); } } break; default: Console.WriteLine("Invalid parameter : {0}", selection); break; } if (deviceID > 0) { Console.Title = String.Format("{0} connected deviceID[{1}]", title, deviceID); #if !SDK_AUTO_CONNECTION reconnectionTask = new ReconnectionTask(sdkContext); reconnectionTask.start(); #endif runImpl(deviceID); #if !SDK_AUTO_CONNECTION reconnectionTask.stop(); reconnectionTask = null; #endif Console.WriteLine("Trying to discconect device[{0}].", deviceID); result = (BS2ErrorCode)API.BS2_DisconnectDevice(sdkContext, deviceID); if (result != BS2ErrorCode.BS_SDK_SUCCESS) { Console.WriteLine("Got error({0}).", result); } } eventWaitHandle.Close(); API.BS2_ReleaseContext(sdkContext); sdkContext = IntPtr.Zero; cbOnDeviceFound = null; cbOnDeviceAccepted = null; cbOnDeviceConnected = null; cbOnDeviceDisconnected = null; }