Closed Bug 719331 Opened 13 years ago Closed 12 years ago

B2G telephony: call state confused by busy number

Categories

(Core :: DOM: Device Interfaces, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME
blocking-kilimanjaro +
blocking-basecamp +

People

(Reporter: jhammink, Assigned: philikon)

References

Details

Attachments

(2 files)

commit dd4ecd1ebd2ccbfb90cfdcc654addccfce695c7e
Merge: d107247 dfb0d51
from https://github.com/jonallengriffin/B2G
pulled approx 7 p.m. p.s.t 1/18/2012
Samsung Galaxy S2 with working SIM card installed.

To repro:
1.  Launch Dialer
2.  attempt to dial number (I used +1 216 339 32**)
3.  Hit big green "dial" button

**Actual behavior:**  Call forever goes into "calling" mode forever, but the call never actually connects.  Hitting big red "hangup" button doesn't stop the call attempt; you must actually $adb reboot the phone to get out of this state.

Desired behavior:  Call connects; or indicates reasonable failure if cannot connect.  Hitting big red "hangup" terminates the operation.
Version: 11 Branch → Trunk
tried dialing the following combinations, always with the same result:

216 339 3297
+1 216 339 3297
1 216 339 3297
Comment on attachment 589778 [details]
ran $adb logcat while performing the above steps

>I/Gecko   ( 2732): -*- TelephonyWorker component: Received message: {"type":"callStateChange","call":{"callIndex":1,"state":3,"number":"12163393297","name":null}}
>I/Gecko   ( 2732): -*- TelephonyWorker component: handleCallStateChange: {"callIndex":1,"state":3,"number":"12163393297","name":null}

Aha! state=3 is CALL_STATE_BUSY. You were dialing a busy number. This confuses us greatly, apparently:

>I/Gecko   ( 2732): -*- TelephonyWorker component: Received message: {"type":"callDisconnected","call":{"callIndex":1}}
>I/Gecko   ( 2732): -*- TelephonyWorker component: handleCallDisconnected: {"callIndex":1}
>E/GeckoConsole( 2732): [JavaScript Error: "this._activeCall is null" {file: "jar:file:///system/b2g/omni.ja!/components/nsTelephonyWorker.js" line: 235}]

I can reproduce this (boy, finding a number that was genuinely busy these days wasn't easy...) Good catch!
I will take a look at this tomorrow.
Assignee: nobody → philipp
Summary: Dialer appears busted in latest B2G gonk → B2G telephony: call state confused by busy number
We will have to try this out by testing both non-busy and busy numbers once this is working.
I'm not sure my mobile was busy at all the times I called it, though.   The call failed to initiate in all cases.
Blocks: 719950
No longer blocks: 719950
At least now, call can be terminated from B2G dialer while dialing in from same.   Not same hanging-dialer effect as before.
The DATA_CALL_* values you find in [1] (starting from line #122) do not match with the values fond in [2] (starting from line #76). That's the problem.  

[1] http://mxr.mozilla.org/mozilla-central/source/dom/system/b2g/nsIRadioInterfaceLayer.idl
[2] https://github.com/mozilla-b2g/android-hardware-ril/blob/b2g-gingerbread/include/telephony/ril.h
Oops! I didn't see the function convertRILStateChange [1]. Sorry!

[1] http://mxr.mozilla.org/mozilla-central/source/dom/system/b2g/RadioInterfaceLayer.js#67
(In reply to Philipp von Weitershausen [:philikon] from comment #3)

> >I/Gecko   ( 2732): -*- TelephonyWorker component: Received message: {"type":"callStateChange","call":{"callIndex":1,"state":3,"number":"12163393297","name":null}}
> >I/Gecko   ( 2732): -*- TelephonyWorker component: handleCallStateChange: {"callIndex":1,"state":3,"number":"12163393297","name":null}
> 
> Aha! state=3 is CALL_STATE_BUSY. You were dialing a busy number. This
> confuses us greatly, apparently:

At this point the state value corresponds to the value returned by the RIL because the output above is a debug trace executed before the convertRILCallState function (see [1]). So state = 3 corresponds to CALL_STATE_ALERTING.

[1] http://mxr.mozilla.org/mozilla-central/source/dom/system/b2g/RadioInterfaceLayer.js#242
Good catch, José! That said, I can't reproduce this bug under normal conditions; only when the receiving end is busy. Can you confirm that?
Yes, I can. The receiving end is receiving it the call but is on another call and RadioLayerInterface worker does not  receive the RIL.CALL_STATE_ACTIVE (or nsIRadioLayerInterface.CALL_STATE_CONNECTED) state.
John, can you please verify this still occurs in contemporary builds?
blocking-basecamp: --- → +
Keywords: qawanted
blocking-kilimanjaro: --- → +
No longer blocks: b2g-telephony
Needs to be reproduced by calling into a "busy" number - where there's not a voicemail on the receiving end.
(In reply to John Hammink from comment #14)
> Needs to be reproduced by calling into a "busy" number - where there's not a
> voicemail on the receiving end.

Yes. Good old land line should do it. Can you please verify?
It's working!  Had IT set up a dedicated analog line, took it off the hook and called in.  Busy signal comes, call can be terminated normally.
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → WORKSFORME
qawanted left over from previous conversation, removing now.
Keywords: qawanted
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: