]> glassweightruler.freedombox.rocks Git - waydroid.git/blob - tools/interfaces/IStatusBarService.py
drivers: Keep devices arg on modprobe
[waydroid.git] / tools / interfaces / IStatusBarService.py
1 import gbinder
2 import logging
3 import time
4 from tools import helpers
5
6
7 INTERFACE = "com.android.internal.statusbar.IStatusBarService"
8 SERVICE_NAME = "statusbar"
9
10 TRANSACTION_expand = 1
11 TRANSACTION_collapse = 2
12
13 class IStatusBarService:
14 def __init__(self, remote):
15 self.client = gbinder.Client(remote, INTERFACE)
16
17 def expand(self):
18 request = self.client.new_request()
19 reply, status = self.client.transact_sync_reply(
20 TRANSACTION_expand, request)
21
22 if status:
23 logging.error("Sending reply failed")
24 else:
25 reader = reply.init_reader()
26 status, exception = reader.read_int32()
27 if exception != 0:
28 logging.error("Failed with code: {}".format(exception))
29
30 def collapse(self):
31 request = self.client.new_request()
32 reply, status = self.client.transact_sync_reply(
33 TRANSACTION_collapse, request)
34
35 if status:
36 logging.error("Sending reply failed")
37 else:
38 reader = reply.init_reader()
39 status, exception = reader.read_int32()
40 if exception != 0:
41 logging.error("Failed with code: {}".format(exception))
42
43 def get_service(args):
44 helpers.drivers.loadBinderNodes(args)
45 serviceManager = gbinder.ServiceManager("/dev/" + args.BINDER_DRIVER)
46 tries = 1000
47
48 remote, status = serviceManager.get_service_sync(SERVICE_NAME)
49 while(not remote):
50 if tries > 0:
51 logging.warning(
52 "Failed to get service {}, trying again...".format(SERVICE_NAME))
53 time.sleep(1)
54 remote, status = serviceManager.get_service_sync(SERVICE_NAME)
55 tries = tries - 1
56 else:
57 return None
58
59 return IStatusBarService(remote)