Hi Rafael,
>
> - if (modem_dev == NULL || data_dev == NULL)
> + if (modem_dev == NULL || data_dev == NULL || gps_dev == NULL)
> return -EINVAL;
I don't think that failing because the gps device isn't set is such a
good idea. There might be mbm cards without a gps node. Let udev
autodetection handle this part.
>
> data->modem_port = create_port(modem_dev);
> @@ -383,6 +389,20 @@ static int mbm_enable(struct ofono_modem *modem)
> if (getenv("OFONO_AT_DEBUG"))
> g_at_chat_set_debug(data->data_port, mbm_debug, "Data: ");
>
> + data->gps_port = create_port(gps_dev);
> + if (data->gps_port == NULL) {
> + g_at_chat_unref(data->data_port);
> + data->data_port = NULL;
> +
> + g_at_chat_unref(data->modem_port);
> + data->modem_port = NULL;
> +
> + return -EIO;
> + }
So from what I understand we have to send AT*E2GPSNPD to the GPS port in
order to turn it from a regular AT command port into a GPS port. At
this point this port is no longer usable for AT commands. Right?
> +
> + if (getenv("OFONO_AT_DEBUG"))
> + g_at_chat_set_debug(data->gps_port, mbm_debug, "GPS: ");
> +
> g_at_chat_set_disconnect_function(data->data_port,
> mbm_disconnect, modem);
>
> @@ -415,6 +435,9 @@ static void cfun_disable(gboolean ok, GAtResult *result,
> gpointer user_data)
> g_at_chat_unref(data->data_port);
> data->data_port = NULL;
>
> + g_at_chat_unref(data->gps_port);
> + data->gps_port = NULL;
> +
> if (ok)
> ofono_modem_set_powered(modem, FALSE);
> }
> @@ -541,6 +564,9 @@ static void mbm_post_online(struct ofono_modem *modem)
> OFONO_GPRS_CONTEXT_TYPE_MMS);
> ofono_gprs_add_context(data->gprs, data->gc);
> }
> +
> + data->gps = ofono_gps_create(modem, 0,
> + "mbmmodem", data->gps_port);
If my previous comment is correct, then the gps driver should be running
on the dev port, not on the gps port.
> }
>
> static struct ofono_modem_driver mbm_driver = {
Regards,
-Denis
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono