async Task SendControllerStatusDetailsList(SocketSendContainer deserializedBytes) { try { //Check if socket server is running if (vArnoldVinkSockets == null) { Debug.WriteLine("The socket server is not running."); return; } //List controller status List <ControllerStatusDetails> controllerStatusDetailsList = new List <ControllerStatusDetails>(); //Gather controller status ControllerStatusDetails controllerStatus0 = new ControllerStatusDetails(vController0.NumberId); controllerStatus0.Activated = vController0.Activated; controllerStatus0.Connected = vController0.Connected(); controllerStatus0.BatteryCurrent = vController0.BatteryCurrent; controllerStatusDetailsList.Add(controllerStatus0); ControllerStatusDetails controllerStatus1 = new ControllerStatusDetails(vController1.NumberId); controllerStatus1.Activated = vController1.Activated; controllerStatus1.Connected = vController1.Connected(); controllerStatus1.BatteryCurrent = vController1.BatteryCurrent; controllerStatusDetailsList.Add(controllerStatus1); ControllerStatusDetails controllerStatus2 = new ControllerStatusDetails(vController2.NumberId); controllerStatus2.Activated = vController2.Activated; controllerStatus2.Connected = vController2.Connected(); controllerStatus2.BatteryCurrent = vController2.BatteryCurrent; controllerStatusDetailsList.Add(controllerStatus2); ControllerStatusDetails controllerStatus3 = new ControllerStatusDetails(vController3.NumberId); controllerStatus3.Activated = vController3.Activated; controllerStatus3.Connected = vController3.Connected(); controllerStatus3.BatteryCurrent = vController3.BatteryCurrent; controllerStatusDetailsList.Add(controllerStatus3); //Prepare socket data SocketSendContainer socketSend = new SocketSendContainer(); socketSend.SourceIp = vArnoldVinkSockets.vSocketServerIp; socketSend.SourcePort = vArnoldVinkSockets.vSocketServerPort; socketSend.Object = controllerStatusDetailsList; byte[] SendBytes = SerializeObjectToBytes(socketSend); //Send socket data TcpClient socketClient = await vArnoldVinkSockets.TcpClientCheckCreateConnect(deserializedBytes.SourceIp, deserializedBytes.SourcePort, vArnoldVinkSockets.vSocketTimeout); await vArnoldVinkSockets.TcpClientSendBytes(socketClient, SendBytes, vArnoldVinkSockets.vSocketTimeout, false); } catch { } }
//Update the controller status from DirectXInput async Task UpdateControllerStatus(List <ControllerStatusDetails> controllerStatusSummaryList) { try { //Update the controller status foreach (ControllerStatusDetails controllerStatusNew in controllerStatusSummaryList) { //Get current controller status Image controllerStatusImage = null; StackPanel controllerStatusStackpanel = null; ControllerStatusDetails controllerStatusOld = null; if (controllerStatusNew.NumberId == 0) { controllerStatusStackpanel = stackpanel_Menu_Controller0; controllerStatusImage = img_Menu_Controller0; controllerStatusOld = vController0; } else if (controllerStatusNew.NumberId == 1) { controllerStatusStackpanel = stackpanel_Menu_Controller1; controllerStatusImage = img_Menu_Controller1; controllerStatusOld = vController1; } else if (controllerStatusNew.NumberId == 2) { controllerStatusStackpanel = stackpanel_Menu_Controller2; controllerStatusImage = img_Menu_Controller2; controllerStatusOld = vController2; } else if (controllerStatusNew.NumberId == 3) { controllerStatusStackpanel = stackpanel_Menu_Controller3; controllerStatusImage = img_Menu_Controller3; controllerStatusOld = vController3; } //Check if controller is active controller if (controllerStatusNew.Activated && vControllerActiveId != controllerStatusNew.NumberId) { ActivateController(controllerStatusNew.NumberId); } //Update the battery icons and level if (controllerStatusNew.Activated) { UpdateBatteryStatus(controllerStatusNew.BatteryCurrent); } //Update the controller status for comparison if (controllerStatusNew.NumberId == 0) { vController0 = controllerStatusNew; } else if (controllerStatusNew.NumberId == 1) { vController1 = controllerStatusNew; } else if (controllerStatusNew.NumberId == 2) { vController2 = controllerStatusNew; } else if (controllerStatusNew.NumberId == 3) { vController3 = controllerStatusNew; } //Show controller connection popup and update the controller menu image if (controllerStatusOld.Connected != controllerStatusNew.Connected) { if (controllerStatusNew.Connected) { AVActions.ActionDispatcherInvoke(delegate { controllerStatusStackpanel.Opacity = 1.00; }); string ControllerIdDisplay = Convert.ToString(controllerStatusNew.NumberId + 1); //await Notification_Send_Status("Controller", "Connected (" + ControllerIdDisplay + ")"); //Hide the mouse cursor await MouseCursorHide(); //Update the controller help UpdateControllerHelp(); } else { AVActions.ActionDispatcherInvoke(delegate { controllerStatusStackpanel.Opacity = 0.40; }); string ControllerIdDisplay = Convert.ToString(controllerStatusNew.NumberId + 1); //await Notification_Send_Status("Controller", "Disconnected (" + ControllerIdDisplay + ")"); //Hide the battery status if (vControllerActiveId == controllerStatusNew.NumberId) { HideBatteryStatus(true); } //Update the controller help UpdateControllerHelp(); } } } } catch { } }