- Messages
- 27
- Country

Attempting to set RECIP ENG MANIFOLD PRESSURE:1 , but it simply is not setting, even though the debug cout<< is running
I can see that the SimConnect_SetDataOnSimObject function is working, so the problem has to be from another part of the code no? If someone can help me find the issue that would be greatly appreciated.
I can see that the SimConnect_SetDataOnSimObject function is working, so the problem has to be from another part of the code no? If someone can help me find the issue that would be greatly appreciated.
C++:
enum DATA_DEFINE_ID
{
DEFINITION_MANIFOLD,
};
enum DATA_REQUEST_ID
{
REQUEST_AP_SETTINGS,
REQUEST_MANIFOLD,
};
/*
* ========================== *
* SimVars via non-SimConnect *
* ========================== *
*/
struct SIM_VARS
{
// Units
ENUM Psi; // Bool
ENUM feet_units; // Feet
// Variables
ENUM recip_manifold_Psi; // ELEVATOR DEFLECTION
ENUM indicated_altitude;// SIM ON GROUND
} sim_vars;
struct structManifoldControl
{
double manifoldPressure;
}manifoldqnh;
structManifoldControl tc;
bool HandleSimVars(int service_id)
{
switch (service_id)
{
case PANEL_SERVICE_PRE_INSTALL:
{
return true;
}
break;
case PANEL_SERVICE_POST_INSTALL:
{
// Units
sim_vars.Psi = get_units_enum("Psi");
sim_vars.feet_units = get_units_enum("Feet");
// Variables
sim_vars.recip_manifold_Psi = get_aircraft_var_enum("RECIP ENG MANIFOLD PRESSURE:1");
sim_vars.indicated_altitude = get_aircraft_var_enum("INDICATED ALTITUDE");
return true;
}
break;
case PANEL_SERVICE_PRE_DRAW:
{
return true;
}
break;
case PANEL_SERVICE_PRE_KILL:
{
return true;
}
break;
}
return false;
}
bool TestVars(FsContext ctx, int service_id, void* pData) {
switch (service_id)
{
case PANEL_SERVICE_PRE_INSTALL:
{
return true;
}
break;
case PANEL_SERVICE_POST_INSTALL:
{
if (SUCCEEDED(SimConnect_Open(&hSimConnect, "Client Event", NULL, NULL, NULL, NULL))) {
std::cout << "Connected to SimConnect" << endl;
}
else {
std::cout << " Failed to connect to SimConnect" << endl;
}
SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_MANIFOLD, "RECIP ENG MANIFOLD PRESSURE:1", "Psi");
return true;
}
break;
case PANEL_SERVICE_PRE_DRAW:
{
auto recipmanifold = aircraft_varget(sim_vars.recip_manifold_Psi, sim_vars.Psi, 0);
double indicated = aircraft_varget(sim_vars.indicated_altitude, sim_vars.feet_units, 0);
if (indicated > 1500) {
HRESULT hr;
std::cout << "above 1500" << std::endl;
tc.manifoldPressure = 29;
hr = SimConnect_SetDataOnSimObject(hSimConnect, DEFINITION_MANIFOLD, SIMCONNECT_OBJECT_ID_USER, NULL, 0, sizeof(tc), &tc);
if (SUCCEEDED(hr)) {
cout << "Set Data is working" << endl;
}
else
{
cout << "Set Data may not be working" << endl;
}
}
return true;
}
break;
case PANEL_SERVICE_PRE_KILL:
{
if (hSimConnect)
{
SimConnect_Close(hSimConnect);
hSimConnect = 0;
}
}
break;
}
return true;
}
/*
* ============ *
* Finalization *
* ============ *
*/
extern "C" {
MSFS_CALLBACK bool TurboCharger_gauge_callback(FsContext ctx, int service_id, void* pData)
{
auto ret = true;
ret &= HandleSimVars(service_id);
ret &= TestVars(ctx, service_id, pData);
//ret &= HandleSimConnect(ctx, service_id, pData);
return ret;
}
}


