xref: /aosp_15_r20/hardware/interfaces/broadcastradio/common/utilsaidl/src/UtilsV3.cpp (revision 4d7e907c777eeecc4c5bd7cf640a754fac206ff7)
1*4d7e907cSAndroid Build Coastguard Worker /*
2*4d7e907cSAndroid Build Coastguard Worker  * Copyright (C) 2024 The Android Open Source Project
3*4d7e907cSAndroid Build Coastguard Worker  *
4*4d7e907cSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*4d7e907cSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*4d7e907cSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*4d7e907cSAndroid Build Coastguard Worker  *
8*4d7e907cSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*4d7e907cSAndroid Build Coastguard Worker  *
10*4d7e907cSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*4d7e907cSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*4d7e907cSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4d7e907cSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*4d7e907cSAndroid Build Coastguard Worker  * limitations under the License.
15*4d7e907cSAndroid Build Coastguard Worker  */
16*4d7e907cSAndroid Build Coastguard Worker 
17*4d7e907cSAndroid Build Coastguard Worker #define LOG_TAG "BcRadioAidlDef.utilsV3"
18*4d7e907cSAndroid Build Coastguard Worker 
19*4d7e907cSAndroid Build Coastguard Worker #include "broadcastradio-utils-aidl/Utils.h"
20*4d7e907cSAndroid Build Coastguard Worker 
21*4d7e907cSAndroid Build Coastguard Worker #include <android-base/strings.h>
22*4d7e907cSAndroid Build Coastguard Worker 
23*4d7e907cSAndroid Build Coastguard Worker namespace aidl::android::hardware::broadcastradio {
24*4d7e907cSAndroid Build Coastguard Worker 
25*4d7e907cSAndroid Build Coastguard Worker namespace utils {
26*4d7e907cSAndroid Build Coastguard Worker 
27*4d7e907cSAndroid Build Coastguard Worker namespace {
28*4d7e907cSAndroid Build Coastguard Worker 
29*4d7e907cSAndroid Build Coastguard Worker using ::android::base::EqualsIgnoreCase;
30*4d7e907cSAndroid Build Coastguard Worker using ::std::vector;
31*4d7e907cSAndroid Build Coastguard Worker }  // namespace
32*4d7e907cSAndroid Build Coastguard Worker 
parseAlertStatus(const std::string & s,AlertStatus & out)33*4d7e907cSAndroid Build Coastguard Worker bool parseAlertStatus(const std::string& s, AlertStatus& out) {
34*4d7e907cSAndroid Build Coastguard Worker     if (EqualsIgnoreCase(s, toString(AlertStatus::ACTUAL))) {
35*4d7e907cSAndroid Build Coastguard Worker         out = AlertStatus::ACTUAL;
36*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertStatus::EXERCISE))) {
37*4d7e907cSAndroid Build Coastguard Worker         out = AlertStatus::EXERCISE;
38*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertStatus::TEST))) {
39*4d7e907cSAndroid Build Coastguard Worker         out = AlertStatus::TEST;
40*4d7e907cSAndroid Build Coastguard Worker     } else {
41*4d7e907cSAndroid Build Coastguard Worker         return false;
42*4d7e907cSAndroid Build Coastguard Worker     }
43*4d7e907cSAndroid Build Coastguard Worker     return true;
44*4d7e907cSAndroid Build Coastguard Worker }
45*4d7e907cSAndroid Build Coastguard Worker 
parseAlertMessageType(const std::string & s,AlertMessageType & out)46*4d7e907cSAndroid Build Coastguard Worker bool parseAlertMessageType(const std::string& s, AlertMessageType& out) {
47*4d7e907cSAndroid Build Coastguard Worker     if (EqualsIgnoreCase(s, toString(AlertMessageType::ALERT))) {
48*4d7e907cSAndroid Build Coastguard Worker         out = AlertMessageType::ALERT;
49*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertMessageType::UPDATE))) {
50*4d7e907cSAndroid Build Coastguard Worker         out = AlertMessageType::UPDATE;
51*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertMessageType::CANCEL))) {
52*4d7e907cSAndroid Build Coastguard Worker         out = AlertMessageType::CANCEL;
53*4d7e907cSAndroid Build Coastguard Worker     } else {
54*4d7e907cSAndroid Build Coastguard Worker         return false;
55*4d7e907cSAndroid Build Coastguard Worker     }
56*4d7e907cSAndroid Build Coastguard Worker     return true;
57*4d7e907cSAndroid Build Coastguard Worker }
58*4d7e907cSAndroid Build Coastguard Worker 
parseAlertCategory(const std::string & s,AlertCategory & out)59*4d7e907cSAndroid Build Coastguard Worker bool parseAlertCategory(const std::string& s, AlertCategory& out) {
60*4d7e907cSAndroid Build Coastguard Worker     if (EqualsIgnoreCase(s, toString(AlertCategory::GEO))) {
61*4d7e907cSAndroid Build Coastguard Worker         out = AlertCategory::GEO;
62*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCategory::MET))) {
63*4d7e907cSAndroid Build Coastguard Worker         out = AlertCategory::MET;
64*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCategory::SAFETY))) {
65*4d7e907cSAndroid Build Coastguard Worker         out = AlertCategory::SAFETY;
66*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCategory::SECURITY))) {
67*4d7e907cSAndroid Build Coastguard Worker         out = AlertCategory::SECURITY;
68*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCategory::RESCUE))) {
69*4d7e907cSAndroid Build Coastguard Worker         out = AlertCategory::RESCUE;
70*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCategory::FIRE))) {
71*4d7e907cSAndroid Build Coastguard Worker         out = AlertCategory::FIRE;
72*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCategory::HEALTH))) {
73*4d7e907cSAndroid Build Coastguard Worker         out = AlertCategory::HEALTH;
74*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCategory::ENV))) {
75*4d7e907cSAndroid Build Coastguard Worker         out = AlertCategory::ENV;
76*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCategory::TRANSPORT))) {
77*4d7e907cSAndroid Build Coastguard Worker         out = AlertCategory::TRANSPORT;
78*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCategory::INFRA))) {
79*4d7e907cSAndroid Build Coastguard Worker         out = AlertCategory::INFRA;
80*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCategory::CBRNE))) {
81*4d7e907cSAndroid Build Coastguard Worker         out = AlertCategory::CBRNE;
82*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCategory::OTHER))) {
83*4d7e907cSAndroid Build Coastguard Worker         out = AlertCategory::OTHER;
84*4d7e907cSAndroid Build Coastguard Worker     } else {
85*4d7e907cSAndroid Build Coastguard Worker         return false;
86*4d7e907cSAndroid Build Coastguard Worker     }
87*4d7e907cSAndroid Build Coastguard Worker     return true;
88*4d7e907cSAndroid Build Coastguard Worker }
89*4d7e907cSAndroid Build Coastguard Worker 
parseAlertUrgency(const std::string & s,AlertUrgency & out)90*4d7e907cSAndroid Build Coastguard Worker bool parseAlertUrgency(const std::string& s, AlertUrgency& out) {
91*4d7e907cSAndroid Build Coastguard Worker     if (EqualsIgnoreCase(s, toString(AlertUrgency::IMMEDIATE))) {
92*4d7e907cSAndroid Build Coastguard Worker         out = AlertUrgency::IMMEDIATE;
93*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertUrgency::EXPECTED))) {
94*4d7e907cSAndroid Build Coastguard Worker         out = AlertUrgency::EXPECTED;
95*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertUrgency::FUTURE))) {
96*4d7e907cSAndroid Build Coastguard Worker         out = AlertUrgency::FUTURE;
97*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertUrgency::PAST))) {
98*4d7e907cSAndroid Build Coastguard Worker         out = AlertUrgency::PAST;
99*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertUrgency::UNKNOWN))) {
100*4d7e907cSAndroid Build Coastguard Worker         out = AlertUrgency::UNKNOWN;
101*4d7e907cSAndroid Build Coastguard Worker     } else {
102*4d7e907cSAndroid Build Coastguard Worker         return false;
103*4d7e907cSAndroid Build Coastguard Worker     }
104*4d7e907cSAndroid Build Coastguard Worker     return true;
105*4d7e907cSAndroid Build Coastguard Worker }
106*4d7e907cSAndroid Build Coastguard Worker 
parseAlertSeverity(const std::string & s,AlertSeverity & out)107*4d7e907cSAndroid Build Coastguard Worker bool parseAlertSeverity(const std::string& s, AlertSeverity& out) {
108*4d7e907cSAndroid Build Coastguard Worker     if (EqualsIgnoreCase(s, toString(AlertSeverity::EXTREME))) {
109*4d7e907cSAndroid Build Coastguard Worker         out = AlertSeverity::EXTREME;
110*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertSeverity::SEVERE))) {
111*4d7e907cSAndroid Build Coastguard Worker         out = AlertSeverity::SEVERE;
112*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertSeverity::MODERATE))) {
113*4d7e907cSAndroid Build Coastguard Worker         out = AlertSeverity::MODERATE;
114*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertSeverity::MINOR))) {
115*4d7e907cSAndroid Build Coastguard Worker         out = AlertSeverity::MINOR;
116*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertSeverity::UNKNOWN))) {
117*4d7e907cSAndroid Build Coastguard Worker         out = AlertSeverity::UNKNOWN;
118*4d7e907cSAndroid Build Coastguard Worker     } else {
119*4d7e907cSAndroid Build Coastguard Worker         return false;
120*4d7e907cSAndroid Build Coastguard Worker     }
121*4d7e907cSAndroid Build Coastguard Worker     return true;
122*4d7e907cSAndroid Build Coastguard Worker }
123*4d7e907cSAndroid Build Coastguard Worker 
parseAlertCertainty(const std::string & s,AlertCertainty & out)124*4d7e907cSAndroid Build Coastguard Worker bool parseAlertCertainty(const std::string& s, AlertCertainty& out) {
125*4d7e907cSAndroid Build Coastguard Worker     if (EqualsIgnoreCase(s, toString(AlertCertainty::OBSERVED))) {
126*4d7e907cSAndroid Build Coastguard Worker         out = AlertCertainty::OBSERVED;
127*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCertainty::LIKELY))) {
128*4d7e907cSAndroid Build Coastguard Worker         out = AlertCertainty::LIKELY;
129*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCertainty::POSSIBLE))) {
130*4d7e907cSAndroid Build Coastguard Worker         out = AlertCertainty::POSSIBLE;
131*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCertainty::UNLIKELY))) {
132*4d7e907cSAndroid Build Coastguard Worker         out = AlertCertainty::UNLIKELY;
133*4d7e907cSAndroid Build Coastguard Worker     } else if (EqualsIgnoreCase(s, toString(AlertCertainty::UNKNOWN))) {
134*4d7e907cSAndroid Build Coastguard Worker         out = AlertCertainty::UNKNOWN;
135*4d7e907cSAndroid Build Coastguard Worker     } else {
136*4d7e907cSAndroid Build Coastguard Worker         return false;
137*4d7e907cSAndroid Build Coastguard Worker     }
138*4d7e907cSAndroid Build Coastguard Worker     return true;
139*4d7e907cSAndroid Build Coastguard Worker }
140*4d7e907cSAndroid Build Coastguard Worker 
141*4d7e907cSAndroid Build Coastguard Worker }  // namespace utils
142*4d7e907cSAndroid Build Coastguard Worker }  // namespace aidl::android::hardware::broadcastradio
143