TRANSACTION_userUnlocked = 1
TRANSACTION_packageStateChanged = 2
+PACKAGE_ADDED = 0;
+PACKAGE_REMOVED = 1;
+PACKAGE_UPDATED = 2;
+
def add_service(args, userUnlocked, packageStateChanged):
helpers.drivers.loadBinderNodes(args)
- serviceManager = gbinder.ServiceManager("/dev/" + args.BINDER_DRIVER)
+ try:
+ serviceManager = gbinder.ServiceManager("/dev/" + args.BINDER_DRIVER, args.SERVICE_MANAGER_PROTOCOL, args.BINDER_PROTOCOL)
+ except TypeError:
+ serviceManager = gbinder.ServiceManager("/dev/" + args.BINDER_DRIVER)
def response_handler(req, code, flags):
logging.debug(
status, arg1 = reader.read_int32()
userUnlocked(arg1)
local_response.append_int32(0)
- if code == TRANSACTION_packageStateChanged:
+ elif code == TRANSACTION_packageStateChanged:
status, arg1 = reader.read_int32()
arg2 = reader.read_string16()
status, arg3 = reader.read_int32()
packageStateChanged(arg1, arg2, arg3)
local_response.append_int32(0)
+ else:
+ return local_response, -99999 # Some error unknown to binder to force a RemoteException
return local_response, 0
status = serviceManager.add_service_sync(SERVICE_NAME, response)
if status:
- logging.error("Failed to add service " + SERVICE_NAME)
+ logging.error("Failed to add service {}: {}".format(
+ SERVICE_NAME, status))
args.userMonitorLoop.quit()
response = serviceManager.new_local_object(INTERFACE, response_handler)
status = serviceManager.add_presence_handler(binder_presence)
if status:
args.userMonitorLoop.run()
+ serviceManager.remove_handler(status)
+ del serviceManager
else:
logging.error("Failed to add presence handler: {}".format(status))