Intercept incoming voice call during GPRS session


#1

It’s possible to intercept incoming voice call during GPRS sessions ?


#2

Hiya,

Yep, using adl_callxxx() family of functions. Note that the GPRS call is ‘Parked’ when an inbound voice call is happening. It’s my understanding that both a GPRS data session and a voice call CANNOT be operational simultaneously - and the voice call takes priority.

ciao, Dave


#3

Ciao Dave ma sei italiano ? :slight_smile:
Are u italian ?


#4

Hiya,

Nope - but I did spend 8 months working with some Italian Research Scientists…but whatever Italian I could speak has now long gone :wink:

ciao, Dave


#5

So Dave, i have still problems during GPRS sessions when i receive an incoming audio call. I have the following code to handle audio calls:

adl_callSubscribe((adl_callHdlr_f)PhoneCall_EventHandler);
...

void PhoneCall_EventHandler(u16 Event, u32 CallID)
{
	switch(Event)
	{
		case ADL_CALL_EVENT_RING_VOICE:
			Log("s", "RINGING!", "");
			adl_callAnswer();
			CallTypeStatus = CALL_TYPE_OPEN_VOICE;
		break;

		case ADL_CALL_EVENT_NO_CARRIER:
		case ADL_CALL_EVENT_NO_ANSWER:
		case ADL_CALL_EVENT_BUSY:
		case ADL_CALL_EVENT_HANGUP_OK: // ATH from processor
		case ADL_CALL_EVENT_HANGUP_OK_FROM_EXT: // ATH from external
		case ADL_CALL_EVENT_SETUP_ERROR_NO_SIM:
		case ADL_CALL_EVENT_SETUP_ERROR_PIN_NOT_READY:
		case ADL_CALL_EVENT_SETUP_ERROR:
			adl_callHangup();
			CallTypeStatus = CALL_TYPE_CLOSED;
		break;
	}
}

When an active gprs session is not finished and i try to call my device, it is busy… does it must perform an automatic “gprs session parking” procedure to switch to the incoming audio call, or i must to do myself by writing code ? I know that this switching procedure is automatically performed by hardware (like a standard gsm phone does, as iphone, nokia etc…) … i’m doing some mistakes ?

Thanks! Grazie :slight_smile:


#6

I haven’t understand why my app doesn’t perform automatic gprs-session parking when audio call is incoming. Someone can help me ?


#7

There certainly used to be a limitation (bug) in Open-AT such that this didn’t work (properly)

see: https://forum.sierrawireless.com/t/accept-inbound-csd-call-when-in-tcp-session/1426/1

Maybe this still exists?


#8

Maybe it still exists… i’ve tried to send AT+WBHV=7,1 to my FastTrack XTend equipped with Q2686, with no success. The param 7 isn’t supported, according to Wavecom documentation… what can i do to fix this problem ?


#9

Well, if the documentation says that it’s not supported, then it isn’t a problem, is it? It is doing exactly what it says on the tin!


#10

If I recall correctly, you can’t receive a call when you have an active GPRS connection, on ANY device.

The only way for a device to be able to receive calls on GSM/EDGE is to stop the data connection and switch to “call” mode (I can’t seem to remember the correct terms at the moment) and listen for calls, then if there was no call return to data mode.

On a 3G network there can exist both data and calls at the same time.


#11

If I recall correctly, you can’t receive a call when you have an active GPRS connection, on ANY device.

The only way for a device to be able to receive calls on GSM/EDGE is to stop the data connection and switch to “call” mode (I can’t seem to remember the correct terms at the moment) and listen for calls, then if there was no call return to data mode.

No, it depends by device gsm class. Q2686 can’t handle gprs and voice/data call at same time.


#12

If you are using AT commands service to handle data calls - your module can handle both calls and GPRS simultaneously (well it possibly pause GPRS session some transparent way). The problem occurs only when you try to use OpenAT to handle calls and GPRS since it uses the only virtual data port for both GPRS and CSD.


#13

Blackyblack,

Can you explain further how to do this with the AT commands? I can’t get it to work.

Thanks

Andrew


#14

I think it also depends on the capabilities of the specific network?