Rev 588 | Rev 605 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 588 | Rev 598 | ||
---|---|---|---|
Line 422... | Line 422... | ||
422 | ToFlightCtrl.Param.Byte[2] = GPSData.SatFix; |
422 | ToFlightCtrl.Param.Byte[2] = GPSData.SatFix; |
423 | ToFlightCtrl.Param.Byte[3] = GPSData.Speed_Ground / 100; // m/s |
423 | ToFlightCtrl.Param.Byte[3] = GPSData.Speed_Ground / 100; // m/s |
424 | ToFlightCtrl.Param.Int[2] = NaviData.HomePositionDeviation.Distance; // dm //4&5 |
424 | ToFlightCtrl.Param.Int[2] = NaviData.HomePositionDeviation.Distance; // dm //4&5 |
425 | ToFlightCtrl.Param.sInt[3] = NaviData.HomePositionDeviation.Bearing; // deg //6&7 |
425 | ToFlightCtrl.Param.sInt[3] = NaviData.HomePositionDeviation.Bearing; // deg //6&7 |
426 | if(FC_WP_EventChannel > 254) FC_WP_EventChannel = 254; // Muss in SPI_NCCMD_GPSINFO bleiben! (siehe oben) |
426 | if(FC_WP_EventChannel > 254) FC_WP_EventChannel = 254; // Muss in SPI_NCCMD_GPSINFO bleiben! (siehe oben) |
- | 427 | if(FC_WP_EventChannel) |
|
- | 428 | { |
|
427 | if(FC_WP_EventChannel) LogFC_WP_EventChannel = FC_WP_EventChannel; // to make sure that it will be logged |
429 | LogFC_WP_EventChannel = FC_WP_EventChannel; // to make sure that it will be logged |
- | 430 | NaviData_WP.WP_Eventchannel = FC_WP_EventChannel; // to make sure that it will be logged |
|
- | 431 | } |
|
428 | FC_WP_EventChannel_Processed = 1; |
432 | FC_WP_EventChannel_Processed = 1; |
429 | // ++++++++++++++++++++++++++++++++++ |
433 | // ++++++++++++++++++++++++++++++++++ |
430 | // Waypoint event +++++++++++++++++++ |
434 | // Waypoint event +++++++++++++++++++ |
431 | // ++++++++++++++++++++++++++++++++++ |
435 | // ++++++++++++++++++++++++++++++++++ |
432 | if(NCRARAM_STATE_VALID == NCParams_GetValue(NCPARAMS_WP_EVENT_ONCE, &tmp)) |
436 | if(NCRARAM_STATE_VALID == NCParams_GetValue(NCPARAMS_WP_EVENT_ONCE, &tmp)) |
Line 650... | Line 654... | ||
650 | } |
654 | } |
651 | else // Ansonsten die aktuelle Richtung übernehmen |
655 | else // Ansonsten die aktuelle Richtung übernehmen |
652 | HeadFreeStartAngle = GyroCompassCorrected; // in 0.1° |
656 | HeadFreeStartAngle = GyroCompassCorrected; // in 0.1° |
653 | } |
657 | } |
654 | } |
658 | } |
655 | Parameter.ActiveSetting = FromFlightCtrl.Param.Byte[9]; |
- | |
656 | FC.BAT_Voltage = FromFlightCtrl.Param.Byte[10]; |
- | |
657 | DebugOut.Analog[7] = FC.BAT_Voltage; |
- | |
658 | DebugOut.Analog[5] = FC.StatusFlags; |
- | |
659 | NaviData.FCStatusFlags = FC.StatusFlags; |
659 | NaviData.FCStatusFlags = FC.StatusFlags; |
660 | if(FC.StatusFlags2 & FC_STATUS2_WAIT_FOR_TAKEOFF) NaviData.FCStatusFlags &= ~FC_STATUS_FLY; |
660 | if(FC.StatusFlags2 & FC_STATUS2_WAIT_FOR_TAKEOFF) NaviData.FCStatusFlags &= ~FC_STATUS_FLY; |
661 | FC.StatusFlags2 = FromFlightCtrl.Param.Byte[11]; |
661 | FC.StatusFlags2 = FromFlightCtrl.Param.Byte[9]; |
662 | NaviData.FCStatusFlags2 = (NaviData.FCStatusFlags2 & (FC_STATUS2_OUT1_ACTIVE | FC_STATUS2_OUT2_ACTIVE)) | (FC.StatusFlags2 & (0xff - (FC_STATUS2_OUT1_ACTIVE | FC_STATUS2_OUT2_ACTIVE))); |
662 | NaviData.FCStatusFlags2 = (NaviData.FCStatusFlags2 & (FC_STATUS2_OUT1_ACTIVE | FC_STATUS2_OUT2_ACTIVE)) | (FC.StatusFlags2 & (0xff - (FC_STATUS2_OUT1_ACTIVE | FC_STATUS2_OUT2_ACTIVE))); |
Line 663... | Line 663... | ||
663 | 663 | ||
664 | if((!(LastTransmittedFCStatusFlags2 & FC_STATUS2_OUT1_ACTIVE)) && (FC.StatusFlags2 & FC_STATUS2_OUT1_ACTIVE)) NaviData.FCStatusFlags2 |= FC_STATUS2_OUT1_ACTIVE; |
664 | if((!(LastTransmittedFCStatusFlags2 & FC_STATUS2_OUT1_ACTIVE)) && (FC.StatusFlags2 & FC_STATUS2_OUT1_ACTIVE)) NaviData.FCStatusFlags2 |= FC_STATUS2_OUT1_ACTIVE; |
665 | else |
665 | else |
Line 669... | Line 669... | ||
669 | else |
669 | else |
670 | if(((LastTransmittedFCStatusFlags2 & FC_STATUS2_OUT2_ACTIVE)) && !(FC.StatusFlags2 & FC_STATUS2_OUT2_ACTIVE)) NaviData.FCStatusFlags2 &= ~FC_STATUS2_OUT2_ACTIVE; |
670 | if(((LastTransmittedFCStatusFlags2 & FC_STATUS2_OUT2_ACTIVE)) && !(FC.StatusFlags2 & FC_STATUS2_OUT2_ACTIVE)) NaviData.FCStatusFlags2 &= ~FC_STATUS2_OUT2_ACTIVE; |
Line 671... | Line 671... | ||
671 | 671 | ||
672 | Logging_FCStatusFlags1 |= FC.StatusFlags; |
672 | Logging_FCStatusFlags1 |= FC.StatusFlags; |
- | 673 | Logging_FCStatusFlags2 |= FC.StatusFlags2; |
|
- | 674 | FC.BAT_Voltage = FromFlightCtrl.Param.Int[5]; // 10 & 11 |
|
- | 675 | DebugOut.Analog[7] = FC.BAT_Voltage; |
|
- | 676 | DebugOut.Analog[5] = FC.StatusFlags; |
|
673 | Logging_FCStatusFlags2 |= FC.StatusFlags2; |
677 | NaviData.UBat = (u8) FC.BAT_Voltage; // Achtung: die (u8) NaviData.UBat kann überlaufen -> das KopterTool müsste dann 25,5V drauf rechnen |
674 | break; |
- | |
675 | 678 | break; |
|
676 | case SPI_FCCMD_BL_ACCU: |
679 | case SPI_FCCMD_BL_ACCU: |
677 | FC.BAT_Current = FromFlightCtrl.Param.Int[0]; |
680 | FC.BAT_Current = FromFlightCtrl.Param.Int[0]; |
678 | DebugOut.Analog[8] = FC.BAT_Current; |
681 | DebugOut.Analog[8] = FC.BAT_Current; |
679 | if(AmountOfMotors < FromFlightCtrl.Param.Byte[2]+1) AmountOfMotors = FromFlightCtrl.Param.Byte[2]+1; |
682 | if(AmountOfMotors < FromFlightCtrl.Param.Byte[2]+1) AmountOfMotors = FromFlightCtrl.Param.Byte[2]+1; |
Line 690... | Line 693... | ||
690 | Motor[FromFlightCtrl.Param.Byte[2]].Current = FromFlightCtrl.Param.Byte[11]; |
693 | Motor[FromFlightCtrl.Param.Byte[2]].Current = FromFlightCtrl.Param.Byte[11]; |
691 | if(FromFC_VarioCharacter == '+' || FromFC_VarioCharacter == '-') // manual setpoint clears the NC-Parameter command |
694 | if(FromFC_VarioCharacter == '+' || FromFC_VarioCharacter == '-') // manual setpoint clears the NC-Parameter command |
692 | { |
695 | { |
693 | NCParams_ClearValue(NCPARAMS_ALTITUDE_RATE); |
696 | NCParams_ClearValue(NCPARAMS_ALTITUDE_RATE); |
694 | } |
697 | } |
695 | NaviData.UBat = FC.BAT_Voltage; |
- | |
696 | if(!(SimulationFlags & SIMULATION_ACTIVE)) NaviData.Current = FC.BAT_Current; |
698 | if(!(SimulationFlags & SIMULATION_ACTIVE)) NaviData.Current = FC.BAT_Current; |
697 | NaviData.UsedCapacity = FC.BAT_UsedCapacity; |
699 | NaviData.UsedCapacity = FC.BAT_UsedCapacity; |
698 | break; |
700 | break; |
699 | case SPI_FCCMD_PARAMETER1: |
701 | case SPI_FCCMD_PARAMETER1: |
700 | Parameter.LowVoltageWarning = FromFlightCtrl.Param.Byte[0]; |
702 | Parameter.LowVoltageWarning = FromFlightCtrl.Param.Byte[0]; |
Line 760... | Line 762... | ||
760 | DebugOut.StatusGreen |= AMPEL_BL; // status of BL Present |
762 | DebugOut.StatusGreen |= AMPEL_BL; // status of BL Present |
761 | if(FC.Error[0] || FC.Error[1] /* || FC.Error[2] || FC.Error[3] || FC.Error[4]*/) DebugOut.StatusRed |= AMPEL_FC; |
763 | if(FC.Error[0] || FC.Error[1] /* || FC.Error[2] || FC.Error[3] || FC.Error[4]*/) DebugOut.StatusRed |= AMPEL_FC; |
762 | else DebugOut.StatusRed &= ~AMPEL_FC; |
764 | else DebugOut.StatusRed &= ~AMPEL_FC; |
763 | FC_I2C_ErrorConter = FromFlightCtrl.Param.Byte[8]; |
765 | FC_I2C_ErrorConter = FromFlightCtrl.Param.Byte[8]; |
764 | FC.RC_Quality = FromFlightCtrl.Param.Byte[9]; |
766 | FC.RC_Quality = FromFlightCtrl.Param.Byte[9]; |
765 | NaviData.RC_Quality = FC.RC_Quality; |
767 | if(FC.RC_Quality > 160) NaviData.RC_Quality = 200; else NaviData.RC_Quality = FC.RC_Quality; |
766 | NC_Wait_for_LED = FromFlightCtrl.Param.Byte[10]; |
768 | NC_Wait_for_LED = FromFlightCtrl.Param.Byte[10]; |
767 | NaviData.Gas = (FC.BAT_Voltage * (u32) FromFlightCtrl.Param.Byte[11]) / (u32) Parameter.LowVoltageWarning; |
769 | NaviData.Gas = (FC.BAT_Voltage * (u32) FromFlightCtrl.Param.Byte[11]) / (u32) Parameter.LowVoltageWarning; |
768 | if(LoggingGasCnt == 0) LoggingGasFilter = 0; |
770 | if(LoggingGasCnt == 0) LoggingGasFilter = 0; |
769 | LoggingGasFilter += (u32) FromFlightCtrl.Param.Byte[11]; |
771 | LoggingGasFilter += (u32) FromFlightCtrl.Param.Byte[11]; |
770 | LoggingGasCnt++; |
772 | LoggingGasCnt++; |
Line 778... | Line 780... | ||
778 | FC_Version.Hardware = FromFlightCtrl.Param.Byte[4]; |
780 | FC_Version.Hardware = FromFlightCtrl.Param.Byte[4]; |
779 | Parameter.FromFC_LandingSpeed = FromFlightCtrl.Param.Byte[5]; |
781 | Parameter.FromFC_LandingSpeed = FromFlightCtrl.Param.Byte[5]; |
780 | Parameter.ComingHomeAltitude = FromFlightCtrl.Param.Byte[6]; |
782 | Parameter.ComingHomeAltitude = FromFlightCtrl.Param.Byte[6]; |
781 | CHK_POTI_MM(Parameter.AutoPhotoAltitudes,FromFlightCtrl.Param.Byte[7],0,255); |
783 | CHK_POTI_MM(Parameter.AutoPhotoAltitudes,FromFlightCtrl.Param.Byte[7],0,255); |
782 | UART_VersionInfo.BL_Firmware = FromFlightCtrl.Param.Byte[8]; |
784 | UART_VersionInfo.BL_Firmware = FromFlightCtrl.Param.Byte[8]; |
783 | // 9 |
- | |
- | 785 | Parameter.ActiveSetting = FromFlightCtrl.Param.Byte[9]; |
|
784 | FlugMinutenGesamt = FromFlightCtrl.Param.Int[5]; // 10 & 11 |
786 | FlugMinutenGesamt = FromFlightCtrl.Param.Int[5]; // 10 & 11 |
785 | break; |
787 | break; |
786 | case SPI_FCCMD_NEUTRAL: // slow! |
788 | case SPI_FCCMD_NEUTRAL: // slow! |
787 | FC.AdNeutralNick = FromFlightCtrl.Param.Int[0]; |
789 | FC.AdNeutralNick = FromFlightCtrl.Param.Int[0]; |
788 | FC.AdNeutralRoll = FromFlightCtrl.Param.Int[1]; |
790 | FC.AdNeutralRoll = FromFlightCtrl.Param.Int[1]; |
Line 820... | Line 822... | ||
820 | ServoParams.RollControl = FromFlightCtrl.Param.Byte[1]; |
822 | ServoParams.RollControl = FromFlightCtrl.Param.Byte[1]; |
821 | Parameter.DescendRange = FromFlightCtrl.Param.Byte[2]; |
823 | Parameter.DescendRange = FromFlightCtrl.Param.Byte[2]; |
822 | Parameter.MaximumAltitude = FromFlightCtrl.Param.Byte[3]; |
824 | Parameter.MaximumAltitude = FromFlightCtrl.Param.Byte[3]; |
823 | ServoParams.CompInvert = FromFlightCtrl.Param.Byte[4]; |
825 | ServoParams.CompInvert = FromFlightCtrl.Param.Byte[4]; |
824 | Parameter.HomeYawMode = ((ServoParams.CompInvert & 0x18) >> 3); |
826 | Parameter.HomeYawMode = ((ServoParams.CompInvert & 0x18) >> 3); |
825 | // 5 |
- | |
826 | // 6 |
- | |
827 | // 7 |
- | |
- | 827 | NaviData_Home.LipoCellCount = FromFlightCtrl.Param.Byte[5]; |
|
- | 828 | NaviData_Volatile.ShutterCounter = FromFlightCtrl.Param.Int[3]; // 6 & 7 |
|
828 | // 8 |
829 | // 8 |
829 | // 9 |
830 | // 9 |
830 | // 10 |
831 | // 10 |
831 | // 11 |
832 | // 11 |
832 | break; |
833 | break; |