• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 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.google.android.car.kitchensink.radio;
18 
19 import android.annotation.Nullable;
20 import android.hardware.radio.RadioAlert;
21 import android.hardware.radio.RadioManager;
22 import android.util.SparseArray;
23 
24 import com.android.car.broadcastradio.support.platform.ProgramSelectorExt;
25 
26 import java.util.Iterator;
27 import java.util.Map;
28 
29 final class RadioTestFragmentUtils {
30 
RadioTestFragmentUtils()31     private RadioTestFragmentUtils() {
32         throw new UnsupportedOperationException("RadioTestFragmentUtils class is noninstantiable");
33     }
34 
getDabChannelName(RadioManager.ProgramInfo info, SparseArray<String> dabFrequencyToLabelMap)35     static String getDabChannelName(RadioManager.ProgramInfo info,
36                                     SparseArray<String> dabFrequencyToLabelMap) {
37         StringBuilder channelTextBuilder = new StringBuilder();
38         channelTextBuilder.append("DAB");
39 
40         int dabFrequency = ProgramSelectorExt.getFrequency(info.getSelector());
41         if (dabFrequency != ProgramSelectorExt.INVALID_IDENTIFIER_VALUE) {
42             channelTextBuilder.append(' ').append(dabFrequencyToLabelMap.get(dabFrequency, ""));
43         }
44 
45         int dabEnsemble = ProgramSelectorExt.getDabEnsemble(info.getSelector());
46         if (dabEnsemble != ProgramSelectorExt.INVALID_IDENTIFIER_VALUE) {
47             channelTextBuilder.append(" Ensemble:0x").append(Integer.toHexString(dabEnsemble));
48         }
49         return channelTextBuilder.toString();
50     }
51 
getDabFrequencyToLabelMap(Map<String, Integer> dabFrequencyTable)52     static SparseArray<String> getDabFrequencyToLabelMap(Map<String, Integer> dabFrequencyTable) {
53         SparseArray<String> dabFrequencyToLabelMap = new SparseArray<>();
54         if (dabFrequencyTable == null) {
55             return dabFrequencyToLabelMap;
56         }
57         Iterator<Map.Entry<String, Integer>> it = dabFrequencyTable.entrySet().iterator();
58         while (it.hasNext()) {
59             Map.Entry<String, Integer> dabFrequencyEntry = it.next();
60             dabFrequencyToLabelMap.put(dabFrequencyEntry.getValue(), dabFrequencyEntry.getKey());
61         }
62         return dabFrequencyToLabelMap;
63     }
64 
65     @Nullable
alertStatusToString(@adioAlert.AlertStatus int status)66     static String alertStatusToString(@RadioAlert.AlertStatus int status) {
67         switch (status) {
68             case RadioAlert.STATUS_ACTUAL:
69                 return "ACTUAL";
70             case RadioAlert.STATUS_EXERCISE:
71                 return "EXERCISE";
72             case RadioAlert.STATUS_TEST:
73                 return "TEST";
74             default:
75                 return null;
76         }
77     }
78 
79 
80     @Nullable
alertMessageTypeToString(@adioAlert.AlertMessageType int messageType)81     static String alertMessageTypeToString(@RadioAlert.AlertMessageType int messageType) {
82         switch (messageType) {
83             case RadioAlert.MESSAGE_TYPE_ALERT:
84                 return "ALERT";
85             case RadioAlert.MESSAGE_TYPE_UPDATE:
86                 return "UPDATE";
87             case RadioAlert.MESSAGE_TYPE_CANCEL:
88                 return "CANCEL";
89             default:
90                 return null;
91         }
92     }
93 
94     @Nullable
alertCategoryToString(@adioAlert.AlertCategory int category)95     static String alertCategoryToString(@RadioAlert.AlertCategory int category) {
96         switch (category) {
97             case RadioAlert.CATEGORY_GEO:
98                 return "GEO";
99             case RadioAlert.CATEGORY_MET:
100                 return "MET";
101             case RadioAlert.CATEGORY_SAFETY:
102                 return "SAFETY";
103             case RadioAlert.CATEGORY_SECURITY:
104                 return "SECURITY";
105             case RadioAlert.CATEGORY_RESCUE:
106                 return "RESCUE";
107             case RadioAlert.CATEGORY_FIRE:
108                 return "FIRE";
109             case RadioAlert.CATEGORY_HEALTH:
110                 return "HEALTH";
111             case RadioAlert.CATEGORY_ENV:
112                 return "ENV";
113             case RadioAlert.CATEGORY_TRANSPORT:
114                 return "TRANSPORT";
115             case RadioAlert.CATEGORY_INFRA:
116                 return "INFRA";
117             case RadioAlert.CATEGORY_CBRNE:
118                 return "CBRNE";
119             case RadioAlert.CATEGORY_OTHER:
120                 return "OTHER";
121             default:
122                 return null;
123         }
124     }
125 
126     @Nullable
alertUrgencyToString(@adioAlert.AlertUrgency int urgency)127     static String alertUrgencyToString(@RadioAlert.AlertUrgency int urgency) {
128         switch (urgency) {
129             case RadioAlert.URGENCY_IMMEDIATE:
130                 return "IMMEDIATE";
131             case RadioAlert.URGENCY_EXPECTED:
132                 return "EXPECTED";
133             case RadioAlert.URGENCY_FUTURE:
134                 return "FUTURE";
135             case RadioAlert.URGENCY_PAST:
136                 return "PAST";
137             case RadioAlert.URGENCY_UNKNOWN:
138                 return "UNKNOWN";
139             default:
140                 return null;
141         }
142     }
143 
144     @Nullable
alertSeverityToString(@adioAlert.AlertSeverity int alertSeverity)145     static String alertSeverityToString(@RadioAlert.AlertSeverity int alertSeverity) {
146         switch (alertSeverity) {
147             case RadioAlert.SEVERITY_EXTREME:
148                 return "EXTREME";
149             case RadioAlert.SEVERITY_SEVERE:
150                 return "SEVERE";
151             case RadioAlert.SEVERITY_MODERATE:
152                 return "MODERATE";
153             case RadioAlert.SEVERITY_MINOR:
154                 return "MINOR";
155             case RadioAlert.SEVERITY_UNKNOWN:
156                 return "UNKNOWN";
157             default:
158                 return null;
159         }
160     }
161 
162     @Nullable
alertCertaintyToString(@adioAlert.AlertCertainty int alertCertainty)163     static String alertCertaintyToString(@RadioAlert.AlertCertainty int alertCertainty) {
164         switch (alertCertainty) {
165             case RadioAlert.CERTAINTY_OBSERVED:
166                 return "OBSERVED";
167             case RadioAlert.CERTAINTY_LIKELY:
168                 return "LIKELY";
169             case RadioAlert.CERTAINTY_POSSIBLE:
170                 return "POSSIBLE";
171             case RadioAlert.CERTAINTY_UNLIKELY:
172                 return "UNLIKELY";
173             case RadioAlert.CERTAINTY_UNKNOWN:
174                 return "UNKNOWN";
175             default:
176                 return null;
177         }
178     }
179 }
180