[uqmi] dms: add --get-operating-mode

Henrik Ginstmark henrik at ginstmark.se
Sat Dec 4 07:16:27 PST 2021


dms: add --get-operating-mode

This command make it possible to query if the modem is in flight mode or not.

If you need to change your APN setting it should be done during flight mode on.
To make it possible to automate change of APN setting --get-operating-mode is
needed.

Signed-off-by: Henrik Ginstmark <henrik at ginstmark.se>

---

commands-dms.c

@@ -375,6 +375,38 @@ cmd_dms_reset_prepare(struct qmi_dev *qmi, struct
qmi_request *req, struct qmi_m
    return QMI_CMD_REQUEST;
}

+static void
+cmd_dms_get_operating_mode_cb(struct qmi_dev *qmi, struct qmi_request
*req, struct qmi_msg *msg)
+{
+    struct qmi_dms_get_operating_mode_response res;
+
+    const char *modes[] = {
+        [QMI_DMS_OPERATING_MODE_ONLINE] = "online",
+        [QMI_DMS_OPERATING_MODE_LOW_POWER] = "low_power",
+        [QMI_DMS_OPERATING_MODE_FACTORY_TEST] = "factory_test",
+        [QMI_DMS_OPERATING_MODE_OFFLINE] = "offline",
+        [QMI_DMS_OPERATING_MODE_RESET] = "reset",
+        [QMI_DMS_OPERATING_MODE_SHUTTING_DOWN] = "shutting_down",
+        [QMI_DMS_OPERATING_MODE_PERSISTENT_LOW_POWER] = "persistent_low_power",
+        [QMI_DMS_OPERATING_MODE_MODE_ONLY_LOW_POWER] = "mode_only_low_power",
+    };
+    int s = 0;
+
+    qmi_parse_dms_get_operating_mode_response(msg, &res);
+    if (res.set.mode &&
+        res.data.mode < ARRAY_SIZE(modes))
+        s = res.data.mode;
+
+    blobmsg_add_string(&status, NULL, modes[s]);
+}
+
+static enum qmi_cmd_result
+cmd_dms_get_operating_mode_prepare(struct qmi_dev *qmi, struct
qmi_request *req, struct qmi_msg *msg, char *arg)
+{
+    qmi_set_dms_get_operating_mode_request(msg);
+    return QMI_CMD_REQUEST;
+}
+
#define cmd_dms_set_operating_mode_cb no_cb
static enum qmi_cmd_result
cmd_dms_set_operating_mode_prepare(struct qmi_dev *qmi, struct
qmi_request *req, struct qmi_msg *msg, char *arg)


---

commands-dms.h

@@ -37,6 +37,7 @@
    __uqmi_command(dms_get_imsi, get-imsi, no, QMI_SERVICE_DMS), \
    __uqmi_command(dms_get_imei, get-imei, no, QMI_SERVICE_DMS), \
    __uqmi_command(dms_get_msisdn, get-msisdn, no, QMI_SERVICE_DMS), \
+   __uqmi_command(dms_get_operating_mode, get-device-operating-mode,
no, QMI_SERVICE_DMS), \
    __uqmi_command(dms_set_operating_mode, set-device-operating-mode,
required, QMI_SERVICE_DMS), \
    __uqmi_command(dms_reset, reset-dms, no, QMI_SERVICE_DMS), \
    __uqmi_command(dms_set_fcc_authentication, fcc-auth, no, QMI_SERVICE_DMS) \
@@ -67,6 +68,7 @@
        "  --get-imei:                       Get International Mobile
Equipment ID\n" \
        "  --get-msisdn:                     Get the MSISDN (telephone
number)\n" \
        "  --reset-dms:                      Reset the DMS service\n" \
+       "  --get-device-operating-mode       Get the device operating mode\n" \
        "  --set-device-operating-mode <m>   Set the device operating mode\n" \
        "                                    (modes: online,
low_power, factory_test, offline\n" \
        "                                     reset, shutting_down,
persistent_low_power,\n" \



More information about the openwrt-devel mailing list