Ref T609, set send/receive COM1/2 from P3D/FSK

This commit is contained in:
Klaus Basan
2019-04-16 02:36:04 +02:00
parent bf26695530
commit 9f8f70c22a
4 changed files with 44 additions and 12 deletions

View File

@@ -36,9 +36,9 @@ namespace BlackSimPlugin
{
case RequestOwnAircraft: return ownAircraft;
case RequestOwnAircraftTitle: return title;
case RequestSimEnvironment: return simEnv;
case RequestSbData: return sbData;
case RequestFacility: return facility;
case RequestSimEnvironment: return simEnv;
case RequestSbData: return sbData;
case RequestFacility: return facility;
case RequestEndMarker: return end;
default: break;
}
@@ -60,12 +60,12 @@ namespace BlackSimPlugin
switch (simObjectRequest)
{
case SimObjectBaseId: return baseId;
case SimObjectAdd: return add;
case SimObjectAdd: return add;
case SimObjectRemove: return remove;
case SimObjectLights: return lights;
case SimObjectPositionData: return pos;
case SimObjectModel: return model;
case SimObjectMisc: return misc;
case SimObjectModel: return model;
case SimObjectMisc: return misc;
case SimObjectEndMarker: return end;
default: break;
}
@@ -87,6 +87,8 @@ namespace BlackSimPlugin
HRESULT CSimConnectDefinitions::initOwnAircraft(const HANDLE hSimConnect)
{
// FSX vars: https://docs.microsoft.com/en-us/previous-versions/microsoft-esp/cc526981(v%3dmsdn.10)
// all the VARS here should be FSX/P3D
HRESULT hr = s_ok();
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "PLANE LATITUDE", "Degrees");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "PLANE LONGITUDE", "Degrees");
@@ -111,6 +113,13 @@ namespace BlackSimPlugin
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "COM ACTIVE FREQUENCY:2", "MHz");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "COM STANDBY FREQUENCY:1", "MHz");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "COM STANDBY FREQUENCY:2", "MHz");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "COM TRANSMIT:1", "Bool");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "COM TRANSMIT:2", "Bool");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "COM RECEIVE ALL", "Bool");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "COM TEST:1", "Bool");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "COM TEST:2", "Bool");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "COM STATUS:1", "Enum");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "COM STATUS:2", "Enum");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "FLAPS HANDLE PERCENT", "Percent Over 100");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "SPOILERS HANDLE POSITION", "Percent Over 100");
hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "GEAR HANDLE POSITION", "Bool");

View File

@@ -53,18 +53,25 @@ namespace BlackSimPlugin
double com1ActiveMHz; //!< COM1 active frequency
double com2ActiveMHz; //!< COM2 active frequency
double com1StandbyMHz; //!< COM1 standby frequency
double com2StandbyMHz; //!< COM1 standby frequency
// 23
double com2StandbyMHz; //!< COM2 standby frequency
double comTransmit1; //!< COM1 transmit, means also receiving
double comTransmit2; //!< COM2 transmit, means also receiving
double comReceiveAll; //!< all COMs receiving, or COM:x transmitting or receiving
double comTest1; //!< COM1 test
double comTest2; //!< COM2 test
double comStatus1; //!< COM1 status
double comStatus2; //!< COM2 status
// 30
double flapsHandlePosition; //!< Flaps handle position in percent
double spoilersHandlePosition; //!< Spoilers out? (flag)
double gearHandlePosition; //!< Gear handle position (flag)
// 26
// 33
double numberOfEngines; //!< Number of engines
double engine1Combustion; //!< Engine 1 combustion flag
double engine2Combustion; //!< Engine 2 combustion flag
double engine3Combustion; //!< Engine 3 combustion flag
double engine4Combustion; //!< Engine 4 combustion flag
//31
// 38
};
//! Data struct of aircraft position

View File

@@ -659,16 +659,32 @@ namespace BlackSimPlugin
CComSystem com1(myAircraft.getCom1System()); // set defaults
CComSystem com2(myAircraft.getCom2System());
// updates
// updates: https://www.fsdeveloper.com/forum/threads/com-unit-receiving-status-com-transmit-x-com-test-1-and-volume.445187/
// COM: If you're set to transmit on a unit, you WILL receive that unit.
// Otherwise if you're NOT set to transmit on a unit, then it will only receive if COM RECEIVE ALL is true.
// There is no control of COM volume.
com1.setFrequencyActive(CFrequency(simulatorOwnAircraft.com1ActiveMHz, CFrequencyUnit::MHz()));
com1.setFrequencyStandby(CFrequency(simulatorOwnAircraft.com1StandbyMHz, CFrequencyUnit::MHz()));
const bool comReceiveAll = dtb(simulatorOwnAircraft.comReceiveAll);
const bool com1Test = dtb(simulatorOwnAircraft.comTest1);
const bool com1Transmit = dtb(simulatorOwnAircraft.comTransmit1);
const int com1Status = qRound(simulatorOwnAircraft.comStatus1); // Radio status flag : -1 =Invalid 0 = OK 1 = Does not exist 2 = No electricity 3 = Failed
com1.setSendEnabled(com1Status == 0 && com1Transmit);
com1.setReceiveEnabled(com1Status == 0 && (comReceiveAll || com1Transmit));
const bool changedCom1 = myAircraft.getCom1System() != com1;
m_simCom1 = com1;
Q_UNUSED(com1Test);
com2.setFrequencyActive(CFrequency(simulatorOwnAircraft.com2ActiveMHz, CFrequencyUnit::MHz()));
com2.setFrequencyStandby(CFrequency(simulatorOwnAircraft.com2StandbyMHz, CFrequencyUnit::MHz()));
const bool com2Test = dtb(simulatorOwnAircraft.comTest2);
const bool com2Transmit = dtb(simulatorOwnAircraft.comTransmit2);
const int com2Status = qRound(simulatorOwnAircraft.comStatus2); // Radio status flag : -1 =Invalid 0 = OK 1 = Does not exist 2 = No electricity 3 = Failed
com2.setSendEnabled(com2Status == 0 && com2Transmit);
com2.setReceiveEnabled(com2Status == 0 && (comReceiveAll || com2Transmit));
const bool changedCom2 = myAircraft.getCom2System() != com2;
m_simCom2 = com2;
Q_UNUSED(com2Test);
CTransponder transponder(myAircraft.getTransponder());
transponder.setTransponderCode(qRound(simulatorOwnAircraft.transponderCode));

View File

@@ -243,7 +243,7 @@ namespace BlackSimPlugin
{
case CSimConnectDefinitions::RequestOwnAircraft:
{
static_assert(sizeof(DataDefinitionOwnAircraft) == 31 * sizeof(double), "DataDefinitionOwnAircraft has an incorrect size.");
static_assert(sizeof(DataDefinitionOwnAircraft) == 38 * sizeof(double), "DataDefinitionOwnAircraft has an incorrect size.");
const DataDefinitionOwnAircraft *ownAircaft = reinterpret_cast<const DataDefinitionOwnAircraft *>(&pObjData->dwData);
simulatorFsxP3D->updateOwnAircraftFromSimulator(*ownAircaft);
break;