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