1 /*
2  * Copyright (C) 2021 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.internal.telephony.d2d;
18 
19 import android.telecom.Connection;
20 import android.telecom.CallDiagnostics;
21 import android.telephony.TelephonyManager;
22 
23 import com.android.internal.telephony.BiMap;
24 
25 /**
26  * Helper class to map between the message types and values used in {@link Communicator} and those
27  * defined in the public API in {@link CallDiagnostics}.
28  */
29 public class MessageTypeAndValueHelper {
30     // Maps between the local message and value types defined here and those defined in the
31     // DiagnosticCall class as part of the actual API.
32 
33     /**
34      * Convert between the local message type (e.g.
35      * {@link Communicator#MESSAGE_CALL_RADIO_ACCESS_TYPE})
36      * and
37      * the ones referred to in {@link CallDiagnostics}.
38      */
39     public static final BiMap<Integer, Integer> MSG_TYPE_TO_DC_MSG_TYPE = new BiMap<>();
40 
41     /**
42      * Convert between the local RAT type (e.g. {@link Communicator#RADIO_ACCESS_TYPE_IWLAN}) and
43      * the ones
44      * referred to by {@link CallDiagnostics#MESSAGE_CALL_NETWORK_TYPE}.
45      */
46     public static final BiMap<Integer, Integer> RAT_TYPE_TO_DC_NETWORK_TYPE = new BiMap<>();
47 
48     /**
49      * Convert between the local codec (e.g. {@link Communicator#AUDIO_CODEC_AMR_WB}) and the ones
50      * referred to by {@link CallDiagnostics#MESSAGE_CALL_AUDIO_CODEC}.
51      */
52     public static final BiMap<Integer, Integer> CODEC_TO_DC_CODEC = new BiMap<>();
53 
54     /**
55      * Convert between the local battery state (e.g. {@link Communicator#BATTERY_STATE_GOOD}) and
56      * the ones referred to by {@link CallDiagnostics#MESSAGE_DEVICE_BATTERY_STATE}.
57      */
58     public static final BiMap<Integer, Integer> BATTERY_STATE_TO_DC_BATTERY_STATE = new BiMap();
59 
60     /**
61      * Convert between the local battery state (e.g. {@link Communicator#COVERAGE_GOOD}) and the
62      * ones referred to by {@link CallDiagnostics#MESSAGE_DEVICE_NETWORK_COVERAGE}.
63      */
64     public static final BiMap<Integer, Integer> COVERAGE_TO_DC_COVERAGE = new BiMap();
65 
66     static {
MSG_TYPE_TO_DC_MSG_TYPE.put(Communicator.MESSAGE_CALL_RADIO_ACCESS_TYPE, CallDiagnostics.MESSAGE_CALL_NETWORK_TYPE)67         MSG_TYPE_TO_DC_MSG_TYPE.put(Communicator.MESSAGE_CALL_RADIO_ACCESS_TYPE,
68                 CallDiagnostics.MESSAGE_CALL_NETWORK_TYPE);
MSG_TYPE_TO_DC_MSG_TYPE.put(Communicator.MESSAGE_CALL_AUDIO_CODEC, CallDiagnostics.MESSAGE_CALL_AUDIO_CODEC)69         MSG_TYPE_TO_DC_MSG_TYPE.put(Communicator.MESSAGE_CALL_AUDIO_CODEC,
70                 CallDiagnostics.MESSAGE_CALL_AUDIO_CODEC);
MSG_TYPE_TO_DC_MSG_TYPE.put(Communicator.MESSAGE_DEVICE_BATTERY_STATE, CallDiagnostics.MESSAGE_DEVICE_BATTERY_STATE)71         MSG_TYPE_TO_DC_MSG_TYPE.put(Communicator.MESSAGE_DEVICE_BATTERY_STATE,
72                 CallDiagnostics.MESSAGE_DEVICE_BATTERY_STATE);
MSG_TYPE_TO_DC_MSG_TYPE.put(Communicator.MESSAGE_DEVICE_NETWORK_COVERAGE, CallDiagnostics.MESSAGE_DEVICE_NETWORK_COVERAGE)73         MSG_TYPE_TO_DC_MSG_TYPE.put(Communicator.MESSAGE_DEVICE_NETWORK_COVERAGE,
74                 CallDiagnostics.MESSAGE_DEVICE_NETWORK_COVERAGE);
75 
RAT_TYPE_TO_DC_NETWORK_TYPE.put(Communicator.RADIO_ACCESS_TYPE_LTE, TelephonyManager.NETWORK_TYPE_LTE)76         RAT_TYPE_TO_DC_NETWORK_TYPE.put(Communicator.RADIO_ACCESS_TYPE_LTE,
77                 TelephonyManager.NETWORK_TYPE_LTE);
RAT_TYPE_TO_DC_NETWORK_TYPE.put(Communicator.RADIO_ACCESS_TYPE_IWLAN, TelephonyManager.NETWORK_TYPE_IWLAN)78         RAT_TYPE_TO_DC_NETWORK_TYPE.put(Communicator.RADIO_ACCESS_TYPE_IWLAN,
79                 TelephonyManager.NETWORK_TYPE_IWLAN);
RAT_TYPE_TO_DC_NETWORK_TYPE.put(Communicator.RADIO_ACCESS_TYPE_NR, TelephonyManager.NETWORK_TYPE_NR)80         RAT_TYPE_TO_DC_NETWORK_TYPE.put(Communicator.RADIO_ACCESS_TYPE_NR,
81                 TelephonyManager.NETWORK_TYPE_NR);
82 
CODEC_TO_DC_CODEC.put(Communicator.AUDIO_CODEC_EVS, Connection.AUDIO_CODEC_EVS_WB)83         CODEC_TO_DC_CODEC.put(Communicator.AUDIO_CODEC_EVS, Connection.AUDIO_CODEC_EVS_WB);
CODEC_TO_DC_CODEC.put(Communicator.AUDIO_CODEC_AMR_WB, Connection.AUDIO_CODEC_AMR_WB)84         CODEC_TO_DC_CODEC.put(Communicator.AUDIO_CODEC_AMR_WB, Connection.AUDIO_CODEC_AMR_WB);
CODEC_TO_DC_CODEC.put(Communicator.AUDIO_CODEC_AMR_NB, Connection.AUDIO_CODEC_AMR)85         CODEC_TO_DC_CODEC.put(Communicator.AUDIO_CODEC_AMR_NB, Connection.AUDIO_CODEC_AMR);
86 
BATTERY_STATE_TO_DC_BATTERY_STATE.put(Communicator.BATTERY_STATE_LOW, CallDiagnostics.BATTERY_STATE_LOW)87         BATTERY_STATE_TO_DC_BATTERY_STATE.put(Communicator.BATTERY_STATE_LOW,
88                 CallDiagnostics.BATTERY_STATE_LOW);
BATTERY_STATE_TO_DC_BATTERY_STATE.put(Communicator.BATTERY_STATE_GOOD, CallDiagnostics.BATTERY_STATE_GOOD)89         BATTERY_STATE_TO_DC_BATTERY_STATE.put(Communicator.BATTERY_STATE_GOOD,
90                 CallDiagnostics.BATTERY_STATE_GOOD);
BATTERY_STATE_TO_DC_BATTERY_STATE.put(Communicator.BATTERY_STATE_CHARGING, CallDiagnostics.BATTERY_STATE_CHARGING)91         BATTERY_STATE_TO_DC_BATTERY_STATE.put(Communicator.BATTERY_STATE_CHARGING,
92                 CallDiagnostics.BATTERY_STATE_CHARGING);
93 
COVERAGE_TO_DC_COVERAGE.put(Communicator.COVERAGE_POOR, CallDiagnostics.COVERAGE_POOR)94         COVERAGE_TO_DC_COVERAGE.put(Communicator.COVERAGE_POOR, CallDiagnostics.COVERAGE_POOR);
COVERAGE_TO_DC_COVERAGE.put(Communicator.COVERAGE_GOOD, CallDiagnostics.COVERAGE_GOOD)95         COVERAGE_TO_DC_COVERAGE.put(Communicator.COVERAGE_GOOD, CallDiagnostics.COVERAGE_GOOD);
96     }
97 }
98