diff options
Diffstat (limited to 'apps/pandora_server.py')
-rw-r--r-- | apps/pandora_server.py | 29 |
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__': |