1f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu/* 2f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * Copyright (C) 2016 The Android Open Source Project 3f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * 4f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * Licensed under the Apache License, Version 2.0 (the "License"); 5f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * you may not use this file except in compliance with the License. 6f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * You may obtain a copy of the License at 7f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * 8f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * http://www.apache.org/licenses/LICENSE-2.0 9f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * 10f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * Unless required by applicable law or agreed to in writing, software 11f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * distributed under the License is distributed on an "AS IS" BASIS, 12f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * See the License for the specific language governing permissions and 14f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu * limitations under the License. 15f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu */ 16f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 17f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yupackage com.android.internal.telephony.metrics; 18f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 199460a22f3c1ae70dde80e34557d7011be113b39aTamas Berghammerimport static com.android.internal.telephony.nano.TelephonyProto.ImsCapabilities; 209460a22f3c1ae70dde80e34557d7011be113b39aTamas Berghammerimport static com.android.internal.telephony.nano.TelephonyProto.ImsConnectionState; 219460a22f3c1ae70dde80e34557d7011be113b39aTamas Berghammerimport static com.android.internal.telephony.nano.TelephonyProto.RilDataCall; 229460a22f3c1ae70dde80e34557d7011be113b39aTamas Berghammerimport static com.android.internal.telephony.nano.TelephonyProto.TelephonyEvent; 239460a22f3c1ae70dde80e34557d7011be113b39aTamas Berghammerimport static com.android.internal.telephony.nano.TelephonyProto.TelephonyEvent.ModemRestart; 249460a22f3c1ae70dde80e34557d7011be113b39aTamas Berghammerimport static com.android.internal.telephony.nano.TelephonyProto.TelephonyEvent.RilDeactivateDataCall; 259460a22f3c1ae70dde80e34557d7011be113b39aTamas Berghammerimport static com.android.internal.telephony.nano.TelephonyProto.TelephonyEvent.RilSetupDataCall; 269460a22f3c1ae70dde80e34557d7011be113b39aTamas Berghammerimport static com.android.internal.telephony.nano.TelephonyProto.TelephonyEvent.RilSetupDataCallResponse; 279460a22f3c1ae70dde80e34557d7011be113b39aTamas Berghammerimport static com.android.internal.telephony.nano.TelephonyProto.TelephonyServiceState; 289460a22f3c1ae70dde80e34557d7011be113b39aTamas Berghammerimport static com.android.internal.telephony.nano.TelephonyProto.TelephonySettings; 29f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 301bb5864a6f2047b41da9ba6551ee4acfec4d7dd1Naveen Kallaimport android.os.SystemClock; 311bb5864a6f2047b41da9ba6551ee4acfec4d7dd1Naveen Kalla 32f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yupublic class TelephonyEventBuilder { 33f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu private final TelephonyEvent mEvent = new TelephonyEvent(); 34f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 35f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEvent build() { 36f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return mEvent; 37f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 38f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 39f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder(int phoneId) { 40f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu this(SystemClock.elapsedRealtime(), phoneId); 41f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 42f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 43f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder(long timestamp, int phoneId) { 44da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.timestampMillis = timestamp; 45da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.phoneId = phoneId; 46f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 47f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 48f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setSettings(TelephonySettings settings) { 49da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.type = TelephonyEvent.Type.SETTINGS_CHANGED; 50f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.settings = settings; 51f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 52f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 53f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 54f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setServiceState(TelephonyServiceState state) { 55da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.type = TelephonyEvent.Type.RIL_SERVICE_STATE_CHANGED; 56f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.serviceState = state; 57f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 58f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 59f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 60f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setImsConnectionState(ImsConnectionState state) { 61da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.type = TelephonyEvent.Type.IMS_CONNECTION_STATE_CHANGED; 62f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.imsConnectionState = state; 63f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 64f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 65f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 66f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setImsCapabilities(ImsCapabilities capabilities) { 67da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.type = TelephonyEvent.Type.IMS_CAPABILITIES_CHANGED; 68f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.imsCapabilities = capabilities; 69f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 70f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 71f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 72f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setDataStallRecoveryAction(int action) { 73da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.type = TelephonyEvent.Type.DATA_STALL_ACTION; 74da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.dataStallAction = action; 75f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 76f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 77f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 78f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setSetupDataCall(RilSetupDataCall request) { 79da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.type = TelephonyEvent.Type.DATA_CALL_SETUP; 80f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setupDataCall = request; 81f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 82f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 83f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 84f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setSetupDataCallResponse(RilSetupDataCallResponse rsp) { 85da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.type = TelephonyEvent.Type.DATA_CALL_SETUP_RESPONSE; 86f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setupDataCallResponse = rsp; 87f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 88f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 89f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 90f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setDeactivateDataCall(RilDeactivateDataCall request) { 91da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.type = TelephonyEvent.Type.DATA_CALL_DEACTIVATE; 92f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.deactivateDataCall = request; 93f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 94f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 95f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 96f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setDeactivateDataCallResponse(int errno) { 97da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.type = TelephonyEvent.Type.DATA_CALL_DEACTIVATE_RESPONSE; 98da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.error = errno; 99f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 100f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 101f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 102f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setDataCalls(RilDataCall[] dataCalls) { 103da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.type = TelephonyEvent.Type.DATA_CALL_LIST_CHANGED; 104f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.dataCalls = dataCalls; 105f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 106f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 107f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 108f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setNITZ(long timestamp) { 109da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.type = TelephonyEvent.Type.NITZ_TIME; 110da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.nitzTimestampMillis = timestamp; 111f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 112f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 1131bb5864a6f2047b41da9ba6551ee4acfec4d7dd1Naveen Kalla 1141bb5864a6f2047b41da9ba6551ee4acfec4d7dd1Naveen Kalla public TelephonyEventBuilder setModemRestart(ModemRestart modemRestart) { 115da243aa6e2c4285975feb44524603e8b20093e70Jack Yu mEvent.type = TelephonyEvent.Type.MODEM_RESTART; 1161bb5864a6f2047b41da9ba6551ee4acfec4d7dd1Naveen Kalla mEvent.modemRestart = modemRestart; 1171bb5864a6f2047b41da9ba6551ee4acfec4d7dd1Naveen Kalla return this; 1181bb5864a6f2047b41da9ba6551ee4acfec4d7dd1Naveen Kalla } 119f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu} 120