135,6 → 135,7 |
void GPS_UpdateParameter(void) |
{ |
#define SWITCH_DELAY 500 |
static u8 wpclear = FALSE; |
static u32 SwitchDelay = 0; |
static GPS_FlightMode_t FlightMode_Old = GPS_FLIGHT_MODE_UNDEF; |
|
172,8 → 173,6 |
if(CheckDelay(SwitchDelay)) |
{ |
GPS_Parameter.FlightMode = GPS_FLIGHT_MODE_FREE; |
NCFlags &= ~(NC_FLAG_PH | NC_FLAG_CH); |
NCFlags |= NC_FLAG_FREE; |
} |
} |
else if(Parameter.NaviGpsModeControl < 180) |
182,8 → 181,6 |
if(CheckDelay(SwitchDelay)) |
{ |
GPS_Parameter.FlightMode = GPS_FLIGHT_MODE_AID; |
NCFlags &= ~(NC_FLAG_FREE | NC_FLAG_CH); |
NCFlags |= NC_FLAG_PH; |
} |
} |
else |
192,8 → 189,6 |
if(CheckDelay(SwitchDelay)) |
{ |
GPS_Parameter.FlightMode = GPS_FLIGHT_MODE_WAYPOINT; |
NCFlags &= ~(NC_FLAG_FREE | NC_FLAG_PH); |
NCFlags |= NC_FLAG_CH; |
} |
} |
} |
214,15 → 209,40 |
GPS_Parameter.WindCorrection = (float)Parameter.NaviWindCorrection; |
GPS_Parameter.OperatingRadius = (s32)Parameter.NaviOperatingRadius * 100; // conversion of m to cm |
} |
// FlightMode changed? |
// FlightMode transitions |
if(GPS_Parameter.FlightMode != FlightMode_Old) |
{ |
BeepTime = 200; // beep to indicate that mode has been switched |
BeepTime = 100; // beep to indicate that mode has been switched |
NCFlags &= ~NC_FLAG_TARGET_REACHED; |
// if the mode has changed to free (avoid clear of WP-List when StopNavigation is active) |
if((!StopNavigation) && (GPS_Parameter.FlightMode == GPS_FLIGHT_MODE_FREE)) WPList_Clear(); // clear WPList if mode has changed to Free |
switch(GPS_Parameter.FlightMode) |
{ |
case GPS_FLIGHT_MODE_FREE: |
NCFlags &= ~(NC_FLAG_PH | NC_FLAG_CH); |
NCFlags |= NC_FLAG_FREE; |
if(!StopNavigation && wpclear) |
{ |
WPList_Clear(); // clear WPList if mode has changed to Free |
wpclear = FALSE; |
} |
break; |
|
case GPS_FLIGHT_MODE_AID: |
NCFlags &= ~(NC_FLAG_FREE | NC_FLAG_CH); |
NCFlags |= NC_FLAG_PH; |
break; |
|
case GPS_FLIGHT_MODE_WAYPOINT: |
wpclear = TRUE; // clear WP's only if CH was once active |
NCFlags &= ~(NC_FLAG_FREE | NC_FLAG_PH); |
NCFlags |= NC_FLAG_CH; |
break; |
|
default: // should never happen |
NCFlags = 0; |
break; |
} |
FlightMode_Old = GPS_Parameter.FlightMode; |
} |
FlightMode_Old = GPS_Parameter.FlightMode; |
} |
|
//------------------------------------------------------------- |