Hi Aleksander,
On Mon, May 18, 2020 at 9:04 AM Aleksander Morgado <aleksan...@aleksander.es> wrote: > > Hey, > > > On Fri, May 15, 2020 at 9:02 PM Aleksander Morgado > > <aleksan...@aleksander.es> wrote: > > > > > > 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. Regards, Giacinto _______________________________________________ ModemManager-devel mailing list ModemManager-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/modemmanager-devel