aboutsummaryrefslogtreecommitdiff
path: root/apps/pandora_server.py
diff options
context:
space:
mode:
Diffstat (limited to 'apps/pandora_server.py')
-rw-r--r--apps/pandora_server.py29
1 files changed, 25 insertions, 4 deletions
diff --git a/apps/pandora_server.py b/apps/pandora_server.py
index 5f92309..16bc211 100644
--- a/apps/pandora_server.py
+++ b/apps/pandora_server.py
@@ -1,8 +1,10 @@
import asyncio
import click
import logging
+import json
-from bumble.pandora import PandoraDevice, serve
+from bumble.pandora import PandoraDevice, Config, serve
+from typing import Dict, Any
BUMBLE_SERVER_GRPC_PORT = 7999
ROOTCANAL_PORT_CUTTLEFISH = 7300
@@ -18,12 +20,31 @@ ROOTCANAL_PORT_CUTTLEFISH = 7300
help='HCI transport',
default=f'tcp-client:127.0.0.1:<rootcanal-port>',
)
-def main(grpc_port: int, rootcanal_port: int, transport: str) -> None:
+@click.option(
+ '--config',
+ help='Bumble json configuration file',
+)
+def main(grpc_port: int, rootcanal_port: int, transport: str, config: str) -> None:
if '<rootcanal-port>' in transport:
transport = transport.replace('<rootcanal-port>', str(rootcanal_port))
- device = PandoraDevice({'transport': transport})
+
+ bumble_config = retrieve_config(config)
+ bumble_config.setdefault('transport', transport)
+ device = PandoraDevice(bumble_config)
+
+ server_config = Config()
+ server_config.load_from_dict(bumble_config.get('server', {}))
+
logging.basicConfig(level=logging.DEBUG)
- asyncio.run(serve(device, port=grpc_port))
+ asyncio.run(serve(device, config=server_config, port=grpc_port))
+
+
+def retrieve_config(config: str) -> Dict[str, Any]:
+ if not config:
+ return {}
+
+ with open(config, 'r') as f:
+ return json.load(f)
if __name__ == '__main__':