Moved handling of deafult values to the DataManager class.
This commit is contained in:
@@ -626,7 +626,7 @@ namespace XPC
|
|||||||
Log::FormatLine(LOG_INFO, "DMAN", "Setting gear (value:%f, immediate:%i) for aircraft %i",
|
Log::FormatLine(LOG_INFO, "DMAN", "Setting gear (value:%f, immediate:%i) for aircraft %i",
|
||||||
gear, immediate, aircraft);
|
gear, immediate, aircraft);
|
||||||
|
|
||||||
if ((gear < -8.5 && gear > -9.5) || (gear < -997.9 && gear > -999.1))
|
if ((gear < -8.5 && gear > -9.5) || IsDefault(gear))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -666,15 +666,15 @@ namespace XPC
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pos[0] < -997.9 && pos[0] > -999.1)
|
if (IsDefault(pos[0]))
|
||||||
{
|
{
|
||||||
pos[0] = (float)GetDouble(DREF_Latitude, aircraft);
|
pos[0] = (float)GetDouble(DREF_Latitude, aircraft);
|
||||||
}
|
}
|
||||||
if (pos[1] < -997.9 && pos[1] > -999.1)
|
if (IsDefault(pos[1]))
|
||||||
{
|
{
|
||||||
pos[1] = (float)GetDouble(DREF_Longitude, aircraft);
|
pos[1] = (float)GetDouble(DREF_Longitude, aircraft);
|
||||||
}
|
}
|
||||||
if (pos[2] < -997.9 && pos[2] > -999.1)
|
if (IsDefault(pos[2]))
|
||||||
{
|
{
|
||||||
pos[2] = (float)GetDouble(DREF_Elevation, aircraft);
|
pos[2] = (float)GetDouble(DREF_Elevation, aircraft);
|
||||||
}
|
}
|
||||||
@@ -702,15 +702,15 @@ namespace XPC
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orient[0] < -997.9 && orient[0] > -999.1)
|
if (IsDefault(orient[0]))
|
||||||
{
|
{
|
||||||
orient[0] = GetFloat(DREF_Pitch, aircraft);
|
orient[0] = GetFloat(DREF_Pitch, aircraft);
|
||||||
}
|
}
|
||||||
if (orient[1] < -997.9 && orient[1] > -999.1)
|
if (IsDefault(orient[1]))
|
||||||
{
|
{
|
||||||
orient[1] = GetFloat(DREF_Roll, aircraft);
|
orient[1] = GetFloat(DREF_Roll, aircraft);
|
||||||
}
|
}
|
||||||
if (orient[2] < -997.9 && orient[2] > -999.1)
|
if (IsDefault(orient[2]))
|
||||||
{
|
{
|
||||||
orient[2] = GetFloat(DREF_HeadingTrue, aircraft);
|
orient[2] = GetFloat(DREF_HeadingTrue, aircraft);
|
||||||
}
|
}
|
||||||
@@ -752,7 +752,7 @@ namespace XPC
|
|||||||
Log::WriteLine(LOG_ERROR, "DMAN", "ERROR: Flap value must be a number (NaN received)");
|
Log::WriteLine(LOG_ERROR, "DMAN", "ERROR: Flap value must be a number (NaN received)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (value < -997.9 && value > -999.1)
|
if (IsDefault(value))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -763,4 +763,14 @@ namespace XPC
|
|||||||
Set(DREF_FlapSetting, value);
|
Set(DREF_FlapSetting, value);
|
||||||
Set(DREF_FlapActual, value);
|
Set(DREF_FlapActual, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float DataManager::GetDefaultValue()
|
||||||
|
{
|
||||||
|
return -998.0F;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DataManager::IsDefault(float value)
|
||||||
|
{
|
||||||
|
return value < -997.9 && value > -999.1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ namespace XPC
|
|||||||
/// \version 1.1
|
/// \version 1.1
|
||||||
/// \since 1.0.0
|
/// \since 1.0.0
|
||||||
/// \date Intial Version: 2015-04-13
|
/// \date Intial Version: 2015-04-13
|
||||||
/// \date Last Updated: 2015-05-11
|
/// \date Last Updated: 2015-05-14
|
||||||
class DataManager
|
class DataManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -409,6 +409,15 @@ namespace XPC
|
|||||||
///
|
///
|
||||||
/// \param value The flaps settings. Should be between 0.0 (no flaps) and 1.0 (full flaps).
|
/// \param value The flaps settings. Should be between 0.0 (no flaps) and 1.0 (full flaps).
|
||||||
static void SetFlaps(float value);
|
static void SetFlaps(float value);
|
||||||
|
|
||||||
|
/// Gets a default value that indicates that a dataref should not be changed.
|
||||||
|
static float GetDefaultValue();
|
||||||
|
|
||||||
|
/// Checks whether the given value should be treated as a default value.
|
||||||
|
///
|
||||||
|
/// \param value The value to check.
|
||||||
|
/// \returns true if value is a default value; otherwise false.
|
||||||
|
static bool IsDefault(float value);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -195,26 +195,26 @@ namespace XPC
|
|||||||
{
|
{
|
||||||
aircraftNumber = buffer[26];
|
aircraftNumber = buffer[26];
|
||||||
}
|
}
|
||||||
float spdbrk = -998;
|
float spdbrk = DataManager::GetDefaultValue();
|
||||||
if (size >= 31)
|
if (size >= 31)
|
||||||
{
|
{
|
||||||
spdbrk = *((float*)(buffer + 27));
|
spdbrk = *((float*)(buffer + 27));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (pitch < -999.5 || pitch > -997.5)
|
if (!DataManager::IsDefault(pitch))
|
||||||
{
|
{
|
||||||
DataManager::Set(DREF_YokePitch, pitch, aircraftNumber);
|
DataManager::Set(DREF_YokePitch, pitch, aircraftNumber);
|
||||||
}
|
}
|
||||||
if (roll < -999.5 || roll > -997.5)
|
if (!DataManager::IsDefault(roll))
|
||||||
{
|
{
|
||||||
DataManager::Set(DREF_YokeRoll, roll, aircraftNumber);
|
DataManager::Set(DREF_YokeRoll, roll, aircraftNumber);
|
||||||
}
|
}
|
||||||
if (yaw < -999.5 || yaw > -997.5)
|
if (!DataManager::IsDefault(yaw))
|
||||||
{
|
{
|
||||||
DataManager::Set(DREF_YokeHeading, yaw, aircraftNumber);
|
DataManager::Set(DREF_YokeHeading, yaw, aircraftNumber);
|
||||||
}
|
}
|
||||||
if (throttle < -999.5 || throttle > -997.5)
|
if (!DataManager::IsDefault(throttle))
|
||||||
{
|
{
|
||||||
|
|
||||||
float throttleArray[8];
|
float throttleArray[8];
|
||||||
@@ -233,11 +233,11 @@ namespace XPC
|
|||||||
{
|
{
|
||||||
DataManager::SetGear(gear, false, aircraftNumber);
|
DataManager::SetGear(gear, false, aircraftNumber);
|
||||||
}
|
}
|
||||||
if (flaps < -999.5 || flaps > -997.5)
|
if (!DataManager::IsDefault(flaps))
|
||||||
{
|
{
|
||||||
DataManager::Set(DREF_FlapSetting, flaps, aircraftNumber);
|
DataManager::Set(DREF_FlapSetting, flaps, aircraftNumber);
|
||||||
}
|
}
|
||||||
if (spdbrk < -999.5 || spdbrk > -997.5)
|
if (!DataManager::IsDefault(spdbrk))
|
||||||
{
|
{
|
||||||
DataManager::Set(DREF_SpeedBrakeSet, spdbrk, aircraftNumber);
|
DataManager::Set(DREF_SpeedBrakeSet, spdbrk, aircraftNumber);
|
||||||
}
|
}
|
||||||
@@ -274,8 +274,8 @@ namespace XPC
|
|||||||
|
|
||||||
// Update log
|
// Update log
|
||||||
|
|
||||||
float savedAlpha = -998;
|
float savedAlpha = DataManager::GetDefaultValue();
|
||||||
float savedHPath = -998;
|
float savedHPath = DataManager::GetDefaultValue();
|
||||||
for (int i = 0; i < numCols; ++i)
|
for (int i = 0; i < numCols; ++i)
|
||||||
{
|
{
|
||||||
unsigned char dataRef = (unsigned char)values[i][0];
|
unsigned char dataRef = (unsigned char)values[i][0];
|
||||||
@@ -291,8 +291,8 @@ namespace XPC
|
|||||||
case 3: // Velocity
|
case 3: // Velocity
|
||||||
{
|
{
|
||||||
float theta = DataManager::GetFloat(DREF_Pitch);
|
float theta = DataManager::GetFloat(DREF_Pitch);
|
||||||
float alpha = savedAlpha != -998 ? savedAlpha : DataManager::GetFloat(DREF_AngleOfAttack);
|
float alpha = DataManager::IsDefault(savedAlpha) ? savedAlpha : DataManager::GetFloat(DREF_AngleOfAttack);
|
||||||
float hpath = savedHPath != -998 ? savedHPath : DataManager::GetFloat(DREF_HPath);
|
float hpath = DataManager::IsDefault(savedHPath) ? savedHPath : DataManager::GetFloat(DREF_HPath);
|
||||||
if (alpha != alpha || hpath != hpath)
|
if (alpha != alpha || hpath != hpath)
|
||||||
{
|
{
|
||||||
Log::WriteLine(LOG_ERROR, "DATA", "ERROR: Value must be a number (NaN received)");
|
Log::WriteLine(LOG_ERROR, "DATA", "ERROR: Value must be a number (NaN received)");
|
||||||
@@ -303,7 +303,7 @@ namespace XPC
|
|||||||
for (int j = 0; j < 3; ++j)
|
for (int j = 0; j < 3; ++j)
|
||||||
{
|
{
|
||||||
float v = values[i][ind[j]];
|
float v = values[i][ind[j]];
|
||||||
if (v != -998)
|
if (!DataManager::IsDefault(v))
|
||||||
{
|
{
|
||||||
DataManager::Set(DREF_LocalVX, v*cos((theta - alpha)*deg2rad)*sin(hpath*deg2rad));
|
DataManager::Set(DREF_LocalVX, v*cos((theta - alpha)*deg2rad)*sin(hpath*deg2rad));
|
||||||
DataManager::Set(DREF_LocalVY, v*sin((theta - alpha)*deg2rad));
|
DataManager::Set(DREF_LocalVY, v*sin((theta - alpha)*deg2rad));
|
||||||
@@ -328,11 +328,11 @@ namespace XPC
|
|||||||
Log::WriteLine(LOG_ERROR, "DATA", "ERROR: Value must be a number (NaN received)");
|
Log::WriteLine(LOG_ERROR, "DATA", "ERROR: Value must be a number (NaN received)");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (values[i][1] != -998)
|
if (!DataManager::IsDefault(values[i][1]))
|
||||||
{
|
{
|
||||||
savedAlpha = values[i][1];
|
savedAlpha = values[i][1];
|
||||||
}
|
}
|
||||||
if (values[i][3] != -998)
|
if (DataManager::IsDefault(values[i][3]))
|
||||||
{
|
{
|
||||||
savedHPath = values[i][3];
|
savedHPath = values[i][3];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user