[PATCH v3 2/2] command-nas: fix json output

Henrik Ginstmark henrik at ginstmark.se
Wed Mar 16 14:00:36 PDT 2022


Hi

You can break down LTE global-cell-id to enodeb_id and cell_id like this:

"intrafrequency_lte_info": {
"tracking_area_code": 14000,
"global_cell_id": 10498829,
=
"enodeb_id": 41011,
"cell_id": 13,

blobmsg_add_u32(&status,
"enodeb_id",res.data.intrafrequency_lte_info_v2.global_cell_id/256);
blobmsg_add_u32(&status,
"cell_id",res.data.intrafrequency_lte_info_v2.global_cell_id%256);

Same in nas_get_system_info and for UMTS global_cell_id you can break
down to rnc_id and
cell_id.

blobmsg_add_u32(&status, "rnc_id",res.data.wcdma_system_info_v2.cid/65536);
blobmsg_add_u32(&status, "cell_id",res.data.wcdma_system_info_v2.cid%65536);


Henrik

Den mån 14 mars 2022 kl 17:00 skrev Jan-Niklas Burfeind <git at aiyionpri.me>:
>
> Hey everyone,
> I attached the current output of my patched uqmi.
> Please let me know if you think the arrays should be named differently
> or if you spot an error.
>
> Thanks and have a nice day
> Aiyion
>
> On 3/8/22 16:01, Jan-Niklas Burfeind wrote:
> > Output the cells from --get-cell-location-info in an array "cells",
> > "geran" entries as an array called alike,
> > and wrap output for different "frequencies" as such.
> >
> > Reported-by: Cezary Jackiewicz <cezary.jackiewicz at gmail.com>
> > Suggested-by: Oskari Lemmelä <oskari at lemmela.net>
> > Signed-off-by: Jan-Niklas Burfeind <git at aiyionpri.me>
> > ---
> > Hey Oskari and Cezary,
> > Please have a thorough look at this, as I do not have the matching
> > equipment at hand to test all cases.
> > Let me know if you rather would see `frequencies` become `channels`
> > and if the `geran`-array does make sense.
> >
> > I just compiled this series without errors and will have a look at the
> > LTE-related json-outputs.
> >
> > Thanks for your time
> > Jan-Niklas
> >
> >   commands-nas.c | 46 +++++++++++++++++++++++++++++++++++++---------
> >   1 file changed, 37 insertions(+), 9 deletions(-)
> >
> > diff --git a/commands-nas.c b/commands-nas.c
> > index 275c53f..b99767f 100644
> > --- a/commands-nas.c
> > +++ b/commands-nas.c
> > @@ -708,7 +708,7 @@ static void
> >   cmd_nas_get_cell_location_info_cb(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg)
> >   {
> >       struct qmi_nas_get_cell_location_info_response res;
> > -     void *c, *t, *cell, *freq;
> > +     void *c, *t, *cell, *cells, *freq, *frequencies, *geran;
> >       int i, j;
> >
> >       qmi_parse_nas_get_cell_location_info_response(msg, &res);
> > @@ -724,6 +724,7 @@ cmd_nas_get_cell_location_info_cb(struct qmi_dev *qmi, struct qmi_request *req,
> >                               res.data.umts_info_v2.primary_scrambling_code);
> >               blobmsg_add_u32(&status, "rscp", res.data.umts_info_v2.rscp);
> >               blobmsg_add_u32(&status, "ecio", res.data.umts_info_v2.ecio);
> > +             cells = blobmsg_open_array(&status, "cells");
> >               for (j = 0; j < res.data.umts_info_v2.cell_n; j++) {
> >                       cell = blobmsg_open_table(&status, NULL);
> >                       blobmsg_add_u32(&status, "channel",
> > @@ -734,6 +735,8 @@ cmd_nas_get_cell_location_info_cb(struct qmi_dev *qmi, struct qmi_request *req,
> >                       blobmsg_add_u32(&status, "ecio", res.data.umts_info_v2.cell[j].ecio);
> >                       blobmsg_close_table(&status, cell);
> >               }
> > +             blobmsg_close_array(&status, cells);
> > +             geran = blobmsg_open_array(&status, "geran");
> >               for (j = 0; j < res.data.umts_info_v2.neighboring_geran_n; j++) {
> >                       cell = blobmsg_open_table(&status, "neighboring_geran");
> >                       blobmsg_add_u32(&status, "channel",
> > @@ -746,6 +749,7 @@ cmd_nas_get_cell_location_info_cb(struct qmi_dev *qmi, struct qmi_request *req,
> >                                       res.data.umts_info_v2.neighboring_geran[j].rssi);
> >                       blobmsg_close_table(&status, cell);
> >               }
> > +             blobmsg_close_array(&status, geran);
> >               blobmsg_close_table(&status, c);
> >       }
> >       if (res.set.intrafrequency_lte_info_v2) {
> > @@ -769,6 +773,7 @@ cmd_nas_get_cell_location_info_cb(struct qmi_dev *qmi, struct qmi_request *req,
> >                       blobmsg_add_u32(&status, "s_intra_search_threshold",
> >                                       res.data.intrafrequency_lte_info_v2.s_intra_search_threshold);
> >               }
> > +             cells = blobmsg_open_array(&status, "cells");
> >               for (i = 0; i < res.data.intrafrequency_lte_info_v2.cell_n; i++) {
> >                       cell = blobmsg_open_table(&status, NULL);
> >                       print_lte_info(res.data.intrafrequency_lte_info_v2.cell[i].physical_cell_id,
> > @@ -780,11 +785,14 @@ cmd_nas_get_cell_location_info_cb(struct qmi_dev *qmi, struct qmi_request *req,
> >                                               res.data.intrafrequency_lte_info_v2.cell[i].cell_selection_rx_level);
> >                       blobmsg_close_table(&status, cell);
> >               }
> > +             blobmsg_close_array(&status, cells);
> >               blobmsg_close_table(&status, c);
> >       }
> >       if (res.set.interfrequency_lte_info) {
> > -             if (res.data.interfrequency_lte_info.frequency_n > 0)
> > +             if (res.data.interfrequency_lte_info.frequency_n > 0) {
> >                       c = blobmsg_open_table(&status, "interfrequency_lte_info");
> > +                     frequencies = blobmsg_open_array(&status, "frequencies");
> > +             }
> >               for (i = 0; i < res.data.interfrequency_lte_info.frequency_n; i++) {
> >                       freq = blobmsg_open_table(&status, NULL);
> >                       blobmsg_add_u32(&status, "channel",
> > @@ -795,6 +803,7 @@ cmd_nas_get_cell_location_info_cb(struct qmi_dev *qmi, struct qmi_request *req,
> >                                              res.data.interfrequency_lte_info.frequency[i].cell_selection_rx_level_high_threshold,
> >                                              res.data.interfrequency_lte_info.frequency[i].cell_selection_rx_level_low_threshold);
> >                       }
> > +                     cells = blobmsg_open_array(&status, "cells");
> >                       for (j = 0; j < res.data.interfrequency_lte_info.frequency[i].cell_n; j++) {
> >                               cell = blobmsg_open_table(&status, NULL);
> >                               print_lte_info(res.data.interfrequency_lte_info.frequency[i].cell[j].physical_cell_id,
> > @@ -806,14 +815,19 @@ cmd_nas_get_cell_location_info_cb(struct qmi_dev *qmi, struct qmi_request *req,
> >                                                       res.data.interfrequency_lte_info.frequency[i].cell[j].cell_selection_rx_level);
> >                               blobmsg_close_table(&status, cell);
> >                       }
> > +                     blobmsg_close_array(&status, cells);
> >                       blobmsg_close_table(&status, freq);
> >               }
> > -             if (res.data.interfrequency_lte_info.frequency_n > 0)
> > +             if (res.data.interfrequency_lte_info.frequency_n > 0) {
> > +                     blobmsg_close_array(&status, frequencies);
> >                       blobmsg_close_table(&status, c);
> > +             }
> >       }
> >       if (res.set.lte_info_neighboring_gsm) {
> > -             if (res.data.lte_info_neighboring_gsm.frequency_n > 0)
> > +             if (res.data.lte_info_neighboring_gsm.frequency_n > 0) {
> >                       c = blobmsg_open_table(&status, "lte_info_neighboring_gsm");
> > +                     frequencies = blobmsg_open_array(&status, "frequencies");
> > +             }
> >               for (i = 0; i < res.data.lte_info_neighboring_gsm.frequency_n; i++) {
> >                       freq = blobmsg_open_table(&status, NULL);
> >                       blobmsg_add_u32(&status, "ncc_permitted",
> > @@ -823,6 +837,7 @@ cmd_nas_get_cell_location_info_cb(struct qmi_dev *qmi, struct qmi_request *req,
> >                                              res.data.lte_info_neighboring_gsm.frequency[i].cell_reselection_high_threshold,
> >                                              res.data.lte_info_neighboring_gsm.frequency[i].cell_reselection_low_threshold);
> >                       }
> > +                     cells = blobmsg_open_array(&status, "cells");
> >                       for (j = 0; j < res.data.lte_info_neighboring_gsm.frequency[i].cell_n; j++) {
> >                               cell = blobmsg_open_table(&status, NULL);
> >                               blobmsg_add_u32(&status, "channel",
> > @@ -836,14 +851,19 @@ cmd_nas_get_cell_location_info_cb(struct qmi_dev *qmi, struct qmi_request *req,
> >                                                       res.data.lte_info_neighboring_gsm.frequency[i].cell[j].cell_selection_rx_level);
> >                               blobmsg_close_table(&status, cell);
> >                       }
> > +                     blobmsg_close_array(&status, cells);
> >                       blobmsg_close_table(&status, freq);
> >               }
> > -             if (res.data.lte_info_neighboring_gsm.frequency_n > 0)
> > +             if (res.data.lte_info_neighboring_gsm.frequency_n > 0) {
> > +                     blobmsg_close_array(&status, frequencies);
> >                       blobmsg_close_table(&status, c);
> > +             }
> >       }
> >       if (res.set.lte_info_neighboring_wcdma) {
> > -             if (res.data.lte_info_neighboring_wcdma.frequency_n > 0)
> > +             if (res.data.lte_info_neighboring_wcdma.frequency_n > 0) {
> >                       c = blobmsg_open_table(&status, "lte_info_neighboring_wcdma");
> > +                     frequencies = blobmsg_open_array(&status, "frequencies");
> > +             }
> >               for (i = 0; i < res.data.lte_info_neighboring_wcdma.frequency_n; i++) {
> >                       freq = blobmsg_open_table(&status, NULL);
> >                       blobmsg_add_u32(&status, "channel",
> > @@ -853,6 +873,7 @@ cmd_nas_get_cell_location_info_cb(struct qmi_dev *qmi, struct qmi_request *req,
> >                                              res.data.lte_info_neighboring_wcdma.frequency[i].cell_reselection_high_threshold,
> >                                              res.data.lte_info_neighboring_wcdma.frequency[i].cell_reselection_low_threshold);
> >                       }
> > +                     cells = blobmsg_open_array(&status, "cells");
> >                       for (j = 0; j < res.data.lte_info_neighboring_wcdma.frequency[i].cell_n; j++) {
> >                               cell = blobmsg_open_table(&status, NULL);
> >                               blobmsg_add_u32(&status, "primary_scrambling_code",
> > @@ -866,14 +887,19 @@ cmd_nas_get_cell_location_info_cb(struct qmi_dev *qmi, struct qmi_request *req,
> >                                                       res.data.lte_info_neighboring_wcdma.frequency[i].cell[j].cell_selection_rx_level);
> >                               blobmsg_close_table(&status, cell);
> >                       }
> > +                     blobmsg_close_array(&status, cells);
> >                       blobmsg_close_table(&status, freq);
> >               }
> > -             if (res.data.lte_info_neighboring_wcdma.frequency_n > 0)
> > +             if (res.data.lte_info_neighboring_wcdma.frequency_n > 0) {
> > +                     blobmsg_close_array(&status, frequencies);
> >                       blobmsg_close_table(&status, c);
> > +             }
> >       }
> >       if (res.set.umts_info_neighboring_lte) {
> > -             if (res.data.umts_info_neighboring_lte.frequency_n > 0)
> > +             if (res.data.umts_info_neighboring_lte.frequency_n > 0) {
> >                       c = blobmsg_open_table(&status, "umts_info_neighboring_lte");
> > +                     frequencies = blobmsg_open_array(&status, "frequencies");
> > +             }
> >               for (i = 0; i < res.data.umts_info_neighboring_lte.frequency_n; i++) {
> >                       freq = blobmsg_open_table(&status, NULL);
> >                       blobmsg_add_u32(&status, "channel",
> > @@ -889,8 +915,10 @@ cmd_nas_get_cell_location_info_cb(struct qmi_dev *qmi, struct qmi_request *req,
> >                                       res.data.umts_info_neighboring_lte.frequency[i].cell_selection_rx_level);
> >                       blobmsg_close_table(&status, freq);
> >               }
> > -             if (res.data.umts_info_neighboring_lte.frequency_n > 0)
> > +             if (res.data.umts_info_neighboring_lte.frequency_n > 0) {
> > +                     blobmsg_close_array(&status, frequencies);
> >                       blobmsg_close_table(&status, c);
> > +             }
> >       }
> >       blobmsg_close_table(&status, t);
> >   }_______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list