summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schiller <ms@dev.tdt.de>2019-07-04 13:35:37 +0200
committerBjørn Mork <bjorn@mork.no>2019-08-20 13:31:33 +0200
commitd01b355f49cd9e83990ae2c5e82d11bc52dcbc97 (patch)
treed512594f791295e052750ae74e9b7debb5c6f5ac
parent5657e24bdc3efc0993e4f5219d5f5d000a4d40e3 (diff)
nas: add --get-plmn
This command is needed in the qmi proto handler to check if the plmn is already set to 'auto'. The reason for this is, that setting the plmn to 'auto' will implicitly lead to a (delayed) network re-registration, which could further lead to some timing related issues in the qmi proto handler. Signed-off-by: Martin Schiller <ms@dev.tdt.de>
-rw-r--r--commands-nas.c31
-rw-r--r--commands-nas.h2
2 files changed, 33 insertions, 0 deletions
diff --git a/commands-nas.c b/commands-nas.c
index 5874bfb..1f7445d 100644
--- a/commands-nas.c
+++ b/commands-nas.c
@@ -293,6 +293,37 @@ cmd_nas_get_serving_system_prepare(struct qmi_dev *qmi, struct qmi_request *req,
}
static void
+cmd_nas_get_plmn_cb(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg)
+{
+ struct qmi_nas_get_system_selection_preference_response res;
+ static const char *modes[] = {
+ [QMI_NAS_NETWORK_SELECTION_PREFERENCE_AUTOMATIC] = "automatic",
+ [QMI_NAS_NETWORK_SELECTION_PREFERENCE_MANUAL] = "manual",
+ };
+ void *c;
+
+ qmi_parse_nas_get_system_selection_preference_response(msg, &res);
+
+ c = blobmsg_open_table(&status, NULL);
+ if (res.set.network_selection_preference) {
+ blobmsg_add_string(&status, "mode", modes[res.data.network_selection_preference]);
+ }
+ if (res.set.manual_network_selection) {
+ blobmsg_add_u32(&status, "mcc", res.data.manual_network_selection.mcc);
+ blobmsg_add_u32(&status, "mnc", res.data.manual_network_selection.mnc);
+ }
+
+ blobmsg_close_table(&status, c);
+}
+
+static enum qmi_cmd_result
+cmd_nas_get_plmn_prepare(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg, char *arg)
+{
+ qmi_set_nas_get_system_selection_preference_request(msg);
+ return QMI_CMD_REQUEST;
+}
+
+static void
cmd_nas_network_scan_cb(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg)
{
static struct qmi_nas_network_scan_response res;
diff --git a/commands-nas.h b/commands-nas.h
index 9ebfa00..4b175f9 100644
--- a/commands-nas.h
+++ b/commands-nas.h
@@ -24,6 +24,7 @@
__uqmi_command(nas_set_network_modes, set-network-modes, required, CMD_TYPE_OPTION), \
__uqmi_command(nas_initiate_network_register, network-register, no, QMI_SERVICE_NAS), \
__uqmi_command(nas_set_plmn, set-plmn, no, QMI_SERVICE_NAS), \
+ __uqmi_command(nas_get_plmn, get-plmn, no, QMI_SERVICE_NAS), \
__uqmi_command(nas_set_mcc, mcc, required, CMD_TYPE_OPTION), \
__uqmi_command(nas_set_mnc, mnc, required, CMD_TYPE_OPTION), \
__uqmi_command(nas_network_scan, network-scan, no, QMI_SERVICE_NAS), \
@@ -44,6 +45,7 @@
" --set-plmn: Register at specified network\n" \
" --mcc <mcc>: Mobile Country Code (0 - auto)\n" \
" --mnc <mnc>: Mobile Network Code\n" \
+ " --get-plmn: Get preferred network selection info\n" \
" --get-signal-info: Get signal strength info\n" \
" --get-serving-system: Get serving system info\n" \