Etan Cohen [Wed, 6 Aug 2014 00:09:28 +0000 (17:09 -0700)]
Stub base class implementation for some IMS interfaces
OEM implementations should sub-class ImsServiceBase and ImsCallSessionListenerBase.
Allows changing the IImsService and IImsCallSessionListener interfaces without breaking
legacy implementations.
Note: main purpose is to allow staged implementations across different
architectures - not to deploy default/stubbed service implementations.
Shriram Ganesh [Sun, 31 May 2015 17:06:15 +0000 (10:06 -0700)]
MWI,phantom call,Suppl services
1. IMS MWI Feature
- Add new API to update waiting
voice message count, for UI
propagation based on RFC 3842
2. phantom call support
Supplementary services
3. IMS: CallForward Unconditional Timer
- Add new API for callforward
unconditional timer in aidl file.
4. IMS : Incoming Call Barring
- Added new field to display ICB
anonymous number.
- Modified existing API to support
request like registration,activation,
deactivation,erasure,interogation.
5.Unsol supplementary service notification
- send unsol supplementary notification to UI
- add call history info
6. Don't reset mUpdateRequest flag upon
receiving call update notification,
oncallSessionUpdated().
7. Reset mHold variable when hold request failed
reset mHold variable so that ImsCall's state corresponds to the
actual state of the call
CarrierConfigManager can return a null bundle if an error occurred (e.g.
RemoteException) We received dozens of reports indicating that had
occurred at this call site, but they did not include logs explaining why
CarrierConfigManager had returned null. (see bug)
- Don't reset mUpdateRequest flag upon
receiving call update notification,
oncallSessionUpdated().
- Reset mHold variable when hold request failed
- Update Participants information after
processmergecomplete
- Update only active participants in Conference List
- Reset mHold variable when resume request failed
- Fix crash when participant leaves from conference
- IMS conference participant API
Prevent merging conference calls hosted on peer device.
With IMS, the "multiparty" bit on an ImsCall is set to "true" when a call
is merged into a conference. This not only occurs on the device hosting
the conference call, but also on the devices of the callers merged into
the conference.
This CL adds code to ImsCall to handle changes to the multiparty state of
the session. It also includes code to track whether the ImsCall is the
Conference Host. A call is the conference host if the conference was
established on the current device.
Anthony Lee [Thu, 2 Apr 2015 16:40:01 +0000 (09:40 -0700)]
Remove an extraneous check in callSessionMergeFailed().
There is no reason why we cannot continue with merge cleanup
(just to be safe) on a call regardless of if the "i'm in a merge"
flag is set or not. If, for some reason, the call is not
part of a merge, its a NOOP. This handles the case when the
callbacks are out of order and we receive a callSessionMergedFailed()
after a callSessionTerminate() on the merge host. It doesn't really
make sense for the callbacks to come back that way but we should
support it either way. I also cleaned up the processMergeFailed()
function so that it doesn't abort when there is no merge peer.
Now the logic cleans up the merge host anyways and cleans up the
peer only if it exists.
Note that this is only a partial fix for this bug. The other issue
(main issue) that we need to resolve is why the first conference
puts Telecom in a state where the second conference fails.
Rekha Kumar [Wed, 4 Feb 2015 18:47:00 +0000 (10:47 -0800)]
IMS: IMS Registration and handover error codes support
- Add support for propagating IMS Registration error codes and error
messages.
- Propagate the call session handover info to the UI
Change-Id: If2f2008734735f52614bd046fee144843a465ecf
TMo requires WFC and Enhanced 4G LTE mode to be enabled/disabled independently.
IMS used to be stopped when 4G LTE was disabled and started when it was
enabled. Now we need to take WFC into account when making decision about
starting/stopping IMS.
Rekha Kumar [Wed, 4 Feb 2015 18:47:00 +0000 (10:47 -0800)]
IMS: IMS Registration and handover error codes support
- Add support for propagating IMS Registration error codes and error
messages.
- Propagate the call session handover info to the UI
Change-Id: If2f2008734735f52614bd046fee144843a465ecf
TMo requires WFC and Enhanced 4G LTE mode to be enabled/disabled independently.
IMS used to be stopped when 4G LTE was disabled and started when it was
enabled. Now we need to take WFC into account when making decision about
starting/stopping IMS.
Anthony Lee [Thu, 12 Feb 2015 01:04:35 +0000 (17:04 -0800)]
Cleanup of conference code including logging, flags and some workflow.
The main purpose was to simply the logic so that the code is more
explicit about what it is doing. There was also a bug in the hold and
resume flow that was fixed.
Tyler Gunn [Fri, 30 Jan 2015 23:21:11 +0000 (15:21 -0800)]
Fixing conference merge where only one party is added to conference.
- revisit code to trigger processMergeComplete; we used to assume that we
were done merging when the transient session started. We now have to
check on terminate and on hold to see if all the calls have been
Etan Cohen [Mon, 15 Dec 2014 18:10:14 +0000 (10:10 -0800)]
Disable VoLTE if TTY is on and TTY is not supported over VoLTE
- VoLTE is disabled if TTY is turned on and it is not supported
over VoLTE.
- Add API indicating whether VoLTE is enabled due to TTY restrictions.
Uses configuration of VoLTE on TTY supported and current TTY mode.
- Move code changing Settings.Global.ENHANCED_4G_MODE_ENABLED
from MobileNetworkSettings activity.
Andrew Lee [Tue, 9 Dec 2014 22:51:53 +0000 (14:51 -0800)]
Pass Message through sendDtmf.
Do not invoke sendToTarget ourselves. Instead, pass the message
through to the ImsCallSession implementation, and rely on that
to send the message to the target.
Tyler Gunn [Mon, 8 Dec 2014 17:56:17 +0000 (09:56 -0800)]
Fixing disconnect tone heard when merging 3rd participant into conference.
The issue was when we set the merge peer/merge host. We were always
setting the merge peer to the BG call. This is fine when there is no
conference, but when we already have a conference we need to take into
account whether the FG or BG is the conference.
Tyler Gunn [Tue, 2 Dec 2014 17:21:01 +0000 (09:21 -0800)]
Cleanup to remove misused CallGroup concept.
The ImsCall code makes extensive use of a "CallGroup". This CallGroup has
been the source of a number of bugs, since the CallGroup concept does not
match well with how we are performing merges in IMS.
1. Removed Call Group, replacing with a "peer" and "host" references in
the ImsCall.
2. Revisited the merge logic within the context of the peer/host changes.
3. Also, changed log statements to log the ImsCall instead of the session.
This aids debugging by making it more clear what the context of the various
method operations are.
Andrew Lee [Tue, 18 Nov 2014 01:03:02 +0000 (17:03 -0800)]
Track state if ImsCall terminated by merge.
- Save the state if the call when it is merged and there is a
call group of which it is not the owner. We conclude that this
call was merged into the other call group. If the merge fails,
we set this state back to false.
- Delete updateCallGroup, as it is an unused method.
- When a merge occurs, set a call group on the background call if
the referral call's CallGroup is null. Before, when two IMS
connections were first merged into a conference, the call group
was not set on the background call and so pathway through
notifyConferenceSessionTerminated (which checks for mWasMerged)
never occurred.
Anthony Lee [Mon, 3 Nov 2014 23:13:47 +0000 (15:13 -0800)]
Complete implementation of ImsCallSession merge()
This CL implements the rest of the logic around the various callbacks
that are issued from the ImsCallSession to implement the merging of
two calls into a conference.
Tyler Gunn [Tue, 4 Nov 2014 22:51:52 +0000 (14:51 -0800)]
Conference event package performance improvement.
- Instead of sending each participant to the telephony conference
controller, all participants are sent at once. This way the conference
only needs to be recalculated once.
Anthony Lee [Thu, 30 Oct 2014 17:50:10 +0000 (10:50 -0700)]
Implement plumbing for merge() related callback workflows.
Added support for a transient ImsCallSession that could eventually
turn into the underlying ImsCall when it turns into a newly minted
conference call. Also handled the series of callSessionMergeXXX()
series of call to properly set up the pluming for IMS conferences.
Also cleaned up/added some logging.
Lastly, the prototype for onCallMerged() was changed because, at this
level, there is no sensible value that we could return even
if we wanted to. No one uses this newCall parameter anyways.
Tyler Gunn [Tue, 28 Oct 2014 20:52:11 +0000 (13:52 -0700)]
Communicating participant changes to conference controller.
- Add new callback in ImsCall to handle conference event package data
and pass along conference participant state objects to listeners (this
is ultimately bubbled up to the conference controller).
- Changing package from android.telecomm to android.telecom
- Changing package from com.android.telecomm to
com.android.server.telecomm.
- Renaming TelecommManager to TelecomManager.