mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 11:55:35 +08:00
Ref T609, set send/receive COM1/2 from P3D/FSK
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user