wds: implement selection of default profile
authorDavid Bauer <[email protected]>
Thu, 13 Feb 2025 16:00:44 +0000 (17:00 +0100)
committerDavid Bauer <[email protected]>
Wed, 9 Jul 2025 12:52:45 +0000 (14:52 +0200)
Allow configuration of the default profile on the modem.

This is required to set the default bearer when on LTE.

Signed-off-by: David Bauer <[email protected]>
uqmi/commands-wds.c
uqmi/commands-wds.h

index afb57aa901da14b121baf89c7534fff7816bd01b..a5bfabae0f616a1248572f3a3b56cec74d1737e0 100644 (file)
@@ -649,6 +649,31 @@ cmd_wds_get_default_profile_cb(struct qmi_dev *qmi, struct qmi_request *req, str
        blobmsg_close_table(&status, p);
 }
 
+#define cmd_wds_set_default_profile_cb no_cb
+
+static enum qmi_cmd_result
+cmd_wds_set_default_profile_prepare(struct qmi_dev *qmi, struct qmi_request *req,
+                                   struct qmi_msg *msg, char *arg)
+{
+       struct uqmi_wds_profile_identifier profile;
+
+       if (uqmi_wds_profile_identifier_parse(arg, &profile) < 0) {
+               fprintf(stderr, "Invalid argument\n");
+               return QMI_CMD_EXIT;
+       }
+
+       struct qmi_wds_set_default_profile_number_request set_default_profile = {
+               QMI_INIT_SEQUENCE(profile_identifier,
+                       .family = QMI_WDS_PROFILE_FAMILY_TETHERED,
+                       .type = profile.type,
+                       .index = profile.index,
+               )
+       };
+
+       qmi_set_wds_set_default_profile_number_request(msg, &set_default_profile);
+       return QMI_CMD_REQUEST;
+}
+
 #define cmd_wds_delete_profile_cb no_cb
 
 static enum qmi_cmd_result
index 18d4c391a96100e287cec46d0d7e823fd1894b6a..882cf70f0ca75178aff6d78263c227fcc8fbcfe5 100644 (file)
@@ -34,6 +34,7 @@
        __uqmi_command(wds_set_autoconnect_settings, set-autoconnect, required, QMI_SERVICE_WDS), \
        __uqmi_command(wds_reset, reset-wds, no, QMI_SERVICE_WDS), \
        __uqmi_command(wds_get_profile_settings, get-profile-settings, required, QMI_SERVICE_WDS), \
+       __uqmi_command(wds_set_default_profile, set-default-profile, required, QMI_SERVICE_WDS), \
        __uqmi_command(wds_get_default_profile, get-default-profile, required, QMI_SERVICE_WDS), \
        __uqmi_command(wds_create_profile, create-profile, required, QMI_SERVICE_WDS), \
        __uqmi_command(wds_modify_profile, modify-profile, required, QMI_SERVICE_WDS), \
@@ -61,6 +62,7 @@
                "  --set-ip-family <val>:            Set ip-family (ipv4, ipv6, unspecified)\n" \
                "  --set-autoconnect <val>:          Set automatic connect/reconnect (disabled, enabled, paused)\n" \
                "  --get-profile-settings <val,#>:   Get APN profile settings (3gpp, 3gpp2),#\n" \
+               "  --set-default-profile <val,#>:    Set default profile number (3gpp, 3gpp2)\n" \
                "  --get-default-profile <val>:      Get default profile number (3gpp, 3gpp2)\n" \
                "  --create-profile <val>            Create profile (3gpp, 3gpp2)\n" \
                "    --apn <apn>:                    Use APN\n" \