[PATCH 2/2] ublox: use ID_MM_PORT_READY_DELAY udev flag for ready delay

Aleksander Morgado aleksander at aleksander.es
Tue May 1 16:46:36 UTC 2018


On Tue, May 1, 2018 at 6:20 PM, Matthew Starr <mstarr at hedonline.com> wrote:
> Add reading the ID_MM_PORT_READY_DELAY udev flag value and using it as
>
> an init delay when a value is set.
>
>
>
> The 20 second delay for the TOBY-L4 +READY URC has been reimplemented
>
> using the new ready delay timeout value.
>
> ---
>
> plugins/ublox/77-mm-ublox-port-types.rules |  2 ++
>
> plugins/ublox/mm-plugin-ublox.c            | 10 ++++++----
>
> 2 files changed, 8 insertions(+), 4 deletions(-)
>
>
>
> diff --git a/plugins/ublox/77-mm-ublox-port-types.rules
> b/plugins/ublox/77-mm-ublox-port-types.rules
>
> index 31128dac..8873047e 100644
>
> --- a/plugins/ublox/77-mm-ublox-port-types.rules
>
> +++ b/plugins/ublox/77-mm-ublox-port-types.rules
>
> @@ -11,9 +11,11 @@ SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*",
> ENV{.MM_USBIFNUM}="$attr{bInte
>
> #  ttyACM0 (if #2): secondary (ignore)
>
> #  ttyACM1 (if #4): debug port (ignore)
>
> #  ttyACM2 (if #6): primary
>
> +#      Wait up to 20s for the +READY URC
>
> #  ttyACM3 (if #8): AT port for FOTA (ignore)
>
> ATTRS{idVendor}=="1546", ATTRS{idProduct}=="1010", ENV{.MM_USBIFNUM}=="02",
> ENV{ID_MM_PORT_IGNORE}="1"
>
> ATTRS{idVendor}=="1546", ATTRS{idProduct}=="1010", ENV{.MM_USBIFNUM}=="04",
> ENV{ID_MM_PORT_IGNORE}="1"
>
> +ATTRS{idVendor}=="1546", ATTRS{idProduct}=="1010", ENV{.MM_USBIFNUM}=="06",
> ENV{ID_MM_PORT_READY_DELAY}="20"
>
> ATTRS{idVendor}=="1546", ATTRS{idProduct}=="1010", ENV{.MM_USBIFNUM}=="08",
> ENV{ID_MM_PORT_IGNORE}="1"
>
>  # TOBY-R2 port types
>
> diff --git a/plugins/ublox/mm-plugin-ublox.c
> b/plugins/ublox/mm-plugin-ublox.c
>
> index f4553a60..b96ca583 100644
>
> --- a/plugins/ublox/mm-plugin-ublox.c
>
> +++ b/plugins/ublox/mm-plugin-ublox.c
>
> @@ -50,9 +50,6 @@ create_modem (MMPlugin     *self,
>
> /*****************************************************************************/
>
> /* Custom init context */
>
> -/* Wait up to 20s for the +READY URC */
>
> -#define READY_WAIT_TIME_SECS 20
>
> -
>
> typedef struct {
>
>      MMPortSerialAt *port;
>
>      GRegex         *ready_regex;
>
> @@ -147,8 +144,13 @@ wait_for_ready (GTask *task)
>
>                                                     task,
>
>                                                     NULL);
>
> +    mm_dbg ("(%s/%s) waiting %d seconds for init timeout",
>
> +            mm_port_probe_get_port_subsys (probe),
>
> +            mm_port_probe_get_port_name   (probe),
>
> +            mm_port_probe_get_ready_delay (probe));
>
> +
>
>      /* Otherwise, let the custom init timeout in some seconds. */
>
> -    ctx->timeout_id = g_timeout_add_seconds (READY_WAIT_TIME_SECS,
> (GSourceFunc) ready_timeout, task);
>
> +    ctx->timeout_id = g_timeout_add_seconds (mm_port_probe_get_ready_delay
> (probe), (GSourceFunc) ready_timeout, task);
>
> }
>

How about making it so that ublox_custom_init() just returns TRUE in
the GTask right away if the "ready wait time secs" read from the udev
tag is 0? This would get rid of all the custom init logic if there's
no need to wait for the +READY URC.


-- 
Aleksander
https://aleksander.es


More information about the ModemManager-devel mailing list