From d4a02795c71dc541302d93321082096d0e87a500 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Wed, 28 May 2014 12:32:57 +0200 Subject: [PATCH] nas: add 'UMTS Info Neighboring LTE' TLV to 'Cell Location Info' --- data/qmi-service-nas.json | 27 ++++++++++++++- .../libqmi-glib/libqmi-glib-common.sections | 5 +++ src/libqmi-glib/qmi-enums-nas.h | 21 ++++++++++++ src/qmicli/qmicli-nas.c | 34 +++++++++++++++++++ 4 files changed, 86 insertions(+), 1 deletion(-) diff --git a/data/qmi-service-nas.json b/data/qmi-service-nas.json index 30a59ef..f5a3930 100644 --- a/data/qmi-service-nas.json +++ b/data/qmi-service-nas.json @@ -1560,7 +1560,32 @@ "id" : "0x17", "mandatory" : "no", "type" : "TLV", - "format" : "guint32" } ] }, + "format" : "guint32" }, + { "name" : "UMTS Info Neighboring LTE", + "id" : "0x18", + "mandatory" : "no", + "type" : "TLV", + "format" : "sequence", + "contents" : [ { "name" : "RRC state", + "format" : "guint32", + "public-format" : "QmiNasWcdmaRrcState" }, + { "name" : "Frequency", + "format" : "array", + "array-element" : { "name" : "Element", + "format" : "struct", + "contents" : [ { "name" : "EUTRA Absolute RF Channel Number", + "format" : "guint16" }, + { "name" : "Physical Cell ID", + "format" : "guint16" }, + { "name" : "RSRP", + "format" : "gfloat" }, + { "name" : "RSRQ", + "format" : "gfloat" }, + { "name" : "Cell Selection RX Level", + "format" : "gint16" }, + { "name" : "Is TDD", + "format" : "guint8", + "public-format" : "gboolean" } ] } } ] } ] }, // ********************************************************************************* { "name" : "Network Time", diff --git a/docs/reference/libqmi-glib/libqmi-glib-common.sections b/docs/reference/libqmi-glib/libqmi-glib-common.sections index 504b770..b44a7a0 100644 --- a/docs/reference/libqmi-glib/libqmi-glib-common.sections +++ b/docs/reference/libqmi-glib/libqmi-glib-common.sections @@ -246,6 +246,7 @@ QmiNasSimRejectState QmiNasCdmaPilotType QmiNasDayOfWeek QmiNasDaylightSavingsAdjustment +QmiNasWcdmaRrcState qmi_nas_radio_interface_get_string qmi_nas_active_band_get_string @@ -285,6 +286,7 @@ qmi_nas_sim_reject_state_get_string qmi_nas_cdma_pilot_type_get_string qmi_nas_day_of_week_get_string qmi_nas_daylight_savings_adjustment_get_string +qmi_nas_wcdma_rrc_state_get_string qmi_nas_radio_interface_build_string_from_mask qmi_nas_active_band_build_string_from_mask @@ -322,6 +324,7 @@ qmi_nas_sim_reject_state_build_string_from_mask qmi_nas_cdma_pilot_type_build_string_from_mask qmi_nas_day_of_week_build_string_from_mask qmi_nas_daylight_savings_adjustment_build_string_from_mask +qmi_nas_wcdma_rrc_state_build_string_from_mask QMI_TYPE_NAS_ACTIVE_BAND QMI_TYPE_NAS_ATTACH_STATE @@ -359,6 +362,7 @@ QMI_TYPE_NAS_WCDMA_HS_SERVICE QMI_TYPE_NAS_CDMA_PILOT_TYPE QMI_TYPE_NAS_DAY_OF_WEEK QMI_TYPE_NAS_DAYLIGHT_SAVINGS_ADJUSTMENT +QMI_TYPE_NAS_WCDMA_RRC_STATE qmi_nas_active_band_get_type qmi_nas_attach_state_get_type qmi_nas_call_barring_status_get_type @@ -395,6 +399,7 @@ qmi_nas_wcdma_hs_service_get_type qmi_nas_cdma_pilot_type_get_type qmi_nas_day_of_week_get_type qmi_nas_daylight_savings_adjustment_get_type +qmi_nas_wcdma_rrc_state_get_type
diff --git a/src/libqmi-glib/qmi-enums-nas.h b/src/libqmi-glib/qmi-enums-nas.h index 0b333d1..5bac29f 100644 --- a/src/libqmi-glib/qmi-enums-nas.h +++ b/src/libqmi-glib/qmi-enums-nas.h @@ -872,4 +872,25 @@ typedef enum { QMI_NAS_DAYLIGHT_SAVINGS_ADJUSTMENT_TWO_HOURS = 2 } QmiNasDaylightSavingsAdjustment; +/*****************************************************************************/ +/* Helper enums for the 'QMI NAS Get Cell Location Info' request/response */ + +/** + * QmiNasWcdmaRrcState: + * @QMI_NAS_WCDMA_RRC_STATE_DISCONNECTED: Disconnected. + * @QMI_NAS_WCDMA_RRC_STATE_CELL_PCH: WCDMA RRC state is CELL_PCH. + * @QMI_NAS_WCDMA_RRC_STATE_URA_PCH: WCDMA RRC state is URA_PCH. + * @QMI_NAS_WCDMA_RRC_STATE_CELL_FACH: WCDMA RRC state is CELL_FACH. + * @QMI_NAS_WCDMA_RRC_STATE_CELL_DCH: WCDMA RRC state is CELL_DCH. + * + * RRC state. + */ +typedef enum { + QMI_NAS_WCDMA_RRC_STATE_DISCONNECTED = 0, + QMI_NAS_WCDMA_RRC_STATE_CELL_PCH = 1, + QMI_NAS_WCDMA_RRC_STATE_URA_PCH = 2, + QMI_NAS_WCDMA_RRC_STATE_CELL_FACH = 3, + QMI_NAS_WCDMA_RRC_STATE_CELL_DCH = 4 +} QmiNasWcdmaRrcState; + #endif /* _LIBQMI_GLIB_QMI_ENUMS_NAS_H_ */ diff --git a/src/qmicli/qmicli-nas.c b/src/qmicli/qmicli-nas.c index df2f7d9..7229b7f 100644 --- a/src/qmicli/qmicli-nas.c +++ b/src/qmicli/qmicli-nas.c @@ -2256,6 +2256,8 @@ get_cell_location_info_ready (QmiClientNas *client, guint8 serving_cell_low_threshold; guint8 s_intra_search_threshold; + QmiNasWcdmaRrcState rrc_state; + output = qmi_client_nas_get_cell_location_info_finish (client, res, &error); if (!output) { g_printerr ("error: operation failed: %s\n", error->message); @@ -2622,6 +2624,38 @@ get_cell_location_info_ready (QmiClientNas *client, g_print ("UMTS Cell ID: '%" G_GUINT32_FORMAT"'\n", cell_id); } + array = NULL; + if (qmi_message_nas_get_cell_location_info_output_get_umts_info_neighboring_lte ( + output, + &rrc_state, + &array, NULL)) { + guint i; + + g_print ("UMTS Info Neighboring LTE\n" + "\tRRC State: '%s'\n", qmi_nas_wcdma_rrc_state_get_string (rrc_state)); + + for (i = 0; i < array->len; i++) { + QmiMessageNasGetCellLocationInfoOutputUmtsInfoNeighboringLteFrequencyElement *element; + + element = &g_array_index (array, QmiMessageNasGetCellLocationInfoOutputUmtsInfoNeighboringLteFrequencyElement, i); + + g_print ("\tFrequency [%u]:\n" + "\t\tEUTRA Absolute RF Channel Number: '%" G_GUINT16_FORMAT"'\n" + "\t\tPhysical Cell ID: '%" G_GUINT16_FORMAT "'\n" + "\t\tRSRP: '%f'\n" + "\t\tRSRQ: '%f'\n" + "\t\tCell Selection RX Level: '%" G_GINT16_FORMAT"'\n" + "\t\tIs TDD?: '%s'\n", + i, + element->eutra_absolute_rf_channel_number, + element->physical_cell_id, + element->rsrp, + element->rsrq, + element->cell_selection_rx_level, + element->is_tdd ? "yes" : "no"); + } + } + qmi_message_nas_get_cell_location_info_output_unref (output); shutdown (TRUE); }