Not exact URC specification

+2 votes

Hello,

I am currently implementing an RX parser for the Sara u201 module. I am following the UBX-13001820 - R11 document. I am at page 10 of 129, reading section 2.2 "Handle unsolicited result code". There is an example given for how URC can occur:

Following this and the description I have implemented my parser functionality. However, I have noticed that another kind of URC  behavior can occur (diagram modified by me):

What I meant by the above, modified diagram is that the URC result code can not only occur when the line is "idle", but also even when the DTE is waiting for an answer from DCE, before that answer is sent. From the original diagram one could conclude that such behavior is not possible- The URC will always occur after the final result code is sent, but this is not true. Here is an actual example:

ATE           // Sent from DTE

+UMWI: 0,1    // Sent from DCE

+UMWI: 0,2    // Sent from DCE

+UMWI: 0,3    // Sent from DCE

+UMWI: 0,4    // Sent from DCE

ATE           // Sent from DCE

OK            // Sent from DCE

This does always go like this. It happens very rarely, once per couple boots. Most of the time it goes like the datasheet says:

ATE           // Sent from DTE

ATE           // Sent from DCE

OK            // Sent from DCE

+UMWI: 0,1    // Sent from DCE

+UMWI: 0,2    // Sent from DCE

+UMWI: 0,3    // Sent from DCE

+UMWI: 0,4    // Sent from DCE

Is such behavior desirable, or is it a bug? If its a feature, then it makes it a bit hard to parse... I would appreciate all help.

by bremenpl asked Nov 18, 2017
by bremenpl edited Nov 20, 2017
338 views
0 votes
URC, and that is what you are referring to here, is an Unsolicited message that could be produced at any time.  Your application should be able to parse URCs as they come.  Particular URCs shown in your log are specific at power up and if your application is "slow" then URCs will show up before you had a chance to send AT commands.

This is normal operation and parser should be flexible enough to deal with URCs.
by grumpy answered Nov 20, 2017
I understand but thats not exactly what I meant. From the manual it seems that the URC cannot squeeze bewteen you sent command and its function return code. And it seems it can. Is it normal?
Not sure what document you are looking at but based on the pictures you posted you can have URC before Final Result Code.  Seems consistent to me.
The second picture I posted was made by me in paint. I was trying to show that such behaviour is possible. It is not from the datasheet. The 1st one is from the datasheet.
0 votes

Hello,
I encountered the same problem. The documentation ("u-blox Cellular Modules Data and Voice Modules AT Commands Manual") clearly states on pages 29-30:

The command execution starts when the command line is completed by the command line termination character
and the AT interpreter in the module accepts it; the command execution ends when the final result code for the
command is sent out. Inside this period, the module is not allowed to send the not buffered URCs.

And yet, this is what happens (printed by the driver I'm working on):

 pc->modem: AT+USOWR=0,
 pc->modem: 114
 pc->modem: ,"
 pc->modem: [some data]
 pc->modem: "

 modem->pc: RING
 modem->pc: +CLIP: "[my phone number]",129,,,,0
 modem->pc: +USOWR: 0,114
 modem->pc: OK

The "RING" URC together with caller identification appears before AT+USOWR exits with OK (or ERROR).  The same sometimes happens with +UUSOCL and +UUSORD.
Did I forget to apply some setting at the start? Or is the documentation (or ublox's firmware) wrong? This behavior causes great deal of trouble, because properly handling it would complicate the driver software so much that it may not event fit in the dedicated uC, which only has a few KB of ram.

by mnowaczyk answered May 26, 2018
by mnowaczyk edited May 27, 2018
I recall that elsewhere in the description, the exceptions are listed. Any external event like incoming call or incoming SMS generates a URC that is sent regardless of pending response to an AT command.
0 votes

Hello,


I have the same issue with Sara G350: Module sends URC even if AT command execution is in progress. Please see attached picture for details.

According to "u-blox Cellular Modules AT Commands Manual" (Doc ID: UBX-13002752) such behavior looks like not to be possible.


 

If UUSORF is an exception to this rule, could anybody please point to the related document. Also it would be nice to know other exceptions.

Thank you in advance!

by kyrylo.n answered Aug 20, 2018
by kyrylo.n edited Aug 20, 2018
Don't know about documentation but your parser should expect URCs to be produced.  AT interface is not busy after echo to +CSQ is sent and that is why URC is produced.
website banner