The change fixes the issue that dialing *86 during the call, the dialing voicemail
screen is not shown, instead it shows feature code screen.
For CDMA, when flash is sent to the network, there is no response from the
network to indicate if the feature code is completed or not. This is different
from MMI code in GSM network. So it's confusing to show any UI to indicate MMI
(feature code) for CDMA.
The change is to remove the feature code handling in CDMAPone, and handle the
feature code dialing the same way as the 3 way call dialing. Basically, when
feature code is dialed, the dialing screen will be shown.
Certain carrier websites allow sending SMS to phones on their network. They allow filling
out a "Reply to Address" which can be a phone number. The website may send that message to
the device as an SMS-to-email, but the "From" address will be an SMS short code and not a
valid email address. When the user replies to this message, the response is directed to the
short code and not delivered correctly.
In extractEmailAddressFromMessageBody(), currently it checks if the sender is a shortcode
and an email address is present as the first word in the message body. If so, it replaces
the email address as the sender replacing the short code.
The fix to support the above case is remove the email address check and treat the first word
as FROM address regardless of what the user types.
Change-Id: Ifd39a39b352f204024c76fde293164dcd2b0896b
AccountManagerService.SimWatcher was checking if storedImsi = "initial"
instead of null as an initial condition. Also, on NV-only CDMA devices
we were only sending SIM_STATE_CHANGED notifications when the radio
powered down, which meant storedImsi was only initialized if the radio
powered down.
Expose the presence/absence of IccCards in the system.
This is needed to fix bug 2033811 which needs to show
some SIM menus in the Mms app and Contact apps only if
there is a SIM and on CDMA there is no sims yet.
The current implementation assumes CDMA never has an
IccCard this is true at the moment but needs to change.
Change-Id: I4167368e364623ea68e9b2778556e6d730b1e715
Always process class 0 and other unstored SMS (eg, MWI). We were
rejecting all SMS messages in storage full situations, but certain
messages do not require storage.
Also, notify apps when the framework rejects MT SMS, with new
SMS_REJECTED_ACTION intent.
b/2066775
b/2015906
Previously pdu creation was haphazardly done sometimes by the app and
sometimes centrally by the phone process -- specifically the phone
process did creation for multipart texts. This change gets rid of the
previous IPC interface for sending raw pdus to SMSDispatch in the
phone process, and instead makes everything work like multipart
messages worked before, namely the structured data is passed and pdu
encoding done centrally.
The motivation for this was the need to ensure that CDMA message id
numbers were strictly monotonic, including across reboots, which
necessitated central state in the form of a system property, which
could in turn only be modified by the phone process.
Hence, this (in part) addresses issue: http://buganizer/issue?id=2075760
Change-Id: I94ca207b6e657c465e8472534704db8646ee277c
We need to leave the phone in a connectable state so that it connects whenever it's able
(reception or just timing). If we mark it disabled on failure it wont try again. The retry
comes from the phone layer, not from ConnectivityService.
Also Fix the Phone layer so it retries even if it disconnected by request (DATA_DISABLED).
This was a bug from long ago that didn't become visible until recently with fast wifi and slow
mobile teardown.
Change-Id: I04bf39fba0cb578c87d5fc6ea5d220820ff9f364
After sending 100 messages, SMSDispatcher always displays dialog to user to
confirm the sending. If the user sends messages too fast then there will be more
than one dialogs waiting for the response, but SMSDisptcher can only handle one.
The phone only rang once on rings that did't loop. In the GSM phones
the vendor ril sends a RIL_UNSOL_CALL_RING event to cause the phone
to properly play non-looping ring tones. To reproduce select a non-looping
ring tone such as "Digital Phone" and call it from another phone, the
phone will only ring once.
Three solutions were discussed:
*) Have all ring tones loop; rejected because to more space would be taken
by the silence.
*) Require all vendor RIL's to send RIL_UNSOL_CALL_RING; rejected because
it is inefficient to send a notification from the bottom of the stack.
*) Modify the PhoneApp or the audio layer; rejected because it would be
to big of change.
*) Modify the framework; this is the solution accepted.
The framework was modified to use two now properties to control the
call ring notification.
ro.telephony.multiple_call_ring: a boolean that if true the vendor ril
is assumed to send multiple RIL_UNSOL_CALL_RING messages. If false
only one is assumed and the framework will generate additional events.
(The default if absent is true).
ro.telephony.call_ring_delay: the delay in milli-seconds between
the generated events. (default if absent is 3000)
To minimize code duplication this change does some reorganization
of the PhoneBase class hierarchy and PhoneBase becomes a handler
and implements a default handleMessage method handles events associated
with call ring notification. This handler is overridden by derived
classes, CDMAPhone and GSMPhone which will pass unknown events
to PhoneBase.handleMessage and thus handle call notification for any
derived class.
Change-Id: I5b147b2b69b647d9987052f16ada41c9b66e4bf1
Replace a table of objects that was created at boot
in a costly manner, with a pre-generated table of
more densely formatted numerical data.
Based on data from runhat on the phone process,
this looks to shrink the memory footprint from about
16kB to less then 2kB.
Addresses http://buganizer/issue?id=874072
Change-Id: I5a7b9d7de4c9b9a0360e8370252582969fbd8d4f
Another way to fix this problem. Notice the failures of dataSetup and mark the requesting
apn as unenabled so future attempts can be made.
bug: 2069221
Fixes a problem where mms apn was on when we lost the network (airplane mode) but mms was
off when airplane mode was turned off so it kept thinking we didn't have access and
future mms always failed.
bug: 2075145
HSDPA: High-Speed Downlink Packet Access
HSUPA: High-Speend Uplink Packet Access
HSPA: High-Speed Packet Access
Add support for HSDPA/HSUPA/HSPA:
1) extend TelephonyManager.NETWORK_TYPE for HSDPA/HSUPA/HSPA
2) extend ServiceState.RADIO_TECHNOLOGY for HSDPA/HSUPA/HSPA
3) set radioTechnology into ServiceState in GsmServiceStateTracker
4) change the implementation of TelephonyManager.getNetworkType to
solve the competition timing issue between the time of setting
system property and the time of receiving notification through
PhoneStateListener
4.1) add a getNetworkType interface in ITelephony.aidl
5) add icons resources for HSDPA/HSUPA/HSPA
6) make use of HSDPA/HSUPA/HSPA icons in StatusBarPolicy
This patch includes the plus code conversion clean up.
1. change the plus code conversion based on the current and default
number systems retrieved from MCC.
2. for format such as +NANP, replace the '+' with the current IDP (011).
3. comments changes.
Issue to be addressed:
In radioRestart() method in CdmaDataConnectionTracker, if the radio is
restarted right after cleaning up connection, it is possible that the
connection setup request triggered by radio-on may happen before the
connection cleanup has been completed so that the connection may not
be set up correctly after the radio is restarted. The end result could
be that the phone lost the data capability.
The patch includes the following changes:
1) Add EVENT_RESTART_RADIO in DataConnectionTracker.
2) In CdmaDataConnectionTracker, method restartRadio(), send a message
delayed by 20s, the purpose of which is to wait for connection cleanup
to be completed, then to restart radio.
3) In CdmaDataConnectionTracker, method trySetupData(), don't try to setup
data if there is pending message to restart radio.
Addtional notes:
A system property is not used to config the delayed timer because we
think this fix is to address the unusual error case and waiting for
long time should not impact user experience much. 12s is the longest
time to complete the data cleanup as we have seen so far, so we are
using a 20s timer.
Send a flash command to CDMA network for putting the other party on hold.
For CDMA networks which do not support this the user would just hear a beep
from the network.
For CDMA networks which do support this, it will put the other party on hold.
Fix some race conditions (check isTeardownRequested).
Fix the passing of mInterfaceName to subtypes (mms, etc).
Fix the generation of CONNECTED message to already active subtypes.
Fix the enabling of Data in DataConnectionTracker.
bug: 2065037
Based on the VZW requirement, phone should be still in ECM mode in 2nd emergency call.
but in the current phone call, if a 2nd emergency call is originated, ECM mode will exit.
For fixing this problem, the coding design is as below:
1. In framework, canceling the first ECM timer immediately upon the origination of the
2nd E911 call, and restarting a new timer when the 2nd E911 ends.
2. Framework needs to syncronize the timer with phone app by sending notification to phone app to
inform timer is canceled or re-started, since phone app needs to show how much ECM time left
on the status bar.
3. In phone app's emergency callback mode service, the timer in this service will be canceled
when it receives the timer cancel notification from framework; the timer will be restarted
once it receives timer restart notification from framework.
Issues to be addressed:
The method setPowerStateToDesired() in CdmaServiceStateTracker class sends
a msg to CdmaDataConnectionTracker class to deactive data call, and then starts
a loop which calls SystemClock.sleep() to wait for several seconds.The purpose
of this is to wait for data-disconnection before sending RADIO_POWER off request.
However, the CdmaServiceStateTracker and CdmaDataConnectionTracker are running in
the same process so that the CdmaDataConnectionTracker is not able to process the
message to deactive data before the loop ends.
The patch includes the following changes:
1) In setPowerStateToDesired() in CdmaServiceStateTracker, replace implementation
of loop-delay by sending a delayed msg to set RADIO_POWER off.
2) In CdmaDataConnectionTracker, when getting EVENT_DISCONNECT_DONE, call a new
method in CdmaServiceStateTracker to process pending request to turn RADIO_POWER
off.
to retry a connection and possibly reconnect after a temporary data loss.
The root cause appears to be because DEACTIVATE and POWER_RADIO_OFF are
sent back to back and POWER_RADIO_OFF completes before DEACTIVATE.
When this happens CdmaDataConnectionTracker won't attempt to reestablish
a data connection until a voice call terminates.
At this time it appears the better solution is have CdmaDataConnectionTracker
wait for DEACTIVATE to complete before issuing POWER_RADIO_OFF, this fix
will be implemented in the near future.
and when data roaming is enabled reset the retry manager.
This change also refactors mRetryMgr to DataConnectionTracker
removing it from Cdma and Gsm data connection trackers child classes.
Setting max_retires to infinite sets mRetryForever to true and therefore
isRetryNeeded will always be true. This is better than an alternative
which is to set max_retires to a large value such as 2147483647.