Cinterion radio bands
Aleksander Morgado
aleksander at aleksander.es
Mon May 18 11:11:14 UTC 2020
Hey,
> > > > > > > I am trying to update the code for the Radio/Bands of Cinterion
> > > > > > > Today in the code there is a parser for this format (only for the test part):
> > > > > > > AT^SCFG=?
> > > > > > > ^SCFG: "Radio/Band",("1-479","0-1")
> > > > > > >
> > > > > > > the PLS62 reports:
> > > > > > > under GSM charset:
> > > > > > > AT^SCFG=?
> > > > > > > ^SCFG: "Radio/Band/2G",("0x00000004"-"0x00000074")
> > > > > > > ^SCFG: "Radio/Band/3G",("0x00000001"-"0x0004019B")
> > > > > > > ^SCFG: "Radio/Band/4G",("0x00000001"-"0x080E08DF")
> > > > > > > and under UCS2 charset:
> > > > > > > AT^SCFG=?
> > > > > > > ^SCFG: "Radio/Band/2G",("0030007800300030003000300030003000300034"-"0030007800300030003000300030003000370034")
> > > > > > > ^SCFG: "Radio/Band/3G",("0030007800300030003000300030003000300031"-"0030007800300030003000340030003100390042")
> > > > > > > ^SCFG: "Radio/Band/4G",("0030007800300030003000300030003000300031"-"0030007800300038003000450030003800440046")
> > > > > >
> > > > > > > To determine the charset, I use some heuristics on string length and
> > > > > > > prefix (0x aka 00300078). Note also that a model returns lowercase
> > > > > > > hexa while another uppercase...
> > > > > >
> > > > > > Isn't mm_broadband_modem_get_current_charset () not returning the
> > > > > > correct thing? I would definitely avoid doing heuristics to detect
> > > > > > charset if possible.
> > > > >
> > > > Is there not a CSCS=? check during initialization, plus a CSCS=X set
> > > > command after that? I believe that ModemManager tries to set the
> > > > "best" charset of the ones available. Do you have a full debug log to
> > > > check how that is happening?
> > > >
> > > > > The only time it is called is after setting it, and it looks like it
> > > > > requires a dbus input, and therefore can only happen after the modem
> > > > > is detected.
> > > >
> > > > No no, there is no charset setting based on DBus calls. It's done during init.
> > > >
> > > > > Unfortunately the call above happens during the modem detection phase.
> > > > >
> > > > > one fix could be sending the line
> > > > > AT+CSCS="GSM"
> > > > > in the initialization, along with other test commands like AT*CNTI=2?
> > > > >
> > >
> > > I have checked the code, and the charset detection&set is part of the
> > > enable state machine, while the radio/band detection is part of the
> > > modem discovery state machine in :src/mm-iface-modem.c:
> > >
> > > typedef enum {
> > > ...
> > > ENABLING_STEP_SUPPORTED_CHARSETS,
> > > ENABLING_STEP_CHARSET,
> > > ...
> > > } EnablingStep;
> > >
> > > typedef enum {
> > > ...
> > > INITIALIZATION_STEP_SUPPORTED_BANDS,
> > > ...
> > > INITIALIZATION_STEP_CURRENT_BANDS,
> > > ...
> > > } InitializationStep;
> > >
> > > It is possible that other initialization steps require the right
> > > charset. Wouldn't be good to move the charset settings among these
> > > steps?
> > > After all setting the charset is part of setting up the communication
> > > channel, a bit like the baudrate and similar parameters.
> > >
> >
> > That makes sense I think, yes. Would you like to send a patch for that?
> >
>
> Yes, however I fear some regressions. For example, things work in the
> current Cinterion supported/current bands because the charset is
> 'unknown'.
> I would propose to split the supported & detection during the initial
> phase, and the actual setting of the charset where it is.
>
I'm not really sure about that; you actually convinced me when you
said that initializing charset is a bit like initializing the serial
channel :D
Why do you say that things work because the channel is unknown?
--
Aleksander
https://aleksander.es
More information about the ModemManager-devel
mailing list