mirror of
https://github.com/azaion/gps-denied-desktop.git
synced 2026-04-22 21:56:37 +00:00
3.6 KiB
3.6 KiB
Configuration Manager
Interface Definition
Interface Name: IConfigurationManager
Interface Methods
class IConfigurationManager(ABC):
@abstractmethod
def load_config(self, config_path: str) -> SystemConfig:
pass
@abstractmethod
def get_camera_params(self, camera_id: Optional[str] = None) -> CameraParameters:
pass
@abstractmethod
def validate_config(self, config: SystemConfig) -> ValidationResult:
pass
@abstractmethod
def get_flight_config(self, flight_id: str) -> FlightConfig:
pass
@abstractmethod
def update_config(self, section: str, key: str, value: Any) -> bool:
pass
Component Description
Responsibilities
- Load system configuration from files/environment
- Provide camera parameters (focal length, sensor size, resolution)
- Manage flight-specific configurations
- Validate configuration integrity
- Support configuration updates at runtime
Scope
- System-wide configuration
- Camera parameter management
- Operational area bounds
- Model paths and settings
- Database connections
- API endpoints
API Methods
load_config(config_path: str) -> SystemConfig
Description: Loads system configuration.
Called By: System startup
Input: config_path: str - Path to config file (YAML/JSON)
Output: SystemConfig - Complete configuration
Test Cases:
- Load valid config → succeeds
- Missing file → uses defaults
- Invalid config → raises error
get_camera_params(camera_id: Optional[str] = None) -> CameraParameters
Description: Gets camera parameters.
Called By: All processing components
Output:
CameraParameters:
focal_length: float
sensor_width: float
sensor_height: float
resolution_width: int
resolution_height: int
principal_point: Tuple[float, float]
distortion_coefficients: List[float]
Test Cases:
- Get default camera → returns params
- Get specific camera → returns params
validate_config(config: SystemConfig) -> ValidationResult
Description: Validates configuration.
Called By: After load_config
Validation Rules:
- Camera parameters sensible
- Paths exist
- Operational area valid
- Database connection string valid
Test Cases:
- Valid config → passes
- Invalid focal length → fails
get_flight_config(flight_id: str) -> FlightConfig
Description: Gets flight-specific configuration.
Called By: F02 Flight Manager
Output:
FlightConfig:
camera_params: CameraParameters
altitude: float
operational_area: OperationalArea
Test Cases:
- Get flight config → returns params
update_config(section: str, key: str, value: Any) -> bool
Description: Updates config at runtime.
Called By: Admin tools
Test Cases:
- Update value → succeeds
- Invalid key → fails
Data Models
SystemConfig
class SystemConfig(BaseModel):
camera: CameraParameters
operational_area: OperationalArea
models: ModelPaths
database: DatabaseConfig
api: APIConfig
CameraParameters
class CameraParameters(BaseModel):
focal_length: float # mm
sensor_width: float # mm
sensor_height: float # mm
resolution_width: int
resolution_height: int
principal_point: Tuple[float, float]
distortion_coefficients: List[float]
OperationalArea
class OperationalArea(BaseModel):
name: str = "Eastern Ukraine"
min_lat: float = 45.0
max_lat: float = 52.0
min_lon: float = 22.0
max_lon: float = 40.0