To accept inbound CSD call during TCP session I can see the possibilities:
Suspend TCP session and answer call (suggested by Wavecom FAQ for FTP). How to suspend session? Maybe good for voice calls.
Answer call, disconnect TCP socket and subscribe to GSM FCM. Don’t know if this one is supported by CGCLASS=B.
Disconnect TCP socket, answer call and subscribe to GSM FCM.
3 (also 2) does not work 100%, as sometimes wip forgets to close GPRS FCM and does not fire final WIP_BEV_STOPPED for wip_bearerStop() API. Any forced subscribe to GSM FCM sooner or later yields in module reset.
it seems that’s an error in OpenAT — my current workaround is sending an AT+CGATT=0 if the system does not fire final WIP_BEV_STOPPED for wip_bearerStop() API.
this is a nice solution, but here the CGATT command is queued and executed only after the inbound call has timed out. So this call is not answered, which is not perfect, but also not tragic. Still, I am experimenting with the idea to find possible enhancement.
The problem seems to start with the following trace listed during wip_bearerStop() API:
Sorry, the version number was a wrong information from my distributor — the current information from wavecom says that the problem will be solved in firmware version 6.57e which will be release in the first or second week in october (maybe)
I reload this post because I have the same problem, I need to answer to CSD call during a TCP session.
So during ring I close the GPRS bearer. It done it.
I open the CSD flow by adl_fcmSubscribe.
It done it after the bearer was stopped.
I could communicate in CSD, I disconnected CSD.
The GPRS was connected and other time.
But if I asked a new order of closing bearer, it didn’t do it.
I try CGATT but the GPRS never connected after.
Somebody could help me ?
Do you solve this kind of problem ?
Seems to me, Wavecom is heavily working on the problem (July 2008, this thread started end of Jun 2007).
The 6.57f resolves the problem by not fireing the ADL_CALL_EVENT_ANSWER_OK event at all. No CSD connection, problem solved! I don’t dare to try it with flagship R071.
For my customers, when they need CSD, the call has to be answered. After the power up, the first call is allways served. So after the CSD connection (see Ralf’s suggestion on bearer close), while establishing new bearer, I do preventive bearerStop (up to n times), trying to provoke ARM reset, so next call is sure served.