summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2017-10-24 13:13:03 +0200
committerAleksander Morgado <aleksander@aleksander.es>2017-11-11 10:50:57 +0100
commit1152cf7e6a4a96d833b6ab0a58c5fc6e3ea54765 (patch)
tree0d4dd925ffd06874bdd25efef0c9a688dee79d62
parent65e42b247a624584366420e5f92270b006cd61de (diff)
nas: new 'Extended LTE Band Preference' TLV in "Set/Get SSP"
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@cypress.bc.ca>
-rw-r--r--data/qmi-service-nas.json32
-rw-r--r--src/qmicli/qmicli-nas.c33
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,