rawgpsd: fix loading assistance data (#28381)

* rawgpsd: fix loading assistance data

* needs a specific name

* cleanup

* more logging

---------

Co-authored-by: Comma Device <device@comma.ai>
old-commit-hash: 04556652dc
beeps
Adeeb Shihadeh 2 years ago committed by GitHub
parent 1156efe3c6
commit 3952090f7f
  1. 36
      system/sensord/rawgps/rawgpsd.py

@ -112,18 +112,22 @@ def gps_enabled() -> bool:
def download_and_inject_assistance(): def download_and_inject_assistance():
assist_data_file = '/tmp/xtra3grc.bin' assist_data_file = '/tmp/xtra3grc.bin'
assistance_url = 'http://xtrapath3.izatcloud.net/xtra3grc.bin' assistance_url = 'http://xtrapath3.izatcloud.net/xtra3grc.bin'
try:
# download assistance
try: try:
c = pycurl.Curl() c = pycurl.Curl()
c.setopt(c.URL, assistance_url) c.setopt(c.URL, assistance_url)
c.setopt(c.NOBODY, 1) c.setopt(c.NOBODY, 1)
c.setopt(pycurl.CONNECTTIMEOUT, 2) c.setopt(pycurl.CONNECTTIMEOUT, 2)
c.perform() c.perform()
c.close()
bytes_n = c.getinfo(c.CONTENT_LENGTH_DOWNLOAD) bytes_n = c.getinfo(c.CONTENT_LENGTH_DOWNLOAD)
c.close()
if bytes_n > 1e5: if bytes_n > 1e5:
cloudlog.exception("Qcom assistance data larger than expected") cloudlog.error("Qcom assistance data larger than expected")
return return
with open(assist_data_file, "wb") as fp:
with open(assist_data_file, 'wb') as fp:
c = pycurl.Curl() c = pycurl.Curl()
c.setopt(pycurl.URL, assistance_url) c.setopt(pycurl.URL, assistance_url)
c.setopt(pycurl.CONNECTTIMEOUT, 5) c.setopt(pycurl.CONNECTTIMEOUT, 5)
@ -131,16 +135,28 @@ def download_and_inject_assistance():
c.setopt(pycurl.WRITEDATA, fp) c.setopt(pycurl.WRITEDATA, fp)
c.perform() c.perform()
c.close() c.close()
except pycurl.error as e: except pycurl.error:
cloudlog.exception(f'Failed to download assistance file with error: {e}') cloudlog.exception("Failed to download assistance file")
if os.path.isfile(assist_data_file): return
# inject into module
try: try:
subprocess.check_call(f"mmcli -m any --timeout 30 --location-inject-assistance-data={assist_data_file}", shell=True) cmd = f"mmcli -m any --timeout 30 --location-inject-assistance-data={assist_data_file}"
except subprocess.CalledProcessError: subprocess.check_output(cmd, stderr=subprocess.PIPE, shell=True)
cloudlog.exception("rawgps.mmcli_command_failed") cloudlog.info("successfully loaded assistance data")
if os.path.isfile(assist_data_file): except subprocess.CalledProcessError as e:
cloudlog.event(
"rawgps.assistance_loading_failed",
error=True,
cmd=e.cmd,
output=e.output,
returncode=e.returncode
)
finally:
if os.path.exists(assist_data_file):
os.remove(assist_data_file) os.remove(assist_data_file)
def setup_quectel(diag: ModemDiag): def setup_quectel(diag: ModemDiag):
# enable OEMDRE in the NV # enable OEMDRE in the NV
# TODO: it has to reboot for this to take effect # TODO: it has to reboot for this to take effect

Loading…
Cancel
Save