[RFC] nas: new 'Phy CA Agg Secondary Cells' TLV in "Get LTE Cphy CA Info"
Aleksander Morgado
aleksander at aleksander.es
Mon Jan 22 09:42:50 UTC 2018
On 22/01/18 10:34, Bjørn Mork wrote:
> I have no docs, so the names are wrong. Decoding example with one
> secondary:
>
> [04 Dec 2017, 07:30:57] [Debug] [/dev/cdc-wdm0] received message...
> <<<<<< RAW:
> <<<<<< length = 91
> <<<<<< data =
> 01:5A:00:80:03:01:02:01:00:AC:00:4E:00:02:04:00:00:00:00:00:10:08:00:05:00:4C:0C:02:00:00:00:11:04:00:05:00:00:00:12:0E:00:04:00:86:0B:05:00:00:00:7F:00:02:00:00:00:13:0A:00:05:00:4C:0C:05:00:00:00:7F:00:14:01:00:01:15:10:00:01:04:00:86:0B:05:00:00:00:7F:00:02:00:00:00:01
>
> [04 Dec 2017, 07:30:57] [Debug] [/dev/cdc-wdm0] received generic response
> (translated)...
> <<<<<< QMUX:
>>>>>>> length = 90
>>>>>>> flags = 0x80
>>>>>>> service = "nas"
>>>>>>> client = 1
>>>>>>> QMI:
>>>>>>> flags = "response"
>>>>>>> transaction = 1
>>>>>>> tlv_length = 78
>>>>>>> message = "Get LTE Cphy CA Info" (0x00AC)
>>>>>>> TLV:
>>>>>>> type = "Result" (0x02)
>>>>>>> length = 4
>>>>>>> value = 00:00:00:00
>>>>>>> translated = SUCCESS
>>>>>>> TLV:
>>>>>>> type = 0x10
>>>>>>> length = 8
>>>>>>> value = 05:00:4C:0C:02:00:00:00
>>>>>>> TLV:
>>>>>>> type = "DL Bandwidth" (0x11)
>>>>>>> length = 4
>>>>>>> value = 05:00:00:00
>>>>>>> translated = 20
>>>>>>> TLV:
>>>>>>> type = "Phy CA Agg SCell Info" (0x12)
>>>>>>> length = 14
>>>>>>> value = 04:00:86:0B:05:00:00:00:7F:00:02:00:00:00
>>>>>>> translated = [ physical_cell_id = '4' rx_channel = '2950' dl_bandwidth = '20' lte_band = 'eutran-8' state = 'activated' ]
>>>>>>> TLV:
>>>>>>> type = "Phy CA Agg PCell Info" (0x13)
>>>>>>> length = 10
>>>>>>> value = 05:00:4C:0C:05:00:00:00:7F:00
>>>>>>> translated = [ physical_cell_id = '5' rx_channel = '3148' dl_bandwidth = '20' lte_band = 'eutran-8' ]
>>>>>>> TLV:
>>>>>>> type = "SCell index" (0x14)
>>>>>>> length = 1
>>>>>>> value = 01
>>>>>>> translated = 1
>>>>>>> TLV:
>>>>>>> type = "Phy CA Agg Secondary Cells" (0x15)
>>>>>>> length = 16
>>>>>>> value = 01:04:00:86:0B:05:00:00:00:7F:00:02:00:00:00:01
>>>>>>> translated = { [0] = '[ physical_cell_id = '4' rx_channel = '2950' dl_bandwidth = '20' lte_band = 'eutran-8' state = 'activated' cell_index = '1' ] '}
>
> Signed-off-by: Bjørn Mork <bjorn at mork.no>
> ---
> This patch was previously only sent to the mailing list as an attachment. As I
> did not see any comments, I fear that many might have missed it....
>
> Please ignore if the comments were absent for a good reason, like the embarrassing
> ugliness of this code.
>
> Note that we might want to hold this off until we have some proper names for
> the TLVs. But I still would like to know if the code is close enough to OK, so
> sending as an RFC
>
Just did a 1.20 tag yesterday so git master is all ready to get broken if needed :) I pushed it to git master for now, and we can cherry pick to the stable branches later on if needed.
>
>
> Bjørn
>
>
> data/qmi-service-nas.json | 27 ++++++++++++++++-
> src/qmicli/qmicli-nas.c | 76 +++++++++++++++++++++++++++++++----------------
> 2 files changed, 77 insertions(+), 26 deletions(-)
>
> diff --git a/data/qmi-service-nas.json b/data/qmi-service-nas.json
> index 24d4ff0ae72a..bc50865bab03 100644
> --- a/data/qmi-service-nas.json
> +++ b/data/qmi-service-nas.json
> @@ -3592,5 +3592,30 @@
> "type" : "TLV",
> "since" : "1.16",
> "format" : "guint8",
> - "prerequisites": [ { "common-ref" : "Success" } ] } ] }
> + "prerequisites": [ { "common-ref" : "Success" } ] },
> + { "name" : "Phy CA Agg Secondary Cells",
> + "id" : "0x15",
> + "mandatory" : "no",
> + "type" : "TLV",
> + "since" : "1.16",
> + "format" : "array",
> + "size-prefix-format" : "guint8",
> + "array-element" : { "name" : "SSC",
> + "format" : "struct",
> + "contents" : [ { "name" : "Physical Cell ID",
> + "format" : "guint16"},
> + { "name" : "Rx Channel",
> + "format" : "guint16" },
> + { "name" : "DL Bandwidth",
> + "format" : "guint32",
> + "public-format" : "QmiNasDLBandwidth" },
> + { "name" : "LTE Band",
> + "format" : "guint16",
> + "public-format" : "QmiNasActiveBand" },
> + { "name" : "State",
> + "format" : "guint32",
> + "public-format" : "QmiNasScellState" },
> + { "name" : "Cell Index",
> + "format" : "guint8" } ] },
> + "prerequisites" : [ { "common-ref" : "Success" } ] } ] }
> ]
> diff --git a/src/qmicli/qmicli-nas.c b/src/qmicli/qmicli-nas.c
> index 4cca61b285c5..2ea5a6b0b589 100644
> --- a/src/qmicli/qmicli-nas.c
> +++ b/src/qmicli/qmicli-nas.c
> @@ -3023,6 +3023,7 @@ get_lte_cphy_ca_info_ready (QmiClientNas *client,
> QmiNasActiveBand band;
> QmiNasScellState state;
> guint8 scell_index;
> + GArray *array;
>
> output = qmi_client_nas_get_lte_cphy_ca_info_finish (client, res, &error);
> if (!output) {
> @@ -3051,26 +3052,6 @@ get_lte_cphy_ca_info_ready (QmiClientNas *client,
> qmi_nas_dl_bandwidth_get_string (dl_bandwidth));
> }
>
> - if (qmi_message_nas_get_lte_cphy_ca_info_output_get_phy_ca_agg_scell_info (
> - output,
> - &pci,
> - &channel,
> - &dl_bandwidth,
> - &band,
> - &state,
> - NULL)) {
> - g_print ("Secondary Cell Info\n");
> - g_print ("\tPhysical Cell ID: '%" G_GUINT16_FORMAT"'\n"
> - "\tRX Channel: '%" G_GUINT16_FORMAT"'\n"
> - "\tDL Bandwidth: '%s'\n"
> - "\tLTE Band: '%s'\n"
> - "\tState: '%s'\n",
> - pci, channel,
> - qmi_nas_dl_bandwidth_get_string (dl_bandwidth),
> - qmi_nas_active_band_get_string (band),
> - qmi_nas_scell_state_get_string (state));
> - }
> -
> if (qmi_message_nas_get_lte_cphy_ca_info_output_get_phy_ca_agg_pcell_info (
> output,
> &pci,
> @@ -3088,11 +3069,56 @@ get_lte_cphy_ca_info_ready (QmiClientNas *client,
> qmi_nas_active_band_get_string (band));
> }
>
> - if (qmi_message_nas_get_lte_cphy_ca_info_output_get_scell_index (
> - output,
> - &scell_index,
> - NULL)) {
> - g_print ("Secondary Cell index: '%u'\n", scell_index);
> + if (qmi_message_nas_get_lte_cphy_ca_info_output_get_phy_ca_agg_secondary_cells (
> + output, &array, NULL)) {
> + guint i;
> +
> + if (!array->len)
> + g_print ("No Secondary Cells\n");
> + for (i = 0; i < array->len; i++) {
> + QmiMessageNasGetLteCphyCaInfoOutputPhyCaAggSecondaryCellsSsc *e;
> + e = &g_array_index (array, QmiMessageNasGetLteCphyCaInfoOutputPhyCaAggSecondaryCellsSsc, i);
> + g_print ("Secondary Cell %u Info\n"
> + "\tPhysical Cell ID: '%" G_GUINT16_FORMAT"'\n"
> + "\tRX Channel: '%" G_GUINT16_FORMAT"'\n"
> + "\tDL Bandwidth: '%s'\n"
> + "\tLTE Band: '%s'\n"
> + "\tState: '%s'\n"
> + "\tCell index: '%u'\n",
> + i + 1, e->physical_cell_id, e->rx_channel,
> + qmi_nas_dl_bandwidth_get_string (e->dl_bandwidth),
> + qmi_nas_active_band_get_string (e->lte_band),
> + qmi_nas_scell_state_get_string (e->state),
> + e->cell_index);
> + }
> +
> + } else {
> + if (qmi_message_nas_get_lte_cphy_ca_info_output_get_phy_ca_agg_scell_info (
> + output,
> + &pci,
> + &channel,
> + &dl_bandwidth,
> + &band,
> + &state,
> + NULL)) {
> + g_print ("Secondary Cell Info\n");
> + g_print ("\tPhysical Cell ID: '%" G_GUINT16_FORMAT"'\n"
> + "\tRX Channel: '%" G_GUINT16_FORMAT"'\n"
> + "\tDL Bandwidth: '%s'\n"
> + "\tLTE Band: '%s'\n"
> + "\tState: '%s'\n",
> + pci, channel,
> + qmi_nas_dl_bandwidth_get_string (dl_bandwidth),
> + qmi_nas_active_band_get_string (band),
> + qmi_nas_scell_state_get_string (state));
> + }
> +
> + if (qmi_message_nas_get_lte_cphy_ca_info_output_get_scell_index (
> + output,
> + &scell_index,
> + NULL)) {
> + g_print ("Secondary Cell index: '%u'\n", scell_index);
> + }
> }
>
> qmi_message_nas_get_lte_cphy_ca_info_output_unref (output);
>
--
Aleksander
https://aleksander.es
More information about the libqmi-devel
mailing list