Fix incorrect gear read in HandlePosi
This commit is contained in:
@@ -141,11 +141,25 @@ namespace XPC
|
|||||||
else if (head == "POSI")
|
else if (head == "POSI")
|
||||||
{
|
{
|
||||||
char aircraft = buffer[5];
|
char aircraft = buffer[5];
|
||||||
float gear = *((float*)(buffer + 30));
|
float gear;
|
||||||
float pos[3];
|
double pos[3];
|
||||||
float orient[3];
|
float orient[3];
|
||||||
memcpy(pos, buffer + 6, 12);
|
if (size == 34) /* lat/lon/h as 32-bit float */
|
||||||
memcpy(orient, buffer + 18, 12);
|
{
|
||||||
|
float posd_32[3];
|
||||||
|
memcpy(posd_32, buffer + 6, 12);
|
||||||
|
pos[0] = posd_32[0];
|
||||||
|
pos[1] = posd_32[1];
|
||||||
|
pos[2] = posd_32[2];
|
||||||
|
memcpy(orient, buffer + 18, 12);
|
||||||
|
memcpy(&gear, buffer + 30, 4);
|
||||||
|
}
|
||||||
|
else if (size == 46) /* lat/lon/h as 64-bit double */
|
||||||
|
{
|
||||||
|
memcpy(pos, buffer + 6, 24);
|
||||||
|
memcpy(orient, buffer + 30, 12);
|
||||||
|
memcpy(&gear, buffer + 42, 4);
|
||||||
|
}
|
||||||
ss << " AC:" << (int)aircraft;
|
ss << " AC:" << (int)aircraft;
|
||||||
ss << " Pos:(" << pos[0] << ' ' << pos[1] << ' ' << pos[2] << ") Orient:(";
|
ss << " Pos:(" << pos[0] << ' ' << pos[1] << ' ' << pos[2] << ") Orient:(";
|
||||||
ss << orient[0] << ' ' << orient[1] << ' ' << orient[2] << ") Gear:";
|
ss << orient[0] << ' ' << orient[1] << ' ' << orient[2] << ") Gear:";
|
||||||
|
|||||||
@@ -580,21 +580,25 @@ namespace XPC
|
|||||||
const std::size_t size = msg.GetSize();
|
const std::size_t size = msg.GetSize();
|
||||||
|
|
||||||
char aircraftNumber = buffer[5];
|
char aircraftNumber = buffer[5];
|
||||||
float gear = *((float*)(buffer + 42));
|
float gear;
|
||||||
double posd[3];
|
double posd[3];
|
||||||
float orient[3];
|
float orient[3];
|
||||||
|
|
||||||
if (size == 34) /* lat/lon/h as 32-bit float */
|
if (size == 34) /* lat/lon/h as 32-bit float */
|
||||||
{
|
{
|
||||||
posd[0] = *((float*)&buffer[6]);
|
float posd_32[3];
|
||||||
posd[1] = *((float*)&buffer[10]);
|
memcpy(posd_32, buffer + 6, 12);
|
||||||
posd[2] = *((float*)&buffer[14]);
|
posd[0] = posd_32[0];
|
||||||
|
posd[1] = posd_32[1];
|
||||||
|
posd[2] = posd_32[2];
|
||||||
memcpy(orient, buffer + 18, 12);
|
memcpy(orient, buffer + 18, 12);
|
||||||
|
memcpy(&gear, buffer + 30, 4);
|
||||||
}
|
}
|
||||||
else if (size == 46) /* lat/lon/h as 64-bit double */
|
else if (size == 46) /* lat/lon/h as 64-bit double */
|
||||||
{
|
{
|
||||||
memcpy(posd, buffer + 6, 3*8);
|
memcpy(posd, buffer + 6, 24);
|
||||||
memcpy(orient, buffer + 30, 12);
|
memcpy(orient, buffer + 30, 12);
|
||||||
|
memcpy(&gear, buffer + 42, 4);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user