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 19f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport android.os.SystemClock; 20f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 21f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static com.android.internal.telephony.TelephonyProto.ImsCapabilities; 22f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static com.android.internal.telephony.TelephonyProto.ImsConnectionState; 23f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static com.android.internal.telephony.TelephonyProto.RilDataCall; 24f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static com.android.internal.telephony.TelephonyProto.TelephonyEvent; 25f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static com.android.internal.telephony.TelephonyProto.TelephonyEvent.RilDeactivateDataCall; 26f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static com.android.internal.telephony.TelephonyProto.TelephonyEvent.RilSetupDataCall; 27f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static com.android.internal.telephony.TelephonyProto.TelephonyEvent.RilSetupDataCallResponse; 28f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static com.android.internal.telephony.TelephonyProto.TelephonyServiceState; 29f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yuimport static com.android.internal.telephony.TelephonyProto.TelephonySettings; 30f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 31f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yupublic class TelephonyEventBuilder { 32f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu private final TelephonyEvent mEvent = new TelephonyEvent(); 33f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 34f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEvent build() { 35f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return mEvent; 36f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 37f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 38f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder(int phoneId) { 39f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu this(SystemClock.elapsedRealtime(), phoneId); 40f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 41f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 42f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder(long timestamp, int phoneId) { 43f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setTimestampMillis(timestamp); 44f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setPhoneId(phoneId); 45f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 46f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 47f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setSettings(TelephonySettings settings) { 48f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setType(TelephonyEvent.Type.SETTINGS_CHANGED); 49f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.settings = settings; 50f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 51f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 52f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 53f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setServiceState(TelephonyServiceState state) { 54f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setType(TelephonyEvent.Type.RIL_SERVICE_STATE_CHANGED); 55f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.serviceState = state; 56f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 57f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 58f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 59f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setImsConnectionState(ImsConnectionState state) { 60f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setType(TelephonyEvent.Type.IMS_CONNECTION_STATE_CHANGED); 61f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.imsConnectionState = state; 62f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 63f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 64f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 65f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setImsCapabilities(ImsCapabilities capabilities) { 66f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setType(TelephonyEvent.Type.IMS_CAPABILITIES_CHANGED); 67f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.imsCapabilities = capabilities; 68f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 69f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 70f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 71f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setDataStallRecoveryAction(int action) { 72f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setType(TelephonyEvent.Type.DATA_STALL_ACTION); 73f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setDataStallAction(action); 74f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 75f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 76f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 77f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setSetupDataCall(RilSetupDataCall request) { 78f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setType(TelephonyEvent.Type.DATA_CALL_SETUP); 79f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setupDataCall = request; 80f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 81f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 82f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 83f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setSetupDataCallResponse(RilSetupDataCallResponse rsp) { 84f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setType(TelephonyEvent.Type.DATA_CALL_SETUP_RESPONSE); 85f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setupDataCallResponse = rsp; 86f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 87f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 88f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 89f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setDeactivateDataCall(RilDeactivateDataCall request) { 90f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setType(TelephonyEvent.Type.DATA_CALL_DEACTIVATE); 91f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.deactivateDataCall = request; 92f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 93f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 94f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 95f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setDeactivateDataCallResponse(int errno) { 96f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setType(TelephonyEvent.Type.DATA_CALL_DEACTIVATE_RESPONSE); 97f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setError(errno); 98f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 99f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 100f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 101f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setDataCalls(RilDataCall[] dataCalls) { 102f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setType(TelephonyEvent.Type.DATA_CALL_LIST_CHANGED); 103f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.dataCalls = dataCalls; 104f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 105f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 106f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu 107f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu public TelephonyEventBuilder setNITZ(long timestamp) { 108f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setType(TelephonyEvent.Type.NITZ_TIME); 109f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu mEvent.setNitzTimestampMillis(timestamp); 110f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu return this; 111f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu } 112f2d0fa64860a12423fb8709766d6af90fba5e6cfJack Yu} 113