Hi Jarko,

On 03/24/2011 08:46 AM, Jarko Poutiainen wrote:
> ---
>  Makefile.am               |    3 +-
>  drivers/atmodem/atmodem.c |    2 +
>  drivers/atmodem/atmodem.h |    3 +
>  drivers/atmodem/gnss.c    |  282 
> +++++++++++++++++++++++++++++++++++++++++++++
>  4 files changed, 289 insertions(+), 1 deletions(-)
>  create mode 100644 drivers/atmodem/gnss.c

I applied this patch, however:

> +static gboolean gnss_parse_report(GAtResult *result, const char *prefix,
> +                                     const char **xml)
> +{
> +     GAtResultIter iter;
> +
> +     g_at_result_iter_init(&iter, result);
> +
> +     if (!g_at_result_iter_next(&iter, prefix))
> +             return FALSE;
> +
> +     if (!g_at_result_iter_next_unquoted_string(&iter, xml))
> +             return FALSE;
> +
> +     return TRUE;
> +}
> +
> +static void gnss_report(GAtResult *result, gpointer user_data)
> +{
> +     struct ofono_gnss *gnss = user_data;
> +     const char *xml;
> +
> +     DBG("");
> +
> +     xml = NULL;
> +     if (!gnss_parse_report(result, "+CPOSR:", &xml)) {
> +             ofono_error("Unable to parse CPOSR notification");
> +             return;
> +     }
> +
> +     if (xml == NULL) {
> +             ofono_error("Unable to parse CPOSR notification");
> +             return;
> +     }
> +
> +     ofono_gnss_notify_posr_request(gnss, xml);
> +}

The implementation of CPOSR is pretty much unacceptable.  You're relying
on the agent to parse the XML piecemeal.  I don't like this at all.  It
creates unnecessary round-trips over D-Bus for each CPOSR we receive,
not to mention ambiguity in exceptional conditions (e.g. a modem reset
happens during CPOSR emission).

I'd like you to modify the driver to detect the start and end of CPOSR
strings, assemble the XML fragments into a single chunk and only call
ofono_gnss_notify_posr_request once the XML string is assembled.

Regards,
-Denis
_______________________________________________
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono

Reply via email to