Maintenance: Consistent TODO: tags
This commit is contained in:
parent
88ee1ca7f7
commit
812107d87c
41 changed files with 151 additions and 151 deletions
|
@ -796,7 +796,7 @@ void FGAIBallistic::Run(double dt) {
|
|||
dynamic_friction_force_lbs = static_friction_force_lbs * 0.95;
|
||||
|
||||
// Ignore wind when on the ground for now
|
||||
//TODO fix this
|
||||
// TODO: fix this
|
||||
_wind_from_north = 0;
|
||||
_wind_from_east = 0;
|
||||
}
|
||||
|
|
|
@ -172,7 +172,7 @@ double PerformanceData::actualPitch(FGAIAircraft* ac, double tgt_pitch, double d
|
|||
double pdiff = tgt_pitch - pitch;
|
||||
|
||||
if (pdiff > 0.0) { // nose up
|
||||
pitch += 0.005*_climbRate * dt / 3.0; //TODO avoid hardcoded 3 secs
|
||||
pitch += 0.005*_climbRate * dt / 3.0; // TODO: avoid hardcoded 3 secs
|
||||
|
||||
if (pitch > tgt_pitch)
|
||||
pitch = tgt_pitch;
|
||||
|
@ -200,7 +200,7 @@ double PerformanceData::actualVerticalSpeed(FGAIAircraft* ac, double tgt_vs, dou
|
|||
|
||||
if (fabs(vs_diff) > .001) {
|
||||
if (vs_diff > 0.0) {
|
||||
vs += _climbRate * dt / 3.0; //TODO avoid hardcoded 3 secs to attain climb rate from level flight
|
||||
vs += _climbRate * dt / 3.0; // TODO: avoid hardcoded 3 secs to attain climb rate from level flight
|
||||
|
||||
if (vs > tgt_vs)
|
||||
vs = tgt_vs;
|
||||
|
|
|
@ -48,7 +48,7 @@ void PerformanceDB::update(double dt)
|
|||
}
|
||||
|
||||
void PerformanceDB::registerPerformanceData(const std::string& id, PerformanceData* data) {
|
||||
//TODO if key exists already replace data "inplace", i.e. copy to existing PerfData instance
|
||||
// TODO: if key exists already replace data "inplace", i.e. copy to existing PerfData instance
|
||||
// this updates all aircraft currently using the PerfData instance.
|
||||
_db[id] = data;
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ class SGPath;
|
|||
*
|
||||
* @author Thomas F<EFBFBD>rster <t.foerster@biologie.hu-berlin.de>
|
||||
*/
|
||||
//TODO provide std::map interface?
|
||||
// TODO: provide std::map interface?
|
||||
class PerformanceDB : public SGSubsystem
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -91,7 +91,7 @@ void FGSubmodelMgr::postinit()
|
|||
while (_found_sub)
|
||||
loadSubmodels();
|
||||
|
||||
//TODO reload submodels if an MP ac joins
|
||||
// TODO: reload submodels if an MP ac joins
|
||||
|
||||
//_model_added_node = fgGetNode("ai/models/model-added", true);
|
||||
//_model_added_node->addChangeListener(this, false);
|
||||
|
|
|
@ -334,7 +334,7 @@ void FGATCController::transmit(FGTrafficRecord * rec, FGAirportDynamics *parent,
|
|||
break;
|
||||
case MSG_CLEARED_TO_LAND:
|
||||
activeRunway = rec->getRunway();
|
||||
//TODO Weather
|
||||
// TODO: Weather
|
||||
text = receiver + " runway " + activeRunway + " cleared to land. " + sender;
|
||||
break;
|
||||
case MSG_ACKNOWLEDGE_CLEARED_TO_LAND:
|
||||
|
|
|
@ -382,7 +382,7 @@ string ATISEncoder::getTime( SGPropertyNode_ptr )
|
|||
static inline FGRunwayRef findBestRunwayForWind( FGAirportRef airport, int windDeg, int windKt )
|
||||
{
|
||||
struct FGAirport::FindBestRunwayForHeadingParams p;
|
||||
//TODO: ramp down the heading weight with wind speed
|
||||
// TODO: ramp down the heading weight with wind speed
|
||||
p.ilsWeight = 4;
|
||||
return airport->findBestRunwayForHeading( windDeg, &p );
|
||||
}
|
||||
|
@ -392,7 +392,7 @@ string ATISEncoder::getApproachType( SGPropertyNode_ptr )
|
|||
FGRunwayRef runway = findBestRunwayForWind( airport, _atis->getWindDeg(), _atis->getWindSpeedKt() );
|
||||
if( runway.valid() ) {
|
||||
if( NULL != runway->ILS() ) return globals->get_locale()->getLocalizedString("ils", "atc", "ils" );
|
||||
//TODO: any chance to find other approach types? localizer-dme, vor-dme, vor, ndb?
|
||||
// TODO: any chance to find other approach types? localizer-dme, vor-dme, vor, ndb?
|
||||
}
|
||||
|
||||
return globals->get_locale()->getLocalizedString("visual", "atc", "visual" );
|
||||
|
@ -412,7 +412,7 @@ string ATISEncoder::getLandingRunway( SGPropertyNode_ptr )
|
|||
|
||||
string ATISEncoder::getTakeoffRunway( SGPropertyNode_ptr p )
|
||||
{
|
||||
//TODO: if the airport has more than one runway, probably pick another one?
|
||||
// TODO: if the airport has more than one runway, probably pick another one?
|
||||
return getLandingRunway( p );
|
||||
}
|
||||
|
||||
|
|
|
@ -388,7 +388,7 @@ void FGATCManager::update ( double time ) {
|
|||
SG_LOG(SG_AI, SG_BULK, "Error: Could not find Dynamics at airport : " << userAircraftTrafficRef->getDepartureAirport()->getId());
|
||||
}
|
||||
break;
|
||||
/* TODO link up with state system?
|
||||
/* TODO: link up with state system?
|
||||
case AILeg::APPROACH:
|
||||
if (userAircraftTrafficRef->getArrivalAirport()->getDynamics()) {
|
||||
controller = trafficRef->getArrivalAirport()->getDynamics()->getApproachController();
|
||||
|
|
|
@ -2067,7 +2067,7 @@ FGReplayInternal::loadTape(
|
|||
);
|
||||
}
|
||||
m_sim_time = get_end_time(*this);
|
||||
// TODO we could (re)store these too
|
||||
// TODO: we could (re)store these too
|
||||
m_last_mt_time = m_last_lt_time = m_sim_time;
|
||||
}
|
||||
/* done *********************************************************/
|
||||
|
|
|
@ -127,7 +127,7 @@ FGRunwayMap FGAirport::getRunwayMap() const
|
|||
|
||||
for (auto rwy : mRunways) {
|
||||
// ignore unusably short runways
|
||||
// TODO other methods don't check this...
|
||||
// TODO: other methods don't check this...
|
||||
if( rwy->lengthFt() >= minLengthFt )
|
||||
map[ rwy->ident() ] = rwy;
|
||||
}
|
||||
|
|
|
@ -115,8 +115,8 @@ void readInterfaceProperties( SGPropertyNode_ptr prop_root,
|
|||
{
|
||||
prop->setDoubleValue( val->getDoubleValue() );
|
||||
|
||||
// TODO should we keep the _attr_ node, as soon as the property browser is
|
||||
// able to cope with it?
|
||||
// TODO: should we keep the _attr_ node, as soon as the property browser is
|
||||
// able to cope with it?
|
||||
(*it)->removeChild("_attr_", 0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -273,7 +273,7 @@ sc::WindowPtr DesktopGroup::windowAtPosition(const osg::Vec2f& screen_pos)
|
|||
osg::Group *element = _scene_group->getChild(i)->asGroup();
|
||||
|
||||
if( !element || !element->getUserData() )
|
||||
continue; // TODO warn/log?
|
||||
continue; // TODO: warn/log?
|
||||
|
||||
sc::WindowPtr window =
|
||||
dynamic_cast<sc::Window*>
|
||||
|
@ -613,7 +613,7 @@ bool DesktopGroup::handleDrag(const sc::EventPtr& event)
|
|||
drag_window->handleEvent(event->clone(sc::Event::DRAG_START));
|
||||
}
|
||||
|
||||
// TODO dragover
|
||||
// TODO: dragover
|
||||
return drag_window && drag_window->handleEvent(event);
|
||||
}
|
||||
|
||||
|
|
|
@ -383,7 +383,7 @@ wxRadarBg::update (double delta_time_sec)
|
|||
_textGeode->removeDrawables(0, _textGeode->getNumDrawables());
|
||||
|
||||
#if 0
|
||||
//TODO FIXME Mask below (only used for ARC mode) isn't properly aligned, i.e.
|
||||
// TODO: FIXME Mask below (only used for ARC mode) isn't properly aligned, i.e.
|
||||
// it assumes the a/c position at the center of the display - though it's somewhere at
|
||||
// bottom part for ARC mode.
|
||||
// The mask hadn't worked at all for a while (probably since the OSG port) due to
|
||||
|
@ -1011,7 +1011,7 @@ wxRadarBg::inRadarRange(double sigma, double range_nm)
|
|||
// Here, we will use a normalised rcs (sigma) for a standard taget and assume that this
|
||||
// will provide a maximum range of 35nm;
|
||||
//
|
||||
// TODO - make the maximum range adjustable at runtime
|
||||
// TODO: make the maximum range adjustable at runtime
|
||||
|
||||
double constant = _radar_ref_rng;
|
||||
|
||||
|
|
|
@ -340,7 +340,7 @@ void FGEnvironmentMgr::updateClosestAirport()
|
|||
SG_LOG(SG_ENVIRONMENT, SG_DEBUG, "no tower for airport-id=" << nearestAirport->getId());
|
||||
}
|
||||
//Ensure that the tower isn't at ground level by adding a nominal amount
|
||||
//TODO: (fix the data so that too short or too tall towers aren't present in the data)
|
||||
// TODO: (fix the data so that too short or too tall towers aren't present in the data)
|
||||
auto towerAirpotDistance = abs(nearestTowerPosition.getElevationFt() - nearestAirport->geod().getElevationFt());
|
||||
if (towerAirpotDistance < min_tower_height_feet) {
|
||||
nearestTowerPosition.setElevationFt(nearestTowerPosition.getElevationFt() + default_tower_height_feet);
|
||||
|
|
|
@ -60,7 +60,7 @@ void Wind::preset( double min_hdg, double max_hdg, double speed_kt, double gust_
|
|||
{
|
||||
// see: PresetBase::setOverride()
|
||||
|
||||
//TODO: handle variable wind and gusts
|
||||
// TODO: handle variable wind and gusts
|
||||
if( _fromNorthNode == NULL )
|
||||
_fromNorthNode = fgGetNode("/environment/config/presets/wind-from-north-fps", true );
|
||||
|
||||
|
|
|
@ -279,7 +279,7 @@ void FGWinds::Turbulence(double h)
|
|||
}
|
||||
|
||||
// keep values from last timesteps
|
||||
// TODO maybe use deque?
|
||||
// TODO: maybe use deque?
|
||||
static double
|
||||
xi_u_km1 = 0, nu_u_km1 = 0,
|
||||
xi_v_km1 = 0, xi_v_km2 = 0, nu_v_km1 = 0, nu_v_km2 = 0,
|
||||
|
|
|
@ -402,13 +402,13 @@ FGPiston::FGPiston(FGFDMExec* exec, Element* el, int engine_number, struct Input
|
|||
if (bad) {
|
||||
// We can't recover from the above - don't use this supercharger speed.
|
||||
BoostSpeeds--;
|
||||
// TODO - put out a massive error message!
|
||||
// TODO: put out a massive error message!
|
||||
break;
|
||||
}
|
||||
// Now sanity-check stuff that is recoverable.
|
||||
if (i < BoostSpeeds - 1) {
|
||||
if (BoostSwitchAltitude[i] < RatedAltitude[i]) {
|
||||
// TODO - put out an error message
|
||||
// TODO: put out an error message
|
||||
// But we can also make a reasonable estimate, as below.
|
||||
BoostSwitchAltitude[i] = RatedAltitude[i] + 1000;
|
||||
}
|
||||
|
|
|
@ -696,6 +696,6 @@ void FGNewEngine::Do_Prop_Calcs()
|
|||
// The problem is that we're doing this calculation backwards - we're working out the thrust from the power consumed and the velocity, which becomes invalid as velocity goes to zero.
|
||||
// It would be far more natural to work out the power consumed from the thrust - FIXME!!!!!.
|
||||
else
|
||||
prop_thrust = neta_prop * prop_power_consumed_SI / forward_velocity; //TODO - rename forward_velocity to IAS_SI
|
||||
prop_thrust = neta_prop * prop_power_consumed_SI / forward_velocity; // TODO: rename forward_velocity to IAS_SI
|
||||
//cout << "prop_thrust = " << prop_thrust << '\n';
|
||||
}
|
||||
|
|
|
@ -188,7 +188,7 @@ void QtQuickFGCanvasItem::wheelEvent(QWheelEvent *event)
|
|||
canvasEvent->time = event->timestamp() / 1000.0;
|
||||
canvasEvent->type = sc::Event::WHEEL;
|
||||
|
||||
// TODO - check if using pixelDelta is beneficial at all.
|
||||
// TODO: check if using pixelDelta is beneficial at all.
|
||||
canvasEvent->delta.set(event->angleDelta().x(),
|
||||
event->angleDelta().y());
|
||||
}
|
||||
|
|
|
@ -91,7 +91,7 @@ void HUD::Runway::draw()
|
|||
|
||||
double yaw = -(cockpitView->getHeadingOffset_deg() - _default_heading) * SG_DEGREES_TO_RADIANS;
|
||||
double pitch = (cockpitView->getPitchOffset_deg() - _default_pitch) * SG_DEGREES_TO_RADIANS;
|
||||
//double roll = fgGetDouble("/sim/view[0]/config/roll-offset-deg",0.0) //TODO: adjust for default roll offset
|
||||
//double roll = fgGetDouble("/sim/view[0]/config/roll-offset-deg",0.0) // TODO: adjust for default roll offset
|
||||
double sPitch = sin(pitch), cPitch = cos(pitch),
|
||||
sYaw = sin(yaw), cYaw = cos(yaw);
|
||||
|
||||
|
|
|
@ -224,7 +224,7 @@ KLN89::KLN89(RenderArea2D* instrument)
|
|||
_mapScaleAuto = true;
|
||||
|
||||
// Mega-hack - hardwire airport town and state names for the FG base area since we don't have any data for these at the moment
|
||||
// TODO - do this better one day!
|
||||
// TODO: do this better one day!
|
||||
_airportTowns["KSFO"] = "San Francisco";
|
||||
_airportTowns["KSQL"] = "San Carlos";
|
||||
_airportTowns["KPAO"] = "Palo Alto";
|
||||
|
@ -308,7 +308,7 @@ void KLN89::update(double dt) {
|
|||
// (i.e. nighttime), or the user covering the photocell that detects the light level.
|
||||
// At the moment I don't know how to detect nighttime or actual light level, so only
|
||||
// respond to the photocell being obscured.
|
||||
// TODO - reduce the brightness in response to nighttime / lowlight.
|
||||
// TODO: reduce the brightness in response to nighttime / lowlight.
|
||||
float rgba[4] = {1.0, 0.0, 0.0, 1.0};
|
||||
if(fgGetBool("/instrumentation/kln89/photocell-obscured")) {
|
||||
rgba[0] -= (9 - _minDisplayBrightness) * 0.05;
|
||||
|
@ -341,7 +341,7 @@ void KLN89::update(double dt) {
|
|||
if(_messageStack.empty()) {
|
||||
DrawText("No Message", 0, 5, 2);
|
||||
} else {
|
||||
// TODO - parse the message string for special strings that indicate degrees signs etc!
|
||||
// TODO: parse the message string for special strings that indicate degrees signs etc!
|
||||
DrawText(*_messageStack.begin(), 0, 0, 3);
|
||||
}
|
||||
return;
|
||||
|
@ -363,7 +363,7 @@ void KLN89::update(double dt) {
|
|||
}
|
||||
|
||||
void KLN89::CreateDefaultFlightPlans() {
|
||||
// TODO - read these in from preferences.xml or similar instead!!!!
|
||||
// TODO: read these in from preferences.xml or similar instead!!!!
|
||||
// Create some hardwired default flightplans for testing.
|
||||
std::vector<std::string> ids;
|
||||
std::vector<GPSWpType> wps;
|
||||
|
@ -594,7 +594,7 @@ void KLN89::DtoPressed() {
|
|||
|
||||
void KLN89::NrstPressed() {
|
||||
if(_activePage != _nrst_page) {
|
||||
_activePage->LooseFocus(); // TODO - check whether we should call loose focus here
|
||||
_activePage->LooseFocus(); // TODO: check whether we should call loose focus here
|
||||
_lastActivePage = _activePage;
|
||||
_activePage = _nrst_page;
|
||||
_lastMode = _mode;
|
||||
|
@ -607,7 +607,7 @@ void KLN89::NrstPressed() {
|
|||
|
||||
void KLN89::AltPressed() {
|
||||
if(_activePage != _alt_page) {
|
||||
_activePage->LooseFocus(); // TODO - check whether we should call loose focus here
|
||||
_activePage->LooseFocus(); // TODO: check whether we should call loose focus here
|
||||
_lastActivePage = _activePage;
|
||||
_alt_page->SetSubPage(0);
|
||||
_activePage = _alt_page;
|
||||
|
@ -638,7 +638,7 @@ void KLN89::OBSPressed() {
|
|||
}
|
||||
|
||||
void KLN89::MsgPressed() {
|
||||
// TODO - handle persistent messages such as SUA alerting.
|
||||
// TODO: handle persistent messages such as SUA alerting.
|
||||
// (The message annunciation flashes before first view, but afterwards remains continuously lit with the message available
|
||||
// until the potential conflict no longer pertains).
|
||||
if(_dispMsg && ! _messageStack.empty()) {
|
||||
|
@ -657,7 +657,7 @@ void KLN89::DtoInitiate(const string& id) {
|
|||
_curPage = 6;
|
||||
_activePage = _pages[_curPage];
|
||||
_activePage->SetSubPage(0);
|
||||
// TODO - need to output a scratchpad message with the new course, but we don't know it yet!
|
||||
// TODO: need to output a scratchpad message with the new course, but we don't know it yet!
|
||||
// Call the base class to actually initiate the DTO.
|
||||
DCLGPS::DtoInitiate(id);
|
||||
}
|
||||
|
@ -745,7 +745,7 @@ void KLN89::DrawMap(bool draw_avs) {
|
|||
|
||||
double mapScaleMeters = _mapScale * (_mapScaleUnits == 0 ? SG_NM_TO_METER : 1000);
|
||||
|
||||
// TODO - use an aligned projection when either DTK or TK up!
|
||||
// TODO: use an aligned projection when either DTK or TK up!
|
||||
AlignedProjection mapProj(SGGeod::fromRad(_gpsLon, _gpsLat), _mapHeading);
|
||||
double meter_per_pix = (_mapOrientation == 0 ? mapScaleMeters / 20.0f : mapScaleMeters / 29.0f);
|
||||
// SGGeod bottomLeft = mapProj.ConvertFromLocal(SGVec3d(gps_max(-57.0 * meter_per_pix, -50000), gps_max((_mapOrientation == 0 ? -20.0 * meter_per_pix : -11.0 * meter_per_pix), -25000), 0.0));
|
||||
|
@ -878,7 +878,7 @@ void KLN89::DrawMap(bool draw_avs) {
|
|||
DrawWaypoint(xvec[i], yvec[i]);
|
||||
bool right_align = (qvec[i] > 2);
|
||||
bool top = (qvec[i] == 1 || qvec[i] == 4);
|
||||
// TODO - not sure if labels should be drawn in sequence with waypoints and flightpaths,
|
||||
// TODO: not sure if labels should be drawn in sequence with waypoints and flightpaths,
|
||||
// or all before or all afterwards. Doesn't matter a huge deal though.
|
||||
DrawLabel(_activeFP->waypoints[i]->id, xvec[i] + (right_align ? -2 : 3), yvec[i] + (top ? 3 : -7), right_align);
|
||||
}
|
||||
|
@ -896,7 +896,7 @@ void KLN89::DrawMap(bool draw_avs) {
|
|||
DrawUser2(56, 10);
|
||||
} else {
|
||||
// Heading up
|
||||
// TODO - don't know what to do here!
|
||||
// TODO: don't know what to do here!
|
||||
}
|
||||
|
||||
// And finally, reset the clip region to stop the rest of the code going pear-shaped!
|
||||
|
@ -1135,7 +1135,7 @@ void KLN89::DrawCDI() {
|
|||
if(_cdiScaleTransition) {
|
||||
double dots = (xtd / _currentCdiScale) * 5.0;
|
||||
deflect = (int)(dots * 7.0 * -1.0);
|
||||
// TODO - for all these I think I should add 0.5 before casting to int, and *then* multiply by -1. Possibly!
|
||||
// TODO: for all these I think I should add 0.5 before casting to int, and *then* multiply by -1. Possibly!
|
||||
} else {
|
||||
if(0 == _currentCdiScaleIndex) { // 5.0nm FSD => 1 nm per dot => 7 pixels per nm.
|
||||
deflect = (int)(xtd * 7.0 * -1.0); // The -1.0 is because we move the 'needle' indicating the course, not the plane.
|
||||
|
@ -1236,7 +1236,7 @@ void KLN89::DrawEnt(int field, int px, int py) {
|
|||
}
|
||||
|
||||
void KLN89::DrawMessageAlert() {
|
||||
// TODO - draw the proper message indicator
|
||||
// TODO: draw the proper message indicator
|
||||
if(!_blink) {
|
||||
int px = _xBorder + _xFieldBorder[1] + _xFieldStart[1];
|
||||
int py = 1 * 9 + _yBorder + _yFieldBorder[1] + _yFieldStart[1] + 1;
|
||||
|
@ -1453,7 +1453,7 @@ void KLN89::DrawLatitude(double d, int field, int px, int py) {
|
|||
DrawChar((d >= 0 ? 'N' : 'S'), field, px, py);
|
||||
d = fabs(d);
|
||||
px += 1;
|
||||
// TODO - sanity check input to ensure major lat field can only ever by 2 chars wide
|
||||
// TODO: sanity check input to ensure major lat field can only ever by 2 chars wide
|
||||
char buf[8];
|
||||
// Don't know whether to zero pad the below for single digits or not?
|
||||
//cout << d << ", " << (int)d << '\n';
|
||||
|
@ -1474,7 +1474,7 @@ void KLN89::DrawLongitude(double d, int field, int px, int py) {
|
|||
DrawChar((d >= 0 ? 'E' : 'W'), field, px, py);
|
||||
d = fabs(d);
|
||||
px += 1;
|
||||
// TODO - sanity check input to ensure major lat field can only ever be 2 chars wide
|
||||
// TODO: sanity check input to ensure major lat field can only ever be 2 chars wide
|
||||
char buf[8];
|
||||
// Don't know whether to zero pad the below for single digits or not?
|
||||
//cout << d << ", " << (int)d << '\n';
|
||||
|
@ -1533,7 +1533,7 @@ void KLN89::DrawDist(double d, int field, int px, int py) {
|
|||
}
|
||||
|
||||
void KLN89::DrawSpeed(double v, int field, int px, int py, int decimal) {
|
||||
// TODO - implement variable decimal places
|
||||
// TODO: implement variable decimal places
|
||||
v *= (_velUnits == GPS_VEL_UNITS_KT ? 1.0 : 0.51444444444 * 0.001 * 3600.0);
|
||||
char buf[10];
|
||||
snprintf(buf, 9, "%i", (int)(v + 0.5));
|
||||
|
|
|
@ -176,7 +176,7 @@ private:
|
|||
// Draw an integer heading, where px specifies the position of the degrees sign at the RIGHT of the value.
|
||||
void DrawHeading(int h, int field, int px, int py);
|
||||
|
||||
// Draw a distance spec'd as nm as an integer (TODO - may need 1 decimal place if < 100) where px specifies RHS of units.
|
||||
// Draw a distance spec'd as nm as an integer (TODO: may need 1 decimal place if < 100) where px specifies RHS of units.
|
||||
// Some uses definately don't want decimal place though (as at present), so would have to be arg.
|
||||
void DrawDist(double d, int field, int px, int py);
|
||||
|
||||
|
|
|
@ -218,7 +218,7 @@ const string& KLN89Page::GetId() {
|
|||
return(_id);
|
||||
}
|
||||
|
||||
// TODO - this function probably shouldn't be here - FG almost certainly has better handling
|
||||
// TODO: this function probably shouldn't be here - FG almost certainly has better handling
|
||||
// of this somewhere already.
|
||||
string KLN89Page::GPSitoa(int n) {
|
||||
char buf[6];
|
||||
|
|
|
@ -107,7 +107,7 @@ protected:
|
|||
std::string _scratchpadLine1;
|
||||
std::string _scratchpadLine2;
|
||||
|
||||
// TODO - remove this function from this class and use a built in method instead.
|
||||
// TODO: remove this function from this class and use a built in method instead.
|
||||
std::string GPSitoa(int n);
|
||||
};
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ void KLN89AptPage::Update(double dt) {
|
|||
bool multi; // Not set by FindFirst...
|
||||
bool exact = false;
|
||||
if(_apt_id.size() == 4) exact = true;
|
||||
// TODO - move this search out to where the button is pressed, and cache the result!
|
||||
// TODO: move this search out to where the button is pressed, and cache the result!
|
||||
if(_apt_id != _last_apt_id || ap == NULL) ap = _kln89->FindFirstAptById(_apt_id, multi, exact);
|
||||
//if(np == NULL) cout << "NULL... ";
|
||||
//if(b == false) cout << "false...\n";
|
||||
|
@ -175,7 +175,7 @@ void KLN89AptPage::Update(double dt) {
|
|||
if(_iaps.empty()) {
|
||||
_kln89->DrawText("NO APR", 2, 0, 0);
|
||||
} else {
|
||||
// TODO - output proper differentiation of ILS and NP APR and NP APR type eg GPS(R)
|
||||
// TODO: output proper differentiation of ILS and NP APR and NP APR type eg GPS(R)
|
||||
_kln89->DrawText("NP APR", 2, 0, 0);
|
||||
}
|
||||
} else if(_subPage == 3) {
|
||||
|
@ -196,7 +196,7 @@ void KLN89AptPage::Update(double dt) {
|
|||
_kln89->DrawText(s, 2, 5 - s.size(), 2);
|
||||
_kln89->DrawText((_kln89->_altUnits == GPS_ALT_UNITS_FT ? "ft" : "m"), 2, 5, 2);
|
||||
// Surface
|
||||
// TODO - why not store these strings as an array?
|
||||
// TODO: why not store these strings as an array?
|
||||
switch(_aptRwys[i]->surface()) {
|
||||
case 1:
|
||||
// Asphalt - fall through
|
||||
|
@ -246,7 +246,7 @@ void KLN89AptPage::Update(double dt) {
|
|||
_kln89->DrawText(s, 2, 5 - s.size(), 0);
|
||||
_kln89->DrawText((_kln89->_altUnits == GPS_ALT_UNITS_FT ? "ft" : "m"), 2, 5, 0);
|
||||
// Surface
|
||||
// TODO - why not store these strings as an array?
|
||||
// TODO: why not store these strings as an array?
|
||||
switch(_aptRwys[i]->surface()) {
|
||||
case 1:
|
||||
// Asphalt - fall through
|
||||
|
@ -303,7 +303,7 @@ void KLN89AptPage::Update(double dt) {
|
|||
_kln89->DrawFreq(_aptFreqs[i].freq, 2, 7, 0);
|
||||
}
|
||||
} else if(_subPage == 5) {
|
||||
// TODO - user ought to be allowed to leave persistent remarks
|
||||
// TODO: user ought to be allowed to leave persistent remarks
|
||||
_kln89->DrawText("[Remarks]", 2, 2, 2);
|
||||
} else if(_subPage == 6) {
|
||||
// We don't have SID/STAR database yet
|
||||
|
@ -427,7 +427,7 @@ void KLN89AptPage::Update(double dt) {
|
|||
if(_kln89->_mode == KLN89_MODE_CRSR) {
|
||||
if(!(_subPage == 7 && (_iafDialog || _addDialog || _replaceDialog))) {
|
||||
if(_uLinePos > 0 && _uLinePos < 5) {
|
||||
// TODO - blink as well
|
||||
// TODO: blink as well
|
||||
_kln89->Underline(2, _uLinePos, 3, 1);
|
||||
}
|
||||
for(unsigned int i = 0; i < _apt_id.size(); ++i) {
|
||||
|
@ -507,7 +507,7 @@ void KLN89AptPage::UpdateAirport(const string& id) {
|
|||
if(_nRwyPages < 1) _nRwyPages = 1;
|
||||
|
||||
// Instrument approaches
|
||||
// Only non-precision for now - TODO - handle precision approaches if necessary
|
||||
// Only non-precision for now - TODO: handle precision approaches if necessary
|
||||
_iaps.clear();
|
||||
iap_map_iterator itr = _kln89->_np_iap.find(id);
|
||||
if(itr != _kln89->_np_iap.end()) {
|
||||
|
@ -517,7 +517,7 @@ void KLN89AptPage::UpdateAirport(const string& id) {
|
|||
if(_iafDialog || _addDialog || _replaceDialog) {
|
||||
// Eek - major logic error if an airport details cache update occurs
|
||||
// with one of these dialogs active.
|
||||
// TODO - output a warning.
|
||||
// TODO: output a warning.
|
||||
//cout << "HELP!!!!!!!!!!\n";
|
||||
} else {
|
||||
_maxULinePos = 4 + _iaps.size(); // We shouldn't need to check the crsr for out-of-bounds here since we only update the airport details when the airport code is changed - ie. _uLinePos <= 4!
|
||||
|
@ -585,7 +585,7 @@ void KLN89AptPage::ClrPressed() {
|
|||
_iafDialog = true;
|
||||
_maxULinePos = 1;
|
||||
// Don't reset _curIaf since it is remembed.
|
||||
_uLinePos = 1 + _curIaf; // TODO - make this robust to more than 3 IAF
|
||||
_uLinePos = 1 + _curIaf; // TODO: make this robust to more than 3 IAF
|
||||
} else {
|
||||
_maxULinePos = 4 + _iaps.size();
|
||||
if(_iaps.empty()) {
|
||||
|
@ -623,7 +623,7 @@ void KLN89AptPage::EntPressed() {
|
|||
_curIaf = _uLinePos - 1 + _iafStart;
|
||||
}
|
||||
//cout << "_curIaf = " << _curIaf << '\n';
|
||||
// TODO - delete the waypoints inside _approachFP before clearing them!!!!!!!
|
||||
// TODO: delete the waypoints inside _approachFP before clearing them!!!!!!!
|
||||
_kln89->_approachFP->waypoints.clear();
|
||||
GPSWaypoint* wp = new GPSWaypoint;
|
||||
*wp = *(_approachRoutes[_curIaf]->waypoints[0]); // Need to make copies here since we're going to alter ID and type sometimes
|
||||
|
@ -679,7 +679,7 @@ void KLN89AptPage::EntPressed() {
|
|||
_kln89->_approachLoaded = true;
|
||||
//_kln89->_messageStack.push_back("*Press ALT To Set Baro");
|
||||
// Actually - this message is only sent when we go into appraoch-arm mode.
|
||||
// TODO - check the flightplan for consistency
|
||||
// TODO: check the flightplan for consistency
|
||||
_kln89->OrientateToActiveFlightPlan();
|
||||
_kln89->_mode = KLN89_MODE_DISP;
|
||||
_kln89->_curPage = 7;
|
||||
|
@ -687,14 +687,14 @@ void KLN89AptPage::EntPressed() {
|
|||
}
|
||||
}
|
||||
} else if(_replaceDialog) {
|
||||
// TODO - load the approach!
|
||||
// TODO: load the approach!
|
||||
} else if(_uLinePos > 4) {
|
||||
_approachRoutes.clear();
|
||||
_IAP.clear();
|
||||
_curIaf = 0;
|
||||
_approachRoutes = ((FGNPIAP*)(_iaps[_uLinePos-5]))->_approachRoutes;
|
||||
_IAP = ((FGNPIAP*)(_iaps[_uLinePos-5]))->_IAP;
|
||||
_curIap = _uLinePos - 5; // TODO - handle the start of list ! no. 1, and the end of list not sequential!
|
||||
_curIap = _uLinePos - 5; // TODO: handle the start of list ! no. 1, and the end of list not sequential!
|
||||
_uLinePos = 1;
|
||||
if(_approachRoutes.size() > 1) {
|
||||
// More than 1 IAF - display the selection dialog
|
||||
|
@ -702,7 +702,7 @@ void KLN89AptPage::EntPressed() {
|
|||
_maxULinePos = _approachRoutes.size();
|
||||
} else {
|
||||
// There is only 1 IAF, so load the waypoints into the approach flightplan here.
|
||||
// TODO - there is nasty code duplication loading the approach FP between the case here where we have only one
|
||||
// TODO: there is nasty code duplication loading the approach FP between the case here where we have only one
|
||||
// IAF and the case where we must choose the IAF from a list. Try to tidy this after it is all working properly.
|
||||
_kln89->_approachFP->waypoints.clear();
|
||||
GPSWaypoint* wp = new GPSWaypoint;
|
||||
|
@ -814,7 +814,7 @@ void KLN89AptPage::Knob2Left1() {
|
|||
}
|
||||
} else {
|
||||
if(_subPage == 0) {
|
||||
// TODO - set by name
|
||||
// TODO: set by name
|
||||
} else {
|
||||
// NO-OP - to/fr is cycled by clr button
|
||||
}
|
||||
|
@ -866,7 +866,7 @@ void KLN89AptPage::Knob2Right1() {
|
|||
}
|
||||
} else {
|
||||
if(_subPage == 0) {
|
||||
// TODO - set by name
|
||||
// TODO: set by name
|
||||
} else {
|
||||
// NO-OP - to/fr is cycled by clr button
|
||||
}
|
||||
|
|
|
@ -51,15 +51,15 @@ void KLN89CalPage::Update(double dt) {
|
|||
bool crsr = (_kln89->_mode == KLN89_MODE_CRSR);
|
||||
bool blink = _kln89->_blink;
|
||||
if(_subPage == 0) {
|
||||
if(1) { // TODO - fix this hardwiring!
|
||||
if(1) { // TODO: fix this hardwiring!
|
||||
// Flightplan calc
|
||||
_kln89->DrawText(">Fpl:", 2, 0, 3);
|
||||
_kln89->DrawText("0", 2, 6, 3);// TODO - fix this hardwiring!
|
||||
_kln89->DrawText("0", 2, 6, 3);// TODO: fix this hardwiring!
|
||||
GPSFlightPlan* fp = _kln89->_flightPlans[_nFp0];
|
||||
if(fp) {
|
||||
unsigned int n = fp->waypoints.size();
|
||||
if(n < 2) {
|
||||
// TODO - check that this is what really happens
|
||||
// TODO: check that this is what really happens
|
||||
_kln89->DrawText("----", 2, 9, 3);
|
||||
_kln89->DrawText("----", 2, 9, 2);
|
||||
} else {
|
||||
|
@ -83,16 +83,16 @@ void KLN89CalPage::Update(double dt) {
|
|||
_kln89->DrawText(">Wpt:", 2, 0, 3);
|
||||
}
|
||||
_kln89->DrawText("To", 2, 6, 2);
|
||||
_kln89->DrawText("ESA ----'", 2, 7, 1); // TODO - implement an ESA calc
|
||||
_kln89->DrawText("ESA ----'", 2, 7, 1); // TODO: implement an ESA calc
|
||||
_kln89->DrawText("ETE", 2, 7, 0);
|
||||
} else if(_subPage == 1) {
|
||||
_kln89->DrawText(">Fpl: 0", 2, 0, 3); // TODO - fix this hardwiring!
|
||||
_kln89->DrawText(">Fpl: 0", 2, 0, 3); // TODO: fix this hardwiring!
|
||||
_kln89->DrawText("FF:", 2, 0, 2);
|
||||
_kln89->DrawText("Res:", 2, 7, 1);
|
||||
_kln89->DrawText("Fuel Req", 2, 0, 0);
|
||||
} else if(_subPage == 2) {
|
||||
_kln89->DrawText("Time:", 2, 0, 3);
|
||||
// TODO - hardwired to UTC at the moment
|
||||
// TODO: hardwired to UTC at the moment
|
||||
if(!(_uLinePos == 1 && crsr && blink)) { _kln89->DrawText("UTC", 2, 6, 3); }
|
||||
if(_uLinePos == 1 && crsr) { _kln89->Underline(2, 6, 3, 3); }
|
||||
string th = fgGetString("/instrumentation/clock/indicated-hour");
|
||||
|
@ -210,7 +210,7 @@ void KLN89CalPage::Knob2Left1() {
|
|||
|
||||
if(_subPage == 2) {
|
||||
if(_uLinePos == 1) {
|
||||
// TODO - allow time zone to be changed
|
||||
// TODO: allow time zone to be changed
|
||||
} else if(_uLinePos == 2) {
|
||||
ClockTime t(1,0);
|
||||
if(_alarmAnnotate) {
|
||||
|
@ -275,7 +275,7 @@ void KLN89CalPage::Knob2Right1() {
|
|||
|
||||
if(_subPage == 2) {
|
||||
if(_uLinePos == 1) {
|
||||
// TODO - allow time zone to be changed
|
||||
// TODO: allow time zone to be changed
|
||||
} else if(_uLinePos == 2) {
|
||||
ClockTime t(1,0);
|
||||
if(_alarmAnnotate) {
|
||||
|
|
|
@ -43,7 +43,7 @@ KLN89DirPage::~KLN89DirPage() {
|
|||
}
|
||||
|
||||
void KLN89DirPage::Update(double dt) {
|
||||
// TODO - this can apparently be "ACTIVATE:" under some circumstances
|
||||
// TODO: this can apparently be "ACTIVATE:" under some circumstances
|
||||
_kln89->DrawText("DIRECT TO:", 2, 2, 3);
|
||||
|
||||
if(_kln89->_mode == KLN89_MODE_CRSR) {
|
||||
|
|
|
@ -59,7 +59,7 @@ void KLN89FplPage::Update(double dt) {
|
|||
Calc();
|
||||
|
||||
// NOTE - we need to draw the active leg arrow outside of this block to avoid the _delFP check.
|
||||
// TODO - we really ought to merge the page 0 and other pages drawing code with a couple of lines of extra logic.
|
||||
// TODO: we really ought to merge the page 0 and other pages drawing code with a couple of lines of extra logic.
|
||||
if(_subPage == 0 && !_delFP) { // Note that in the _delFP case, the active flightplan gets a header, and hence the same geometry as the other fps, so we draw it there.
|
||||
// active FlightPlan
|
||||
// NOTE THAT FOR THE ACTIVE FLIGHT PLAN, TOP POSITION IS STILL 4 in the underline position scheme, to make
|
||||
|
@ -236,7 +236,7 @@ void KLN89FplPage::Update(double dt) {
|
|||
if(waylist.size() < 4) last_pos = waylist.size();
|
||||
|
||||
// Don't draw the cyclic field header if the top waypoint is the approach header
|
||||
// Not sure if this also applies to the fence - don't think so but TODO - check!
|
||||
// Not sure if this also applies to the fence - don't think so but TODO: check!
|
||||
if(!waylist.empty() && _fplPos < waylist.size()) {
|
||||
if(waylist[_fplPos].appType != GPS_HDR) {
|
||||
_kln89->DrawChar('>', 2, 12, 3);
|
||||
|
@ -369,7 +369,7 @@ void KLN89FplPage::Update(double dt) {
|
|||
_kln89->DrawText(s, 2, 16-s.size(), 3-i);
|
||||
}
|
||||
} else if(_actFpMode == 3) { // DTK
|
||||
// TODO - figure out properly what to do in DTK mode when beyond a waypoint being entered.
|
||||
// TODO: figure out properly what to do in DTK mode when beyond a waypoint being entered.
|
||||
// I *think* it is OK to do the same as here, but maybe not for the waypoint immediately
|
||||
// beyond the one being entered - need to check.
|
||||
string s = _params[_fplPos + i - 1];
|
||||
|
@ -482,7 +482,7 @@ void KLN89FplPage::Update(double dt) {
|
|||
}
|
||||
if(last_pos > 0 && last_pos < waylist.size() && i > 0) {
|
||||
// Draw the param
|
||||
// TODO - we should also handle DTK mode params here.
|
||||
// TODO: we should also handle DTK mode params here.
|
||||
if(_fpMode == 0) { // DIS
|
||||
if(_kln89->_mode == KLN89_MODE_CRSR && _bEntWp && _uLinePos < i+4) {
|
||||
// This means that we are beyond the waypoint being entered. In DIS mode
|
||||
|
@ -501,7 +501,7 @@ void KLN89FplPage::Update(double dt) {
|
|||
}
|
||||
if(i > 0) {
|
||||
// Draw the param
|
||||
// TODO - we should also handle DTK mode params here.
|
||||
// TODO: we should also handle DTK mode params here.
|
||||
if(_fpMode == 0) { // DIS
|
||||
if(_kln89->_mode == KLN89_MODE_CRSR && _bEntWp && _uLinePos < i+4) {
|
||||
// This means that we are beyond the waypoint being entered. In DIS mode
|
||||
|
@ -527,7 +527,7 @@ void KLN89FplPage::DrawFpMode(int ypos) {
|
|||
if(_actFpMode == 1) {
|
||||
s = "ETE";
|
||||
} else if(_actFpMode == 2) {
|
||||
s = "UTC"; // TODO - alter depending on chosen timezone
|
||||
s = "UTC"; // TODO: alter depending on chosen timezone
|
||||
} else if(_actFpMode == 3) {
|
||||
s = (_kln89->_obsMode ? "OBS" : "Dtk");
|
||||
}
|
||||
|
@ -560,7 +560,7 @@ void KLN89FplPage::Calc() {
|
|||
cum_tot += _kln89->GetGreatCircleDistance(_kln89->_gpsLat, _kln89->_gpsLon, wv[0]->lat, wv[0]->lon);
|
||||
}
|
||||
for(unsigned int i=1; i<wv.size(); ++i) {
|
||||
cum_tot += _kln89->GetGreatCircleDistance(wv[i-1]->lat, wv[i-1]->lon, wv[i]->lat, wv[i]->lon); // TODO - add units switch!
|
||||
cum_tot += _kln89->GetGreatCircleDistance(wv[i-1]->lat, wv[i-1]->lon, wv[i]->lat, wv[i]->lon); // TODO: add units switch!
|
||||
int n = (int)(cum_tot + 0.5);
|
||||
_params.push_back(GPSitoa(n));
|
||||
}
|
||||
|
@ -582,7 +582,7 @@ void KLN89FplPage::Calc() {
|
|||
if(0 == _fpMode) {
|
||||
double cum_tot = 0.0;
|
||||
for(unsigned int i=1; i<wv.size(); ++i) {
|
||||
cum_tot += _kln89->GetGreatCircleDistance(wv[i-1]->lat, wv[i-1]->lon, wv[i]->lat, wv[i]->lon); // TODO - add units switch!
|
||||
cum_tot += _kln89->GetGreatCircleDistance(wv[i-1]->lat, wv[i-1]->lon, wv[i]->lat, wv[i]->lon); // TODO: add units switch!
|
||||
int n = (int)(cum_tot + 0.5);
|
||||
_params.push_back(GPSitoa(n));
|
||||
}
|
||||
|
@ -637,7 +637,7 @@ void KLN89FplPage::ClrPressed() {
|
|||
_kln89->_mode = KLN89_MODE_DISP;
|
||||
} else {
|
||||
if(KLN89_MODE_CRSR == _kln89->_mode) {
|
||||
// TODO - see if we need to delete a waypoint
|
||||
// TODO: see if we need to delete a waypoint
|
||||
if(_uLinePos >= 4) {
|
||||
if(_delWp) {
|
||||
// If we are already displaying a clear waypoint dialog in response to the CLR button,
|
||||
|
@ -713,7 +713,7 @@ void KLN89FplPage::ClrPressed() {
|
|||
}
|
||||
|
||||
void KLN89FplPage::CleanUp() {
|
||||
// TODO - possibly need to clean up _delWp here as well, since it goes off if dto and then ent are pressed.
|
||||
// TODO: possibly need to clean up _delWp here as well, since it goes off if dto and then ent are pressed.
|
||||
|
||||
_bEntWp = false;
|
||||
for(unsigned int i = 0; i < _kln89->_flightPlans[_subPage]->waypoints.size(); ++i) {
|
||||
|
@ -770,7 +770,7 @@ void KLN89FplPage::EntPressed() {
|
|||
}
|
||||
} else if(_bEntWp) {
|
||||
if(_entWp != NULL) {
|
||||
// TODO - should be able to get rid of this switch I think and use the enum values.
|
||||
// TODO: should be able to get rid of this switch I think and use the enum values.
|
||||
switch(_entWp->type) {
|
||||
case GPS_WP_APT:
|
||||
_kln89->_activePage = _kln89->_pages[0];
|
||||
|
@ -1006,7 +1006,7 @@ void KLN89FplPage::Knob2Left1() {
|
|||
}
|
||||
|
||||
if(hdrPos) {
|
||||
// TODO - not sure what we actually do in this condition
|
||||
// TODO: not sure what we actually do in this condition
|
||||
_changeAppr = true;
|
||||
} else if(fencePos) {
|
||||
// no-op?
|
||||
|
@ -1090,7 +1090,7 @@ void KLN89FplPage::Knob2Right1() {
|
|||
}
|
||||
|
||||
if(hdrPos) {
|
||||
// TODO - not sure what we actually do in this condition
|
||||
// TODO: not sure what we actually do in this condition
|
||||
_changeAppr = true;
|
||||
} else if(fencePos) {
|
||||
// no-op?
|
||||
|
|
|
@ -76,7 +76,7 @@ void KLN89IntPage::Update(double dt) {
|
|||
_fp->get_lat() * SG_DEGREES_TO_RADIANS, _fp->get_lon() * SG_DEGREES_TO_RADIANS);
|
||||
_nvDist = _kln89->GetGreatCircleDistance(_nearestVor->get_lat() * SG_DEGREES_TO_RADIANS, _nearestVor->get_lon() * SG_DEGREES_TO_RADIANS,
|
||||
_fp->get_lat() * SG_DEGREES_TO_RADIANS, _fp->get_lon() * SG_DEGREES_TO_RADIANS);
|
||||
_refNav = _nearestVor; // TODO - check that this *always* holds - eg. when changing INT id after explicitly setting ref nav
|
||||
_refNav = _nearestVor; // TODO: check that this *always* holds - eg. when changing INT id after explicitly setting ref nav
|
||||
// but with no loss of focus.
|
||||
} else {
|
||||
_refNav = NULL;
|
||||
|
@ -113,7 +113,7 @@ void KLN89IntPage::Update(double dt) {
|
|||
_kln89->DrawText("Rad:", 2, 1, 1);
|
||||
_kln89->DrawText("Dis:", 2, 1, 0);
|
||||
if(_refNav) {
|
||||
_kln89->DrawText(_refNav->get_ident(), 2, 9, 2); // TODO - flash and allow to change if under cursor
|
||||
_kln89->DrawText(_refNav->get_ident(), 2, 9, 2); // TODO: flash and allow to change if under cursor
|
||||
//_kln89->DrawHeading(_nvRadial, 2, 11, 1);
|
||||
//_kln89->DrawDist(_nvDist, 2, 11, 0);
|
||||
// Currently our draw heading and draw dist functions don't do as many decimal points as we want here,
|
||||
|
@ -134,7 +134,7 @@ void KLN89IntPage::Update(double dt) {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
// TODO - when we leave the page with invalid id and return it should
|
||||
// TODO: when we leave the page with invalid id and return it should
|
||||
// revert to showing the last valid id. Same for vor/ndb/probably apt etc.
|
||||
if(_kln89->_mode != KLN89_MODE_CRSR) _kln89->DrawText(_int_id, 2, 1, 3);
|
||||
if(_subPage == 0) {
|
||||
|
@ -151,7 +151,7 @@ void KLN89IntPage::Update(double dt) {
|
|||
|
||||
if(_kln89->_mode == KLN89_MODE_CRSR) {
|
||||
if(_uLinePos > 0 && _uLinePos < 6) {
|
||||
// TODO - blink as well
|
||||
// TODO: blink as well
|
||||
_kln89->Underline(2, _uLinePos, 3, 1);
|
||||
}
|
||||
for(unsigned int i = 0; i < _int_id.size(); ++i) {
|
||||
|
@ -163,7 +163,7 @@ void KLN89IntPage::Update(double dt) {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO - fix this duplication - use _id instead of _apt_id, _vor_id, _ndb_id, _int_id etc!
|
||||
// TODO: fix this duplication - use _id instead of _apt_id, _vor_id, _ndb_id, _int_id etc!
|
||||
_id = _int_id;
|
||||
|
||||
KLN89Page::Update(dt);
|
||||
|
@ -226,7 +226,7 @@ void KLN89IntPage::Knob2Left1() {
|
|||
if(_subPage == 0) {
|
||||
// NO-OP - from/to field is switched by clr button, not inner knob.
|
||||
} else {
|
||||
// TODO - LNR type field.
|
||||
// TODO: LNR type field.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -249,7 +249,7 @@ void KLN89IntPage::Knob2Right1() {
|
|||
if(_subPage == 0) {
|
||||
// NO-OP - from/to field is switched by clr button, not inner knob.
|
||||
} else {
|
||||
// TODO - LNR type field.
|
||||
// TODO: LNR type field.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -98,7 +98,7 @@ void KLN89NavPage::Update(double dt) {
|
|||
} else if(_cdiFormat == 1) {
|
||||
_kln89->DrawText("Fly", 2, 2, 2);
|
||||
double x = _kln89->CalcCrossTrackDeviation();
|
||||
// TODO - check the R/L from sign of x below - I *think* it holds but not sure!
|
||||
// TODO: check the R/L from sign of x below - I *think* it holds but not sure!
|
||||
// Note also that we're setting Fly R or L based on the aircraft
|
||||
// position only, not the heading. Not sure if this is correct or not.
|
||||
_kln89->DrawText(x < 0.0 ? "R" : "L", 2, 6, 2);
|
||||
|
@ -153,7 +153,7 @@ void KLN89NavPage::Update(double dt) {
|
|||
}
|
||||
|
||||
// Radial to/from active waypoint.
|
||||
// TODO - Not sure if this either is or should be true or mag!!!!!!!
|
||||
// TODO: Not sure if this either is or should be true or mag!!!!!!!
|
||||
if(!(crsr && blink && _uLinePos == 2)) {
|
||||
if(0 == _vnv) {
|
||||
_kln89->DrawHeading((int)_kln89->GetHeadingToActiveWaypoint(), 2, 4, 0);
|
||||
|
@ -168,7 +168,7 @@ void KLN89NavPage::Update(double dt) {
|
|||
// It seems that the floating point groundspeed must be at least 30kt
|
||||
// for an ETA to be calculated. Note that this means that (integer) 30kt
|
||||
// can appear in the frame 1 display both with and without an ETA displayed.
|
||||
// TODO - need to switch off track (and heading bug change) based on instantaneous speed as well
|
||||
// TODO: need to switch off track (and heading bug change) based on instantaneous speed as well
|
||||
// since the long gps lag filter means we can still be displaying when stopped on ground.
|
||||
if(_kln89->_groundSpeed_kts > 30.0) {
|
||||
// Assuming eta display is always hh:mm
|
||||
|
@ -197,7 +197,7 @@ void KLN89NavPage::Update(double dt) {
|
|||
}
|
||||
} else if(2 == _subPage) {
|
||||
_kln89->DrawText("Time", 2, 0, 3);
|
||||
// TODO - hardwired to UTC at the moment
|
||||
// TODO: hardwired to UTC at the moment
|
||||
_kln89->DrawText("UTC", 2, 6, 3);
|
||||
string th = fgGetString("/instrumentation/clock/indicated-hour");
|
||||
string tm = fgGetString("/instrumentation/clock/indicated-min");
|
||||
|
@ -213,7 +213,7 @@ void KLN89NavPage::Update(double dt) {
|
|||
the ETA to the final (destination) waypoint of the active flightplan.
|
||||
If the active waypoint is not part of the active flightplan, then
|
||||
display the ETA to the active waypoint. */
|
||||
// TODO - implement the above properly - we haven't below!
|
||||
// TODO: implement the above properly - we haven't below!
|
||||
string wid = "";
|
||||
if(fp->waypoints.size()) {
|
||||
wid = fp->waypoints[fp->waypoints.size() - 1]->id;
|
||||
|
@ -354,7 +354,7 @@ void KLN89NavPage::Update(double dt) {
|
|||
case 0:
|
||||
// DTK
|
||||
_kln89->DrawLabel("DTK", -39, 6);
|
||||
// TODO - check we have an active FP / dtk and draw dashes if not.
|
||||
// TODO: check we have an active FP / dtk and draw dashes if not.
|
||||
char buf0[4];
|
||||
snprintf(buf0, 4, "%03i", (int)(_kln89->_dtkMag));
|
||||
_kln89->DrawText((string)buf0, 1, 3, 0);
|
||||
|
@ -505,7 +505,7 @@ void KLN89NavPage::Knob1Right1() {
|
|||
void KLN89NavPage::Knob2Left1() {
|
||||
// If the inner-knob is out on the nav4 page, the only effect is to cycle the displayed waypoint.
|
||||
if(3 == _subPage && fgGetBool("/instrumentation/kln89/scan-pull")) {
|
||||
if(_kln89->_activeFP->waypoints.size()) { // TODO - find out what happens when scan-pull is on on nav4 without an active FP.
|
||||
if(_kln89->_activeFP->waypoints.size()) { // TODO: find out what happens when scan-pull is on on nav4 without an active FP.
|
||||
// It's unlikely that we could get here without _scanWpSet, but theoretically possible, so we need to cover it.
|
||||
if(!_scanWpSet) {
|
||||
_scanWpIndex = _kln89->GetActiveWaypointIndex();
|
||||
|
@ -546,7 +546,7 @@ void KLN89NavPage::Knob2Left1() {
|
|||
_kln89->UpdateMapHeading();
|
||||
}
|
||||
} else if(_uLinePos == 3) {
|
||||
// TODO - add AUTO
|
||||
// TODO: add AUTO
|
||||
if(_kln89->_mapScaleIndex == 0) {
|
||||
_kln89->_mapScaleIndex = 20;
|
||||
} else {
|
||||
|
@ -559,7 +559,7 @@ void KLN89NavPage::Knob2Left1() {
|
|||
void KLN89NavPage::Knob2Right1() {
|
||||
// If the inner-knob is out on the nav4 page, the only effect is to cycle the displayed waypoint.
|
||||
if(3 == _subPage && fgGetBool("/instrumentation/kln89/scan-pull")) {
|
||||
if(_kln89->_activeFP->waypoints.size()) { // TODO - find out what happens when scan-pull is on on nav4 without an active FP.
|
||||
if(_kln89->_activeFP->waypoints.size()) { // TODO: find out what happens when scan-pull is on on nav4 without an active FP.
|
||||
// It's unlikely that we could get here without _scanWpSet, but theoretically possible, so we need to cover it.
|
||||
if(!_scanWpSet) {
|
||||
_scanWpIndex = _kln89->GetActiveWaypointIndex();
|
||||
|
@ -599,7 +599,7 @@ void KLN89NavPage::Knob2Right1() {
|
|||
_kln89->UpdateMapHeading();
|
||||
}
|
||||
} else if(_uLinePos == 3) {
|
||||
// TODO - add AUTO
|
||||
// TODO: add AUTO
|
||||
if(_kln89->_mapScaleIndex == 20) {
|
||||
_kln89->_mapScaleIndex = 0;
|
||||
} else {
|
||||
|
|
|
@ -93,7 +93,7 @@ void KLN89NDBPage::Update(double dt) {
|
|||
}
|
||||
}
|
||||
if(_subPage == 0) {
|
||||
// TODO - trim VOR-DME from the name, convert to uppercase, abbreviate, etc
|
||||
// TODO: trim VOR-DME from the name, convert to uppercase, abbreviate, etc
|
||||
_kln89->DrawText(np->name(), 2, 0, 2);
|
||||
_kln89->DrawLatitude(np->get_lat(), 2, 3, 1);
|
||||
_kln89->DrawLongitude(np->get_lon(), 2, 3, 0);
|
||||
|
@ -115,7 +115,7 @@ void KLN89NDBPage::Update(double dt) {
|
|||
|
||||
if(_kln89->_mode == KLN89_MODE_CRSR) {
|
||||
if(_uLinePos > 0 && _uLinePos < 4) {
|
||||
// TODO - blink as well
|
||||
// TODO: blink as well
|
||||
_kln89->Underline(2, _uLinePos, 3, 1);
|
||||
}
|
||||
for(unsigned int i = 0; i < _ndb_id.size(); ++i) {
|
||||
|
|
|
@ -52,7 +52,7 @@ void KLN89OthPage::Update(double dt) {
|
|||
|
||||
// FIXME - hardwired value.
|
||||
_kln89->DrawText("NAV D", 2, 9, 3);
|
||||
// TODO - add error physics to FG GPS where the alt value comes from.
|
||||
// TODO: add error physics to FG GPS where the alt value comes from.
|
||||
char buf[6];
|
||||
int n = snprintf(buf, 5, "%i", _kln89->_altUnits == GPS_ALT_UNITS_FT ? (int)_kln89->_alt : (int)(_kln89->_alt * SG_FEET_TO_METER));
|
||||
_kln89->DrawText((string)buf, 2, 13-n, 2);
|
||||
|
|
|
@ -106,13 +106,13 @@ void KLN89SetPage::Update(double dt) {
|
|||
_kln89->DrawSpecialChar(5, 2, 7, 1); // +- sign.
|
||||
if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 2) {
|
||||
if(!_kln89->_blink) {
|
||||
_kln89->DrawText("00300", 2, 8, 1); // TODO - fix this hardwiring!!!!
|
||||
_kln89->DrawText("00300", 2, 8, 1); // TODO: fix this hardwiring!!!!
|
||||
}
|
||||
_kln89->Underline(2, 8, 1, 5);
|
||||
} else {
|
||||
_kln89->DrawText("00300", 2, 8, 1); // TODO - fix this hardwiring!!!!
|
||||
_kln89->DrawText("00300", 2, 8, 1); // TODO: fix this hardwiring!!!!
|
||||
}
|
||||
_kln89->DrawText("ft", 2, 13, 1); // TODO - fix this hardwiring!!!!
|
||||
_kln89->DrawText("ft", 2, 13, 1); // TODO: fix this hardwiring!!!!
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
|
@ -261,7 +261,7 @@ void KLN89SetPage::Knob2Left1() {
|
|||
_kln89->SetSuaAlertEnabled(!_kln89->GetSuaAlertEnabled());
|
||||
_maxULinePos = (_kln89->GetSuaAlertEnabled() ? 2 : 1);
|
||||
} else if(_uLinePos == 2) {
|
||||
// TODO - implement variable sua alert buffer
|
||||
// TODO: implement variable sua alert buffer
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
|
@ -310,7 +310,7 @@ void KLN89SetPage::Knob2Right1() {
|
|||
_kln89->SetSuaAlertEnabled(!_kln89->GetSuaAlertEnabled());
|
||||
_maxULinePos = (_kln89->GetSuaAlertEnabled() ? 2 : 1);
|
||||
} else if(_uLinePos == 2) {
|
||||
// TODO - implement variable sua alert buffer
|
||||
// TODO: implement variable sua alert buffer
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
|
|
|
@ -37,7 +37,7 @@ KLN89VorPage::KLN89VorPage(KLN89* parent)
|
|||
_nSubPages = 2;
|
||||
_subPage = 0;
|
||||
_name = "VOR";
|
||||
_vor_id = "OSI"; // TODO - check a property for an initial value to allow user-override.
|
||||
_vor_id = "OSI"; // TODO: check a property for an initial value to allow user-override.
|
||||
np = NULL;
|
||||
}
|
||||
|
||||
|
@ -93,9 +93,9 @@ void KLN89VorPage::Update(double dt) {
|
|||
}
|
||||
}
|
||||
if(_subPage == 0) {
|
||||
//// TODO - will almost certainly have to process freq below for FG
|
||||
//// TODO: will almost certainly have to process freq below for FG
|
||||
_kln89->DrawFreq(np->get_freq(), 2, 9, 3);
|
||||
// TODO - trim VOR-DME from the name, convert to uppercase, abbreviate, etc
|
||||
// TODO: trim VOR-DME from the name, convert to uppercase, abbreviate, etc
|
||||
_kln89->DrawText(np->name(), 2, 0, 2);
|
||||
//cout << np->lat << "... ";
|
||||
_kln89->DrawLatitude(np->get_lat(), 2, 3, 1);
|
||||
|
@ -127,7 +127,7 @@ void KLN89VorPage::Update(double dt) {
|
|||
|
||||
if(_kln89->_mode == KLN89_MODE_CRSR) {
|
||||
if(_uLinePos > 0 && _uLinePos < 4) {
|
||||
// TODO - blink as well
|
||||
// TODO: blink as well
|
||||
_kln89->Underline(2, _uLinePos, 3, 1);
|
||||
}
|
||||
for(unsigned int i = 0; i < _vor_id.size(); ++i) {
|
||||
|
|
|
@ -222,7 +222,7 @@ DCLGPS::DCLGPS(RenderArea2D* instrument) {
|
|||
DCLGPS::~DCLGPS() {
|
||||
delete _approachFP; // Don't need to delete the waypoints inside since they point to
|
||||
// the waypoints in the approach database.
|
||||
// TODO - may need to delete the approach database!!
|
||||
// TODO: may need to delete the approach database!!
|
||||
}
|
||||
|
||||
void DCLGPS::draw(osg::State& state) {
|
||||
|
@ -273,7 +273,7 @@ void DCLGPS::update(double dt) {
|
|||
_checkLon = _gpsLon;
|
||||
_checkLat = _gpsLat;
|
||||
|
||||
// TODO - check for unit power before running this.
|
||||
// TODO: check for unit power before running this.
|
||||
if(!_powerOnTimerSet) {
|
||||
SetPowerOnTimer();
|
||||
}
|
||||
|
@ -297,7 +297,7 @@ void DCLGPS::update(double dt) {
|
|||
_departureTimeString = th + tm;
|
||||
}
|
||||
} else {
|
||||
// TODO - check - is this prone to drift error over time?
|
||||
// TODO: check - is this prone to drift error over time?
|
||||
// Should we difference the departure and current times?
|
||||
// What about when the user resets the time of day from the menu?
|
||||
_elapsedTime += dt;
|
||||
|
@ -321,7 +321,7 @@ void DCLGPS::update(double dt) {
|
|||
if(_approachLoaded) {
|
||||
if(!_approachReallyArmed && !_approachActive) {
|
||||
// arm if within 30nm of airport.
|
||||
// TODO - let user cancel approach arm using external GPS-APR switch
|
||||
// TODO: let user cancel approach arm using external GPS-APR switch
|
||||
bool multi;
|
||||
const FGAirport* ap = FindFirstAptById(_approachID, multi, true);
|
||||
if(ap != NULL) {
|
||||
|
@ -348,7 +348,7 @@ void DCLGPS::update(double dt) {
|
|||
//cout << "Active waypoint is FAF, id is " << _activeWaypoint.id << '\n';
|
||||
if(GetGreatCircleDistance(_gpsLat, _gpsLon, _activeWaypoint.lat, _activeWaypoint.lon) <= 2.0 && !_obsMode) {
|
||||
// Assume heading is OK for now
|
||||
_approachArm = false; // TODO - check - maybe arm is left on when actv comes on?
|
||||
_approachArm = false; // TODO: check - maybe arm is left on when actv comes on?
|
||||
_approachReallyArmed = false;
|
||||
_approachActive = true;
|
||||
_targetCdiScaleIndex = 2;
|
||||
|
@ -357,7 +357,7 @@ void DCLGPS::update(double dt) {
|
|||
} else if(_currentCdiScaleIndex == 1) {
|
||||
_sourceCdiScaleIndex = 1;
|
||||
_cdiScaleTransition = true;
|
||||
_cdiTransitionTime = 30.0; // TODO - compress it if time to FAF < 30sec
|
||||
_cdiTransitionTime = 30.0; // TODO: compress it if time to FAF < 30sec
|
||||
_currentCdiScale = _cdiScales[_currentCdiScaleIndex];
|
||||
} else {
|
||||
// Abort going active?
|
||||
|
@ -409,7 +409,7 @@ void DCLGPS::update(double dt) {
|
|||
// reverses to from once wp is passed).
|
||||
/*
|
||||
if(_fromWaypoint != NULL) {
|
||||
// TODO - how do we handle the change of track with distance over long legs?
|
||||
// TODO: how do we handle the change of track with distance over long legs?
|
||||
_dtkTrue = GetGreatCircleCourse(_fromWaypoint->lat, _fromWaypoint->lon, _activeWaypoint->lat, _activeWaypoint->lon) * SG_RADIANS_TO_DEGREES;
|
||||
_dtkMag = GetMagHeadingFromTo(_fromWaypoint->lat, _fromWaypoint->lon, _activeWaypoint->lat, _activeWaypoint->lon);
|
||||
// Don't change the heading bug if speed is too low otherwise it flickers to/from at rest
|
||||
|
@ -424,7 +424,7 @@ void DCLGPS::update(double dt) {
|
|||
} else {
|
||||
_dtkTrue = 0.0;
|
||||
_dtkMag = 0.0;
|
||||
// TODO - in DTO operation the position of initiation of DTO defines the "from waypoint".
|
||||
// TODO: in DTO operation the position of initiation of DTO defines the "from waypoint".
|
||||
}
|
||||
*/
|
||||
if(!_activeWaypoint.id.empty()) {
|
||||
|
@ -449,16 +449,16 @@ void DCLGPS::update(double dt) {
|
|||
_dist2Act = GetGreatCircleDistance(_gpsLat, _gpsLon, _activeWaypoint.lat, _activeWaypoint.lon) * SG_NM_TO_METER;
|
||||
if(_groundSpeed_ms > 10.0) {
|
||||
_eta = _dist2Act / _groundSpeed_ms;
|
||||
if(_eta <= 36) { // TODO - this is slightly different if turn anticipation is enabled.
|
||||
if(_eta <= 36) { // TODO: this is slightly different if turn anticipation is enabled.
|
||||
if(_headingBugTo) {
|
||||
_waypointAlert = true; // TODO - not if the from flag is set.
|
||||
_waypointAlert = true; // TODO: not if the from flag is set.
|
||||
}
|
||||
}
|
||||
if(_eta < 60) {
|
||||
// Check if we should sequence to next leg.
|
||||
// Perhaps this should be done on distance instead, but 60s time (about 1 - 2 nm) seems reasonable for now.
|
||||
//double reverseHeading = GetGreatCircleCourse(_activeWaypoint->lat, _activeWaypoint->lon, _fromWaypoint->lat, _fromWaypoint->lon);
|
||||
// Hack - let's cheat and do it on heading bug for now. TODO - that stops us 'cutting the corner'
|
||||
// Hack - let's cheat and do it on heading bug for now. TODO: that stops us 'cutting the corner'
|
||||
// when we happen to approach the inside turn of a waypoint - we should probably sequence at the midpoint
|
||||
// of the heading difference between legs in this instance.
|
||||
int idx = GetActiveWaypointIndex();
|
||||
|
@ -480,7 +480,7 @@ void DCLGPS::update(double dt) {
|
|||
// Course alteration message format is dependent on whether we are slaved HSI/CDI indicator or not.
|
||||
string s;
|
||||
if(fgGetBool("/instrumentation/nav[0]/slaved-to-gps")) {
|
||||
// TODO - avoid the hardwiring on nav[0]
|
||||
// TODO: avoid the hardwiring on nav[0]
|
||||
s = "Adj Nav Crs to ";
|
||||
} else {
|
||||
s = "GPS Course is ";
|
||||
|
@ -792,7 +792,7 @@ void DCLGPS::LoadApproachData() {
|
|||
string rwystr;
|
||||
try {
|
||||
rwystr = w.id.substr(2, 2);
|
||||
// TODO - sanity check the rwystr at this point to ensure we have a double digit number
|
||||
// TODO: sanity check the rwystr at this point to ensure we have a double digit number
|
||||
if(w.id.size() > 4) {
|
||||
if(w.id[4] == 'L' || w.id[4] == 'C' || w.id[4] == 'R') {
|
||||
rwystr += w.id[4];
|
||||
|
@ -835,7 +835,7 @@ void DCLGPS::LoadApproachData() {
|
|||
if(!wp_error) {
|
||||
if(route_in_progress) {
|
||||
if(sequence_number > last_sequence_number) {
|
||||
// TODO - add a check for runway numbers
|
||||
// TODO: add a check for runway numbers
|
||||
// Check for the waypoint ID being the same as the previous line.
|
||||
// This is often the case for the missed approach holding point.
|
||||
if(wp_ident == last_wp_ident) {
|
||||
|
@ -862,7 +862,7 @@ void DCLGPS::LoadApproachData() {
|
|||
// This seems to happen once per final approach route - one of the waypoints
|
||||
// is duplicated with the same sequence number - I'm not sure what information
|
||||
// the second line give yet so ignore it for now.
|
||||
// TODO - figure this out!
|
||||
// TODO: figure this out!
|
||||
} else {
|
||||
// Finalise the current route and start a new one
|
||||
//
|
||||
|
@ -911,7 +911,7 @@ void DCLGPS::LoadApproachData() {
|
|||
}
|
||||
} else {
|
||||
// Check and finalise any approaches in progress
|
||||
// TODO - sanity check that the approach has all the required elements
|
||||
// TODO: sanity check that the approach has all the required elements
|
||||
if(iap_in_progress) {
|
||||
// This is a new approach - store the last one and trigger
|
||||
// starting afresh by setting the in progress flag to false.
|
||||
|
@ -931,7 +931,7 @@ void DCLGPS::LoadApproachData() {
|
|||
}
|
||||
|
||||
// If we get to the end of the file, load any approach that is still in progress
|
||||
// TODO - sanity check that the approach has all the required elements
|
||||
// TODO: sanity check that the approach has all the required elements
|
||||
if(iap_in_progress) {
|
||||
if(iap_error) {
|
||||
//cout << "ERROR: Unable to load approach " << iap->_ident << " at " << iap->_aptIdent << '\n';
|
||||
|
@ -984,7 +984,7 @@ double DCLGPS::GetCDIDeflection() const {
|
|||
void DCLGPS::DtoInitiate(const string& s) {
|
||||
const GPSWaypoint* wp = FindFirstByExactId(s);
|
||||
if(wp) {
|
||||
// TODO - Currently we start DTO operation unconditionally, regardless of which mode we are in.
|
||||
// TODO: Currently we start DTO operation unconditionally, regardless of which mode we are in.
|
||||
// In fact, the following rules apply:
|
||||
// In LEG mode, start DTO as we currently do.
|
||||
// In OBS mode, set the active waypoint to the requested waypoint, and then:
|
||||
|
@ -1000,7 +1000,7 @@ void DCLGPS::DtoInitiate(const string& s) {
|
|||
_fromWaypoint.id = "_DTOWP_";
|
||||
delete wp;
|
||||
} else {
|
||||
// TODO - Should bring up the user waypoint page.
|
||||
// TODO: Should bring up the user waypoint page.
|
||||
_dto = false;
|
||||
}
|
||||
}
|
||||
|
@ -1040,7 +1040,7 @@ void DCLGPS::ToggleOBSMode() {
|
|||
_obsHeading = static_cast<int>(_dtkMag + 0.5);
|
||||
//cout << "_dtkMag = " << _dtkMag << ", _dtkTrue = " << _dtkTrue << ", _obsHeading = " << _obsHeading << '\n';
|
||||
} else {
|
||||
// TODO - what should we really do here?
|
||||
// TODO: what should we really do here?
|
||||
_obsHeading = 0;
|
||||
}
|
||||
|
||||
|
@ -1048,7 +1048,7 @@ void DCLGPS::ToggleOBSMode() {
|
|||
if(_obsHeading > 359) _obsHeading -= 360;
|
||||
if(_obsHeading < 0) _obsHeading += 360;
|
||||
|
||||
// TODO - the _fromWaypoint location will change as the OBS heading changes.
|
||||
// TODO: the _fromWaypoint location will change as the OBS heading changes.
|
||||
// Might need to store the OBS initiation position somewhere in case it is needed again.
|
||||
SetOBSFromWaypoint();
|
||||
}
|
||||
|
@ -1059,7 +1059,7 @@ void DCLGPS::SetOBSFromWaypoint() {
|
|||
if(!_obsMode) return;
|
||||
if(_activeWaypoint.id.empty()) return;
|
||||
|
||||
// TODO - base the 180 deg correction on the to/from flag.
|
||||
// TODO: base the 180 deg correction on the to/from flag.
|
||||
_fromWaypoint = GetPositionOnMagRadial(_activeWaypoint, 10, _obsHeading + 180.0);
|
||||
_fromWaypoint.type = GPS_WP_VIRT;
|
||||
_fromWaypoint.id = "_OBSWP_";
|
||||
|
@ -1104,7 +1104,7 @@ double DCLGPS::GetETE() {
|
|||
if(_groundSpeed_kts < 30.0) {
|
||||
return(-1.0);
|
||||
} else {
|
||||
// TODO - handle OBS / DTO operation appropriately
|
||||
// TODO: handle OBS / DTO operation appropriately
|
||||
if(_activeFP->waypoints.empty()) {
|
||||
return(-1.0);
|
||||
} else {
|
||||
|
@ -1146,7 +1146,7 @@ double DCLGPS::GetTimeToWaypoint(const string& id) {
|
|||
}
|
||||
|
||||
// Returns magnetic great-circle heading
|
||||
// TODO - document units.
|
||||
// TODO: document units.
|
||||
float DCLGPS::GetHeadingToActiveWaypoint() {
|
||||
if(_activeWaypoint.id.empty()) {
|
||||
return(-888);
|
||||
|
@ -1159,7 +1159,7 @@ float DCLGPS::GetHeadingToActiveWaypoint() {
|
|||
}
|
||||
|
||||
// Returns magnetic great-circle heading
|
||||
// TODO - what units?
|
||||
// TODO: what units?
|
||||
float DCLGPS::GetHeadingFromActiveWaypoint() {
|
||||
if(_activeWaypoint.id.empty()) {
|
||||
return(-888);
|
||||
|
@ -1208,7 +1208,7 @@ void DCLGPS::OrientateToFlightPlan(GPSFlightPlan* fp) {
|
|||
} else {
|
||||
_navFlagged = false;
|
||||
if(fp->waypoints.size() == 1) {
|
||||
// TODO - may need to flag nav here if not dto or obs, or possibly handle it somewhere else.
|
||||
// TODO: may need to flag nav here if not dto or obs, or possibly handle it somewhere else.
|
||||
_activeWaypoint = *fp->waypoints[0];
|
||||
_fromWaypoint.id.clear();
|
||||
} else {
|
||||
|
@ -1384,7 +1384,7 @@ GPSWaypoint* DCLGPS::FindFirstByExactId(const string& id) const
|
|||
return GPSWaypoint::createFromPositioned(result);
|
||||
}
|
||||
|
||||
// TODO - add the ASCII / alphabetical stuff from the Atlas version
|
||||
// TODO: add the ASCII / alphabetical stuff from the Atlas version
|
||||
FGPositioned* DCLGPS::FindTypedFirstById(const string& id, FGPositioned::Type ty, bool &multi, bool exact)
|
||||
{
|
||||
multi = false;
|
||||
|
@ -1437,7 +1437,7 @@ FGNavRecord* DCLGPS::FindClosestVor(double lat_rad, double lon_rad) {
|
|||
double DCLGPS::GetMagHeadingFromTo(double latA, double lonA, double latB, double lonB) {
|
||||
double h = GetGreatCircleCourse(latA, lonA, latB, lonB);
|
||||
h *= SG_RADIANS_TO_DEGREES;
|
||||
// TODO - use the real altitude below instead of 0.0!
|
||||
// TODO: use the real altitude below instead of 0.0!
|
||||
//cout << "MagVar = " << sgGetMagVar(_gpsLon, _gpsLat, 0.0, _time->getJD()) * SG_RADIANS_TO_DEGREES << '\n';
|
||||
double jd = globals->get_time_params()->getJD();
|
||||
h -= sgGetMagVar(_gpsLon, _gpsLat, 0.0, jd) * SG_RADIANS_TO_DEGREES;
|
||||
|
|
|
@ -105,7 +105,7 @@ public:
|
|||
inline bool IsEmpty() { return waypoints.empty(); }
|
||||
};
|
||||
|
||||
// TODO - probably de-public the internals of the next 2 classes and add some methods!
|
||||
// TODO: probably de-public the internals of the next 2 classes and add some methods!
|
||||
// Instrument approach procedure base class
|
||||
class FGIAP
|
||||
{
|
||||
|
@ -199,7 +199,7 @@ private:
|
|||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
// TODO - merge generic GPS functions instead and split out KLN specific stuff.
|
||||
// TODO: merge generic GPS functions instead and split out KLN specific stuff.
|
||||
class DCLGPS : public SGSubsystem
|
||||
{
|
||||
public:
|
||||
|
@ -337,7 +337,7 @@ protected:
|
|||
protected:
|
||||
void LoadApproachData();
|
||||
|
||||
// Find first of any type of waypoint by id. (TODO - Possibly we should return multiple waypoints here).
|
||||
// Find first of any type of waypoint by id. (TODO: Possibly we should return multiple waypoints here).
|
||||
GPSWaypoint* FindFirstById(const std::string& id) const;
|
||||
GPSWaypoint* FindFirstByExactId(const std::string& id) const;
|
||||
|
||||
|
@ -373,7 +373,7 @@ protected:
|
|||
// Hack - it seems that the GPS gets initialised before FG's initial position is properly set.
|
||||
// By checking for abnormal slew in the position we can force a re-initialisation of active flight
|
||||
// plan leg and anything else that might be affected.
|
||||
// TODO - sort FlightGear's initialisation order properly!!!
|
||||
// TODO: sort FlightGear's initialisation order properly!!!
|
||||
double _checkLat, _checkLon; // (Radians)
|
||||
double _groundSpeed_ms; // filtered groundspeed (m/s)
|
||||
double _groundSpeed_kts; // ditto in knots
|
||||
|
|
|
@ -1451,7 +1451,7 @@ void GPS::addAirportToScratch(FGAirport* aAirport)
|
|||
for (unsigned int r=0; r<aAirport->numRunways(); ++r) {
|
||||
SGPropertyNode* rwyNd = _scratchNode->getChild("runways", r, true);
|
||||
FGRunway* rwy = aAirport->getRunwayByIndex(r);
|
||||
// TODO - filter out unsuitable runways in the future
|
||||
// TODO: filter out unsuitable runways in the future
|
||||
// based on config again
|
||||
|
||||
rwyNd->setStringValue("id", rwy->ident().c_str());
|
||||
|
@ -1459,7 +1459,7 @@ void GPS::addAirportToScratch(FGAirport* aAirport)
|
|||
rwyNd->setIntValue("width-ft", rwy->widthFt());
|
||||
rwyNd->setIntValue("heading-deg", rwy->headingDeg());
|
||||
// map surface code to a string
|
||||
// TODO - lighting information
|
||||
// TODO: lighting information
|
||||
|
||||
if (rwy->ILS()) {
|
||||
rwyNd->setDoubleValue("ils-frequency-mhz", rwy->ILS()->get_freq() / 100.0);
|
||||
|
|
|
@ -219,7 +219,7 @@ public:
|
|||
|
||||
// add our ScreenshotCallback to the camera
|
||||
if ( NULL == camera->getFinalDrawCallback()) {
|
||||
//TODO: are we leaking the Callback on reinit?
|
||||
// TODO: are we leaking the Callback on reinit?
|
||||
camera->setFinalDrawCallback(new ScreenshotCallback());
|
||||
}
|
||||
|
||||
|
|
|
@ -143,7 +143,7 @@ void JSON::toProp(cJSON * json, SGPropertyNode_ptr base)
|
|||
const char * name = cj->valuestring;
|
||||
if (NULL == name) name = "";
|
||||
|
||||
//TODO: better check for valid name
|
||||
// TODO: better check for valid name
|
||||
string namestr = simgear::strutils::strip(string(name));
|
||||
if( !namestr.empty() ) {
|
||||
int index = 0;
|
||||
|
|
|
@ -204,7 +204,7 @@ void FGProps::PropsChannel::beginNasal(const ParameterList ¶m)
|
|||
setTerminator(eofMarker);
|
||||
}
|
||||
|
||||
//TODO: provide support for different types of subscriptions MODES ? (child added/removed, thesholds, min/max)
|
||||
// TODO: provide support for different types of subscriptions MODES ? (child added/removed, thresholds, min/max)
|
||||
void FGProps::PropsChannel::valueChanged(SGPropertyNode* ptr)
|
||||
{
|
||||
_dirtySubscriptions.insert(ptr);
|
||||
|
|
|
@ -247,7 +247,7 @@ bool FGPgtTerrain::schedule_scenery(const SGGeod& position, double range_m, doub
|
|||
|
||||
void FGPgtTerrain::materialLibChanged()
|
||||
{
|
||||
// PSADRO: TODO - passing down new regional textures won't work. these need to be set in the
|
||||
// PSADRO: TODO: passing down new regional textures won't work. these need to be set in the
|
||||
// lod tree at init time, as OSGDBPager generates the load request, not the tile cache.
|
||||
|
||||
// _options->setMaterialLib(globals->get_matlib());
|
||||
|
|
Loading…
Reference in a new issue