@@ -61,7 +61,6 @@ enum FLIGHT_PHASE {
6161
6262bool quit = false ;
6363bool initiatedPushback = false ;
64- bool stoppedPushback = false ;
6564bool completedTakeOff = false ;
6665bool hasFlown = false ;
6766int onStandState = 0 ;
@@ -76,6 +75,7 @@ int lastSoftkey = 0;
7675int lastG1000Key = 0 ;
7776time_t lastG1000Press = 0 ;
7877int seatBeltsReplicateDelay = 0 ;
78+ int fixedPushback = -1 ;
7979LVars_A310 a310Vars;
8080LVars_A320 a320Vars;
8181HANDLE hSimConnect = NULL ;
@@ -100,7 +100,6 @@ char* prevInstrumentsData;
100100char * prevAutopilotData;
101101char * prevRadioData;
102102char * prevLightsData;
103- time_t lastPushbackAdjust = 0 ;
104103
105104int active = -1 ;
106105int bytes;
@@ -394,6 +393,27 @@ void CALLBACK MyDispatchProc(SIMCONNECT_RECV* pData, DWORD cbData, void* pContex
394393 completedTakeOff = false ;
395394 }
396395
396+ if (fixedPushback != -1 ) {
397+ // Pushback goes wrong sometimes (pushbackState == 4)
398+ fixedPushback++;
399+ if (fixedPushback == 20 ) {
400+ if (simVars.pushbackState < 4 ) {
401+ fixedPushback = -1 ;
402+ }
403+ else {
404+ printf (" Extra start pushback\n " );
405+ SimConnect_TransmitClientEvent (hSimConnect, 0 , KEY_TOGGLE_PUSHBACK, 0 , SIMCONNECT_GROUP_PRIORITY_HIGHEST, SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY);
406+ }
407+ }
408+ else if (fixedPushback == 40 ) {
409+ fixedPushback = -1 ;
410+ if (simVars.pushbackState < 3 ) {
411+ printf (" Extra stop pushback\n " );
412+ SimConnect_TransmitClientEvent (hSimConnect, 0 , KEY_TOGGLE_PUSHBACK, 0 , SIMCONNECT_GROUP_PRIORITY_HIGHEST, SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY);
413+ }
414+ }
415+ }
416+
397417 if (!simVars.connected || simVars.elecBat1 == 0 ) {
398418 hasFlown = false ;
399419 simVars.landingRate = -999 ;
@@ -1015,12 +1035,11 @@ void processRequest()
10151035 request.writeData .eventId = KEY_TOGGLE_PUSHBACK;
10161036 if (event == EVENT_PUSHBACK_START) {
10171037 initiatedPushback = true ;
1018- stoppedPushback = false ;
1038+ fixedPushback = - 1 ;
10191039 }
10201040 else {
1021- stoppedPushback = true ;
1041+ fixedPushback = 0 ;
10221042 }
1023- time (&lastPushbackAdjust);
10241043 }
10251044 else {
10261045 return ;
@@ -1035,6 +1054,10 @@ void processRequest()
10351054 processG1000Events ();
10361055 }
10371056
1057+ if (request.writeData .eventId == KEY_TOGGLE_RAMPTRUCK) {
1058+ printf (" Ramp truck requested\n " );
1059+ }
1060+
10381061 if (SimConnect_TransmitClientEvent (hSimConnect, 0 , request.writeData .eventId , (DWORD)request.writeData .value , SIMCONNECT_GROUP_PRIORITY_HIGHEST, SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY) != 0 ) {
10391062 printf (" Failed to transmit event: %d\n " , request.writeData .eventId );
10401063 }
0 commit comments