dlgTextEntry_Keyboard: rename to TouchTextEntry
[xcsoar.git] / src / NMEA / FlyingState.hpp
blob2c5968a703dd4f4ec3bc6676afb38b2727d60ed1
1 /*
2 Copyright_License {
4 XCSoar Glide Computer - http://www.xcsoar.org/
5 Copyright (C) 2000-2013 The XCSoar Project
6 A detailed list of copyright holders can be found in the file "AUTHORS".
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24 #ifndef XCSOAR_FLYING_STATE_HPP
25 #define XCSOAR_FLYING_STATE_HPP
27 #include "Math/fixed.hpp"
28 #include "Geo/GeoPoint.hpp"
30 #include <type_traits>
32 /**
33 * Structure for flying state (takeoff/landing)
35 struct FlyingState
37 /** True if airborne, False otherwise */
38 bool flying;
39 /** Detects when glider is on ground for several seconds */
40 bool on_ground;
42 /** Time of flight */
43 fixed flight_time;
44 /** Time of takeoff */
45 fixed takeoff_time;
47 /**
48 * The location of the aircraft when it took off. This attribute is
49 * only valid if #flying is true.
51 GeoPoint takeoff_location;
53 /**
54 * The time stamp when the aircraft released from towing. This is
55 * an estimate based on sink. If the aircraft was never seen on
56 * ground (i.e. XCSoar was switched on while flying), this value is
57 * not too useful. This is negative if the aircraft is assumed to
58 * be still towing.
60 fixed release_time;
62 /**
63 * The location of the aircraft when it released from towing.
64 * Always check GeoPoint::IsValid() before using this value.
66 GeoPoint release_location;
68 /**
69 * The location that is most far away from the release location.
70 * Always check GeoPoint::IsValid() before using this value.
72 GeoPoint far_location;
74 /**
75 * The distance from #release_location to #far_location. This value
76 * is negative if it was not calculated yet.
78 fixed far_distance;
80 /**
81 * Time stamp of the landing. Invalid if negative.
83 fixed landing_time;
85 GeoPoint landing_location;
87 /** Reset flying state as if never flown */
88 void Reset();
90 bool IsTowing() const {
91 return flying && negative(release_time);
95 static_assert(std::is_trivial<FlyingState>::value, "type is not trivial");
97 #endif