2018-01-21 20:06:27 +00:00
|
|
|
from sqlalchemy.sql import func
|
2019-08-31 08:14:41 +00:00
|
|
|
from app import db
|
2019-02-10 12:25:24 +00:00
|
|
|
|
2019-09-24 17:37:48 +00:00
|
|
|
from .beacon import Beacon
|
|
|
|
from .aircraft_type import AircraftType
|
|
|
|
|
2015-10-24 21:13:21 +00:00
|
|
|
|
2015-11-11 17:43:39 +00:00
|
|
|
class AircraftBeacon(Beacon):
|
2018-01-11 07:35:07 +00:00
|
|
|
__tablename__ = "aircraft_beacons"
|
2015-10-24 21:13:21 +00:00
|
|
|
|
|
|
|
# Flarm specific data
|
2019-02-10 12:25:24 +00:00
|
|
|
address_type = db.Column(db.SmallInteger)
|
2019-09-24 17:37:48 +00:00
|
|
|
aircraft_type = db.Column(db.Enum(AircraftType), nullable=False, default=AircraftType.UNKNOWN)
|
2019-02-10 12:25:24 +00:00
|
|
|
stealth = db.Column(db.Boolean)
|
|
|
|
address = db.Column(db.String)
|
|
|
|
climb_rate = db.Column(db.Float(precision=2))
|
|
|
|
turn_rate = db.Column(db.Float(precision=2))
|
|
|
|
signal_quality = db.Column(db.Float(precision=2))
|
|
|
|
error_count = db.Column(db.SmallInteger)
|
|
|
|
frequency_offset = db.Column(db.Float(precision=2))
|
|
|
|
gps_quality_horizontal = db.Column(db.SmallInteger)
|
|
|
|
gps_quality_vertical = db.Column(db.SmallInteger)
|
|
|
|
software_version = db.Column(db.Float(precision=2))
|
|
|
|
hardware_version = db.Column(db.SmallInteger)
|
|
|
|
real_address = db.Column(db.String(6))
|
|
|
|
signal_power = db.Column(db.Float(precision=2))
|
2017-10-03 12:14:48 +00:00
|
|
|
proximity = None
|
2018-09-03 17:58:35 +00:00
|
|
|
|
2017-12-08 07:25:03 +00:00
|
|
|
# Calculated values
|
2019-02-10 12:25:24 +00:00
|
|
|
distance = db.Column(db.Float(precision=2))
|
|
|
|
radial = db.Column(db.SmallInteger)
|
2019-08-31 08:14:41 +00:00
|
|
|
quality = db.Column(db.Float(precision=2)) # signal quality normalized to 10km
|
2020-05-15 17:01:17 +00:00
|
|
|
location_mgrs = db.Column(db.String(15)) # full mgrs (15 chars)
|
|
|
|
location_mgrs_short = db.Column(db.String(9)) # reduced mgrs (9 chars), e.g. used for melissas range tool
|
2019-02-10 12:25:24 +00:00
|
|
|
agl = db.Column(db.Float(precision=2))
|
2017-12-08 07:25:03 +00:00
|
|
|
|
2015-10-24 21:13:21 +00:00
|
|
|
def __repr__(self):
|
2020-05-15 20:54:34 +00:00
|
|
|
return "<AircraftBeacon %s: %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s>" % (
|
2015-11-15 18:31:58 +00:00
|
|
|
self.address_type,
|
|
|
|
self.aircraft_type,
|
|
|
|
self.stealth,
|
|
|
|
self.address,
|
|
|
|
self.climb_rate,
|
|
|
|
self.turn_rate,
|
2017-05-26 20:56:38 +00:00
|
|
|
self.signal_quality,
|
2015-11-15 18:31:58 +00:00
|
|
|
self.error_count,
|
|
|
|
self.frequency_offset,
|
2018-09-03 17:58:35 +00:00
|
|
|
self.gps_quality_horizontal,
|
|
|
|
self.gps_quality_vertical,
|
2017-05-26 20:56:38 +00:00
|
|
|
self.software_version,
|
|
|
|
self.hardware_version,
|
|
|
|
self.real_address,
|
|
|
|
self.signal_power,
|
2018-02-11 10:55:29 +00:00
|
|
|
self.distance,
|
2018-09-03 17:58:35 +00:00
|
|
|
self.radial,
|
2018-10-21 15:34:03 +00:00
|
|
|
self.quality,
|
2019-01-23 12:06:50 +00:00
|
|
|
self.location_mgrs,
|
2019-08-31 08:14:41 +00:00
|
|
|
self.location_mgrs_short,
|
2020-05-15 17:01:17 +00:00
|
|
|
self.agl,
|
2019-08-31 08:14:41 +00:00
|
|
|
)
|