| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- class Vehicle:
- def __init__(self,
- id: str,
- name: str,
- ap_source_subdir: str,
- fw_server_vehicle_sdir: str,
- waf_build_command: str,
- ) -> None:
- self.id = id
- self.name = name
- self.ap_source_subdir = ap_source_subdir
- self.fw_server_vehicle_sdir = fw_server_vehicle_sdir
- self.waf_build_command = waf_build_command
- def __eq__(self, other):
- if isinstance(other, Vehicle):
- return self.id == other.id
- return False
- def __hash__(self):
- return hash(self.id)
- # Default vehicles configuration
- DEFAULT_VEHICLES = [
- Vehicle(
- id="copter",
- name="Copter",
- ap_source_subdir="ArduCopter",
- fw_server_vehicle_sdir="Copter",
- waf_build_command="copter"
- ),
- Vehicle(
- id="plane",
- name="Plane",
- ap_source_subdir="ArduPlane",
- fw_server_vehicle_sdir="Plane",
- waf_build_command="plane"
- ),
- Vehicle(
- id="rover",
- name="Rover",
- ap_source_subdir="Rover",
- fw_server_vehicle_sdir="Rover",
- waf_build_command="rover"
- ),
- Vehicle(
- id="sub",
- name="Sub",
- ap_source_subdir="ArduSub",
- fw_server_vehicle_sdir="Sub",
- waf_build_command="sub"
- ),
- Vehicle(
- id="heli",
- name="Heli",
- ap_source_subdir="ArduCopter",
- fw_server_vehicle_sdir="Copter",
- waf_build_command="heli"
- ),
- Vehicle(
- id="blimp",
- name="Blimp",
- ap_source_subdir="Blimp",
- fw_server_vehicle_sdir="Blimp",
- waf_build_command="blimp"
- ),
- Vehicle(
- id="tracker",
- name="Tracker",
- ap_source_subdir="AntennaTracker",
- fw_server_vehicle_sdir="AntennaTracker",
- waf_build_command="antennatracker"
- ),
- Vehicle(
- id="ap-periph",
- name="AP_Periph",
- ap_source_subdir="Tools/AP_Periph",
- fw_server_vehicle_sdir="AP_Periph",
- waf_build_command="AP_Periph"
- ),
- ]
- class VehiclesManager:
- __singleton = None
- def __init__(self, vehicles: list = DEFAULT_VEHICLES) -> None:
- """
- Initialize VehiclesManager with a list of vehicles.
- Args:
- vehicles: List of Vehicle objects. Defaults to DEFAULT_VEHICLES.
- """
- # Enforce singleton pattern by raising an error if
- # an instance already exists.
- if VehiclesManager.__singleton:
- raise RuntimeError("VehiclesManager must be a singleton.")
- self.vehicles = set(vehicles)
- VehiclesManager.__singleton = self
- def get_all_vehicles(self) -> frozenset:
- return frozenset(self.vehicles)
- def add_vehicle(self, vehicle: Vehicle) -> None:
- return self.vehicles.add(vehicle)
- def get_vehicle_by_id(self, vehicle_id: str) -> Vehicle:
- if vehicle_id is None:
- raise ValueError("vehicle_id is a required parameter.")
- return next(
- (
- vehicle for vehicle in self.get_all_vehicles()
- if vehicle.id == vehicle_id
- ),
- None
- )
- @staticmethod
- def get_singleton() -> "VehiclesManager":
- return VehiclesManager.__singleton
|