@@ -69,6 +69,7 @@ bool isA310 = false;
6969bool isA320 = false ;
7070bool is747 = false ;
7171bool isK100 = false ;
72+ bool isPA28 = false ;
7273bool isAirliner = false ;
7374double lastHeading = 0 ;
7475int lastSoftkey = 0 ;
@@ -213,6 +214,7 @@ void CALLBACK MyDispatchProc(SIMCONNECT_RECV* pData, DWORD cbData, void* pContex
213214 isA320 = false ;
214215 is747 = false ;
215216 isK100 = false ;
217+ isPA28 = false ;
216218 isAirliner = false ;
217219
218220 if (strncmp (simVars.aircraft , " A310" , 4 ) == 0 || strncmp (simVars.aircraft , " Airbus A310" , 11 ) == 0 ) {
@@ -230,6 +232,9 @@ void CALLBACK MyDispatchProc(SIMCONNECT_RECV* pData, DWORD cbData, void* pContex
230232 else if (strncmp (simVars.aircraft , " Kodiak 100" , 10 ) == 0 ) {
231233 isK100 = true ;
232234 }
235+ else if (strncmp (simVars.aircraft , " Just Flight PA28" , 16 ) == 0 ) {
236+ isPA28 = true ;
237+ }
233238 else if (strncmp (simVars.aircraft , " Airbus" , 6 ) == 0 || strncmp (simVars.aircraft , " Boeing" , 6 ) == 0 ) {
234239 isAirliner = true ;
235240 }
@@ -249,7 +254,7 @@ void CALLBACK MyDispatchProc(SIMCONNECT_RECV* pData, DWORD cbData, void* pContex
249254 else {
250255 simVars.apuPercentRpm = 0 ;
251256 }
252- simVars. suctionPressure = 5 ;
257+
253258 if (seatBeltsReplicateDelay > 0 ) {
254259 seatBeltsReplicateDelay--;
255260 }
@@ -373,6 +378,11 @@ void CALLBACK MyDispatchProc(SIMCONNECT_RECV* pData, DWORD cbData, void* pContex
373378 simVars.elecBat1 = simVars.dcVolts > 0 ;
374379 }
375380
381+ if (simVars.connected && isAirliner && simVars.engineFuelFlow1 > 0 && simVars.suctionPressure < 0.001 ) {
382+ // Stop Annunciator reporting a vacuum fault on airliners
383+ simVars.suctionPressure = 5 ;
384+ }
385+
376386 if (simVars.altAboveGround > 50 ) {
377387 hasFlown = true ;
378388 simVars.landingRate = -999 ;
@@ -550,6 +560,14 @@ void init()
550560 addReadDefs ();
551561 mapEvents ();
552562
563+ for (int i = 0 ; i < 7 ; i++) {
564+ if (i < 4 ) {
565+ simVars.sbEncoder [i] = 0 ;
566+ }
567+ simVars.sbButton [i] = 1 ;
568+ }
569+ simVars.sbMode = 3 ; // Autopilot / Radio / Instruments
570+
553571 // Start requesting data
554572 if (SimConnect_RequestDataOnSimObject (hSimConnect, REQ_ID, DEF_READ_ALL, SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_VISUAL_FRAME, 0 , 0 , 0 , 0 ) != 0 ) {
555573 printf (" Failed to start requesting data\n " );
@@ -934,6 +952,30 @@ void processG1000Events()
934952 time (&lastG1000Press);
935953}
936954
955+ void processSwitchBox (int joyNum)
956+ {
957+ switch (joyNum) {
958+ case 1 : simVars.sbEncoder [0 ]++; break ;
959+ case 2 : simVars.sbEncoder [0 ]--; break ;
960+ case 3 : simVars.sbButton [0 ]++; break ;
961+ case 4 : simVars.sbEncoder [1 ]++; break ;
962+ case 5 : simVars.sbEncoder [1 ]--; break ;
963+ case 6 : simVars.sbButton [1 ]++; break ;
964+ case 7 : simVars.sbEncoder [2 ]++; break ;
965+ case 8 : simVars.sbEncoder [2 ]--; break ;
966+ case 9 : simVars.sbButton [2 ]++; break ;
967+ case 10 : simVars.sbEncoder [3 ]++; break ;
968+ case 11 : simVars.sbEncoder [3 ]--; break ;
969+ case 12 : simVars.sbButton [3 ]++; break ;
970+ case 13 : simVars.sbButton [4 ]++; break ;
971+ case 14 : simVars.sbButton [5 ]++; break ;
972+ case 15 : simVars.sbButton [6 ]++; break ;
973+ case 17 : simVars.sbMode = 1 ; break ; // Autopilot
974+ case 18 : simVars.sbMode = 2 ; break ; // Radio
975+ case 19 : simVars.sbMode = 3 ; break ; // Instruments
976+ }
977+ }
978+
937979void processRequest ()
938980{
939981 if (request.requestedSize == writeDataSize) {
@@ -961,8 +1003,8 @@ void processRequest()
9611003
9621004 // // For testing only - Leave commented out
9631005 // if (request.writeData.eventId == KEY_CABIN_SEATBELTS_ALERT_SWITCH_TOGGLE) {
964- // request.writeData.eventId = KEY_CABIN_SEATBELTS_ALERT_SWITCH_TOGGLE ;
965- // request.writeData.value = 1 ;
1006+ // request.writeData.eventId = KEY_COM2_VOLUME_SET ;
1007+ // request.writeData.value = 0 ;
9661008 // printf("Intercepted event - Changed to: %d = %f\n", request.writeData.eventId, request.writeData.value);
9671009 // }
9681010 // else {
@@ -1006,6 +1048,9 @@ void processRequest()
10061048 else if (isK100 && jetbridgeK100ButtonPress (request.writeData .eventId , request.writeData .value )) {
10071049 return ;
10081050 }
1051+ else if (isPA28 && jetbridgePA28ButtonPress (request.writeData .eventId , request.writeData .value )) {
1052+ return ;
1053+ }
10091054 else if (jetbridgeMiscButtonPress (request.writeData .eventId , request.writeData .value )) {
10101055 return ;
10111056 }
@@ -1054,6 +1099,22 @@ void processRequest()
10541099 processG1000Events ();
10551100 }
10561101
1102+ if (request.writeData .eventId == SWITCHBOX_JOY) {
1103+ processSwitchBox (request.writeData .value );
1104+ if (request.writeData .value > 16 ) {
1105+ // Mode switch so send reply to client
1106+ EVENT_ID event;
1107+ if (strncmp (simVars.aircraft , " Cessna 152" , 10 ) == 0 ) {
1108+ event = EVENT_IS_CESSNA_152;
1109+ }
1110+ else {
1111+ event = EVENT_NOT_CESSNA_152;
1112+ }
1113+ sendto (sockfd, (char *)&event, sizeof (int ), 0 , (SOCKADDR*)&senderAddr, addrSize);
1114+ }
1115+ return ;
1116+ }
1117+
10571118 if (request.writeData .eventId == KEY_TOGGLE_RAMPTRUCK) {
10581119 printf (" Ramp truck requested\n " );
10591120 }
0 commit comments