Closed Bug 784220 Opened 12 years ago Closed 12 years ago

B2G telephony: expose call waiting status

Categories

(Core :: DOM: Device Interfaces, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla18
blocking-basecamp +

People

(Reporter: caseyyee.ca, Assigned: hsinyi)

References

Details

(Keywords: feature, Whiteboard: [LOE:S] [WebAPI:P0])

Attachments

(1 file, 4 obsolete files)

The ability to retrieve Call Waiting status (whether on/off)
The ability to set Call Waiting on/off.

Incoming call behavior:
Call Waiting Toggled On - User will be able to accept incoming calls while on another active call.

Call Waiting Toggled Off - Incoming calls will return busy signal while on another active call.

It is proposed that we will add the toggle to the Settings -> Cellular & Data.

Github issue: https://github.com/mozilla-b2g/gaia/issues/3227
Assignee: nobody → htsai
Summary: Call waiting on/off toggle → B2G telephony: expose call waiting status
Attached patch Patch (obsolete) — Splinter Review
Expose call waiting status & control call waiting status via Settings API
(In reply to Hsin-Yi Tsai [:hsinyi] from comment #1)
> Created attachment 654153 [details] [diff] [review]
> Patch
> 
> Expose call waiting status & control call waiting status via Settings API

Changes to gaia/build/settings.js
https://github.com/hsinyi/gaia/commit/e85efbd787d38f5eed08d4f97670f1f2b750e705
Attachment #654153 - Flags: review?(philipp)
The original gaia issue was marked as blocking-basecamp+.
blocking-basecamp: --- → ?
Comment on attachment 654153 [details] [diff] [review]
Patch

Obsolete this because there's rilrequest error when I tested in Brazil.
Attachment #654153 - Attachment is obsolete: true
Attachment #654153 - Flags: review?(philipp)
blocking-basecamp: ? → +
Attached patch Patch (v2) (obsolete) — Splinter Review
expose call waiting status & configure it by settings service
Attachment #656459 - Flags: review?(philipp)
Comment on attachment 656459 [details] [diff] [review]
Patch (v2)

Review of attachment 656459 [details] [diff] [review]:
-----------------------------------------------------------------

Looks good. Comments below (and also discussed vis-a-vis)

::: dom/system/gonk/RadioInterfaceLayer.js
@@ +690,5 @@
> +      return;
> +    }
> +
> +    this.callWaitingStatus = newStatus;
> +    this._ensureCallWaitingStatus();

This can send us into a loop of RIL parcels trying to set the status in vain. If the network and our setting don't agree after trying to set the status, let's change the setting.

::: dom/system/gonk/nsIRadioInterfaceLayer.idl
@@ +254,5 @@
>  
>    readonly attribute nsIRilContext rilContext;
>  
> +  attribute bool callWaitingEnabled;
> +

I don't think we need this here, just listening to the Settings change is enough.
Attachment #656459 - Flags: review?(philipp) → feedback+
Attached patch Patch (v3) (obsolete) — Splinter Review
Comment 6 addressed.
Attachment #656459 - Attachment is obsolete: true
Control call waiting status by settings API.

Add a new setting "ril.callwaiting.enabled" 
https://github.com/hsinyi/gaia/commit/f88dc4e3f1fe46fc1bbc22fa070a84b1d30f4765
Attachment #657347 - Attachment is obsolete: true
Depends on: 788076
Comment on attachment 658429 [details] [diff] [review]
Patch (v4): get/set ril.callwaiting.enabled

Comment 6 addressed:
1) remove attribute callWaitingEnabled in .idl
2) reset 'ril.callwaiting.enabled' when RIL reports error

Thanks!
Attachment #658429 - Flags: review?(philipp)
Whiteboard: [LOE:S]
Whiteboard: [LOE:S] → [LOE:S] [WebAPI:P0]
Component: General → DOM: Device Interfaces
OS: Mac OS X → Gonk
Product: Boot2Gecko → Core
Hardware: x86 → ARM
Comment on attachment 658429 [details] [diff] [review]
Patch (v4): get/set ril.callwaiting.enabled

Review of attachment 658429 [details] [diff] [review]:
-----------------------------------------------------------------

::: dom/system/gonk/ril_worker.js
@@ +3634,5 @@
>  RIL[REQUEST_SET_CALL_FORWARD] = null;
>  RIL[REQUEST_QUERY_CALL_WAITING] = null;
> +RIL[REQUEST_SET_CALL_WAITING] = function REQUEST_SET_CALL_WAITING(length, options) {
> +  options.success = options.rilRequestError == 0 ? true : false;
> +  options.rilMessageType = "callwaitingstatuschange";

You don't necessarily have to change `rilMessageType`. Just use

  switch "setCallWaiting":

in RadioInterfaceLayer. r=me with that.
Attachment #658429 - Flags: review?(philipp) → review+
(In reply to Philipp von Weitershausen [:philikon] from comment #10)
> You don't necessarily have to change `rilMessageType`. Just use
> 
>   switch "setCallWaiting":

I meant s/case/switch of course :)
(In reply to Philipp von Weitershausen [:philikon] from comment #11)
> (In reply to Philipp von Weitershausen [:philikon] from comment #10)
> > You don't necessarily have to change `rilMessageType`. Just use
> > 
> >   switch "setCallWaiting":
> 
> I meant s/case/switch of course :)
Ha, I got it!
Comment 10 addressed. r=philikon
Attachment #658429 - Attachment is obsolete: true
Keywords: feature
https://hg.mozilla.org/mozilla-central/rev/3c1d23fe3275
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: