From 5d31544476efaf950709f45b747a0b26117ddff1 Mon Sep 17 00:00:00 2001 From: Norman Princen <63923352+NPrincen@users.noreply.github.com> Date: Sat, 18 Apr 2020 11:30:36 -0700 Subject: [PATCH] Changed Lat/Lon/h to double in GetP --- xpcPlugin/MessageHandlers.cpp | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/xpcPlugin/MessageHandlers.cpp b/xpcPlugin/MessageHandlers.cpp index 2556fef..5163edc 100644 --- a/xpcPlugin/MessageHandlers.cpp +++ b/xpcPlugin/MessageHandlers.cpp @@ -24,7 +24,6 @@ #include "XPLMScenery.h" #include "XPLMGraphics.h" - #include #include #include @@ -32,7 +31,6 @@ #define MULTICAST_GROUP "239.255.1.1" #define MULITCAST_PORT 49710 - namespace XPC { std::map MessageHandlers::connections; @@ -560,21 +558,20 @@ namespace XPC unsigned char aircraft = buffer[5]; Log::FormatLine(LOG_TRACE, "GPOS", "Getting position information for aircraft %u", aircraft); - unsigned char response[34] = "POSI"; + unsigned char response[46] = "POSI"; response[5] = (char)DataManager::GetInt(DREF_GearHandle, aircraft); - // TODO change lat/lon/h to double? - *((float*)(response + 6)) = (float)DataManager::GetDouble(DREF_Latitude, aircraft); - *((float*)(response + 10)) = (float)DataManager::GetDouble(DREF_Longitude, aircraft); - *((float*)(response + 14)) = (float)DataManager::GetDouble(DREF_Elevation, aircraft); - *((float*)(response + 18)) = DataManager::GetFloat(DREF_Pitch, aircraft); - *((float*)(response + 22)) = DataManager::GetFloat(DREF_Roll, aircraft); - *((float*)(response + 26)) = DataManager::GetFloat(DREF_HeadingTrue, aircraft); + *((double*)(response + 6)) = DataManager::GetDouble(DREF_Latitude, aircraft); + *((double*)(response + 14)) = DataManager::GetDouble(DREF_Longitude, aircraft); + *((double*)(response + 22)) = DataManager::GetDouble(DREF_Elevation, aircraft); + *((float*)(response + 30)) = DataManager::GetFloat(DREF_Pitch, aircraft); + *((float*)(response + 34)) = DataManager::GetFloat(DREF_Roll, aircraft); + *((float*)(response + 38)) = DataManager::GetFloat(DREF_HeadingTrue, aircraft); float gear[10]; DataManager::GetFloatArray(DREF_GearDeploy, gear, 10, aircraft); - *((float*)(response + 30)) = gear[0]; + *((float*)(response + 42)) = gear[0]; - sock->SendTo(response, 34, &connection.addr); + sock->SendTo(response, 46, &connection.addr); } void MessageHandlers::HandlePosi(const Message& msg) @@ -594,6 +591,7 @@ namespace XPC { float posd_32[3]; memcpy(posd_32, buffer + 6, 12); + /* convert float to double */ posd[0] = posd_32[0]; posd[1] = posd_32[1]; posd[2] = posd_32[2]; @@ -612,7 +610,6 @@ namespace XPC return; } - /* convert float to double */ DataManager::SetPosition(posd, aircraftNumber); DataManager::SetOrientation(orient, aircraftNumber); if (gear >= 0) @@ -632,7 +629,7 @@ namespace XPC } } } - + void MessageHandlers::HandleGetT(const Message& msg) { const unsigned char* buffer = msg.GetBuffer();