diff options
Diffstat (limited to 'services/gps.py')
-rw-r--r-- | services/gps.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/services/gps.py b/services/gps.py new file mode 100644 index 0000000..1905e0f --- /dev/null +++ b/services/gps.py @@ -0,0 +1,56 @@ +from aglbaseservice import AGLBaseService, AFBResponse +import asyncio +import os + + +class GPSService(AGLBaseService): + service = 'agl-service-gps' + parser = AGLBaseService.getparser() + parser.add_argument('--record', help='Begin recording verb ') + parser.add_argument('--location', help='Get current location', action='store_true') + + def __init__(self, ip, port=None): + super().__init__(api='gps', ip=ip, port=port, service='agl-service-gps') + + async def location(self): + return await self.request('location') + + async def record(self, state='on'): + return await self.request('record', {'state': state}) + + async def subscribe(self, event='location'): + return await super().subscribe(event=event) + + async def unsubscribe(self, event='location'): + return await super().subscribe(event=event) + + +async def main(loop): + args = GPSService.parser.parse_args() + gpss = await GPSService(ip=args.ipaddr, port=args.port) + + if args.loglevel: + gpss.logger.setLevel(args.loglevel) + + if args.record: + id = await gpss.record(args.record) + print(f'Sent gps record request with value {args.record} with messageid {id}') + print(AFBResponse(await gpss.response())) + + if args.location: + msgid = await gpss.location() + print(AFBResponse(await gpss.response())) + + if args.subscribe: + for event in args.subscribe: + id = await gpss.subscribe(event) + print(f'Subscribed for event {event} with messageid {id}') + print(AFBResponse(await gpss.response())) + + if args.listener: + async for response in gpss.listener(): + print(response) + +if __name__ == '__main__': + loop = asyncio.get_event_loop() + loop.run_until_complete(main(loop)) |