Problem noticed in at least OpenAT 3.03/6.51a on Q2406B as well as OpenAT 3.12/6.57 on Q2406B, ADL application is running.
- Send one or more SMS with AT+CMGS=…
- Set up a voice call (ATD… and start a timer… 15-60 seconds.
- If no answer when timer triggers, hang up voice call with ATH
- Send another SMS with AT+CMGS=…
The problem here is at 4… My response handler never receives any > if the above procedure is used. No error message is received either. Delays have been added between receiving OK from ATH and the SMS sending part without any change in how it works.
AT+CSQ shows normal values (XX,0) after the hangup is done, AT+CPAS answer 0, AT+CREG? show that I’m still registered on the network.
If however instead of the timer at 2, I rely on the network timeout (in my case this seems to be 2 minutes), and wait for a NO ANSWER, the SMS sending at 4 works as expected.
How do I safely hang up an unanswered call and make sure I can still send an SMS afterwards?
It is not only AT+CMGS that fails to give any responses after hanging up the call with ATH… Other Short Message commands ALSO fails to give any response at all.
Just a thought: Does it help if you subscribe to the ADL Call Service, and use Call events, rather than wait for the “OK” response…?
The ADL Call Service has not been tried and it would be non-trivial to put it in as it is now… (Not to mention lack of time to actually do it for testing and then for 3-5 software versions).
OK, another thought: How about using +WIND: inducations?
Oh - and another: what if you use a timer to add a delay between seeing the ‘OK’ and sending the SMS?
WIND indications are already enabled.
(Received as responses and not as unsolicited… really annoying)
After ATH and getting OK from that, I do AT+CPAS and get +CPAS: 0 just to check that no call is still going on.
No WIND received after hanging up (not sure if any should come or not as noone answers the call).
12 second delay between hanging up and getting OK, etc. to SMS sending attempt, no change.
Actually, I had a little incorrect description above.
What is used to set up the voice call is AT+VGR=48;+VGT=255;D; and that is where the problem seems to be.
If called with only ATD…; it works fine.
Note to other developers:
Do not set up calls with D in a concatenated command string.