REPRODUCIBILITY (% or how often): 99%
BUILD ID = OS VERSION (Settings > About product): 4.3.0.12
HARDWARE (XA2, X10, X10 II, …): XA2 Ultra Dual SIM (single SIM card in slot 1, slot 2 is empty, disabled or enabled doesn’t make any difference)
UI LANGUAGE: Polish, English, doesn’t matter
REGRESSION: (compared to previous public release: Yes, No, ?): Don’t know
DESCRIPTION:
When there’s an incoming call and I want to reject it using the “red handset” button/icon of the Phone UI, the UI behaves as if the call got rejected (the window with incoming call information gets closed, there’s a notification shown that the call has ended, and for a short while everything looks as if the call was hung up) but the actual connection continues - on the calling phone there’s still the normal waiting signal and after a few seconds the call starts ringing another time and the incoming call UI is shown once again. It takes pressing the “red handset” button/icon once again to reject the call, and only this second time it really gets rejected - the actual connection terminates, but still in a wrong way because upon disconnecting the caller hears “beep beep beep” connection error tone instead of being forwarded to voicemail (or hearing busy tone if there’s no voicemail forwarding enabled) like this SIM card behaves on any other phone and OS (and even this same XA2 Ultra when flashed with Android).
This happens most of the time, like 99% or so.
Only very rarely (like 1% or so) it works as it should, i.e. when I press the “red headset” icon/button to reject the incoming call, it does get rejected and the caller gets forwarded to my voicemail (which is as it should be and as it works on all my other phones).
So it looks like a bug in managing voice calls or handling the modem in SFOS.
The exact same thing happens if I try to reject incoming voice calls programmatically. No matter if I call org.nemomobile.voicecall.VoiceCall
m = QDBusMessage::createMethodCall("org.nemomobile.voicecall",
"/calls/active",
"org.nemomobile.voicecall.VoiceCall",
"hangup");
QDBusConnection::sessionBus().call(m);
or org.ofono.VoiceCallManager
QDBusMessage m = QDBusMessage::createMethodCall("org.ofono",
"/ril_0",
"org.ofono.VoiceCallManager",
"HangupAll");
QDBusConnection::systemBus().call(m);
the result is exactly the same as when rejecting the calls via the UI.
If I try to reject the call from the Terminal using e.g.
dbus-send --system --type=method_call --print-reply --dest=org.ofono /ril_0/voicecall01 org.ofono.VoiceCall.hangup
then when the call starts ringing the second time, I have to use
dbus-send --system --type=method_call --print-reply --dest=org.ofono /ril_0/voicecall02 org.ofono.VoiceCall.hangup
(i.e. voicecall02 instead of voicecall01). So it looks that this “returning call” is seen as a new call.
To make all this even funnier, when the call “comes back” and starts ringing again, two different ringtones play simultaneously (the one that I have configured in SFOS, and the other one is Android’s default ringtone).
So maybe it is the Android support messing with it.
PRECONDITIONS:
STEPS TO REPRODUCE:
- Get an incoming voice call (e.g. dial to yourself from another phone)
- Try to reject the call on your SFOS phone using the call UI’s “red headset” button
- Observe how the call seems to get terminated as the call UI closes and notification that the call has ended (with 0:00:00 connection time) is displayed, but on the calling phone the call is still active and waiting tone is heard, and after a few seconds the same call starts ringing once again on your SFOS phone
- Reject it another time, and only this second time it gets terminated. But instead of being forwarded to voicemail (which is what happens with this SIM card on any other phone and OS I’ve used it with) the caller hears “three beeps” connection error tone.
- Only in some rare cases (like 1%) the call gets rejected on the first attempt and gets forwarded to voicemail (rather than “beep beep beep” connection error signal).
EXPECTED RESULT:
When you press the “red headset” button to reject a call, it should be hung up (and forwarded to voicemail if you have it configured so in call forwarding settings or otherwise the caller should hear busy tone)
ACTUAL RESULT:
The call doesn’t get rejected. Even though the call UI behaves as if the call was terminated, on the calling phone the connection is still active, and in a few seconds it starts ringing again and the call UI is shown again. Only rejecting it another time pressing the “red headset” button really rejects it (but with a connection error tone rather than forwarding the caller to voicemail).
ADDITIONAL INFORMATION:
As I wrote in the description above, the exact same thing happens if I try to hangup a call programmatically, no matter if using org.ofono.VoiceCallManager HangupAll or org.nemomobile.voicecall.VoiceCall hangup method, or terminal dbus call, or whatever else.