[PATCH 2/3] dms: new 'Extended LTE Band Capability' TLV in "Get Band Capabilities"

Aleksander Morgado aleksander at aleksander.es
Thu Nov 9 07:32:29 UTC 2017


The 'LTE Band Capability' TLV (0x10) is a 64-bit mask, and therefore
isn't capable of reporting more than 64 bands (1 to 64).

In order to support LTE bands greater than 64, this new 'extended' TLV
is defined, as an array of uint16 values, one per band.

E.g. this "Get Band Capabilities" response where the modem reports
band 66:

     [/dev/cdc-wdm0] received message...
     <<<<<< RAW:
     <<<<<<   length = 98
     <<<<<<   data   = 01:61:00:80:02:01:02:01:00:45:00:55:00:02:04:00:00:00:00:00:01:08:00:00:00:C0:07:00:00:02:00:10:08:00:DF:18:09:3B:A0:01:00:00:11:08:00:00:00:00:00:00:00:00:00:12:2A:00:14:00:01:00:02:00:03:00:04:00:05:00:07:00:08:00:0C:00:0D:00:11:00:14:00:19:00:1A:00:1C:00:1D:00:1E:00:26:00:28:00:29:00:42:00
     [/dev/cdc-wdm0] received generic response (translated)...
     <<<<<< QMUX:
     <<<<<<   length  = 97
     <<<<<<   flags   = 0x80
     <<<<<<   service = "dms"
     <<<<<<   client  = 1
     <<<<<< QMI:
     <<<<<<   flags       = "response"
     <<<<<<   transaction = 1
     <<<<<<   tlv_length  = 85
     <<<<<<   message     = "Get Band Capabilities" (0x0045)
     <<<<<< TLV:
     <<<<<<   type       = "Result" (0x02)
     <<<<<<   length     = 4
     <<<<<<   value      = 00:00:00:00
     <<<<<<   translated = SUCCESS
     <<<<<< TLV:
     <<<<<<   type       = "Band Capability" (0x01)
     <<<<<<   length     = 8
     <<<<<<   value      = 00:00:C0:07:00:00:02:00
     <<<<<<   translated = wcdma-2100, wcdma-pcs-1900, wcdma-dcs-1800, wcdma-1700-us, wcdma-850-us, wcdma-900
     <<<<<< TLV:
     <<<<<<   type       = "LTE Band Capability" (0x10)
     <<<<<<   length     = 8
     <<<<<<   value      = DF:18:09:3B:A0:01:00:00
     <<<<<<   translated = 1, 2, 3, 4, 5, 7, 8, 12, 13, 17, 20, 25, 38, 40, 41
     <<<<<< TLV:
     <<<<<<   type   = 0x11
     <<<<<<   length = 8
     <<<<<<   value  = 00:00:00:00:00:00:00:00
     <<<<<< TLV:
     <<<<<<   type       = "Extended LTE Band Capability" (0x12)
     <<<<<<   length     = 42
     <<<<<<   value      = 14:00:01:00:02:00:03:00:04:00:05:00:07:00:08:00:0C:00:0D:00:11:00:14:00:19:00:1A:00:1C:00:1D:00:1E:00:26:00:28:00:29:00:42:00
     <<<<<<   translated = { [0] = '1 ' [1] = '2 ' [2] = '3 ' [3] = '4 ' [4] = '5 ' [5] = '7 ' [6] = '8 ' [7] = '12 ' [8] = '13 ' [9] = '17 ' [10] = '20 ' [11] = '25 ' [12] = '26 ' [13] = '28 ' [14] = '29 ' [15] = '30 ' [16] = '38 ' [17] = '40 ' [18] = '41 ' [19] = '66 '}

Based on a patch from Wolfgang Tolkien <wtolkien at cypress.bc.ca>
---
 data/qmi-service-dms.json | 11 ++++++++++-
 src/qmicli/qmicli-dms.c   | 13 +++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/data/qmi-service-dms.json b/data/qmi-service-dms.json
index 72ebb6e..32ae890 100644
--- a/data/qmi-service-dms.json
+++ b/data/qmi-service-dms.json
@@ -1016,7 +1016,16 @@
                       "since"         : "1.0",
                       "format"        : "guint64",
                       "public-format" : "QmiDmsLteBandCapability",
-                      "prerequisites": [ { "common-ref" : "Success" } ] } ] },
+                      "prerequisites": [ { "common-ref" : "Success" } ] },
+                    { "name"          		: "Extended LTE Band Capability",
+                      "id"            		: "0x12",
+                      "mandatory"     		: "no",
+                      "type"          		: "TLV",
+                      "since"         		: "1.20",
+                      "format"        		: "array",
+                      "size-prefix-format"	: "guint16",
+                      "array-element" 		: { "format" : "guint16" },
+                      "prerequisites"		: [ { "common-ref" : "Success" } ] } ] },
 
   // *********************************************************************************
   {  "name"    : "Get Factory SKU",
diff --git a/src/qmicli/qmicli-dms.c b/src/qmicli/qmicli-dms.c
index 46b684b..173dc13 100644
--- a/src/qmicli/qmicli-dms.c
+++ b/src/qmicli/qmicli-dms.c
@@ -2362,6 +2362,7 @@ get_band_capabilities_ready (QmiClientDms *client,
     QmiMessageDmsGetBandCapabilitiesOutput *output;
     QmiDmsBandCapability band_capability;
     QmiDmsLteBandCapability lte_band_capability;
+    GArray *extended_lte_band_capability;
     GError *error = NULL;
     gchar *str;
 
@@ -2402,6 +2403,18 @@ get_band_capabilities_ready (QmiClientDms *client,
         g_free (str);
     }
 
+    if (qmi_message_dms_get_band_capabilities_output_get_extended_lte_band_capability (
+            output,
+            &extended_lte_band_capability,
+            NULL)) {
+        guint i;
+
+        g_print ("\tLTE bands (extended): '");
+        for (i = 0; i < extended_lte_band_capability->len; i++)
+            g_print ("%" G_GUINT16_FORMAT, g_array_index (extended_lte_band_capability, guint16, i));
+        g_print ("'\n");
+    }
+
     qmi_message_dms_get_band_capabilities_output_unref (output);
     operation_shutdown (TRUE);
 }
-- 
2.15.0



More information about the libqmi-devel mailing list