diff options
-rw-r--r-- | commands-nas.c | 31 | ||||
-rw-r--r-- | commands-nas.h | 2 |
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" \ |