489,7 → 489,7 |
if((GPS_pWaypoint != GPS_pWaypointOld) || (GPS_pWaypoint->Position.Status == NEWDATA)) |
{ |
GPS_pWaypointOld = GPS_pWaypoint; |
} |
} |
// if WP has been reached once, wait hold time before trigger to next one |
if(NCFlags & NC_FLAG_TARGET_REACHED) |
{ |
511,7 → 511,7 |
// update the hold position |
GPS_CopyPosition(&(GPSData.Position), &GPS_HoldPosition); |
GPS_pTargetPosition = &(GPS_pWaypoint->Position); |
GPS_TargetRadius = (u32)(GPS_pWaypoint->ToleranceRadius) * 100L; |
GPS_TargetRadius = (u32)(GPS_pWaypoint->ToleranceRadius) * 100L; |
|
} |
else // no waypoint info available, i.e. the WPList is empty or the end of the list has been reached |
604,9 → 604,9 |
// calculate deviation of current position to ranged target position in cm |
if(GPS_CalculateDeviation(&(GPSData.Position), &RangedTargetPosition, &CurrentTargetDeviation)) |
{ // set target reached flag of we once reached the target point |
if(!(NCFlags |= NC_FLAG_TARGET_REACHED) && (CurrentTargetDeviation.Distance < GPS_TargetRadius)) |
if(!(NCFlags & NC_FLAG_TARGET_REACHED) && (CurrentTargetDeviation.Distance < GPS_TargetRadius)) |
{ |
NCFlags |= NC_FLAG_TARGET_REACHED; // set target reached flag |
NCFlags |= NC_FLAG_TARGET_REACHED; // set target reached flag |
} |
// implement your control code here based |
// in the info available in the CurrentTargetDeviation, GPSData and FromFlightCtrl.GyroHeading |