Interface with arduino and FSX done, working order established
This commit is contained in:
parent
cb733f03f7
commit
3187bf00e9
@ -1,4 +1,4 @@
|
|||||||
// Aircraft data and mode mapping via config file in aircraft folder
|
// Mode mapping via config file in aircraft folder
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
|
|
||||||
@ -8,6 +8,16 @@ HANDLE hSimConnect = NULL;
|
|||||||
char *throttleQuadrantCFG;
|
char *throttleQuadrantCFG;
|
||||||
initialization init;
|
initialization init;
|
||||||
uint8_t numEngines = 0;
|
uint8_t numEngines = 0;
|
||||||
|
SerialPort *arduino;
|
||||||
|
values potValues;
|
||||||
|
int sizeOfDataToSendToFSX = 0;
|
||||||
|
bool ready = false;
|
||||||
|
bool hasPropeller = false;
|
||||||
|
|
||||||
|
engineAll eAOne;
|
||||||
|
engineAll eATwo;
|
||||||
|
engineAll eAThree;
|
||||||
|
engineAll eAFour;
|
||||||
|
|
||||||
void setupDefinitions() {
|
void setupDefinitions() {
|
||||||
printf("\nSetting up ... ");
|
printf("\nSetting up ... ");
|
||||||
@ -18,12 +28,11 @@ void setupDefinitions() {
|
|||||||
hr = SimConnect_ClearDataDefinition(hSimConnect, DEFINITION_ENGINE_FOUR);
|
hr = SimConnect_ClearDataDefinition(hSimConnect, DEFINITION_ENGINE_FOUR);
|
||||||
FILE *fp = fopen(throttleQuadrantCFG, "r");
|
FILE *fp = fopen(throttleQuadrantCFG, "r");
|
||||||
char * line = NULL;
|
char * line = NULL;
|
||||||
uint8_t numEngines = 0;
|
|
||||||
bool hasPropeller = false;
|
|
||||||
bool hasMixture = false;
|
bool hasMixture = false;
|
||||||
|
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
printf("\nThe application cannot run without a valid tq.cfg.");
|
printf("\nThe application cannot run without a valid tq.cfg.");
|
||||||
|
arduino->writeSerialPort("q", 1);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,28 +59,30 @@ void setupDefinitions() {
|
|||||||
free(id);
|
free(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(fp);
|
|
||||||
fp = fopen("dump.hex", "wb");
|
|
||||||
/*DEBUG*/fwrite(&init, 1, sizeof(initialization), fp);
|
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
// Setup Data definitions
|
// Setup Data definitions
|
||||||
|
printf("AC has %i eng, prop: %d, mix: %d ... ", numEngines, hasPropeller, hasMixture);
|
||||||
if (!hasPropeller && !hasMixture)
|
if (!hasPropeller && !hasMixture)
|
||||||
{
|
{
|
||||||
switch (numEngines) {
|
switch (numEngines) {
|
||||||
case 1:
|
case 1:
|
||||||
|
printf(" set one eng t mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
printf(" set two eng t mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "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_TWO, "GENERAL ENG THROTTLE LEVER POSITION:2", "percent");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
printf(" set three eng t mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "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_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_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
|
printf(" set four eng t mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "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_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_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
||||||
@ -80,21 +91,25 @@ void setupDefinitions() {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
sizeOfDataToSendToFSX = sizeof(double);
|
||||||
}
|
}
|
||||||
else if (hasPropeller && !hasMixture)
|
else if (hasPropeller && !hasMixture)
|
||||||
{
|
{
|
||||||
switch (numEngines) {
|
switch (numEngines) {
|
||||||
case 1:
|
case 1:
|
||||||
|
printf(" set one eng tp mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
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");
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG PROPELLER LEVER POSITION:1", "percent");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
printf(" set two eng tp mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "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_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_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_TWO, "GENERAL ENG PROPELLER LEVER POSITION:2", "percent");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
printf(" set three eng tp mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "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_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_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
||||||
@ -103,6 +118,7 @@ void setupDefinitions() {
|
|||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG PROPELLER LEVER POSITION:3", "percent");
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG PROPELLER LEVER POSITION:3", "percent");
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
|
printf(" set four eng tp mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "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_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_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
||||||
@ -115,21 +131,25 @@ void setupDefinitions() {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
sizeOfDataToSendToFSX = 2*sizeof(double);
|
||||||
}
|
}
|
||||||
else if (!hasPropeller && hasMixture)
|
else if (!hasPropeller && hasMixture)
|
||||||
{
|
{
|
||||||
switch (numEngines) {
|
switch (numEngines) {
|
||||||
case 1:
|
case 1:
|
||||||
|
printf(" set one eng tm mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
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 PROPELLER LEVER POSITION:1", "percent");
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
printf(" set two eng tm mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "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_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_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_TWO, "GENERAL ENG MIXTURE LEVER POSITION:2", "percent");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
printf(" set three eng tm mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "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_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_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
||||||
@ -138,6 +158,7 @@ void setupDefinitions() {
|
|||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG MIXTURE LEVER POSITION:3", "percent");
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG MIXTURE LEVER POSITION:3", "percent");
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
|
printf(" set four eng tm mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "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_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_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
||||||
@ -150,16 +171,19 @@ void setupDefinitions() {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
sizeOfDataToSendToFSX = 2*sizeof(double);
|
||||||
}
|
}
|
||||||
else if (hasPropeller && hasMixture)
|
else if (hasPropeller && hasMixture)
|
||||||
{
|
{
|
||||||
switch (numEngines) {
|
switch (numEngines) {
|
||||||
case 1:
|
case 1:
|
||||||
|
printf(" set one eng tpm mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "percent");
|
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 PROPELLER 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;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
printf(" set two eng tpm mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "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_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_ONE, "GENERAL ENG PROPELLER LEVER POSITION:1", "percent");
|
||||||
@ -168,6 +192,7 @@ void setupDefinitions() {
|
|||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG MIXTURE LEVER POSITION:2", "percent");
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_TWO, "GENERAL ENG MIXTURE LEVER POSITION:2", "percent");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
printf(" set three eng tpm mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "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_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_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
||||||
@ -179,6 +204,7 @@ void setupDefinitions() {
|
|||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG MIXTURE LEVER POSITION:3", "percent");
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_THREE, "GENERAL ENG MIXTURE LEVER POSITION:3", "percent");
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
|
printf(" set four eng tpm mode ... ");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_ENGINE_ONE, "GENERAL ENG THROTTLE LEVER POSITION:1", "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_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_THREE, "GENERAL ENG THROTTLE LEVER POSITION:3", "percent");
|
||||||
@ -195,8 +221,12 @@ void setupDefinitions() {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
sizeOfDataToSendToFSX = sizeof(engineAll);
|
||||||
}
|
}
|
||||||
printf("done!");
|
printf("done!");
|
||||||
|
arduino->writeSerialPort("i", 1);
|
||||||
|
arduino->writeSerialPort((char *)&init, sizeof(initialization));
|
||||||
|
ready = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// SimConnect callback
|
// SimConnect callback
|
||||||
@ -293,8 +323,6 @@ void throttleControl()
|
|||||||
|
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_AC_DATA, "NUMBER OF ENGINES", "number");
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_AC_DATA, "NUMBER OF ENGINES", "number");
|
||||||
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_AC_DATA, "THROTTLE LOWER LIMIT", "percent");
|
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_AC_DATA, "THROTTLE LOWER LIMIT", "percent");
|
||||||
|
|
||||||
//hr = SimConnect_SetDataOnSimObject(hSimConnect, DEFINITION_LEVER_ONE, SIMCONNECT_OBJECT_ID_USER, 0, 0, sizeof(tc), &tc);
|
|
||||||
|
|
||||||
// Request a simulation started event
|
// Request a simulation started event
|
||||||
hr = SimConnect_SubscribeToSystemEvent(hSimConnect, EVENT_SIM_START, "SimStart");
|
hr = SimConnect_SubscribeToSystemEvent(hSimConnect, EVENT_SIM_START, "SimStart");
|
||||||
@ -302,7 +330,112 @@ void throttleControl()
|
|||||||
while (0 == quit)
|
while (0 == quit)
|
||||||
{
|
{
|
||||||
SimConnect_CallDispatch(hSimConnect, MyDispatchProcTC, NULL);
|
SimConnect_CallDispatch(hSimConnect, MyDispatchProcTC, NULL);
|
||||||
Sleep(1);
|
if (ready) {
|
||||||
|
arduino->writeSerialPort("s", 1);
|
||||||
|
arduino->readSerialPort((char *)&potValues, sizeof(values));
|
||||||
|
|
||||||
|
// Set Values
|
||||||
|
int currentEngine = 1;
|
||||||
|
char lastSymbol;
|
||||||
|
for (int i = 3; i >= 0; i--) {
|
||||||
|
if (init.modes[potValues.mode][i] != lastSymbol)
|
||||||
|
currentEngine = 1;
|
||||||
|
if (init.modes[potValues.mode][i] == 'T')
|
||||||
|
{
|
||||||
|
lastSymbol = 'T';
|
||||||
|
switch (currentEngine) {
|
||||||
|
case 1:
|
||||||
|
eAOne.throttlePercent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
eATwo.throttlePercent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
eAThree.throttlePercent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
eAFour.throttlePercent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
currentEngine++;
|
||||||
|
}
|
||||||
|
else if (init.modes[potValues.mode][i] == 'P')
|
||||||
|
{
|
||||||
|
lastSymbol = 'P';
|
||||||
|
switch (currentEngine) {
|
||||||
|
case 1:
|
||||||
|
eAOne.propellerPrecent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
eATwo.propellerPrecent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
eAThree.propellerPrecent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
eAFour.propellerPrecent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
currentEngine++;
|
||||||
|
}
|
||||||
|
else if (init.modes[potValues.mode][i] == 'M')
|
||||||
|
{
|
||||||
|
lastSymbol = 'M';
|
||||||
|
switch (currentEngine) {
|
||||||
|
case 1:
|
||||||
|
if (hasPropeller)
|
||||||
|
eAOne.mixturePercent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
else
|
||||||
|
eAOne.propellerPrecent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (hasPropeller)
|
||||||
|
eATwo.mixturePercent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
else
|
||||||
|
eATwo.propellerPrecent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (hasPropeller)
|
||||||
|
eAThree.mixturePercent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
else
|
||||||
|
eAThree.propellerPrecent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
if (hasPropeller)
|
||||||
|
eAFour.mixturePercent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
else
|
||||||
|
eAFour.propellerPrecent = (double)potValues.leverValuesInPercent[3 - i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
currentEngine++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Send to sim
|
||||||
|
switch (numEngines)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
hr = SimConnect_SetDataOnSimObject(hSimConnect, DEFINITION_ENGINE_ONE, SIMCONNECT_OBJECT_ID_USER, 0, 0, sizeOfDataToSendToFSX, &eAOne);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
hr = SimConnect_SetDataOnSimObject(hSimConnect, DEFINITION_ENGINE_ONE, SIMCONNECT_OBJECT_ID_USER, 0, 0, sizeOfDataToSendToFSX, &eAOne);
|
||||||
|
hr = SimConnect_SetDataOnSimObject(hSimConnect, DEFINITION_ENGINE_TWO, SIMCONNECT_OBJECT_ID_USER, 0, 0, sizeOfDataToSendToFSX, &eATwo);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
hr = SimConnect_SetDataOnSimObject(hSimConnect, DEFINITION_ENGINE_ONE, SIMCONNECT_OBJECT_ID_USER, 0, 0, sizeOfDataToSendToFSX, &eAOne);
|
||||||
|
hr = SimConnect_SetDataOnSimObject(hSimConnect, DEFINITION_ENGINE_TWO, SIMCONNECT_OBJECT_ID_USER, 0, 0, sizeOfDataToSendToFSX, &eATwo);
|
||||||
|
hr = SimConnect_SetDataOnSimObject(hSimConnect, DEFINITION_ENGINE_THREE, SIMCONNECT_OBJECT_ID_USER, 0, 0, sizeOfDataToSendToFSX, &eAThree);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
hr = SimConnect_SetDataOnSimObject(hSimConnect, DEFINITION_ENGINE_ONE, SIMCONNECT_OBJECT_ID_USER, 0, 0, sizeOfDataToSendToFSX, &eAOne);
|
||||||
|
hr = SimConnect_SetDataOnSimObject(hSimConnect, DEFINITION_ENGINE_TWO, SIMCONNECT_OBJECT_ID_USER, 0, 0, sizeOfDataToSendToFSX, &eATwo);
|
||||||
|
hr = SimConnect_SetDataOnSimObject(hSimConnect, DEFINITION_ENGINE_THREE, SIMCONNECT_OBJECT_ID_USER, 0, 0, sizeOfDataToSendToFSX, &eAThree);
|
||||||
|
hr = SimConnect_SetDataOnSimObject(hSimConnect, DEFINITION_ENGINE_FOUR, SIMCONNECT_OBJECT_ID_USER, 0, 0, sizeOfDataToSendToFSX, &eAFour);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Sleep(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
hr = SimConnect_Close(hSimConnect);
|
hr = SimConnect_Close(hSimConnect);
|
||||||
@ -311,6 +444,22 @@ void throttleControl()
|
|||||||
|
|
||||||
int __cdecl _tmain(int argc, _TCHAR* argv[])
|
int __cdecl _tmain(int argc, _TCHAR* argv[])
|
||||||
{
|
{
|
||||||
throttleControl();
|
// Open com to arduino
|
||||||
|
char* portName = "\\\\.\\COM3";
|
||||||
|
arduino = new SerialPort(portName);
|
||||||
|
if (arduino->isConnected()) {
|
||||||
|
// Calibrate
|
||||||
|
printf("\nCalibration ... ");
|
||||||
|
arduino->writeSerialPort("c", 1);
|
||||||
|
printf("done.");
|
||||||
|
char ready;
|
||||||
|
int hasRead = arduino->readSerialPort(&ready, 1);
|
||||||
|
while (hasRead != 1 && ready != 'r')
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
// Start TQ
|
||||||
|
throttleControl();
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -59,20 +59,6 @@ struct aircraftData {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Structs for engines
|
// Structs for engines
|
||||||
struct engineJustThrottle {
|
|
||||||
double throttlePercent;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct engineThrottleAndPropeller {
|
|
||||||
double throttlePercent;
|
|
||||||
double propellerPercent;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct engineThrottleAndMixture {
|
|
||||||
double throttlePercent;
|
|
||||||
double mixturePercent;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct engineAll {
|
struct engineAll {
|
||||||
double throttlePercent;
|
double throttlePercent;
|
||||||
double propellerPrecent;
|
double propellerPrecent;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user