uqmid: modem_tx: add tx_wds_stop_network()
authorAlexander Couzens <[email protected]>
Wed, 14 Aug 2024 12:43:50 +0000 (14:43 +0200)
committerDavid Bauer <[email protected]>
Sat, 31 May 2025 20:41:00 +0000 (22:41 +0200)
Signed-off-by: Alexander Couzens <[email protected]>
uqmid/modem_tx.c
uqmid/modem_tx.h

index fb51698c8d14ae7ecfb22a3a465bf91386c5db8d..caf2072bfb27a4c2e8048df9fb2d8f62b7b5f953 100644 (file)
@@ -185,6 +185,32 @@ int tx_wds_start_network(struct modem *modem, struct qmi_service *wds, request_c
        return uqmi_service_send_msg(wds, req);
 }
 
+int tx_wds_stop_network(struct modem *modem, struct qmi_service *wds, request_cb cb, uint32_t *packet_data_handle,
+                       bool *disable_autoconnect)
+{
+       struct qmi_request *req = talloc_zero(wds, struct qmi_request);
+       struct qmi_msg *msg = talloc_zero_size(req, 1024);
+
+       struct qmi_wds_stop_network_request stop_req = {};
+
+       if (packet_data_handle)
+               qmi_set(&stop_req, packet_data_handle, *packet_data_handle);
+
+       if (disable_autoconnect)
+               qmi_set(&stop_req, disable_autoconnect, *disable_autoconnect);
+
+       int ret = qmi_set_wds_stop_network_request(msg, &stop_req);
+       if (ret) {
+               LOG_ERROR("Failed to encode start network request");
+               return 1;
+       }
+
+       req->msg = msg;
+       req->cb = cb;
+       req->cb_data = modem;
+       return uqmi_service_send_msg(wds, req);
+}
+
 int tx_wds_get_current_settings(struct modem *modem, struct qmi_service *wds, request_cb cb)
 {
        struct qmi_request *req = talloc_zero(wds, struct qmi_request);
index 5ef361506d5eb8114d444ff33a6396c65a90661a..17a30ea9b399fdbab429873e792a0d9406b80cf8 100644 (file)
@@ -18,6 +18,8 @@ int tx_wds_modify_profile(struct modem *modem, struct qmi_service *wds, request_
                          uint8_t pdp_type, const char *username, const char *password);
 int tx_wds_start_network(struct modem *modem, struct qmi_service *wds, request_cb cb, uint8_t profile_idx,
                         uint8_t ip_family);
+int tx_wds_stop_network(struct modem *modem, struct qmi_service *wds, request_cb cb, uint32_t *packet_data_handle,
+                       bool *disable_autoconnect);
 int tx_wds_get_current_settings(struct modem *modem, struct qmi_service *wds, request_cb cb);
 
 #endif /* __UQMID_MODEM_TX_H */