|
|
@ -8,6 +8,7 @@ import random |
|
|
|
from cereal import log |
|
|
|
from cereal import log |
|
|
|
|
|
|
|
|
|
|
|
NetworkType = log.ThermalData.NetworkType |
|
|
|
NetworkType = log.ThermalData.NetworkType |
|
|
|
|
|
|
|
NetworkStrength = log.ThermalData.NetworkStrength |
|
|
|
|
|
|
|
|
|
|
|
ANDROID = os.path.isfile('/EON') |
|
|
|
ANDROID = os.path.isfile('/EON') |
|
|
|
|
|
|
|
|
|
|
@ -128,3 +129,154 @@ def get_network_type(): |
|
|
|
19: NetworkType.cell4G |
|
|
|
19: NetworkType.cell4G |
|
|
|
} |
|
|
|
} |
|
|
|
return cell_networks.get(cell_check, NetworkType.none) |
|
|
|
return cell_networks.get(cell_check, NetworkType.none) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_network_strength(network_type): |
|
|
|
|
|
|
|
network_strength = NetworkStrength.unknown |
|
|
|
|
|
|
|
# from SignalStrength.java |
|
|
|
|
|
|
|
def get_lte_level(rsrp, rssnr): |
|
|
|
|
|
|
|
INT_MAX = 2147483647 |
|
|
|
|
|
|
|
lvl_rsrp = NetworkStrength.unknown |
|
|
|
|
|
|
|
lvl_rssnr = NetworkStrength.unknown |
|
|
|
|
|
|
|
if rsrp == INT_MAX: |
|
|
|
|
|
|
|
lvl_rsrp = NetworkStrength.unknown |
|
|
|
|
|
|
|
elif rsrp >= -95: |
|
|
|
|
|
|
|
lvl_rsrp = NetworkStrength.great |
|
|
|
|
|
|
|
elif rsrp >= -105: |
|
|
|
|
|
|
|
lvl_rsrp = NetworkStrength.good |
|
|
|
|
|
|
|
elif rsrp >= -115: |
|
|
|
|
|
|
|
lvl_rsrp = NetworkStrength.moderate |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
lvl_rsrp = NetworkStrength.poor |
|
|
|
|
|
|
|
if rssnr == INT_MAX: |
|
|
|
|
|
|
|
lvl_rssnr = NetworkStrength.unknown |
|
|
|
|
|
|
|
elif rssnr >= 45: |
|
|
|
|
|
|
|
lvl_rssnr = NetworkStrength.great |
|
|
|
|
|
|
|
elif rssnr >= 10: |
|
|
|
|
|
|
|
lvl_rssnr = NetworkStrength.good |
|
|
|
|
|
|
|
elif rssnr >= -30: |
|
|
|
|
|
|
|
lvl_rssnr = NetworkStrength.moderate |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
lvl_rssnr = NetworkStrength.poor |
|
|
|
|
|
|
|
return max(lvl_rsrp, lvl_rssnr) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_tdscdma_level(tdscmadbm): |
|
|
|
|
|
|
|
lvl = NetworkStrength.unknown |
|
|
|
|
|
|
|
if tdscmadbm > -25: |
|
|
|
|
|
|
|
lvl = NetworkStrength.unknown |
|
|
|
|
|
|
|
elif tdscmadbm >= -49: |
|
|
|
|
|
|
|
lvl = NetworkStrength.great |
|
|
|
|
|
|
|
elif tdscmadbm >= -73: |
|
|
|
|
|
|
|
lvl = NetworkStrength.good |
|
|
|
|
|
|
|
elif tdscmadbm >= -97: |
|
|
|
|
|
|
|
lvl = NetworkStrength.moderate |
|
|
|
|
|
|
|
elif tdscmadbm >= -110: |
|
|
|
|
|
|
|
lvl = NetworkStrength.poor |
|
|
|
|
|
|
|
return lvl |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_gsm_level(asu): |
|
|
|
|
|
|
|
lvl = NetworkStrength.unknown |
|
|
|
|
|
|
|
if asu <= 2 or asu == 99: |
|
|
|
|
|
|
|
lvl = NetworkStrength.unknown |
|
|
|
|
|
|
|
elif asu >= 12: |
|
|
|
|
|
|
|
lvl = NetworkStrength.great |
|
|
|
|
|
|
|
elif asu >= 8: |
|
|
|
|
|
|
|
lvl = NetworkStrength.good |
|
|
|
|
|
|
|
elif asu >= 5: |
|
|
|
|
|
|
|
lvl = NetworkStrength.moderate |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
lvl = NetworkStrength.poor |
|
|
|
|
|
|
|
return lvl |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_evdo_level(evdodbm, evdosnr): |
|
|
|
|
|
|
|
lvl_evdodbm = NetworkStrength.unknown |
|
|
|
|
|
|
|
lvl_evdosnr = NetworkStrength.unknown |
|
|
|
|
|
|
|
if evdodbm >= -65: |
|
|
|
|
|
|
|
lvl_evdodbm = NetworkStrength.great |
|
|
|
|
|
|
|
elif evdodbm >= -75: |
|
|
|
|
|
|
|
lvl_evdodbm = NetworkStrength.good |
|
|
|
|
|
|
|
elif evdodbm >= -90: |
|
|
|
|
|
|
|
lvl_evdodbm = NetworkStrength.moderate |
|
|
|
|
|
|
|
elif evdodbm >= -105: |
|
|
|
|
|
|
|
lvl_evdodbm = NetworkStrength.poor |
|
|
|
|
|
|
|
if evdosnr >= 7: |
|
|
|
|
|
|
|
lvl_evdosnr = NetworkStrength.great |
|
|
|
|
|
|
|
elif evdosnr >= 5: |
|
|
|
|
|
|
|
lvl_evdosnr = NetworkStrength.good |
|
|
|
|
|
|
|
elif evdosnr >= 3: |
|
|
|
|
|
|
|
lvl_evdosnr = NetworkStrength.moderate |
|
|
|
|
|
|
|
elif evdosnr >= 1: |
|
|
|
|
|
|
|
lvl_evdosnr = NetworkStrength.poor |
|
|
|
|
|
|
|
return max(lvl_evdodbm, lvl_evdosnr) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_cdma_level(cdmadbm, cdmaecio): |
|
|
|
|
|
|
|
lvl_cdmadbm = NetworkStrength.unknown |
|
|
|
|
|
|
|
lvl_cdmaecio = NetworkStrength.unknown |
|
|
|
|
|
|
|
if cdmadbm >= -75: |
|
|
|
|
|
|
|
lvl_cdmadbm = NetworkStrength.great |
|
|
|
|
|
|
|
elif cdmadbm >= -85: |
|
|
|
|
|
|
|
lvl_cdmadbm = NetworkStrength.good |
|
|
|
|
|
|
|
elif cdmadbm >= -95: |
|
|
|
|
|
|
|
lvl_cdmadbm = NetworkStrength.moderate |
|
|
|
|
|
|
|
elif cdmadbm >= -100: |
|
|
|
|
|
|
|
lvl_cdmadbm = NetworkStrength.poor |
|
|
|
|
|
|
|
if cdmaecio >= -90: |
|
|
|
|
|
|
|
lvl_cdmaecio = NetworkStrength.great |
|
|
|
|
|
|
|
elif cdmaecio >= -110: |
|
|
|
|
|
|
|
lvl_cdmaecio = NetworkStrength.good |
|
|
|
|
|
|
|
elif cdmaecio >= -130: |
|
|
|
|
|
|
|
lvl_cdmaecio = NetworkStrength.moderate |
|
|
|
|
|
|
|
elif cdmaecio >= -150: |
|
|
|
|
|
|
|
lvl_cdmaecio = NetworkStrength.poor |
|
|
|
|
|
|
|
return max(lvl_cdmadbm, lvl_cdmaecio) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if network_type == NetworkType.none: |
|
|
|
|
|
|
|
return network_strength |
|
|
|
|
|
|
|
if network_type == NetworkType.wifi: |
|
|
|
|
|
|
|
out = subprocess.check_output('dumpsys connectivity', shell=True).decode('ascii') |
|
|
|
|
|
|
|
network_strength = NetworkStrength.none |
|
|
|
|
|
|
|
for line in out.split('\n'): |
|
|
|
|
|
|
|
if "SignalStrength" in line: |
|
|
|
|
|
|
|
arr = line.split(' ') |
|
|
|
|
|
|
|
lvl = int(arr[53][:-2]) |
|
|
|
|
|
|
|
if lvl >= -50: |
|
|
|
|
|
|
|
network_strength = NetworkStrength.great |
|
|
|
|
|
|
|
elif lvl >= -60: |
|
|
|
|
|
|
|
network_strength = NetworkStrength.good |
|
|
|
|
|
|
|
elif lvl >= -70: |
|
|
|
|
|
|
|
network_strength = NetworkStrength.moderate |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
network_strength = NetworkStrength.poor |
|
|
|
|
|
|
|
return network_strength |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
# check cell strength |
|
|
|
|
|
|
|
out = subprocess.check_output('dumpsys telephony.registry', shell=True).decode('ascii') |
|
|
|
|
|
|
|
for line in out.split('\n'): |
|
|
|
|
|
|
|
if "mSignalStrength" in line: |
|
|
|
|
|
|
|
arr = line.split(' ') |
|
|
|
|
|
|
|
ns = 0 |
|
|
|
|
|
|
|
if ("gsm" in arr[14]): |
|
|
|
|
|
|
|
rsrp = int(arr[9]) |
|
|
|
|
|
|
|
rssnr = int(arr[11]) |
|
|
|
|
|
|
|
ns = get_lte_level(rsrp, rssnr) |
|
|
|
|
|
|
|
if ns == NetworkStrength.unknown: |
|
|
|
|
|
|
|
tdscmadbm = int(arr[13]) |
|
|
|
|
|
|
|
ns = get_tdscdma_level(tdscmadbm) |
|
|
|
|
|
|
|
if ns == NetworkStrength.unknown: |
|
|
|
|
|
|
|
asu = int(arr[1]) |
|
|
|
|
|
|
|
ns = get_gsm_level(asu) |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
cdmadbm = int(arr[3]) |
|
|
|
|
|
|
|
cdmaecio = int(arr[4]) |
|
|
|
|
|
|
|
evdodbm = int(arr[5]) |
|
|
|
|
|
|
|
evdosnr = int(arr[7]) |
|
|
|
|
|
|
|
lvl_cdma = get_cdma_level(cdmadbm, cdmaecio) |
|
|
|
|
|
|
|
lvl_edmo = get_evdo_level(evdodbm, evdosnr) |
|
|
|
|
|
|
|
if lvl_edmo == NetworkStrength.unknown: |
|
|
|
|
|
|
|
ns = lvl_cdma |
|
|
|
|
|
|
|
elif lvl_cdma == NetworkStrength.unknown: |
|
|
|
|
|
|
|
ns = lvl_edmo |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
ns = min(lvl_cdma, lvl_edmo) |
|
|
|
|
|
|
|
network_strength = max(network_strength, ns) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return network_strength |
|
|
|