On Thu, May 21, 2020 at 08:32:07AM -0500, Denis Kenzior wrote:
> Hi Lars,
>
> On 5/26/20 5:16 AM, [email protected] wrote:
> > From: Lars Poeschel <[email protected]>
> >
> > The Quectel EC21 does only work correctly, if the mux channel used for
> > aux is the first mux channel. It does only put it's URC messages in the
> > first mux channel, so this has to be the aux channel in our case.
> > ---
> > plugins/quectel.c | 51 +++++++++++++++++++++++++++++++++++------------
> > 1 file changed, 38 insertions(+), 13 deletions(-)
> >
> > diff --git a/plugins/quectel.c b/plugins/quectel.c
> > index 1d312c45..9ff75516 100644
> > --- a/plugins/quectel.c
> > +++ b/plugins/quectel.c
> > @@ -847,18 +847,38 @@ static void cmux_gatmux(struct ofono_modem *modem)
> > g_at_mux_start(data->mux);
> > - data->modem = create_chat(modem, "Modem: ");
> > - if (!data->modem) {
> > - ofono_error("failed to create modem channel");
> > - close_serial(modem);
> > - return;
> > - }
> > + if (data->model == QUECTEL_EC21) {
> > + data->aux = create_chat(modem, "Aux: ");
> > - data->aux = create_chat(modem, "Aux: ");
> > - if (!data->aux) {
> > - ofono_error("failed to create aux channel");
> > - close_serial(modem);
> > - return;
> > + if (!data->aux) {
> > + ofono_error("failed to create aux channel");
> > + close_serial(modem);
> > + return;
> > + }
> > +
> > + data->modem = create_chat(modem, "Modem: ");
> > +
> > + if (!data->modem) {
> > + ofono_error("failed to create modem channel");
> > + close_serial(modem);
> > + return;
> > + }
> > + } else {
> > + data->modem = create_chat(modem, "Modem: ");
> > +
> > + if (!data->modem) {
> > + ofono_error("failed to create modem channel");
> > + close_serial(modem);
> > + return;
> > + }
> > +
> > + data->aux = create_chat(modem, "Aux: ");
> > +
> > + if (!data->aux) {
> > + ofono_error("failed to create aux channel");
> > + close_serial(modem);
> > + return;
> > + }
> > }
>
> Can we be smarter about this and just store the per-model creation sequence
> as an array or something? Then have a loop that calls create_chat from the
> array info? The proposed copy-pasting approach is not maintainable long
> term.
I will post a follow-up with a proposed solution tomorrow.
> > setup_aux(modem);
> > @@ -951,8 +971,13 @@ static void cmux_ngsm(struct ofono_modem *modem)
> > * the kernel does not yet support mapping the underlying serial device
> > * to its virtual gsm ttys, so hard-code gsmtty1 gsmtty2 for now
> > */
> > - ofono_modem_set_string(modem, "Modem", "/dev/gsmtty1");
> > - ofono_modem_set_string(modem, "Aux", "/dev/gsmtty2");
> > + if (data->model == QUECTEL_EC21) {
> > + ofono_modem_set_string(modem, "Modem", "/dev/gsmtty2");
> > + ofono_modem_set_string(modem, "Aux", "/dev/gsmtty1");
> > + } else {
> > + ofono_modem_set_string(modem, "Modem", "/dev/gsmtty1");
> > + ofono_modem_set_string(modem, "Aux", "/dev/gsmtty2");
> > + }
>
> Doesn't this break the logic in mux_ready_cb, particularly the 'check if the
> last virtual gsm tty's are created'
Well, I guess, yes. I missed indeed missed that. The follow-up will
contain a fix for this as well.
> > /* wait for gsmtty devices to appear */
> > if (!l_timeout_create_ms(100, mux_ready_cb, modem, NULL)) {
> >
>
> Regards,
> -Denis
Thank you for reviewing and applying the other patches! :-)
Lars
_______________________________________________
ofono mailing list -- [email protected]
To unsubscribe send an email to [email protected]