trackdirect2/server/trackdirect/objects/PacketOgn.py

80 lines
2.4 KiB
Python

from server.trackdirect.common.Model import Model
class PacketOgn(Model):
"""PacketOgn represents the OGN data in an APRS packet."""
def __init__(self, db):
"""Initialize PacketOgn with database connection and attributes.
Args:
db (psycopg2.Connection): Database connection
"""
super().__init__(db)
self.id = None
self.packet_id = None
self.station_id = None
self.timestamp = None
self.ogn_sender_address = None
self.ogn_address_type_id = None
self.ogn_aircraft_type_id = None
self.ogn_climb_rate = None
self.ogn_turn_rate = None
self.ogn_signal_to_noise_ratio = None
self.ogn_bit_errors_corrected = None
self.ogn_frequency_offset = None
def validate(self) -> bool:
"""Validate the object content.
Returns:
bool: True if object content is valid, otherwise False
"""
if self.station_id is None or self.station_id <= 0:
return False
if self.packet_id is None or self.packet_id <= 0:
return False
return True
def insert(self) -> bool:
"""Insert the object into the database.
Since packets are inserted in batch, this method is not used.
Returns:
bool: Always returns False
"""
return False
def update(self) -> bool:
"""Update the object in the database.
Since packets are updated in batch, this method is not used.
Returns:
bool: Always returns False
"""
return False
def get_dict(self) -> dict:
"""Convert the object to a dictionary.
Returns:
dict: A dictionary representation of the object
"""
return {
'id': self.id,
'packet_id': self.packet_id,
'station_id': self.station_id,
'timestamp': self.timestamp,
'ogn_sender_address': self.ogn_sender_address,
'ogn_address_type_id': self.ogn_address_type_id,
'ogn_aircraft_type_id': self.ogn_aircraft_type_id,
'ogn_climb_rate': self.ogn_climb_rate,
'ogn_turn_rate': self.ogn_turn_rate,
'ogn_signal_to_noise_ratio': self.ogn_signal_to_noise_ratio,
'ogn_bit_errors_corrected': self.ogn_bit_errors_corrected,
'ogn_frequency_offset': self.ogn_frequency_offset
}