return QMI_CMD_REQUEST;
}
+#define cmd_nas_set_network_preference_cb no_cb
+static enum qmi_cmd_result
+cmd_nas_set_network_preference_prepare(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg, char *arg)
+{
+ QmiNasGsmWcdmaAcquisitionOrderPreference pref = QMI_NAS_GSM_WCDMA_ACQUISITION_ORDER_PREFERENCE_AUTOMATIC;
+
+ if (!strcmp(arg, "gsm"))
+ pref = QMI_NAS_GSM_WCDMA_ACQUISITION_ORDER_PREFERENCE_GSM;
+ else if (!strcmp(arg, "wcdma"))
+ pref = QMI_NAS_GSM_WCDMA_ACQUISITION_ORDER_PREFERENCE_WCDMA;
+
+ qmi_set(&sel_req, gsm_wcdma_acquisition_order_preference, pref);
+ qmi_set_nas_set_system_selection_preference_request(msg, &sel_req);
+ return QMI_CMD_REQUEST;
+}
+
#define cmd_nas_initiate_network_register_cb no_cb
static enum qmi_cmd_result
cmd_nas_initiate_network_register_prepare(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg, char *arg)
qmi_set_nas_get_signal_info_request(msg);
return QMI_CMD_REQUEST;
}
+
+static void
+cmd_nas_get_serving_system_cb(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg)
+{
+ struct qmi_nas_get_serving_system_response res;
+ static const char *reg_states[] = {
+ [QMI_NAS_REGISTRATION_STATE_NOT_REGISTERED] = "not_registered",
+ [QMI_NAS_REGISTRATION_STATE_REGISTERED] = "registered",
+ [QMI_NAS_REGISTRATION_STATE_NOT_REGISTERED_SEARCHING] = "searching",
+ [QMI_NAS_REGISTRATION_STATE_REGISTRATION_DENIED] = "registering_denied",
+ [QMI_NAS_REGISTRATION_STATE_UNKNOWN] = "unknown",
+ };
+
+ qmi_parse_nas_get_serving_system_response(msg, &res);
+
+ if (res.set.serving_system) {
+ int state = res.data.serving_system.registration_state;
+
+ if (state > QMI_NAS_REGISTRATION_STATE_UNKNOWN)
+ state = QMI_NAS_REGISTRATION_STATE_UNKNOWN;
+
+ blobmsg_add_string(&status, "registration", reg_states[state]);
+ }
+ if (res.set.current_plmn) {
+ blobmsg_add_u32(&status, "plmn_mcc", res.data.current_plmn.mcc);
+ blobmsg_add_u32(&status, "plmn_mnc", res.data.current_plmn.mnc);
+ if (res.data.current_plmn.description)
+ blobmsg_add_string(&status, "plmn_description", res.data.current_plmn.description);
+ }
+
+ if (res.set.roaming_indicator)
+ blobmsg_add_u8(&status, "roaming", !res.data.roaming_indicator);
+}
+
+static enum qmi_cmd_result
+cmd_nas_get_serving_system_prepare(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg, char *arg)
+{
+ qmi_set_nas_get_serving_system_request(msg);
+ return QMI_CMD_REQUEST;
+}