|
|
|
@@ -9,123 +9,13 @@ char *throttleQuadrantCFG;
|
|
|
|
|
initialization init;
|
|
|
|
|
uint8_t numEngines = 0;
|
|
|
|
|
|
|
|
|
|
// Event to catch beginning
|
|
|
|
|
static enum EVENT_ID {
|
|
|
|
|
EVENT_SIM_START,
|
|
|
|
|
REQUEST_SYSTEM_STATE,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Definitions for levers, dynamically added to SimConnect
|
|
|
|
|
static enum DATA_DEFINE_ID {
|
|
|
|
|
DEFINITION_AC_DATA,
|
|
|
|
|
DEFINITION_LEVER_ONE,
|
|
|
|
|
DEFINITION_LEVER_TWO,
|
|
|
|
|
DEFINITION_LEVER_THREE,
|
|
|
|
|
DEFINITION_LEVER_FOUR,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Request ID
|
|
|
|
|
static enum REQUEST_ID {
|
|
|
|
|
AC_DATA_REQUEST,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Struct for ac data
|
|
|
|
|
struct aircraftData {
|
|
|
|
|
double numEngines;
|
|
|
|
|
double lowerThrottleLimit;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Structs for levers
|
|
|
|
|
struct engineJustThrottle {
|
|
|
|
|
double throttlePercent;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct engineThrottleAndPropeller {
|
|
|
|
|
double throttlePercent;
|
|
|
|
|
double propellerPercent;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct engineThrottleAndMixture {
|
|
|
|
|
double throttlePercent;
|
|
|
|
|
double mixturePercent;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct engineAll {
|
|
|
|
|
double throttlePercent;
|
|
|
|
|
double propellerPrecent;
|
|
|
|
|
double mixturePercent;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//TESTING PURPOSE
|
|
|
|
|
engineJustThrottle tc;
|
|
|
|
|
|
|
|
|
|
char *trimwhitespace(char *str)
|
|
|
|
|
{
|
|
|
|
|
char *end;
|
|
|
|
|
|
|
|
|
|
// Trim leading space
|
|
|
|
|
while (isspace((unsigned char)*str)) str++;
|
|
|
|
|
|
|
|
|
|
if (*str == 0) // All spaces?
|
|
|
|
|
return str;
|
|
|
|
|
|
|
|
|
|
// Trim trailing space
|
|
|
|
|
end = str + strlen(str) - 1;
|
|
|
|
|
while (end > str && isspace((unsigned char)*end)) end--;
|
|
|
|
|
|
|
|
|
|
// Write new null terminator
|
|
|
|
|
*(end + 1) = 0;
|
|
|
|
|
|
|
|
|
|
return str;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char *readLine(FILE *file) {
|
|
|
|
|
|
|
|
|
|
if (file == NULL) {
|
|
|
|
|
printf("\nError: file pointer is null.");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int maximumLineLength = 128;
|
|
|
|
|
char *lineBuffer = (char *)malloc(sizeof(char) * maximumLineLength);
|
|
|
|
|
|
|
|
|
|
if (lineBuffer == NULL) {
|
|
|
|
|
printf("\nError allocating memory for line buffer.");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char ch = getc(file);
|
|
|
|
|
int count = 0;
|
|
|
|
|
|
|
|
|
|
while ((ch != '\n') && (ch != EOF)) {
|
|
|
|
|
if (count == maximumLineLength) {
|
|
|
|
|
maximumLineLength += 128;
|
|
|
|
|
lineBuffer = (char *)realloc(lineBuffer, maximumLineLength);
|
|
|
|
|
if (lineBuffer == NULL) {
|
|
|
|
|
printf("\nError reallocating space for line buffer.");
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
lineBuffer[count] = ch;
|
|
|
|
|
count++;
|
|
|
|
|
|
|
|
|
|
ch = getc(file);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
lineBuffer[count] = '\0';
|
|
|
|
|
if (count > 0)
|
|
|
|
|
return lineBuffer;
|
|
|
|
|
else
|
|
|
|
|
return NULL ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void setupDefinitions() {
|
|
|
|
|
printf("\nSetting up...");
|
|
|
|
|
printf("\nSetting up ... ");
|
|
|
|
|
HRESULT hr;
|
|
|
|
|
hr = SimConnect_ClearDataDefinition(hSimConnect, DEFINITION_LEVER_ONE);
|
|
|
|
|
hr = SimConnect_ClearDataDefinition(hSimConnect, DEFINITION_LEVER_TWO);
|
|
|
|
|
hr = SimConnect_ClearDataDefinition(hSimConnect, DEFINITION_LEVER_THREE);
|
|
|
|
|
hr = SimConnect_ClearDataDefinition(hSimConnect, DEFINITION_LEVER_FOUR);
|
|
|
|
|
hr = SimConnect_ClearDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE);
|
|
|
|
|
hr = SimConnect_ClearDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO);
|
|
|
|
|
hr = SimConnect_ClearDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE);
|
|
|
|
|
hr = SimConnect_ClearDataDefinition(hSimConnect, DEFINITION_ENGINE_FOUR);
|
|
|
|
|
FILE *fp = fopen(throttleQuadrantCFG, "r");
|
|
|
|
|
char * line = NULL;
|
|
|
|
|
uint8_t numEngines = 0;
|
|
|
|
@@ -170,27 +60,143 @@ void setupDefinitions() {
|
|
|
|
|
{
|
|
|
|
|
switch (numEngines) {
|
|
|
|
|
case 1:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_LEVER_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_LEVER_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_LEVER_ONE, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_LEVER_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_LEVER_ONE, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_LEVER_ONE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_LEVER_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_LEVER_ONE, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_LEVER_ONE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_LEVER_ONE, "GENERAL ENG THROTTLE LEVER POSITION:4", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_FOUR, "GENERAL ENG THROTTLE LEVER POSITION:4", "percent");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (hasPropeller && !hasMixture)
|
|
|
|
|
{
|
|
|
|
|
switch (numEngines) {
|
|
|
|
|
case 1:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG PROPELLER LEVER POSITION:1", "percent");
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG PROPELLER LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG PROPELLER LEVER POSITION:2", "percent");
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG PROPELLER LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG PROPELLER LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG PROPELLER LEVER POSITION:3", "percent");
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_FOUR, "GENERAL ENG THROTTLE LEVER POSITION:4", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG PROPELLER LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG PROPELLER LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG PROPELLER LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_FOUR, "GENERAL ENG PROPELLER LEVER POSITION:4", "percent");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (!hasPropeller && hasMixture)
|
|
|
|
|
{
|
|
|
|
|
switch (numEngines) {
|
|
|
|
|
case 1:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG MIXTURE LEVER POSITION:1", "percent");
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG MIXTURE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG MIXTURE LEVER POSITION:2", "percent");
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG MIXTURE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG MIXTURE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG MIXTURE LEVER POSITION:3", "percent");
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_FOUR, "GENERAL ENG THROTTLE LEVER POSITION:4", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG MIXTURE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG MIXTURE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG MIXTURE LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_FOUR, "GENERAL ENG MIXTURE LEVER POSITION:4", "percent");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (hasPropeller && hasMixture)
|
|
|
|
|
{
|
|
|
|
|
switch (numEngines) {
|
|
|
|
|
case 1:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG MIXTURE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG MIXTURE LEVER POSITION:1", "percent");
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG PROPELLER LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG PROPELLER LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG MIXTURE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG MIXTURE LEVER POSITION:2", "percent");
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG PROPELLER LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG PROPELLER LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG PROPELLER LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG MIXTURE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG MIXTURE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG MIXTURE LEVER POSITION:3", "percent");
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_FOUR, "GENERAL ENG THROTTLE LEVER POSITION:4", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG PROPELLER LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG PROPELLER LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG PROPELLER LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_FOUR, "GENERAL ENG PROPELLER LEVER POSITION:4", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG MIXTURE LEVER POSITION:1", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG MIXTURE LEVER POSITION:2", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG MIXTURE LEVER POSITION:3", "percent");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_FOUR, "GENERAL ENG MIXTURE LEVER POSITION:4", "percent");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
printf("done!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SimConnect callback
|
|
|
|
@@ -207,7 +213,7 @@ void CALLBACK MyDispatchProcTC(SIMCONNECT_RECV* pData, DWORD cbData, void *pCont
|
|
|
|
|
switch (data->dwRequestID) {
|
|
|
|
|
case AC_DATA_REQUEST:
|
|
|
|
|
{
|
|
|
|
|
printf("\Aircraft data retrieved");
|
|
|
|
|
printf("Aircraft data retrieved.");
|
|
|
|
|
init.maxRev = (int8_t)((aircraftData *)&data->dwData)->lowerThrottleLimit;
|
|
|
|
|
numEngines = (uint8_t)((aircraftData *)&data->dwData)->numEngines;
|
|
|
|
|
setupDefinitions();
|
|
|
|
@@ -234,8 +240,8 @@ void CALLBACK MyDispatchProcTC(SIMCONNECT_RECV* pData, DWORD cbData, void *pCont
|
|
|
|
|
throttleQuadrantCFG = (char *)calloc(strlen(path) + 6, 1);
|
|
|
|
|
strcpy(throttleQuadrantCFG, path);
|
|
|
|
|
strcat(throttleQuadrantCFG, "tq.cfg");
|
|
|
|
|
printf("\n%s loaded.", throttleQuadrantCFG);
|
|
|
|
|
printf("\nRetrieving aicraft data...");
|
|
|
|
|
printf("%s loaded.", throttleQuadrantCFG);
|
|
|
|
|
printf("\nRetrieving aicraft data ... ");
|
|
|
|
|
hr = SimConnect_RequestDataOnSimObject(hSimConnect, AC_DATA_REQUEST, DEFINITION_AC_DATA, SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_ONCE);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
@@ -255,7 +261,7 @@ void CALLBACK MyDispatchProcTC(SIMCONNECT_RECV* pData, DWORD cbData, void *pCont
|
|
|
|
|
case EVENT_SIM_START:
|
|
|
|
|
{
|
|
|
|
|
// Send this request to get the user aircraft id
|
|
|
|
|
printf("\n\nRequesting loaded AC path...");
|
|
|
|
|
printf("\nRequesting loaded AC path ... ");
|
|
|
|
|
hr = SimConnect_RequestSystemState(hSimConnect, REQUEST_SYSTEM_STATE, "AircraftLoaded");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
@@ -277,7 +283,7 @@ void CALLBACK MyDispatchProcTC(SIMCONNECT_RECV* pData, DWORD cbData, void *pCont
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void testThrottleControl()
|
|
|
|
|
void throttleControl()
|
|
|
|
|
{
|
|
|
|
|
HRESULT hr;
|
|
|
|
|
|
|
|
|
@@ -287,8 +293,6 @@ void testThrottleControl()
|
|
|
|
|
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_AC_DATA, "NUMBER OF ENGINES", "number");
|
|
|
|
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_AC_DATA, "THROTTLE LOWER LIMIT", "percent");
|
|
|
|
|
|
|
|
|
|
// Set up a data definition for the throttle control
|
|
|
|
|
|
|
|
|
|
//hr = SimConnect_SetDataOnSimObject(hSimConnect, DEFINITION_LEVER_ONE, SIMCONNECT_OBJECT_ID_USER, 0, 0, sizeof(tc), &tc);
|
|
|
|
|
|
|
|
|
@@ -307,7 +311,6 @@ void testThrottleControl()
|
|
|
|
|
|
|
|
|
|
int __cdecl _tmain(int argc, _TCHAR* argv[])
|
|
|
|
|
{
|
|
|
|
|
testThrottleControl();
|
|
|
|
|
|
|
|
|
|
throttleControl();
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|