Subversion Repositories FlightCtrl

Rev

Rev 2527 | Rev 2537 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2527 Rev 2531
Line 139... Line 139...
139
 "Max Altitude!   \0",  // 29
139
 "Max Altitude!   \0",  // 29
140
 "No GPS fix      \0",  // 30
140
 "No GPS fix      \0",  // 30
141
 "compass not cal.\0",  // 31
141
 "compass not cal.\0",  // 31
142
 "BL-Selftest     \0",  // 32
142
 "BL-Selftest     \0",  // 32
143
 "no ext. compass \0",  // 33
143
 "no ext. compass \0",  // 33
144
 "compass sensor  \0"   // 34
144
 "compass sensor  \0",  // 34
-
 
145
 "Failsafe postion\0",  // 35
-
 
146
 "No Redundancy!  \0",  // 36
-
 
147
 "Redundancy test \0"   // 37
-
 
148
 
145
};
149
};
Line 146... Line 150...
146
 
150
 
147
 
151
 
148
const char PROGMEM HOTT_ERROR[MAX_ERR_NUMBER][2] =
152
const char PROGMEM HOTT_ERROR[MAX_ERR_NUMBER][2] =
149
{       // 1 -> only in flight   0 -> also on ground
153
{       // 1 -> only in flight   0 -> also on ground
150
//0123456789123456
154
//0123456789123456
151
         {0,0},// "No Error        \0",  // 0
155
         {0,0},// "No Error        \0",  // 0
152
         {SPEAK_ERROR,0},               // "Not compatible  \0",  // 1
156
         {SPEAK_ERROR,0},               // "Not compatible  \0",        // 1
153
         {SPEAK_ERROR,0},               // "MK3Mag not compa\0",  // 2
157
         {SPEAK_ERROR,0},               // "MK3Mag not compa\0",        // 2
154
         {SPEAK_ERR_NAVI,1},    // "No FC communicat\0",  // 3
158
         {SPEAK_ERR_NAVI,1},    // "No FC communicat\0",        // 3
155
         {SPEAK_ERR_COMPASS,1}, // "MK3Mag communica\0",  // 4
159
         {SPEAK_ERR_COMPASS,1}, // "MK3Mag communica\0",        // 4
156
         {SPEAK_ERR_GPS,0},             // "GPS communicatio\0",  // 5
160
         {SPEAK_ERR_GPS,0},             // "GPS communicatio\0",        // 5
157
         {SPEAK_ERR_COMPASS,1}, // "compass value   \0",  // 6
161
         {SPEAK_ERR_COMPASS,1}, // "compass value   \0",        // 6
158
         {SPEAK_ERR_RECEICER,0},// "RC Signal lost  \0",  // 7
162
         {SPEAK_ERR_RECEICER,0},// "RC Signal lost  \0",        // 7
159
         {SPEAK_ERR_NAVI,0},    // "FC spi rx error \0",  // 8
163
         {SPEAK_ERR_NAVI,0},    // "FC spi rx error \0",        // 8
160
         {SPEAK_ERR_NAVI,0},    // "No NC communicat\0",  // 9
164
         {SPEAK_ERR_NAVI,0},    // "No NC communicat\0",        // 9
161
         {SPEAK_ERR_SENSOR,0},  // "FC Nick Gyro    \0",  // 10
165
         {SPEAK_ERR_SENSOR,0},  // "FC Nick Gyro    \0",        // 10
162
         {SPEAK_ERR_SENSOR,0},  // "FC Roll Gyro    \0",  // 11
166
         {SPEAK_ERR_SENSOR,0},  // "FC Roll Gyro    \0",        // 11
163
         {SPEAK_ERR_SENSOR,0},  // "FC Yaw Gyro     \0",  // 12
167
         {SPEAK_ERR_SENSOR,0},  // "FC Yaw Gyro     \0",        // 12
164
         {SPEAK_ERR_SENSOR,0},  // "FC Nick ACC     \0",  // 13
168
         {SPEAK_ERR_SENSOR,0},  // "FC Nick ACC     \0",        // 13
165
         {SPEAK_ERR_SENSOR,0},  // "FC Roll ACC     \0",  // 14
169
         {SPEAK_ERR_SENSOR,0},  // "FC Roll ACC     \0",        // 14
166
         {SPEAK_ERR_SENSOR,0},  // "FC Z-ACC        \0",  // 15
170
         {SPEAK_ERR_SENSOR,0},  // "FC Z-ACC        \0",        // 15
167
         {SPEAK_ERR_SENSOR,0},  // "Pressure sensor \0",  // 16
171
         {SPEAK_ERR_SENSOR,0},  // "Pressure sensor \0",        // 16
168
         {SPEAK_ERR_DATABUS,1}, // "I2C FC->BL-Ctrl \0",  // 17
172
         {SPEAK_ERR_DATABUS,1}, // "I2C FC->BL-Ctrl \0",        // 17
169
         {SPEAK_ERR_DATABUS,1}, // "Bl Missing      \0",  // 18
173
         {SPEAK_ERR_DATABUS,1}, // "Bl Missing      \0",        // 18
170
         {SPEAK_ERROR,0},               // "Mixer Error     \0",  // 19
174
         {SPEAK_ERROR,0},               // "Mixer Error     \0",        // 19
171
         {SPEAK_CF_OFF,1},              // "Carefree Error  \0",  // 20
175
         {SPEAK_CF_OFF,1},              // "Carefree Error  \0",        // 20
172
         {SPEAK_GPS_FIX,1},             // "GPS Fix lost    \0",  // 21
176
         {SPEAK_GPS_FIX,1},             // "GPS Fix lost    \0",        // 21
173
         {SPEAK_ERR_COMPASS,0}, // "Magnet Error    \0",  // 22
177
         {SPEAK_ERR_COMPASS,0}, // "Magnet Error    \0",        // 22
174
         {SPEAK_ERR_MOTOR,1},   // "Motor restart   \0",  // 23
178
         {SPEAK_ERR_MOTOR,1},   // "Motor restart   \0",        // 23
175
         {SPEAK_MAX_TEMPERAT,1},// "BL Limitation   \0",  // 24
179
         {SPEAK_MAX_TEMPERAT,1},// "BL Limitation   \0",        // 24
176
         {SPEAK_MAX_RANGE,1},   // "GPS Range       \0",  // 25
180
         {SPEAK_MAX_RANGE,1},   // "GPS Range       \0",        // 25
177
         {SPEAK_ERROR,1},               // "No SD-Card      \0",  // 26
181
         {SPEAK_ERROR,1},               // "No SD-Card      \0",        // 26
178
         {SPEAK_ERROR,1},               // "SD-Logging error\0",  // 27
182
         {SPEAK_ERROR,1},               // "SD-Logging error\0",        // 27
179
         {SPEAK_MAX_RANGE,1},   // "Flying range!   \0",  // 28
183
         {SPEAK_MAX_RANGE,1},   // "Flying range!   \0",        // 28
180
         {SPEAK_MAX_ALTITUD,1}, // "Max Altitude!   \0"   // 29
184
         {SPEAK_MAX_ALTITUD,1}, // "Max Altitude!   \0"         // 29
181
         {SPEAK_GPS_FIX,1},             // "No GPS fix      \0"   // 30
185
         {SPEAK_GPS_FIX,1},             // "No GPS fix      \0"         // 30
182
         {SPEAK_ERR_CALIBARTION,0},// "compass not cal." // 31
186
         {SPEAK_ERR_CALIBARTION,0},// "compass not cal."        // 31
183
         {SPEAK_ERR_MOTOR,0},   // "BL-Selftest     \0"   // 32
187
         {SPEAK_ERR_MOTOR,0},   // "BL-Selftest     \0"         // 32
-
 
188
         {SPEAK_ERR_COMPASS,0}, // "no ext. compass"            // 33
-
 
189
         {SPEAK_ERR_COMPASS,0}, // "compass sensor"             // 34
-
 
190
         {SPEAK_ERROR,1},               // "Failsafe postion0",         // 35
184
         {SPEAK_ERR_COMPASS,0}, // "no ext. compass"     // 33
191
         {SPEAK_ERROR,0},               // "No Redundancy!",            // 36
Line 185... Line 192...
185
         {SPEAK_ERR_COMPASS,0}  // "compass sensor"      // 34
192
         {0,0}                                  // "Redundancy test",           // 37
186
};
193
};
187
 
