daemon/gui: added support to configure wireless network for position calculations or not
This commit is contained in:
parent
d124820a86
commit
d20cb1ef58
10 changed files with 216 additions and 15 deletions
|
@ -20,6 +20,7 @@ from core.api.grpc.configservices_pb2 import (
|
|||
from core.api.grpc.core_pb2 import (
|
||||
ExecuteScriptRequest,
|
||||
GetConfigRequest,
|
||||
GetWirelessConfigRequest,
|
||||
LinkedRequest,
|
||||
WirelessConfigRequest,
|
||||
WirelessLinkedRequest,
|
||||
|
@ -1142,6 +1143,13 @@ class CoreGrpcClient:
|
|||
)
|
||||
self.stub.WirelessConfig(request)
|
||||
|
||||
def get_wireless_config(
|
||||
self, session_id: int, node_id: int
|
||||
) -> Dict[str, wrappers.ConfigOption]:
|
||||
request = GetWirelessConfigRequest(session_id=session_id, node_id=node_id)
|
||||
response = self.stub.GetWirelessConfig(request)
|
||||
return wrappers.ConfigOption.from_dict(response.config)
|
||||
|
||||
def connect(self) -> None:
|
||||
"""
|
||||
Open connection to server, must be closed manually.
|
||||
|
|
|
@ -29,6 +29,7 @@ from core.nodes.docker import DockerNode
|
|||
from core.nodes.interface import CoreInterface
|
||||
from core.nodes.lxd import LxcNode
|
||||
from core.nodes.network import CoreNetwork, CtrlNet, PtpNet, WlanNode
|
||||
from core.nodes.wireless import WirelessNode
|
||||
from core.services.coreservices import CoreService
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -827,6 +828,9 @@ def configure_node(
|
|||
if node.mobility_config:
|
||||
config = {k: v.value for k, v in node.mobility_config.items()}
|
||||
session.mobility.set_model_config(node.id, Ns2ScriptedMobility.name, config)
|
||||
if isinstance(core_node, WirelessNode) and node.wireless_config:
|
||||
config = {k: v.value for k, v in node.wireless_config.items()}
|
||||
core_node.set_config(config)
|
||||
for service_name, service_config in node.service_configs.items():
|
||||
data = service_config.data
|
||||
config = ServiceConfig(
|
||||
|
|
|
@ -30,6 +30,8 @@ from core.api.grpc.configservices_pb2 import (
|
|||
)
|
||||
from core.api.grpc.core_pb2 import (
|
||||
ExecuteScriptResponse,
|
||||
GetWirelessConfigRequest,
|
||||
GetWirelessConfigResponse,
|
||||
LinkedRequest,
|
||||
LinkedResponse,
|
||||
WirelessConfigRequest,
|
||||
|
@ -1382,3 +1384,25 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
|||
options2 = grpcutils.convert_options_proto(options2)
|
||||
wireless.link_config(request.node1_id, request.node2_id, options1, options2)
|
||||
return WirelessConfigResponse()
|
||||
|
||||
def GetWirelessConfig(
|
||||
self, request: GetWirelessConfigRequest, context: ServicerContext
|
||||
) -> GetWirelessConfigResponse:
|
||||
session = self.get_session(request.session_id, context)
|
||||
try:
|
||||
wireless = session.get_node(request.node_id, WirelessNode)
|
||||
configs = wireless.get_config()
|
||||
except CoreError:
|
||||
configs = {x.id: x for x in WirelessNode.options}
|
||||
config_options = {}
|
||||
for config in configs.values():
|
||||
config_option = common_pb2.ConfigOption(
|
||||
label=config.label,
|
||||
name=config.id,
|
||||
value=config.default,
|
||||
type=config.type.value,
|
||||
select=config.options,
|
||||
group=config.group,
|
||||
)
|
||||
config_options[config.id] = config_option
|
||||
return GetWirelessConfigResponse(config=config_options)
|
||||
|
|
|
@ -737,6 +737,7 @@ class Node:
|
|||
Tuple[str, Optional[int]], Dict[str, ConfigOption]
|
||||
] = field(default_factory=dict, repr=False)
|
||||
wlan_config: Dict[str, ConfigOption] = field(default_factory=dict, repr=False)
|
||||
wireless_config: Dict[str, ConfigOption] = field(default_factory=dict, repr=False)
|
||||
mobility_config: Dict[str, ConfigOption] = field(default_factory=dict, repr=False)
|
||||
service_configs: Dict[str, NodeServiceData] = field(
|
||||
default_factory=dict, repr=False
|
||||
|
@ -789,6 +790,7 @@ class Node:
|
|||
service_file_configs=service_file_configs,
|
||||
config_service_configs=config_service_configs,
|
||||
emane_model_configs=emane_configs,
|
||||
wireless_config=ConfigOption.from_dict(proto.wireless_config),
|
||||
)
|
||||
|
||||
def to_proto(self) -> core_pb2.Node:
|
||||
|
@ -840,6 +842,7 @@ class Node:
|
|||
service_configs=service_configs,
|
||||
config_service_configs=config_service_configs,
|
||||
emane_configs=emane_configs,
|
||||
wireless_config={k: v.to_proto() for k, v in self.wireless_config.items()},
|
||||
)
|
||||
|
||||
def set_wlan(self, config: Dict[str, str]) -> None:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue