Files
RadioPropagationApi/api/app/services/link.py
T
2026-06-23 09:13:51 +03:00

20 lines
785 B
Python

from app.core.geo import GeoPoint
from app.core.propagation import manual_link_budget
from app.models.link import LinkBudgetRequest, LinkBudgetResponse
def link_budget(request: LinkBudgetRequest) -> LinkBudgetResponse:
if request.model != "manual":
raise NotImplementedError(f"{request.model} link model is implemented in a later stage")
budget = manual_link_budget(
tx=GeoPoint(lat=request.tx.lat, lon=request.tx.lon),
rx=GeoPoint(lat=request.rx.lat, lon=request.rx.lon),
tx_power_dbm=request.tx.power_dbm,
tx_gain_dbi=request.tx.gain_dbi,
rx_gain_dbi=request.rx.gain_dbi,
sensitivity_dbm=request.rx.sensitivity_dbm,
frequency_mhz=request.frequency_mhz,
)
return LinkBudgetResponse(**budget.__dict__)