163,10 → 163,25 |
if(StopNavigation) GPS_Parameter.FlightMode = GPS_FLIGHT_MODE_FREE; |
else |
{ |
if (Parameter.NaviGpsModeControl < 50) GPS_Parameter.FlightMode = GPS_FLIGHT_MODE_FREE; |
else if(Parameter.NaviGpsModeControl < 180) GPS_Parameter.FlightMode = GPS_FLIGHT_MODE_AID; |
else GPS_Parameter.FlightMode = GPS_FLIGHT_MODE_WAYPOINT; |
if(Parameter.NaviGpsModeControl < 50) |
{ |
GPS_Parameter.FlightMode = GPS_FLIGHT_MODE_FREE; |
NCFlags &= ~(NC_FLAG_PH | NC_FLAG_CH); |
NCFlags |= NC_FLAG_FREE; |
} |
else if(Parameter.NaviGpsModeControl < 180) |
{ |
GPS_Parameter.FlightMode = GPS_FLIGHT_MODE_AID; |
NCFlags &= ~(NC_FLAG_FREE | NC_FLAG_CH); |
NCFlags |= NC_FLAG_PH; |
} |
else |
{ |
GPS_Parameter.FlightMode = GPS_FLIGHT_MODE_WAYPOINT; |
NCFlags &= ~(NC_FLAG_FREE | NC_FLAG_PH); |
NCFlags |= NC_FLAG_CH; |
} |
} |
GPS_Parameter.Gain = (float)Parameter.NaviGpsGain; |
GPS_Parameter.P = (float)Parameter.NaviGpsP; |
GPS_Parameter.I = (float)Parameter.NaviGpsI; |
429,8 → 444,7 |
{ |
// the GPS control is deactived |
case GPS_FLIGHT_MODE_FREE: |
NCFlags &= ~(NC_FLAG_PH | NC_FLAG_CH); |
NCFlags |= NC_FLAG_FREE; |
|
GPS_Parameter.PID_Limit = 0; // disables PID output |
// update hold position |
GPS_CopyPosition(&(GPSData.Position), &GPS_HoldPosition); |
441,8 → 455,7 |
|
// the GPS supports the position hold, if the pilot takes no action |
case GPS_FLIGHT_MODE_AID: |
NCFlags &= ~(NC_FLAG_FREE | NC_FLAG_CH); |
NCFlags |= NC_FLAG_PH; |
|
// reset WPList to begin |
GPS_pWaypoint = WPList_Begin(); |
|
463,8 → 476,6 |
// the GPS control is directed to a target position |
// given by a waypoint or by the home position |
case GPS_FLIGHT_MODE_WAYPOINT: |
NCFlags &= ~(NC_FLAG_FREE | NC_FLAG_PH); |
NCFlags |= NC_FLAG_CH; |
|
if(GPS_IsManuallyControlled()) // the human pilot takes the action |
{ |