adl_atCmdCreate with multiple tasks - suggestions

Hi, I am executing AT commands from multiple tasks in my OpenAT application (2.52 FXT009). Since these tasks run independently it sometime occurs that two commands are sent before any response is received. This is a problem(In hind sight) as the response is sent to the task with higher priority, causing my command in the lower priority task to never get a response. This is documented in the OpenAT user guide (2.2.2. Multitasking limitations).

My question is, how can I successfully deal with this situation? I can’t use semaphores as that blocks the response from being received. Does anyone have a suggestion I could easily retrofit into my code. I don’t want to have to run timers and wait until a global flag is set (if possible). I wonder if there is a better solution?

Additionally it seems that any AT commands sent thereafter do not get executed at all. e.g. AT+CFUN=0 gets ignored. Is there a way to recover from this, as I can’t even restart the modem.

Any help appreciated!



How about a separate task just to manage AT commands?

adl_errHalt() :question:

Hi Awneil, thanks for the suggestions. adl_errHalt() has solved the restart problem… I will look into the extra task option as well.

I guess I will need to create a queue on the extra task with callbacks to the original code?



That’s the kind of way I was thinking…