summaryrefslogtreecommitdiffstats
path: root/services/gps.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/gps.py')
-rw-r--r--services/gps.py56
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))