Subversion Repositories NaviCtrl

Compare Revisions

Ignore whitespace Rev 566 → Rev 567

/trunk/spi_slave.c
128,6 → 128,7
s16 GyroCompassCorrected = 0; // corrected with the magnetic declination
s16 CompassSetpointCorrected = 0; // The compass setpoint that the FC tries to keep - corrected with the magnetic declination
s16 CompassSetpoint = 0; // in 0,1°
s16 SimulatedDirection = 0; // only for flight simulation
u8 AmountOfMotors = 0;
u16 FlugMinutenGesamt;
 
597,15 → 598,20
Parameter.User7 = FromFlightCtrl.Param.Byte[6];
Parameter.User8 = FromFlightCtrl.Param.Byte[7];
 
if(ClearFCStatusFlags)
FC.RealStatusFlags = FromFlightCtrl.Param.Byte[8];
if(FC.RealStatusFlags & FC_STATUS_MOTOR_RUN) SimulationFlags = 0; // stop the simulation if the motors would really start
 
if(!(SimulationFlags & SIMULATION_ACTIVE))
{
FC.StatusFlags = 0;
ClearFCStatusFlags = 0;
if(ClearFCStatusFlags)
{
FC.StatusFlags = 0;
ClearFCStatusFlags = 0;
}
}
FC.StatusFlags |= FromFlightCtrl.Param.Byte[8];
FC.StatusFlags |= FC.RealStatusFlags;
if(FC.StatusFlags & FC_STATUS_CALIBRATE && !FCCalibActive)
{
// HeadFreeStartAngle = (3600 + Compass_Heading * 10 - GeoMagDec) % 3600;
HeadFreeStartAngle = (3600 + Compass_Heading * 10 + GeoMagDec) % 3600;
Compass_Init();
FCCalibActive = 10;
624,7 → 630,6
}
if(FC.StatusFlags & FC_STATUS_START)
{
// if(Compass_Heading != -1) HeadFreeStartAngle = (3600 + Compass_Heading * 10 - GeoMagDec) % 3600; else
if(Compass_Heading != -1) HeadFreeStartAngle = (3600 + Compass_Heading * 10 + GeoMagDec) % 3600;
else HeadFreeStartAngle = GyroCompassCorrected;
}
682,7 → 687,7
NCParams_ClearValue(NCPARAMS_ALTITUDE_RATE);
}
NaviData.UBat = FC.BAT_Voltage;
NaviData.Current = FC.BAT_Current;
if(!(SimulationFlags & SIMULATION_ACTIVE)) NaviData.Current = FC.BAT_Current;
NaviData.UsedCapacity = FC.BAT_UsedCapacity;
break;
case SPI_FCCMD_PARAMETER1:
742,8 → 747,8
}
Parameter.NaviPH_LoginTime = FromFlightCtrl.Param.Byte[1];
NaviData.Variometer = (NaviData.Variometer + 2 * (FromFlightCtrl.Param.sInt[1] - NaviData.Altimeter)) / 2; // provisorisch
NaviData.Altimeter = FromFlightCtrl.Param.sInt[1]; // in 5cm
NaviData.SetpointAltitude = FromFlightCtrl.Param.sInt[2]; // in 5cm
FC.Altimeter = FromFlightCtrl.Param.sInt[1]; // in 5cm
if(!(SimulationFlags & SIMULATION_ACTIVE)) NaviData.SetpointAltitude = FromFlightCtrl.Param.sInt[2]; // in 5cm
CHK_POTI_MM(Parameter.NaviGpsPLimit,FromFlightCtrl.Param.Byte[6],0,255);
CHK_POTI_MM(Parameter.NaviGpsILimit,FromFlightCtrl.Param.Byte[7],0,255);
CHK_POTI_MM(Parameter.NaviGpsDLimit,FromFlightCtrl.Param.Byte[8],0,255);
750,9 → 755,6
FC.RC_Quality = FromFlightCtrl.Param.Byte[9];
NaviData.RC_Quality = FC.RC_Quality;
NC_Wait_for_LED = FromFlightCtrl.Param.Byte[10];
// FC.RC_RSSI = FromFlightCtrl.Param.Byte[10];
// if(!FC.RC_RSSI) NaviData.RC_Quality = FC.RC_Quality; else NaviData.RC_Quality = FC.RC_RSSI;
// NaviData.RC_RSSI = FC.RC_RSSI;
NaviData.Gas = (FC.BAT_Voltage * (u32) FromFlightCtrl.Param.Byte[11]) / (u32) Parameter.LowVoltageWarning;
break;