Added commands to change PIN code
[project/uqmi.git] / commands-dms.c
index 15cf829..a677052 100644 (file)
@@ -136,6 +136,42 @@ cmd_dms_set_pin2_protection_prepare(struct qmi_dev *qmi, struct qmi_request *req
        return cmd_dms_set_pin_protection_prepare(msg, arg);
 }
 
+static enum qmi_cmd_result
+cmd_dms_change_pin_prepare(struct qmi_msg *msg, char *arg)
+{
+       if (!dms_req_data.pin || !dms_req_data.new_pin) {
+               uqmi_add_error("Missing argument");
+               return QMI_CMD_EXIT;
+       }
+
+       struct qmi_dms_uim_change_pin_request dms_change_pin_req = {
+               QMI_INIT_SEQUENCE(info,
+                       .pin_id = dms_req_data.pin_id
+               ),
+               QMI_INIT_PTR(info.old_pin, dms_req_data.pin),
+               QMI_INIT_PTR(info.new_pin, dms_req_data.new_pin)
+       };
+
+       qmi_set_dms_uim_change_pin_request(msg, &dms_change_pin_req);
+       return QMI_CMD_REQUEST;
+}
+
+#define cmd_dms_change_pin1_cb no_cb
+static enum qmi_cmd_result
+cmd_dms_change_pin1_prepare(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg, char *arg)
+{
+       dms_req_data.pin_id = QMI_DMS_UIM_PIN_ID_PIN;
+       return cmd_dms_change_pin_prepare(msg, arg);
+}
+
+#define cmd_dms_change_pin2_cb no_cb
+static enum qmi_cmd_result
+cmd_dms_change_pin2_prepare(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg, char *arg)
+{
+       dms_req_data.pin_id = QMI_DMS_UIM_PIN_ID_PIN2;
+       return cmd_dms_change_pin_prepare(msg, arg);
+}
+
 #define cmd_dms_set_new_pin_cb no_cb
 static enum qmi_cmd_result
 cmd_dms_set_new_pin_prepare(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg, char *arg)