summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJongSeok Won <wjs890204@gmail.com>2020-07-31 11:20:52 +0900
committerDenis Kenzior <denkenz@gmail.com>2020-07-31 10:21:00 -0500
commit325a4b2998368313a6cdaad4b193b1d456e2d73a (patch)
treedc3b7351bc03b42f44ab02eaf85e745d4918cc18
parent4f4fcc494477082e4fbcc2619aff2ae1846e26b8 (diff)
downloadofono-325a4b2998368313a6cdaad4b193b1d456e2d73a.tar.gz
rilmodem: support cell type LTE for netmon
-rw-r--r--drivers/rilmodem/netmon.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/drivers/rilmodem/netmon.c b/drivers/rilmodem/netmon.c
index 547ebccc..9f3a1191 100644
--- a/drivers/rilmodem/netmon.c
+++ b/drivers/rilmodem/netmon.c
@@ -109,6 +109,9 @@ static int process_cellinfo_list(struct ril_msg *message,
int mcc, mnc;
int lac, cid, psc;
int rssi, ber;
+ int ci, pci, tac;
+ int rsrp, rsrq, rssnr;
+ int cqi, tadv;
char s_mcc[OFONO_MAX_MCC_LENGTH + 1];
char s_mnc[OFONO_MAX_MNC_LENGTH + 1];
int i, j;
@@ -216,6 +219,54 @@ static int process_cellinfo_list(struct ril_msg *message,
OFONO_NETMON_INFO_BER, ber,
OFONO_NETMON_INFO_INVALID);
+ } else if (cell_type == NETMON_RIL_CELLINFO_TYPE_LTE) {
+ mcc = parcel_r_int32(&rilp);
+ mnc = parcel_r_int32(&rilp);
+ ci = parcel_r_int32(&rilp);
+ pci = parcel_r_int32(&rilp);
+ tac = parcel_r_int32(&rilp);
+ rssi = parcel_r_int32(&rilp);
+ rsrp = parcel_r_int32(&rilp);
+ rsrq = parcel_r_int32(&rilp);
+ rssnr = parcel_r_int32(&rilp);
+ cqi = parcel_r_int32(&rilp);
+ tadv = parcel_r_int32(&rilp);
+
+ if (mcc >= 0 && mcc <= 999)
+ snprintf(s_mcc, sizeof(s_mcc), "%03d", mcc);
+ else
+ strcpy(s_mcc, "");
+
+ if (mnc >= 0 && mnc <= 999)
+ snprintf(s_mnc, sizeof(s_mnc), "%03d", mnc);
+ else
+ strcpy(s_mnc, "");
+
+ ci = (ci >= 0 && ci <= 268435455) ? ci : -1;
+ pci = (pci >= 0 && pci <= 503) ? pci : -1;
+ tac = (tac >= 0 && tac <= 65535) ? tac : -1;
+ rssi = (rssi >= 0 && rssi <= 31) ? rssi : -1;
+ rsrp = (rsrp >= 44 && rsrp <= 140) ? -rsrp : -1;
+ rsrq = (rsrq >= 3 && rsrq <= 20) ? -rsrq : -1;
+ rssnr = (rssnr >= -200 && rssnr <= 300) ? rssnr : -1;
+ cqi = (cqi >= 0 && cqi <= 15) ? cqi : -1;
+ tadv = (tadv >=0 && tadv <= 63) ? tadv : -1;
+
+ ofono_netmon_serving_cell_notify(netmon,
+ OFONO_NETMON_CELL_TYPE_LTE,
+ OFONO_NETMON_INFO_MCC, s_mcc,
+ OFONO_NETMON_INFO_MNC, s_mnc,
+ OFONO_NETMON_INFO_CI, ci,
+ OFONO_NETMON_INFO_PCI, pci,
+ OFONO_NETMON_INFO_TAC, tac,
+ OFONO_NETMON_INFO_RSSI, rssi,
+ OFONO_NETMON_INFO_RSRP, rsrp,
+ OFONO_NETMON_INFO_RSRQ, rsrq,
+ OFONO_NETMON_INFO_SNR, rssnr,
+ OFONO_NETMON_INFO_CQI, cqi,
+ OFONO_NETMON_INFO_TIMING_ADVANCE, tadv,
+ OFONO_NETMON_INFO_INVALID);
+
}
return OFONO_ERROR_TYPE_NO_ERROR;