   }
   
   // check AOA value and set tone and pauses between tones according to 
-  if(AOA >= HIGH_TONE_AOA_STALL) {
+  if(AOA >= AoaToneMatrix[WhichEFIS][POS_HIGH_TONE_AOA_STALL]) {
     // play 20 pps HIGH tone
     highTone = true;
     setPPSTone(HIGH_TONE_STALL_PPS);
     toneMode = PULSE_TONE;
-  } else if(AOA >= HIGH_TONE_AOA_START) {
+  } else if(AOA >= AoaToneMatrix[WhichEFIS][POS_HIGH_TONE_AOA_START]) {
     // play HIGH tone at Pulse Rate 1.5 PPS to 6.2 PPS (depending on AOA value)
     highTone = true;
-    OldValue = AOA-(HIGH_TONE_AOA_START-1);
+    OldValue = AOA-(AoaToneMatrix[WhichEFIS][POS_HIGH_TONE_AOA_START]-1);
     toneMode = PULSE_TONE;
     // scale number using this. http://stackoverflow.com/questions/929103/convert-a-number-range-to-another-range-maintaining-ratio
-    OldRange = HIGH_TONE_AOA_STALL - HIGH_TONE_AOA_START; //20 - 1;  //(OldMax - OldMin)  
+    OldRange = AoaToneMatrix[WhichEFIS][POS_HIGH_TONE_AOA_STALL] - AoaToneMatrix[WhichEFIS][POS_HIGH_TONE_AOA_START]; //20 - 1;  //(OldMax - OldMin)  
     NewRange = HIGH_TONE_PPS_MAX - HIGH_TONE_PPS_MIN; // (NewMax - NewMin)  
     NewValue = (((OldValue - 1) * NewRange) / OldRange) + HIGH_TONE_PPS_MIN; //(((OldValue - OldMin) * NewRange) / OldRange) + NewMin
     setPPSTone(NewValue);
-  } else if(AOA >= LOW_TONE_AOA_SOLID) {
+  } else if(AOA >= AoaToneMatrix[WhichEFIS][POS_LOW_TONE_AOA_SOLID]) {
     // play a steady LOW tone
     highTone = false;
     toneMode = SOLID_TONE;
-  } else if(AOA > LOW_TONE_AOA_START) {
+  } else if(AOA > AoaToneMatrix[WhichEFIS][POS_LOW_TONE_AOA_START]) {
     toneMode = PULSE_TONE;
     highTone = false;
     // play LOW tone at Pulse Rate 1.5 PPS to 8.2 PPS (depending on AOA value)
     // scale number using this. http://stackoverflow.com/questions/929103/convert-a-number-range-to-another-range-maintaining-ratio
-    OldValue = AOA-LOW_TONE_AOA_START;
-    OldRange = LOW_TONE_AOA_SOLID - LOW_TONE_AOA_START; //40 - 1;  //(OldMax - OldMin)  
+    OldValue = AOA - AoaToneMatrix[WhichEFIS][POS_LOW_TONE_AOA_START];
+    OldRange = AoaToneMatrix[WhichEFIS][POS_LOW_TONE_AOA_SOLID] - AoaToneMatrix[WhichEFIS][POS_LOW_TONE_AOA_START]; //40 - 1;  //(OldMax - OldMin)  
     NewRange = LOW_TONE_PPS_MAX - LOW_TONE_PPS_MIN; // (NewMax - NewMin)  
     NewValue = (((OldValue - 1) * NewRange) / OldRange) + LOW_TONE_PPS_MIN; //(((OldValue - OldMin) * NewRange) / OldRange) + NewMin
     setPPSTone(NewValue);

  Timer4.attachInterrupt(tonePlayHandler);
  Timer4.setFrequency(FREQ_OF_FUNCTION);  // set how often we should run the callback function.
  Timer4.start();

}



        // check for dynon skyview data. based on length of string and if the 1st 2 chars match
        if (inChar == '\n' && inputPos == DYNON_SKYVIEW_SERIAL_LEN && input[0]=='!' && input[1]=='1') {
          WhichEFIS = SKYVIEW;  // set skyview efis detected.
          // skyview data starts with a '!1'... the D series efis has no line prefix.  
          tempBuf[0] = input[43]; // get the 2 bytes for aoa on skyview.
          tempBuf[1] = input[44]; // 
