Subversion Repositories NaviCtrl

Compare Revisions

Ignore whitespace Rev 184 → Rev 185

/trunk/GPS.c
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;
}
 
//-------------------------------------------------------------