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