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; |