194
 
Line 269... Line 276...
269
unsigned char HoTT_Waring(void)
276
unsigned char HoTT_Waring(void)
270
{
277
{
271
  unsigned char status = 0;
278
  unsigned char status = 0;
272
  static char old_status = 0;
279
  static char old_status = 0;
273
  static int repeat;
280
  static int repeat;
274
//if(Parameter_UserParam1) return(Parameter_UserParam1); 
281
//if(Parameter_UserParam1) SpeakHoTT = Parameter_UserParam1;
275
  ToNC_SpeakHoTT = SpeakHoTT;
282
  ToNC_SpeakHoTT = SpeakHoTT;
276
  if(FC_StatusFlags & FC_STATUS_LOWBAT)
283
  if(FC_StatusFlags & FC_STATUS_LOWBAT)
277
   {
284
   {
278
    if(LowVoltageLandingActive && (EE_Parameter.Receiver == RECEIVER_HOTT)) status = SPEAK_LANDING;
285
    if(LowVoltageLandingActive && (EE_Parameter.Receiver == RECEIVER_HOTT)) status = SPEAK_LANDING;
279
        else status = VOICE_MINIMALE_EINGANSSPANNUNG; // Jeti hat kein wort: "LANDEN"
286
        else status = VOICE_MINIMALE_EINGANSSPANNUNG; // Jeti hat kein wort: "LANDEN"
Line 393... Line 400...
393
 
400
 
394
//---------------------------------------------------------------
401
//---------------------------------------------------------------
395
unsigned char HoTT_Telemety(unsigned char packet_request)
402
unsigned char HoTT_Telemety(unsigned char packet_request)
396
{
403
{
-
 
404
 unsigned char i = 0;
397
 unsigned char i = 0;
405
 static unsigned char SpeechMessage = 0;
Line 398... Line 406...
398
  //Debug("rqst: %02X",packet_request);
406
  //Debug("rqst: %02X",packet_request);
399
 
407
 
400
 switch(packet_request)
408
 switch(packet_request)
401
 {
409
 {
-
 
410
  case HOTT_VARIO_PACKET_ID:
402
  case HOTT_VARIO_PACKET_ID:
411
                if(GPSPacket.WarnBeep == SpeechMessage) SpeechMessage = HoTT_Waring(); // Achtung: das ist richtig hier, damit der Varioton schon vorher abgestellt wird
403
                GPSPacket.WarnBeep = HoTT_Waring(); // Achtung: das ist richtig hier, damit der Varioton schon vorher abgestellt wird
412
 
404
                VarioPacket.Altitude = HoehenWert/100 + 500;  
413
                VarioPacket.Altitude = HoehenWert/100 + 500;  
405
                if(!GPSPacket.WarnBeep) VarioPacket.m_sec = BuildHoTT_Vario(); else VarioPacket.m_sec = VARIO_ZERO;
414
                if(!SpeechMessage) VarioPacket.m_sec = BuildHoTT_Vario(); else VarioPacket.m_sec = VARIO_ZERO;
406
                VarioPacket.m_3sec = VarioPacket.m_sec;
415
                VarioPacket.m_3sec = VarioPacket.m_sec;
407
                VarioPacket.m_10sec = VarioPacket.m_sec;
416
                VarioPacket.m_10sec = VarioPacket.m_sec;
408
                if (VarioPacket.Altitude < VarioPacket.MinAltitude) VarioPacket.MinAltitude = VarioPacket.Altitude;
417
                if (VarioPacket.Altitude < VarioPacket.MinAltitude) VarioPacket.MinAltitude = VarioPacket.Altitude;
Line 492... Line 501...
492
         }
501
         }
493
         else
502
         else
494
         {
503
         {
495
          if(FC_StatusFlags3 & FC_STATUS3_BOAT) for(i=0; i<21;i++) VarioPacket.Text[i] = pgm_read_byte(&BOAT_MODE[i]); // no Error
504
          if(FC_StatusFlags3 & FC_STATUS3_BOAT) for(i=0; i<21;i++) VarioPacket.Text[i] = pgm_read_byte(&BOAT_MODE[i]); // no Error
496
          else  for(i=0; i<21;i++) VarioPacket.Text[i] = pgm_read_byte(&MIKROKOPTER[i]); // no Error
505
          else  for(i=0; i<21;i++) VarioPacket.Text[i] = pgm_read_byte(&MIKROKOPTER[i]); // no Error
497
          if(FC_StatusFlags3 & FC_STATUS3_REDUNDANCE)  VarioPacket.Text[0] = 'R';
506
          if(FC_StatusFlags3 & FC_STATUS3_REDUNDANCE_AKTIVE)  VarioPacket.Text[0] = 'R';
498
         }
507
         }
499
                return(sizeof(VarioPacket));
508
                return(sizeof(VarioPacket));
500
                break;
509
                break;
Line 501... Line 510...
501
 
510
 
502
  case HOTT_GPS_PACKET_ID:
511
  case HOTT_GPS_PACKET_ID:
503
                GPSPacket.Altitude = HoehenWert/100 + 500;  
512
                GPSPacket.Altitude = HoehenWert/100 + 500;  
504
//              GPSPacket.Distance = GPSInfo.HomeDistance/10;  // macht die NC
513
//              GPSPacket.Distance = GPSInfo.HomeDistance/10;  // macht die NC
505
//              GPSPacket.Heading = GPSInfo.HomeBearing/2;     // macht die NC
514
//              GPSPacket.Heading = GPSInfo.HomeBearing/2;     // macht die NC
506
//              GPSPacket.Speed = (GPSInfo.Speed * 36) / 10;   // macht die NC
515
//              GPSPacket.Speed = (GPSInfo.Speed * 36) / 10;   // macht die NC
507
//      GPSPacket.WarnBeep = HoTT_Waring();                //(wird jetzt weiter oben gemacht)
516
                GPSPacket.WarnBeep = SpeechMessage;
508
                if(!GPSPacket.WarnBeep) GPSPacket.m_sec = BuildHoTT_Vario(); else GPSPacket.m_sec = VARIO_ZERO;
517
                if(!GPSPacket.WarnBeep) GPSPacket.m_sec = BuildHoTT_Vario(); else GPSPacket.m_sec = VARIO_ZERO;
509
                GPSPacket.m_3sec = 120;
518
                GPSPacket.m_3sec = 120;
510
                GPSPacket.NumOfSats = GPSInfo.NumOfSats;
519
                GPSPacket.NumOfSats = GPSInfo.NumOfSats;
511
                if(GPSInfo.Flags & FLAG_DIFFSOLN) GPSPacket.SatFix = 'D';
520
                if(GPSInfo.Flags & FLAG_DIFFSOLN) GPSPacket.SatFix = 'D';
Line 527... Line 536...
527
                ElectricAirPacket.VoltageCell8 = ElectricAirPacket.VoltageCell1;
536
                ElectricAirPacket.VoltageCell8 = ElectricAirPacket.VoltageCell1;
528
                ElectricAirPacket.VoltageCell6 = GPSInfo.HomeBearing / 2;
537
                ElectricAirPacket.VoltageCell6 = GPSInfo.HomeBearing / 2;
529
                ElectricAirPacket.VoltageCell7 = GPSInfo.HomeDistance/20;
538
                ElectricAirPacket.VoltageCell7 = GPSInfo.HomeDistance/20;
530
                ElectricAirPacket.VoltageCell13 = ElectricAirPacket.VoltageCell6;
539
                ElectricAirPacket.VoltageCell13 = ElectricAirPacket.VoltageCell6;
531
                ElectricAirPacket.VoltageCell14 = ElectricAirPacket.VoltageCell7;
540
                ElectricAirPacket.VoltageCell14 = ElectricAirPacket.VoltageCell7;
532
        if(!GPSPacket.WarnBeep) ElectricAirPacket.m_sec = BuildHoTT_Vario(); else ElectricAirPacket.m_sec = VARIO_ZERO;
541
        if(!SpeechMessage) ElectricAirPacket.m_sec = BuildHoTT_Vario(); else ElectricAirPacket.m_sec = VARIO_ZERO;
533
                ElectricAirPacket.m_3sec = 120;
542
                ElectricAirPacket.m_3sec = 120;
534
                ElectricAirPacket.InputVoltage = UBat;
543
                ElectricAirPacket.InputVoltage = UBat;
535
                ElectricAirPacket.Temperature1 = MinBlTemperture + 20;
544
                ElectricAirPacket.Temperature1 = MinBlTemperture + 20;
536
                ElectricAirPacket.Temperature2 = MaxBlTemperture + 20;
545
                ElectricAirPacket.Temperature2 = MaxBlTemperture + 20;
537
                ElectricAirPacket.Capacity = Capacity.UsedCapacity/10;
546
                ElectricAirPacket.Capacity = Capacity.UsedCapacity/10;
538
//              ElectricAirPacket.WarnBeep = 0;//HoTT_Waring();
547
                ElectricAirPacket.WarnBeep = 0;//HoTT_Waring();
539
ElectricAirPacket.WarnBeep = GPSPacket.WarnBeep;
548
//ElectricAirPacket.WarnBeep = SpeechMessage;
540
                ElectricAirPacket.Current = Capacity.ActualCurrent;
549
                ElectricAirPacket.Current = Capacity.ActualCurrent;
541
                HoTT_DataPointer = (unsigned char *) &ElectricAirPacket;
550
                HoTT_DataPointer = (unsigned char *) &ElectricAirPacket;
542
                ElectricAirPacket.FlightTimeMinutes = FlugSekunden / 60;
551
                ElectricAirPacket.FlightTimeMinutes = FlugSekunden / 60;
543
                ElectricAirPacket.FlightTimeSeconds = FlugSekunden % 60;
552
                ElectricAirPacket.FlightTimeSeconds = FlugSekunden % 60;
544
                return(sizeof(ElectricAirPacket));
553
                return(sizeof(ElectricAirPacket));
Line 558... Line 567...
558
                HoTTGeneral.FuelCapacity = NC_ErrorCode;//HoehenWert/100; // Oelpegel
567
                HoTTGeneral.FuelCapacity = NC_ErrorCode;//HoehenWert/100; // Oelpegel
559
//              if(HoTTGeneral.FuelCapacity < 0) HoTTGeneral.FuelCapacity = 0;
568
//              if(HoTTGeneral.FuelCapacity < 0) HoTTGeneral.FuelCapacity = 0;
560
                HoTTGeneral.Altitude = HoehenWert/100 + 500;
569
                HoTTGeneral.Altitude = HoehenWert/100 + 500;
561
                HoTTGeneral.Battery1 = UBat;
570
                HoTTGeneral.Battery1 = UBat;
562
                HoTTGeneral.Battery2 = UBat;
571
                HoTTGeneral.Battery2 = UBat;
563
                if(!GPSPacket.WarnBeep) HoTTGeneral.m_sec =  BuildHoTT_Vario(); else  HoTTGeneral.m_sec = VARIO_ZERO;
572
                if(!SpeechMessage) HoTTGeneral.m_sec =  BuildHoTT_Vario(); else  HoTTGeneral.m_sec = VARIO_ZERO;
564
                HoTTGeneral.m_3sec = 120 + GPSPacket.WarnBeep;
573
                HoTTGeneral.m_3sec = 120 + SpeechMessage;
565
                HoTTGeneral.InputVoltage = UBat;
574
                HoTTGeneral.InputVoltage = UBat;
566
                HoTTGeneral.Temperature1 = MinBlTemperture + 20;
575
                HoTTGeneral.Temperature1 = MinBlTemperture + 20;
567
                HoTTGeneral.Temperature2 = MaxBlTemperture + 20;
576
                HoTTGeneral.Temperature2 = MaxBlTemperture + 20;
568
                HoTTGeneral.Capacity = Capacity.UsedCapacity/10;
577
                HoTTGeneral.Capacity = Capacity.UsedCapacity/10;
569
                HoTTGeneral.WarnBeep = 0;//HoTT_Waring();
578
HoTTGeneral.WarnBeep = 0;
570
                HoTTGeneral.Current = Capacity.ActualCurrent;
579
                HoTTGeneral.Current = Capacity.ActualCurrent;
571
//HoTTGeneral.ErrorNumber = HoTTErrorCode();
580
//HoTTGeneral.ErrorNumber = HoTTErrorCode();
572
                HoTT_DataPointer = (unsigned char *) &HoTTGeneral;
581
                HoTT_DataPointer = (unsigned char *) &HoTTGeneral;
573
                return(sizeof(HoTTGeneral));
582
                return(sizeof(HoTTGeneral));
574
                break;
583
                break;