Hi!

> Some modems, like Quectel EC25, support waking the host platform from a 
> suspend state upon an SMS reception. Current SMS handling configures the 
> modem to not save incoming messages. On platforms where the modem's 
> interfaces (eg, cdc-wdm, wwan, etc) disconnect on suspend and reconnect on 
> resume, oFono will re-initialize. This can cause lost messages upon resume 
> because the QMI indication is sent before oFono is ready.
> 
> Changes to support suspend/resume with wake on SMS:
> - On startup:
>   1. Configure modem to save messages to NV and notify for class NONE.
>   2. Delete all processed messages in modem memory to free space.
>   3. Get list of unread messages, then get and delete each.
> - After startup:
>   1. Process message upon event indication and delete.
>   2. Then check for possibly more messages to process.
> ---
>  drivers/qmimodem/sms.c | 344 
> +++++++++++++++++++++++++++++++++++++++++--------
>  drivers/qmimodem/wms.h |  77 ++++++++---
>  2 files changed, 348 insertions(+), 73 deletions(-)
> 

> +static void delete_msg(struct ofono_sms *sms, uint8_t tag) {
> +     struct sms_data *data = ofono_sms_get_data(sms);
> +     struct qmi_param *param;
> +     qmi_result_func_t func = NULL;
> +
> +     DBG("");
> +
> +     param = qmi_param_new();
> +     if (param == NULL)
> +             goto done;
> +
> +     qmi_param_append_uint8(param, QMI_WMS_PARAM_DEL_STORE,
> +                             QMI_WMS_STORAGE_TYPE_NV);
> +
> +     if (tag == QMI_WMS_MT_UNDEFINE) {
> +             DBG("delete read msg type %d ndx %d", data->rd_msg_id.type,
> +                     data->rd_msg_id.ndx);
> +
> +             /* delete 1 msg */
> +             qmi_param_append_uint32(param, QMI_WMS_PARAM_DEL_NDX,
> +                                     data->rd_msg_id.ndx);
> +             func = delete_msg_cb;
> +     } else {
> +             DBG("delete msg tag %d mode %d", tag, data->msg_mode);
> +
> +             /* delete all msgs from 1 tag type */
> +             qmi_param_append_uint8(param, QMI_WMS_PARAM_DEL_TYPE, tag);
> +     }
> +
> +     qmi_param_append_uint8(param, QMI_WMS_PARAM_DEL_MODE, data->msg_mode);
> +
> +     if (qmi_service_send(data->wms, QMI_WMS_DELETE, param,
> +                     func, sms, NULL) > 0)
>               return;
> +
> +     qmi_param_free(param);
> +
> +done:
> +     return;
> +}

Explicit "return" at the end of void function looks quite strange to
me. goto jumping to it even more so... 
                                                                        Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Attachment: signature.asc
Description: Digital signature

_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to