import os
import tempfile
from xml.etree import ElementTree
def set_supl_over_wifi_state(ad, turn_on):
"""Enable / Disable supl over wifi features
Modify the gps xml file: /vendor/etc/gnss/gps.xml
Args:
ad: AndroidDevice object
turn_on: (bool) True -> enable / False -> disable
"""
ad.adb.remount()
folder = tempfile.mkdtemp()
xml_path_on_host = os.path.join(folder, "gps.xml")
xml_path_on_device = "/vendor/etc/gnss/gps.xml"
ad.pull_files(xml_path_on_device, xml_path_on_host)
# register namespance to aviod adding ns0 into xml attributes
ElementTree.register_namespace("", "http://www.glpals.com/")
xml_tree = ElementTree.parse(xml_path_on_host)
root = xml_tree.getroot()
for node in root:
if "hal" in node.tag:
if turn_on:
_enable_supl_over_wifi(ad, node)
else:
_disable_supl_over_wifi(ad, node)
xml_tree.write(xml_path_on_host, xml_declaration=True, encoding="utf-8", method="xml")
ad.push_system_file(xml_path_on_host, xml_path_on_device)
def _enable_supl_over_wifi(ad, node):
"""Enable supl over wifi
Detail setting:
Args:
ad: AndroidDevice object
node: ElementTree node
"""
ad.log.info("Enable SUPL over wifi")
attributes = {"SuplDummyCellInfo": "true", "SuplUseApn": "false", "SuplUseApnNI": "true",
"SuplUseFwCellInfo": "false"}
for key, value in attributes.items():
node.set(key, value)
def _disable_supl_over_wifi(ad, node):
"""Disable supl over wifi
Detail setting:
Remove following setting
SuplDummyCellInfo="true"
SuplUseApnNI="true"
SuplUseFwCellInfo="false"
Args:
ad: AndroidDevice object
node: ElementTree node
"""
ad.log.info("Disable SUPL over wifi")
for attri in ["SuplDummyCellInfo", "SuplUseApnNI", "SuplUseFwCellInfo"]:
node.attrib.pop(attri, None)
node.set("SuplUseApn", "true")