[PATCH 3/3] nas: new 'Extended LTE Band Preference' TLV in "Set/Get SSP"

Aleksander Morgado aleksander at aleksander.es
Sat Nov 11 09:55:48 UTC 2017


On Thu, Nov 9, 2017 at 8:32 AM, Aleksander Morgado
<aleksander at aleksander.es> wrote:
> The "LTE Band Preference" TLV is defined as a 64bit mask, and
> therefore it can only report up to 64 bands (1-64).
>
> The new 'Extended LTE Band Preference' TLV is defined as a sequence of
> four 64-bit masks, allowing up to 256 bands reported.
>
>     <<<<<< TLV:
>     <<<<<<   type       = "Extended LTE Band Preference" (0x23)
>     <<<<<<   length     = 32
>     <<<<<<   value      = DF:18:09:3B:A0:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
>     <<<<<<   translated = { [0] = '1787696847071 ' [1] = '0 ' [2] = '0 ' [3] = '0 '}
>
> Based on a patch from Wolfgang Tolkien <wtolkien at cypress.bc.ca>

This has been merged to git master.

> ---
>  data/qmi-service-nas.json | 32 ++++++++++++++++++++++++++++++--
>  src/qmicli/qmicli-nas.c   | 33 ++++++++++++++++++++++++++++++++-
>  2 files changed, 62 insertions(+), 3 deletions(-)
>
> diff --git a/data/qmi-service-nas.json b/data/qmi-service-nas.json
> index dcdd03d..24d4ff0 100644
> --- a/data/qmi-service-nas.json
> +++ b/data/qmi-service-nas.json
> @@ -1413,7 +1413,21 @@
>                        "type"          : "TLV",
>                        "since"         : "1.0",
>                        "format"        : "guint64",
> -                      "public-format" : "QmiNasTdScdmaBandPreference" } ],
> +                      "public-format" : "QmiNasTdScdmaBandPreference" },
> +                    { "name"          : "Extended LTE Band Preference",
> +                      "id"            : "0x24",
> +                      "mandatory"     : "no",
> +                      "type"          : "TLV",
> +                      "since"         : "1.20",
> +                      "format"        : "sequence",
> +                      "contents"      : [ { "name"   : "Mask Low",
> +                                            "format" : "guint64" },
> +                                          { "name"   : "Mask Mid Low",
> +                                            "format" : "guint64" },
> +                                          { "name"   : "Mask Mid High",
> +                                            "format" : "guint64" },
> +                                          { "name"   : "Mask High",
> +                                            "format" : "guint64" } ] } ],
>       "output"  : [  { "common-ref" : "Operation Result" } ] },
>
>    // *********************************************************************************
> @@ -1506,7 +1520,21 @@
>                                          "format" : "guint16" },
>                                        { "name"          : "Includes PCS Digit",
>                                          "format"        : "guint8",
> -                                        "public-format" : "gboolean" } ] } ] },
> +                                        "public-format" : "gboolean" } ] },
> +                    { "name"          : "Extended LTE Band Preference",
> +                      "id"            : "0x23",
> +                      "mandatory"     : "no",
> +                      "type"          : "TLV",
> +                      "since"         : "1.20",
> +                      "format"        : "sequence",
> +                      "contents"      : [ { "name"   : "Mask Low",
> +                                            "format" : "guint64" },
> +                                          { "name"   : "Mask Mid Low",
> +                                            "format" : "guint64" },
> +                                          { "name"   : "Mask Mid High",
> +                                            "format" : "guint64" },
> +                                          { "name"   : "Mask High",
> +                                            "format" : "guint64" } ] } ] },
>
>    // *********************************************************************************
>    {  "name"    : "Get Operator Name",
> diff --git a/src/qmicli/qmicli-nas.c b/src/qmicli/qmicli-nas.c
> index 3ee9653..4cca61b 100644
> --- a/src/qmicli/qmicli-nas.c
> +++ b/src/qmicli/qmicli-nas.c
> @@ -1953,7 +1953,7 @@ get_technology_preference_ready (QmiClientNas *client,
>
>  static void
>  get_system_selection_preference_ready (QmiClientNas *client,
> -                                 GAsyncResult *res)
> +                                       GAsyncResult *res)
>  {
>      QmiMessageNasGetSystemSelectionPreferenceOutput *output;
>      GError *error = NULL;
> @@ -1969,6 +1969,7 @@ get_system_selection_preference_ready (QmiClientNas *client,
>      QmiNasGsmWcdmaAcquisitionOrderPreference gsm_wcdma_acquisition_order_preference;
>      guint16 mcc;
>      guint16 mnc;
> +    guint64 extended_lte_band_preference[4];
>      gboolean has_pcs_digit;
>
>      output = qmi_client_nas_get_system_selection_preference_finish (client, res, &error);
> @@ -2031,6 +2032,36 @@ get_system_selection_preference_ready (QmiClientNas *client,
>          g_free (str);
>      }
>
> +    if (qmi_message_nas_get_system_selection_preference_output_get_extended_lte_band_preference (
> +            output,
> +            &extended_lte_band_preference[0],
> +            &extended_lte_band_preference[1],
> +            &extended_lte_band_preference[2],
> +            &extended_lte_band_preference[3],
> +            NULL)) {
> +        guint    i;
> +        gboolean first = TRUE;
> +
> +        g_print ("\tLTE band preference (extended): '");
> +        for (i = 0; i < G_N_ELEMENTS (extended_lte_band_preference); i++) {
> +            guint j;
> +
> +            for (j = 0; j < 64; j++) {
> +                guint band;
> +
> +                if (!(extended_lte_band_preference[i] & (((guint64) 1) << j)))
> +                    continue;
> +                band = 1 + j + (i * 64);
> +                if (first) {
> +                    g_print ("%u", band);
> +                    first = FALSE;
> +                } else
> +                    g_print (", %u", band);
> +            }
> +        }
> +        g_print ("'\n");
> +    }
> +
>      if (qmi_message_nas_get_system_selection_preference_output_get_td_scdma_band_preference (
>              output,
>              &td_scdma_band_preference,
> --
> 2.15.0
>



-- 
Aleksander
https://aleksander.es


More information about the libqmi-devel mailing list