<div dir="ltr">Thanks for the detailed reply. So I presume that qmi_device_open(), qmi_device_ready() and correspondingly qmi_device_close_async() are not required?<div>If yes, then it would be interesting to know when they would be needed.</div><div><br></div><div>Kindly share your thoughts.</div><div><br></div><div>Regards,</div><div>Sai.<br><div><div><br></div></div></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 18, 2021 at 11:58 AM Aleksander Morgado <<a href="mailto:aleksander@aleksander.es" target="_blank">aleksander@aleksander.es</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hey,<br>
<br>
><br>
> I am looking at QMI APIs, specially interested in<br>
><br>
> qmi_client_wds_start_network ()<br>
><br>
> The references that I could find for the usage of this are only in qmicli and modem manager. Initially I thought that the API can be used directly, but looking at the approach followed in QMICLI, it looks like there is a need for a set of APIs to be called in a specific sequence, before the start API can be used. Is that correct? And for someone new to libqmi and wondering if the modem can be enabled with use of QMI APIs included in build, instead of using QMICLI or QMI-NETWORK, is there any other simpler approach than that is followed in QMICLI?<br>
><br>
> In short, lets say I don't want anything other than just to start/stop the data connection on the modem with a simple set of QMI APIs, is that possible?<br>
><br>
> Any inputs are greatly appreciated.<br>
><br>
<br>
Before using qmi_client_wds_start_network() you need to allocate a<br>
"WDS QMI client". All the WDS operations require a client to be<br>
allocated in advance; the same way as all operations in other services<br>
like DMS or NAS also require a client of the specific service to be<br>
allocated in advance.<br>
<br>
The client allocation procedure is done using the CTL service (the<br>
only service for which no specific client needs to be allocated), but<br>
this service is "hidden" to the libqmi API user behind QmiDevice<br>
operations; e.g. in your case you need qmi_device_allocate_client().<br>
<br>
So, if you want to write an application using libqmi and the minimal<br>
number of steps required to call the WDS start network operation,<br>
you'll need to:<br>
 * qmi_device_new()<br>
 * qmi_device_allocate_client (device, WDS)<br>
 * qmi_client_wds_set_ip_family(client, ....)     --> optional if<br>
ip-type not set in start network<br>
 * qmi_client_wds_start_network(client, ...)    --> returns packet-data-handle<br>
<br>
And once you want to stop the connection:<br>
 * qmi_client_wds_stop_network(client, packet-data-handle)<br>
 * qmi_device_release_client(device,client)<br>
<br>
-- <br>
Aleksander<br>
<a href="https://aleksander.es" rel="noreferrer" target="_blank">https://aleksander.es</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"> </div></div>