]> glassweightruler.freedombox.rocks Git - waydroid.git/blob - tools/services/hardware_manager.py
Add msm_dpu driver for freedreno
[waydroid.git] / tools / services / hardware_manager.py
1 # Copyright 2021 Erfan Abdi
2 # SPDX-License-Identifier: GPL-3.0-or-later
3 import logging
4 import threading
5 import os
6 import tools.actions.container_manager
7 import tools.actions.session_manager
8 import tools.config
9 from tools import helpers
10 from tools.interfaces import IHardware
11
12 stopping = False
13
14 def start(args):
15 def enableNFC(enable):
16 logging.debug("Function enableNFC not implemented")
17
18 def enableBluetooth(enable):
19 logging.debug("Function enableBluetooth not implemented")
20
21 def suspend():
22 cfg = tools.config.load(args)
23 if cfg["waydroid"]["suspend_action"] == "stop":
24 tools.actions.session_manager.stop(args)
25 else:
26 tools.actions.container_manager.freeze(args)
27
28 def reboot():
29 helpers.lxc.stop(args)
30 helpers.lxc.start(args)
31
32 def upgrade(system_zip, system_time, vendor_zip, vendor_time):
33 if os.path.exists(system_zip):
34 if not helpers.images.validate(args, "system_ota", system_zip):
35 logging.warning("Not upgrading because system.img comes from an unverified source")
36 return
37 else:
38 system_zip = "" # Race prevention
39 if os.path.exists(vendor_zip):
40 if not helpers.images.validate(args, "vendor_ota", vendor_zip):
41 logging.warning("Not upgrading because vendor.img comes from an unverified source")
42 return
43 else:
44 vendor_zip = "" # Race prevention
45 helpers.lxc.stop(args)
46 helpers.images.umount_rootfs(args)
47 helpers.images.replace(args, system_zip, system_time,
48 vendor_zip, vendor_time)
49 args.session["background_start"] = "false"
50 helpers.images.mount_rootfs(args, args.images_path, args.session)
51 helpers.protocol.set_aidl_version(args)
52 helpers.lxc.start(args)
53
54 def service_thread():
55 while not stopping:
56 IHardware.add_service(
57 args, enableNFC, enableBluetooth, suspend, reboot, upgrade)
58
59 global stopping
60 stopping = False
61 args.hardware_manager = threading.Thread(target=service_thread)
62 args.hardware_manager.start()
63
64 def stop(args):
65 global stopping
66 stopping = True
67 try:
68 if args.hardwareLoop:
69 args.hardwareLoop.quit()
70 except AttributeError:
71 logging.debug("Hardware service is not even started")