mirror of https://github.com/DJ2LS/FreeDATA.git
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
from command import TxCommand
|
|
import api_validations
|
|
from message_system_db_manager import DatabaseManager
|
|
|
|
|
|
class PingCommand(TxCommand):
|
|
"""Command for transmitting ping frames.
|
|
|
|
This command sends a ping frame to a specified station, identified by
|
|
its callsign. It also updates the callsign database.
|
|
"""
|
|
|
|
def set_params_from_api(self, apiParams):
|
|
"""Sets parameters from the API request.
|
|
|
|
This method extracts the destination callsign (dxcall) from the API
|
|
parameters, validates it, adds a default SSID if needed, and updates
|
|
the callsign database.
|
|
|
|
Args:
|
|
apiParams (dict): A dictionary containing the API parameters.
|
|
|
|
Returns:
|
|
dict: The API parameters after processing.
|
|
"""
|
|
self.dxcall = apiParams['dxcall']
|
|
if not api_validations.validate_freedata_callsign(self.dxcall):
|
|
self.dxcall = f"{self.dxcall}-0"
|
|
|
|
# update callsign database...
|
|
DatabaseManager(self.event_manager).get_or_create_station(self.dxcall)
|
|
|
|
return super().set_params_from_api(apiParams)
|
|
|
|
def build_frame(self):
|
|
"""Builds a ping frame.
|
|
|
|
This method uses the frame factory to build a ping frame addressed
|
|
to the specified destination callsign.
|
|
|
|
Returns:
|
|
bytearray: The built ping frame.
|
|
"""
|
|
return self.frame_factory.build_ping(self.dxcall)
|