[PATCH 2/2] ublox: use ID_MM_PORT_READY_DELAY udev flag for ready delay
Aleksander Morgado
aleksander at aleksander.es
Wed May 2 18:51:58 UTC 2018
Hey,
On Wed, May 2, 2018 at 6:27 PM, Matthew Starr <mstarr at hedonline.com> wrote:
>> -----Original Message-----
>> From: Aleksander Morgado [mailto:aleksander at aleksander.es]
>> Sent: Tuesday, May 01, 2018 11:47 AM
>
>> 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.
>>
>
> If I took this approach, I would still need to read the udev tag. Would you want the functionality of the other patch I sent added to just the u-blox plugin (reading the udev tag), or leave it at a higher level under mm-port-probe?
>
You could just:
mm_kernel_device_get_global_property_as_int(mm_port_probe_peek_port
(probe),ID_MM_UBLOX_PORT_READY_DELAY)
--
Aleksander
https://aleksander.es
More information about the ModemManager-devel
mailing list