]> glassweightruler.freedombox.rocks Git - waydroid.git/blob - tools/services/hardware_manager.py
session: Provide waydroid.host_data_path prop
[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 tools.actions.container_manager
6 import tools.actions.session_manager
7 import tools.config
8 from tools import helpers
9 from tools.interfaces import IHardware
10
11 stopping = False
12
13 def start(args):
14 def enableNFC(enable):
15 logging.debug("Function enableNFC not implemented")
16
17 def enableBluetooth(enable):
18 logging.debug("Function enableBluetooth not implemented")
19
20 def suspend():
21 cfg = tools.config.load(args)
22 if cfg["waydroid"]["suspend_action"] == "stop":
23 tools.actions.session_manager.stop(args)
24 else:
25 tools.actions.container_manager.freeze(args)
26
27 def reboot():
28 helpers.lxc.stop(args)
29 helpers.lxc.start(args)
30
31 def upgrade(system_zip, system_time, vendor_zip, vendor_time):
32 helpers.lxc.stop(args)
33 helpers.images.umount_rootfs(args)
34 helpers.images.replace(args, system_zip, system_time,
35 vendor_zip, vendor_time)
36 args.session["background_start"] = "false"
37 helpers.images.mount_rootfs(args, args.images_path, args.session)
38 helpers.protocol.set_aidl_version(args)
39 helpers.lxc.start(args)
40
41 def service_thread():
42 while not stopping:
43 IHardware.add_service(
44 args, enableNFC, enableBluetooth, suspend, reboot, upgrade)
45
46 global stopping
47 stopping = False
48 args.hardware_manager = threading.Thread(target=service_thread)
49 args.hardware_manager.start()
50
51 def stop(args):
52 global stopping
53 stopping = True
54 try:
55 if args.hardwareLoop:
56 args.hardwareLoop.quit()
57 except AttributeError:
58 logging.debug("Hardware service is not even started")