X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/waydroid.git/blobdiff_plain/1f0393876d891d0e32a995d0bf7259cc6505afdc..d1ba241d92dca786644e52d5de08a77b4e721bf3:/tools/interfaces/IHardware.py diff --git a/tools/interfaces/IHardware.py b/tools/interfaces/IHardware.py index 347a89c..0338c3f 100644 --- a/tools/interfaces/IHardware.py +++ b/tools/interfaces/IHardware.py @@ -12,10 +12,14 @@ TRANSACTION_enableBluetooth = 2 TRANSACTION_suspend = 3 TRANSACTION_reboot = 4 TRANSACTION_upgrade = 5 +TRANSACTION_upgrade2 = 6 def add_service(args, enableNFC, enableBluetooth, suspend, reboot, upgrade): 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( @@ -45,6 +49,13 @@ def add_service(args, enableNFC, enableBluetooth, suspend, reboot, upgrade): status, arg4 = reader.read_int32() upgrade(arg1, arg2, arg3, arg4) local_response.append_int32(0) + if code == TRANSACTION_upgrade2: + arg1 = reader.read_string16() + status, arg2 = reader.read_int64() + arg3 = reader.read_string16() + status, arg4 = reader.read_int64() + upgrade(arg1, arg2, arg3, arg4) + local_response.append_int32(0) return local_response, 0 @@ -53,7 +64,8 @@ def add_service(args, enableNFC, enableBluetooth, suspend, reboot, upgrade): 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.hardwareLoop.quit() response = serviceManager.new_local_object(INTERFACE, response_handler) @@ -62,5 +74,7 @@ def add_service(args, enableNFC, enableBluetooth, suspend, reboot, upgrade): status = serviceManager.add_presence_handler(binder_presence) if status: args.hardwareLoop.run() + serviceManager.remove_handler(status) + del serviceManager else: logging.error("Failed to add presence handler: {}".format(status))