I am filtering WIND responses to determine SIM state since the SIM events in ADL do not work after you enter the PIN when you receive a SIM_INSERTED event. For some reason the events do not continue to occur (if you swap the SIM for instance or full init is reached). So I check for “+WIND: 1” and then try to call “AT+CPIN?” to check if a PIN is needed. This command is never executed.
The WIND handler is, of course, a subscribed handler to unsolicited response “+WIND”.
I have had this problem before and “solved” it by starting a 18ms timer, exiting the response handler, and in the timer I do adl_atCmdCreate()… This means there are several one-line timer functions all over the place.
Is there a proper way to ensure that you call an AT command, or at least get the benefit of its function? I have come to realise that too much functionality is only available via AT commands and this forces you to have some function bouncing just to get, for instance, the module’s serial number.