Source code for pytwinnet.core.node
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Dict, Optional, Tuple, Any
[docs]
@dataclass
class TransceiverProperties:
transmit_power_dbm: float = 20.0
antenna_gain_dbi: float = 0.0
carrier_frequency_hz: float = 2.4e9
additional: Dict[str, Any] = field(default_factory=dict)
[docs]
@dataclass
class WirelessNode:
node_id: str
position: Tuple[float, float, float] = (0.0, 0.0, 0.0)
transceiver_properties: TransceiverProperties = field(default_factory=TransceiverProperties)
mobility_model: Optional[object] = None
metadata: Dict[str, Any] = field(default_factory=dict)
[docs]
def move_to(self, new_position: Tuple[float, float, float]) -> None:
self.position = new_position
[docs]
def update_mobility(self, timestamp: float) -> None:
if self.mobility_model and hasattr(self.mobility_model, "update"):
self.mobility_model.update(self, timestamp)
# Trying to patch node
try:
Node
except NameError:
Node = WirelessNode