diff options
-rw-r--r-- | cmds/statsd/src/atoms.proto | 52 | ||||
-rw-r--r-- | core/java/android/os/BatteryStats.java | 36 | ||||
-rw-r--r-- | core/java/com/android/internal/os/BatteryStatsImpl.java | 68 | ||||
-rw-r--r-- | core/proto/android/os/batterystats.proto | 32 | ||||
-rw-r--r-- | core/proto/android/telephony/enums.proto | 25 | ||||
-rw-r--r-- | telephony/java/android/telephony/TelephonyManager.java | 45 |
6 files changed, 129 insertions, 129 deletions
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index 31ca13a1585c..f74188f5e69f 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -115,6 +115,8 @@ message Atom { HardwareFailed hardware_failed = 72; PhysicalDropDetected physical_drop_detected = 73; ChargeCyclesReported charge_cycles_reported = 74; + MobileConnectionStateChanged mobile_connection_state_changed = 75; + MobileRadioTechnologyChanged mobile_radio_technology_changed = 76; } // Pulled events will start at field 10000. @@ -911,6 +913,56 @@ message ResourceConfigurationChanged { optional int32 uiMode = 17; } + +/** + * Logs changes in the connection state of the mobile radio. + * + * Logged from: + * frameworks/opt/telephony/src/java/com/android/internal/telephony/dataconnection/DataConnection.java + */ +message MobileConnectionStateChanged { + // States are from the state machine DataConnection.java. + enum State { + UNKNOWN = 0; + // The connection is inactive, or disconnected. + INACTIVE = 1; + // The connection is being activated, or connecting. + ACTIVATING = 2; + // The connection is active, or connected. + ACTIVE = 3; + // The connection is disconnecting. + DISCONNECTING = 4; + // The connection is disconnecting after creating a connection. + DISCONNECTION_ERROR_CREATING_CONNECTION = 5; + } + optional State state = 1; + // For multi-sim phones, this distinguishes between the sim cards. + optional int32 sim_slot_index = 2; + // Used to identify the connection. Starts at 0 and increments by 1 for + // every new network created. Resets whenever the device reboots. + optional int32 data_connection_id = 3; + // A bitmask for the capabilities of this connection. + // Eg. DEFAULT (internet), MMS, SUPL, DUN, IMS. + // Default value (if we have no information): 0 + optional int64 capabilities = 4; + // If this connection has internet. + // This just checks if the DEFAULT bit of capabilities is set. + optional bool has_internet = 5; +} + +/** + * Logs changes in mobile radio technology. eg: LTE, EDGE, CDMA. + * + * Logged from: + * frameworks/opt/telephony/src/java/com/android/internal/telephony/ServiceStateTracker.java + */ +message MobileRadioTechnologyChanged { + optional android.telephony.NetworkTypeEnum state = 1; + // For multi-sim phones, this distinguishes between the sim cards. + optional int32 sim_slot_index = 2; +} + + /** * Logs when Bluetooth is enabled and disabled. * diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index 7bc5d5bd33bf..b16e7d7add0d 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -23,6 +23,7 @@ import android.content.pm.ApplicationInfo; import android.server.ServerProtoEnums; import android.service.batterystats.BatteryStatsServiceDumpProto; import android.telephony.SignalStrength; +import android.telephony.TelephonyManager; import android.text.format.DateFormat; import android.util.ArrayMap; import android.util.LongSparseArray; @@ -2270,27 +2271,8 @@ public abstract class BatteryStats implements Parcelable { */ public abstract int getMobileRadioActiveUnknownCount(int which); - public static final int DATA_CONNECTION_NONE = SystemProto.DataConnection.NONE; // 0 - public static final int DATA_CONNECTION_GPRS = SystemProto.DataConnection.GPRS; // 1 - public static final int DATA_CONNECTION_EDGE = SystemProto.DataConnection.EDGE; // 2 - public static final int DATA_CONNECTION_UMTS = SystemProto.DataConnection.UMTS; // 3 - public static final int DATA_CONNECTION_CDMA = SystemProto.DataConnection.CDMA; // 4 - public static final int DATA_CONNECTION_EVDO_0 = SystemProto.DataConnection.EVDO_0; // 5 - public static final int DATA_CONNECTION_EVDO_A = SystemProto.DataConnection.EVDO_A; // 6 - public static final int DATA_CONNECTION_1xRTT = SystemProto.DataConnection.ONE_X_RTT; // 7 - public static final int DATA_CONNECTION_HSDPA = SystemProto.DataConnection.HSDPA; // 8 - public static final int DATA_CONNECTION_HSUPA = SystemProto.DataConnection.HSUPA; // 9 - public static final int DATA_CONNECTION_HSPA = SystemProto.DataConnection.HSPA; // 10 - public static final int DATA_CONNECTION_IDEN = SystemProto.DataConnection.IDEN; // 11 - public static final int DATA_CONNECTION_EVDO_B = SystemProto.DataConnection.EVDO_B; // 12 - public static final int DATA_CONNECTION_LTE = SystemProto.DataConnection.LTE; // 13 - public static final int DATA_CONNECTION_EHRPD = SystemProto.DataConnection.EHRPD; // 14 - public static final int DATA_CONNECTION_HSPAP = SystemProto.DataConnection.HSPAP; // 15 - public static final int DATA_CONNECTION_GSM = SystemProto.DataConnection.GSM; // 16 - public static final int DATA_CONNECTION_TD_SCDMA = SystemProto.DataConnection.TD_SCDMA; // 17 - public static final int DATA_CONNECTION_IWLAN = SystemProto.DataConnection.IWLAN; // 18 - public static final int DATA_CONNECTION_LTE_CA = SystemProto.DataConnection.LTE_CA; // 19 - public static final int DATA_CONNECTION_OTHER = SystemProto.DataConnection.OTHER; // 20 + public static final int DATA_CONNECTION_NONE = 0; + public static final int DATA_CONNECTION_OTHER = TelephonyManager.MAX_NETWORK_TYPE + 1; static final String[] DATA_CONNECTION_NAMES = { "none", "gprs", "edge", "umts", "cdma", "evdo_0", "evdo_A", @@ -7613,8 +7595,18 @@ public abstract class BatteryStats implements Parcelable { // Phone data connection (DATA_CONNECTION_TIME_DATA and DATA_CONNECTION_COUNT_DATA) for (int i = 0; i < NUM_DATA_CONNECTION_TYPES; ++i) { + // Map OTHER to TelephonyManager.NETWORK_TYPE_UNKNOWN and mark NONE as a boolean. + boolean isNone = (i == DATA_CONNECTION_NONE); + int telephonyNetworkType = i; + if (i == DATA_CONNECTION_OTHER) { + telephonyNetworkType = TelephonyManager.NETWORK_TYPE_UNKNOWN; + } final long pdcToken = proto.start(SystemProto.DATA_CONNECTION); - proto.write(SystemProto.DataConnection.NAME, i); + if (isNone) { + proto.write(SystemProto.DataConnection.IS_NONE, isNone); + } else { + proto.write(SystemProto.DataConnection.NAME, telephonyNetworkType); + } dumpTimer(proto, SystemProto.DataConnection.TOTAL, getPhoneDataConnectionTimer(i), rawRealtimeUs, which); proto.end(pdcToken); diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 89f8ae6b01bf..06230c1f8145 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -5352,69 +5352,15 @@ public class BatteryStatsImpl extends BatteryStats { } public void notePhoneDataConnectionStateLocked(int dataType, boolean hasData) { + // BatteryStats uses 0 to represent no network type. + // Telephony does not have a concept of no network type, and uses 0 to represent unknown. + // Unknown is included in DATA_CONNECTION_OTHER. int bin = DATA_CONNECTION_NONE; if (hasData) { - switch (dataType) { - case TelephonyManager.NETWORK_TYPE_EDGE: - bin = DATA_CONNECTION_EDGE; - break; - case TelephonyManager.NETWORK_TYPE_GPRS: - bin = DATA_CONNECTION_GPRS; - break; - case TelephonyManager.NETWORK_TYPE_UMTS: - bin = DATA_CONNECTION_UMTS; - break; - case TelephonyManager.NETWORK_TYPE_CDMA: - bin = DATA_CONNECTION_CDMA; - break; - case TelephonyManager.NETWORK_TYPE_EVDO_0: - bin = DATA_CONNECTION_EVDO_0; - break; - case TelephonyManager.NETWORK_TYPE_EVDO_A: - bin = DATA_CONNECTION_EVDO_A; - break; - case TelephonyManager.NETWORK_TYPE_1xRTT: - bin = DATA_CONNECTION_1xRTT; - break; - case TelephonyManager.NETWORK_TYPE_HSDPA: - bin = DATA_CONNECTION_HSDPA; - break; - case TelephonyManager.NETWORK_TYPE_HSUPA: - bin = DATA_CONNECTION_HSUPA; - break; - case TelephonyManager.NETWORK_TYPE_HSPA: - bin = DATA_CONNECTION_HSPA; - break; - case TelephonyManager.NETWORK_TYPE_IDEN: - bin = DATA_CONNECTION_IDEN; - break; - case TelephonyManager.NETWORK_TYPE_EVDO_B: - bin = DATA_CONNECTION_EVDO_B; - break; - case TelephonyManager.NETWORK_TYPE_LTE: - bin = DATA_CONNECTION_LTE; - break; - case TelephonyManager.NETWORK_TYPE_EHRPD: - bin = DATA_CONNECTION_EHRPD; - break; - case TelephonyManager.NETWORK_TYPE_HSPAP: - bin = DATA_CONNECTION_HSPAP; - break; - case TelephonyManager.NETWORK_TYPE_GSM: - bin = DATA_CONNECTION_GSM; - break; - case TelephonyManager.NETWORK_TYPE_TD_SCDMA: - bin = DATA_CONNECTION_TD_SCDMA; - break; - case TelephonyManager.NETWORK_TYPE_IWLAN: - bin = DATA_CONNECTION_IWLAN; - break; - case TelephonyManager.NETWORK_TYPE_LTE_CA: - bin = DATA_CONNECTION_LTE_CA; - break; - default: - bin = DATA_CONNECTION_OTHER; - break; + if (dataType > 0 && dataType <= TelephonyManager.MAX_NETWORK_TYPE) { + bin = dataType; + } else { + bin = DATA_CONNECTION_OTHER; } } if (DEBUG) Log.i(TAG, "Phone Data Connection -> " + dataType + " = " + hasData); diff --git a/core/proto/android/os/batterystats.proto b/core/proto/android/os/batterystats.proto index f468143256a9..345c8ef18603 100644 --- a/core/proto/android/os/batterystats.proto +++ b/core/proto/android/os/batterystats.proto @@ -208,32 +208,12 @@ message SystemProto { message DataConnection { option (android.msg_privacy).dest = DEST_AUTOMATIC; - - enum Name { - NONE = 0; - GPRS = 1; - EDGE = 2; - UMTS = 3; - CDMA = 4; - EVDO_0 = 5; - EVDO_A = 6; - ONE_X_RTT = 7; // 1xRTT. - HSDPA = 8; - HSUPA = 9; - HSPA = 10; - IDEN = 11; - EVDO_B = 12; - LTE = 13; - EHRPD = 14; - HSPAP = 15; - GSM = 16; - TD_SCDMA = 17; - IWLAN = 18; - LTE_CA = 19; - OTHER = 20; - }; - optional Name name = 1; - optional TimerProto total = 2; + oneof type { + android.telephony.NetworkTypeEnum name = 1; + // If is_none is not set, then the name is a valid network type. + bool is_none = 2; + } + optional TimerProto total = 3; }; repeated DataConnection data_connection = 8; diff --git a/core/proto/android/telephony/enums.proto b/core/proto/android/telephony/enums.proto index 60f8d8d78545..32975a5550f1 100644 --- a/core/proto/android/telephony/enums.proto +++ b/core/proto/android/telephony/enums.proto @@ -28,6 +28,31 @@ enum DataConnectionPowerStateEnum { DATA_CONNECTION_POWER_STATE_UNKNOWN = 2147483647; // Java Integer.MAX_VALUE; } +// Network type enums, primarily used by android/telephony/TelephonyManager.java. +// Do not add negative types. +enum NetworkTypeEnum { + NETWORK_TYPE_UNKNOWN = 0; + NETWORK_TYPE_GPRS = 1; + NETWORK_TYPE_EDGE = 2; + NETWORK_TYPE_UMTS = 3; + NETWORK_TYPE_CDMA = 4; + NETWORK_TYPE_EVDO_0 = 5; + NETWORK_TYPE_EVDO_A = 6; + NETWORK_TYPE_1XRTT = 7; + NETWORK_TYPE_HSDPA = 8; + NETWORK_TYPE_HSUPA = 9; + NETWORK_TYPE_HSPA = 10; + NETWORK_TYPE_IDEN = 11; + NETWORK_TYPE_EVDO_B = 12; + NETWORK_TYPE_LTE = 13; + NETWORK_TYPE_EHRPD = 14; + NETWORK_TYPE_HSPAP = 15; + NETWORK_TYPE_GSM = 16; + NETWORK_TYPE_TD_SCDMA = 17; + NETWORK_TYPE_IWLAN = 18; + NETWORK_TYPE_LTE_CA = 19; +} + // Signal strength levels, primarily used by android/telephony/SignalStrength.java. enum SignalStrengthEnum { SIGNAL_STRENGTH_NONE_OR_UNKNOWN = 0; diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 4a0027b7fd77..7fb71e42012f 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -1865,47 +1865,52 @@ public class TelephonyManager { /* * When adding a network type to the list below, make sure to add the correct icon to * MobileSignalController.mapIconSets(). + * Do not add negative types. */ /** Network type is unknown */ - public static final int NETWORK_TYPE_UNKNOWN = 0; + public static final int NETWORK_TYPE_UNKNOWN = TelephonyProtoEnums.NETWORK_TYPE_UNKNOWN; // = 0. /** Current network is GPRS */ - public static final int NETWORK_TYPE_GPRS = 1; + public static final int NETWORK_TYPE_GPRS = TelephonyProtoEnums.NETWORK_TYPE_GPRS; // = 1. /** Current network is EDGE */ - public static final int NETWORK_TYPE_EDGE = 2; + public static final int NETWORK_TYPE_EDGE = TelephonyProtoEnums.NETWORK_TYPE_EDGE; // = 2. /** Current network is UMTS */ - public static final int NETWORK_TYPE_UMTS = 3; + public static final int NETWORK_TYPE_UMTS = TelephonyProtoEnums.NETWORK_TYPE_UMTS; // = 3. /** Current network is CDMA: Either IS95A or IS95B*/ - public static final int NETWORK_TYPE_CDMA = 4; + public static final int NETWORK_TYPE_CDMA = TelephonyProtoEnums.NETWORK_TYPE_CDMA; // = 4. /** Current network is EVDO revision 0*/ - public static final int NETWORK_TYPE_EVDO_0 = 5; + public static final int NETWORK_TYPE_EVDO_0 = TelephonyProtoEnums.NETWORK_TYPE_EVDO_0; // = 5. /** Current network is EVDO revision A*/ - public static final int NETWORK_TYPE_EVDO_A = 6; + public static final int NETWORK_TYPE_EVDO_A = TelephonyProtoEnums.NETWORK_TYPE_EVDO_A; // = 6. /** Current network is 1xRTT*/ - public static final int NETWORK_TYPE_1xRTT = 7; + public static final int NETWORK_TYPE_1xRTT = TelephonyProtoEnums.NETWORK_TYPE_1XRTT; // = 7. /** Current network is HSDPA */ - public static final int NETWORK_TYPE_HSDPA = 8; + public static final int NETWORK_TYPE_HSDPA = TelephonyProtoEnums.NETWORK_TYPE_HSDPA; // = 8. /** Current network is HSUPA */ - public static final int NETWORK_TYPE_HSUPA = 9; + public static final int NETWORK_TYPE_HSUPA = TelephonyProtoEnums.NETWORK_TYPE_HSUPA; // = 9. /** Current network is HSPA */ - public static final int NETWORK_TYPE_HSPA = 10; + public static final int NETWORK_TYPE_HSPA = TelephonyProtoEnums.NETWORK_TYPE_HSPA; // = 10. /** Current network is iDen */ - public static final int NETWORK_TYPE_IDEN = 11; + public static final int NETWORK_TYPE_IDEN = TelephonyProtoEnums.NETWORK_TYPE_IDEN; // = 11. /** Current network is EVDO revision B*/ - public static final int NETWORK_TYPE_EVDO_B = 12; + public static final int NETWORK_TYPE_EVDO_B = TelephonyProtoEnums.NETWORK_TYPE_EVDO_B; // = 12. /** Current network is LTE */ - public static final int NETWORK_TYPE_LTE = 13; + public static final int NETWORK_TYPE_LTE = TelephonyProtoEnums.NETWORK_TYPE_LTE; // = 13. /** Current network is eHRPD */ - public static final int NETWORK_TYPE_EHRPD = 14; + public static final int NETWORK_TYPE_EHRPD = TelephonyProtoEnums.NETWORK_TYPE_EHRPD; // = 14. /** Current network is HSPA+ */ - public static final int NETWORK_TYPE_HSPAP = 15; + public static final int NETWORK_TYPE_HSPAP = TelephonyProtoEnums.NETWORK_TYPE_HSPAP; // = 15. /** Current network is GSM */ - public static final int NETWORK_TYPE_GSM = 16; + public static final int NETWORK_TYPE_GSM = TelephonyProtoEnums.NETWORK_TYPE_GSM; // = 16. /** Current network is TD_SCDMA */ - public static final int NETWORK_TYPE_TD_SCDMA = 17; + public static final int NETWORK_TYPE_TD_SCDMA = + TelephonyProtoEnums.NETWORK_TYPE_TD_SCDMA; // = 17. /** Current network is IWLAN */ - public static final int NETWORK_TYPE_IWLAN = 18; + public static final int NETWORK_TYPE_IWLAN = TelephonyProtoEnums.NETWORK_TYPE_IWLAN; // = 18. /** Current network is LTE_CA {@hide} */ - public static final int NETWORK_TYPE_LTE_CA = 19; + public static final int NETWORK_TYPE_LTE_CA = TelephonyProtoEnums.NETWORK_TYPE_LTE_CA; // = 19. + + /** Max network type number. Update as new types are added. Don't add negative types. {@hide} */ + public static final int MAX_NETWORK_TYPE = NETWORK_TYPE_LTE_CA; /** * @return the NETWORK_TYPE_xxxx for current data connection. */ |