Add support for speed brakes to plugin HandleCtrl function.

This commit is contained in:
Jason Watkins
2015-05-05 08:52:57 -07:00
parent 8f4d50929f
commit 3030f67a9d
3 changed files with 17 additions and 4 deletions

View File

@@ -69,6 +69,9 @@ namespace XPC
drefs.insert(make_pair(DREF_FlapSetting, XPLMFindDataRef("sim/flightmodel/controls/flaprqst")));
drefs.insert(make_pair(DREF_FlapActual, XPLMFindDataRef("sim/flightmodel/controls/flaprat")));
drefs.insert(make_pair(DREF_SpeedBrakeSet, XPLMFindDataRef("sim/flightmodel/controls/sbrkrqst")));
drefs.insert(make_pair(DREF_SpeedBrakeActual, XPLMFindDataRef("sim/flightmodel/controls/sbrkrat")));
drefs.insert(make_pair(DREF_GearDeploy, XPLMFindDataRef("sim/aircraft/parts/acf_gear_deploy")));
drefs.insert(make_pair(DREF_GearHandle, XPLMFindDataRef("sim/cockpit/switches/gear_handle_status")));
drefs.insert(make_pair(DREF_BrakeParking, XPLMFindDataRef("sim/flightmodel/controls/parkbrakel")));
@@ -169,7 +172,7 @@ namespace XPC
sprintf(multi, "sim/multiplayer/position/plane%i_spoiler_ratio", i);
mdrefs[i][DREF_Spoiler] = XPLMFindDataRef(multi);
sprintf(multi, "sim/multiplayer/position/plane%i_speedbrake_ratio", i);
mdrefs[i][DREF_BrakeSpeed] = XPLMFindDataRef(multi);
mdrefs[i][DREF_SpeedBrakeSet] = XPLMFindDataRef(multi);
sprintf(multi, "sim/multiplayer/position/plane%i_slat_ratio", i);
mdrefs[i][DREF_Slats] = XPLMFindDataRef(multi);
sprintf(multi, "sim/multiplayer/position/plane%i_wing_sweep", i);

View File

@@ -105,7 +105,8 @@ namespace XPC
// Multiplayer Aircraft
DREF_FlapActual2,
DREF_Spoiler,
DREF_BrakeSpeed,
DREF_SpeedBrakeSet,
DREF_SpeedBrakeActual,
DREF_Sweep,
DREF_Slats,

View File

@@ -169,7 +169,7 @@ namespace XPC
std::size_t size = msg.GetSize();
//Legacy packets that don't specify an aircraft number should be 26 bytes long.
//Packets specifying an A/C num should be 27 bytes.
if (size != 26 && size != 27)
if (size != 26 && size != 27 && size != 31)
{
#if LOG_VERBOSITY > 0
Log::FormatLine("[CTRL] ERROR: Unexpected message length (%i)", size);
@@ -185,10 +185,15 @@ namespace XPC
char gear = buffer[21];
float flaps = *((float*)(buffer + 22));
unsigned char aircraft = 0;
if (size == 27)
if (size >= 27)
{
aircraft = buffer[26];
}
float spdbrk = -998;
if (size >= 31)
{
spdbrk = *((float*)(buffer + 27));
}
float thrArray[8];
for (int i = 0; i < 8; ++i)
@@ -213,6 +218,10 @@ namespace XPC
{
DataManager::Set(DREF_FlapSetting, flaps, aircraft);
}
if (spdbrk < -999.5 || spdbrk > -997.5)
{
DataManager::Set(DREF_SpeedBrakeSet, spdbrk, aircraft);
}
}
void MessageHandlers::HandleData(Message& msg)