1 #include <map>
2 
3 #include "android_hardware_automotive_audiocontrol_enums.h"
4 
5 namespace android {
6     namespace hardware {
7         namespace automotive {
8             namespace audiocontrol {
9                 const std::map<std::string, ContentTypeEnum> ContentTypeEnumString {
10                     { "AUDIO_CONTENT_TYPE_UNKNOWN", ContentTypeEnum::AUDIO_CONTENT_TYPE_UNKNOWN },
11                     { "AUDIO_CONTENT_TYPE_SPEECH", ContentTypeEnum::AUDIO_CONTENT_TYPE_SPEECH },
12                     { "AUDIO_CONTENT_TYPE_MUSIC", ContentTypeEnum::AUDIO_CONTENT_TYPE_MUSIC },
13                     { "AUDIO_CONTENT_TYPE_MOVIE", ContentTypeEnum::AUDIO_CONTENT_TYPE_MOVIE },
14                     { "AUDIO_CONTENT_TYPE_SONIFICATION", ContentTypeEnum::AUDIO_CONTENT_TYPE_SONIFICATION },
15                 };
16 
stringToContentTypeEnum(const std::string & value)17                 ContentTypeEnum stringToContentTypeEnum(const std::string& value) {
18                     auto enumValue = ContentTypeEnumString.find(value);
19                     return enumValue != ContentTypeEnumString.end() ? enumValue->second : ContentTypeEnum::UNKNOWN;
20                 }
21 
toString(ContentTypeEnum o)22                 std::string toString(ContentTypeEnum o) {
23                     switch (o) {
24                         case ContentTypeEnum::AUDIO_CONTENT_TYPE_UNKNOWN: return "AUDIO_CONTENT_TYPE_UNKNOWN";
25                         case ContentTypeEnum::AUDIO_CONTENT_TYPE_SPEECH: return "AUDIO_CONTENT_TYPE_SPEECH";
26                         case ContentTypeEnum::AUDIO_CONTENT_TYPE_MUSIC: return "AUDIO_CONTENT_TYPE_MUSIC";
27                         case ContentTypeEnum::AUDIO_CONTENT_TYPE_MOVIE: return "AUDIO_CONTENT_TYPE_MOVIE";
28                         case ContentTypeEnum::AUDIO_CONTENT_TYPE_SONIFICATION: return "AUDIO_CONTENT_TYPE_SONIFICATION";
29                         default: return std::to_string(static_cast<int>(o));
30                     }
31                 }
32 
33                 const std::map<std::string, UsageEnumType> UsageEnumTypeString {
34                     { "AUDIO_USAGE_UNKNOWN", UsageEnumType::AUDIO_USAGE_UNKNOWN },
35                     { "AUDIO_USAGE_MEDIA", UsageEnumType::AUDIO_USAGE_MEDIA },
36                     { "AUDIO_USAGE_VOICE_COMMUNICATION", UsageEnumType::AUDIO_USAGE_VOICE_COMMUNICATION },
37                     { "AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING", UsageEnumType::AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING },
38                     { "AUDIO_USAGE_ALARM", UsageEnumType::AUDIO_USAGE_ALARM },
39                     { "AUDIO_USAGE_NOTIFICATION", UsageEnumType::AUDIO_USAGE_NOTIFICATION },
40                     { "AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE", UsageEnumType::AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE },
41                     { "AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST", UsageEnumType::AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST },
42                     { "AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT", UsageEnumType::AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT },
43                     { "AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED", UsageEnumType::AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED },
44                     { "AUDIO_USAGE_NOTIFICATION_EVENT", UsageEnumType::AUDIO_USAGE_NOTIFICATION_EVENT },
45                     { "AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY", UsageEnumType::AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY },
46                     { "AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE", UsageEnumType::AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE },
47                     { "AUDIO_USAGE_ASSISTANCE_SONIFICATION", UsageEnumType::AUDIO_USAGE_ASSISTANCE_SONIFICATION },
48                     { "AUDIO_USAGE_GAME", UsageEnumType::AUDIO_USAGE_GAME },
49                     { "AUDIO_USAGE_VIRTUAL_SOURCE", UsageEnumType::AUDIO_USAGE_VIRTUAL_SOURCE },
50                     { "AUDIO_USAGE_ASSISTANT", UsageEnumType::AUDIO_USAGE_ASSISTANT },
51                     { "AUDIO_USAGE_CALL_ASSISTANT", UsageEnumType::AUDIO_USAGE_CALL_ASSISTANT },
52                     { "AUDIO_USAGE_EMERGENCY", UsageEnumType::AUDIO_USAGE_EMERGENCY },
53                     { "AUDIO_USAGE_SAFETY", UsageEnumType::AUDIO_USAGE_SAFETY },
54                     { "AUDIO_USAGE_VEHICLE_STATUS", UsageEnumType::AUDIO_USAGE_VEHICLE_STATUS },
55                     { "AUDIO_USAGE_ANNOUNCEMENT", UsageEnumType::AUDIO_USAGE_ANNOUNCEMENT },
56                 };
57 
stringToUsageEnumType(const std::string & value)58                 UsageEnumType stringToUsageEnumType(const std::string& value) {
59                     auto enumValue = UsageEnumTypeString.find(value);
60                     return enumValue != UsageEnumTypeString.end() ? enumValue->second : UsageEnumType::UNKNOWN;
61                 }
62 
toString(UsageEnumType o)63                 std::string toString(UsageEnumType o) {
64                     switch (o) {
65                         case UsageEnumType::AUDIO_USAGE_UNKNOWN: return "AUDIO_USAGE_UNKNOWN";
66                         case UsageEnumType::AUDIO_USAGE_MEDIA: return "AUDIO_USAGE_MEDIA";
67                         case UsageEnumType::AUDIO_USAGE_VOICE_COMMUNICATION: return "AUDIO_USAGE_VOICE_COMMUNICATION";
68                         case UsageEnumType::AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING: return "AUDIO_USAGE_VOICE_COMMUNICATION_SIGNALLING";
69                         case UsageEnumType::AUDIO_USAGE_ALARM: return "AUDIO_USAGE_ALARM";
70                         case UsageEnumType::AUDIO_USAGE_NOTIFICATION: return "AUDIO_USAGE_NOTIFICATION";
71                         case UsageEnumType::AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE: return "AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE";
72                         case UsageEnumType::AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST: return "AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST";
73                         case UsageEnumType::AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT: return "AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT";
74                         case UsageEnumType::AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED: return "AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED";
75                         case UsageEnumType::AUDIO_USAGE_NOTIFICATION_EVENT: return "AUDIO_USAGE_NOTIFICATION_EVENT";
76                         case UsageEnumType::AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY: return "AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY";
77                         case UsageEnumType::AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE: return "AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE";
78                         case UsageEnumType::AUDIO_USAGE_ASSISTANCE_SONIFICATION: return "AUDIO_USAGE_ASSISTANCE_SONIFICATION";
79                         case UsageEnumType::AUDIO_USAGE_GAME: return "AUDIO_USAGE_GAME";
80                         case UsageEnumType::AUDIO_USAGE_VIRTUAL_SOURCE: return "AUDIO_USAGE_VIRTUAL_SOURCE";
81                         case UsageEnumType::AUDIO_USAGE_ASSISTANT: return "AUDIO_USAGE_ASSISTANT";
82                         case UsageEnumType::AUDIO_USAGE_CALL_ASSISTANT: return "AUDIO_USAGE_CALL_ASSISTANT";
83                         case UsageEnumType::AUDIO_USAGE_EMERGENCY: return "AUDIO_USAGE_EMERGENCY";
84                         case UsageEnumType::AUDIO_USAGE_SAFETY: return "AUDIO_USAGE_SAFETY";
85                         case UsageEnumType::AUDIO_USAGE_VEHICLE_STATUS: return "AUDIO_USAGE_VEHICLE_STATUS";
86                         case UsageEnumType::AUDIO_USAGE_ANNOUNCEMENT: return "AUDIO_USAGE_ANNOUNCEMENT";
87                         default: return std::to_string(static_cast<int>(o));
88                     }
89                 }
90 
91                 const std::map<std::string, ActivationType> ActivationTypeString {
92                     { "onBoot", ActivationType::onBoot },
93                     { "onSourceChanged", ActivationType::onSourceChanged },
94                     { "onPlaybackChanged", ActivationType::onPlaybackChanged },
95                 };
96 
stringToActivationType(const std::string & value)97                 ActivationType stringToActivationType(const std::string& value) {
98                     auto enumValue = ActivationTypeString.find(value);
99                     return enumValue != ActivationTypeString.end() ? enumValue->second : ActivationType::UNKNOWN;
100                 }
101 
toString(ActivationType o)102                 std::string toString(ActivationType o) {
103                     switch (o) {
104                         case ActivationType::onBoot: return "onBoot";
105                         case ActivationType::onSourceChanged: return "onSourceChanged";
106                         case ActivationType::onPlaybackChanged: return "onPlaybackChanged";
107                         default: return std::to_string(static_cast<int>(o));
108                     }
109                 }
110 
111                 const std::map<std::string, OutDeviceType> OutDeviceTypeString {
112                     { "AUDIO_DEVICE_OUT_SPEAKER", OutDeviceType::AUDIO_DEVICE_OUT_SPEAKER },
113                     { "AUDIO_DEVICE_OUT_WIRED_HEADSET", OutDeviceType::AUDIO_DEVICE_OUT_WIRED_HEADSET },
114                     { "AUDIO_DEVICE_OUT_WIRED_HEADPHONE", OutDeviceType::AUDIO_DEVICE_OUT_WIRED_HEADPHONE },
115                     { "AUDIO_DEVICE_OUT_BLUETOOTH_A2DP", OutDeviceType::AUDIO_DEVICE_OUT_BLUETOOTH_A2DP },
116                     { "AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES", OutDeviceType::AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES },
117                     { "AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER", OutDeviceType::AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER },
118                     { "AUDIO_DEVICE_OUT_HDMI", OutDeviceType::AUDIO_DEVICE_OUT_HDMI },
119                     { "AUDIO_DEVICE_OUT_HDMI_EARC", OutDeviceType::AUDIO_DEVICE_OUT_HDMI_EARC },
120                     { "AUDIO_DEVICE_OUT_AUX_DIGITAL", OutDeviceType::AUDIO_DEVICE_OUT_AUX_DIGITAL },
121                     { "AUDIO_DEVICE_OUT_USB_ACCESSORY", OutDeviceType::AUDIO_DEVICE_OUT_USB_ACCESSORY },
122                     { "AUDIO_DEVICE_OUT_USB_DEVICE", OutDeviceType::AUDIO_DEVICE_OUT_USB_DEVICE },
123                     { "AUDIO_DEVICE_OUT_LINE", OutDeviceType::AUDIO_DEVICE_OUT_LINE },
124                     { "AUDIO_DEVICE_OUT_HDMI_ARC", OutDeviceType::AUDIO_DEVICE_OUT_HDMI_ARC },
125                     { "AUDIO_DEVICE_OUT_AUX_LINE", OutDeviceType::AUDIO_DEVICE_OUT_AUX_LINE },
126                     { "AUDIO_DEVICE_OUT_SPEAKER_SAFE", OutDeviceType::AUDIO_DEVICE_OUT_SPEAKER_SAFE },
127                     { "AUDIO_DEVICE_OUT_BUS", OutDeviceType::AUDIO_DEVICE_OUT_BUS },
128                     { "AUDIO_DEVICE_OUT_USB_HEADSET", OutDeviceType::AUDIO_DEVICE_OUT_USB_HEADSET },
129                     { "AUDIO_DEVICE_OUT_BLE_HEADSET", OutDeviceType::AUDIO_DEVICE_OUT_BLE_HEADSET },
130                     { "AUDIO_DEVICE_OUT_BLE_SPEAKER", OutDeviceType::AUDIO_DEVICE_OUT_BLE_SPEAKER },
131                     { "AUDIO_DEVICE_OUT_BLE_BROADCAST", OutDeviceType::AUDIO_DEVICE_OUT_BLE_BROADCAST },
132                     { "AUDIO_DEVICE_OUT_DEFAULT", OutDeviceType::AUDIO_DEVICE_OUT_DEFAULT },
133                     { "TYPE_BUILTIN_SPEAKER", OutDeviceType::TYPE_BUILTIN_SPEAKER },
134                     { "TYPE_WIRED_HEADSET", OutDeviceType::TYPE_WIRED_HEADSET },
135                     { "TYPE_WIRED_HEADPHONES", OutDeviceType::TYPE_WIRED_HEADPHONES },
136                     { "TYPE_BLUETOOTH_A2DP", OutDeviceType::TYPE_BLUETOOTH_A2DP },
137                     { "TYPE_HDMI", OutDeviceType::TYPE_HDMI },
138                     { "TYPE_USB_ACCESSORY", OutDeviceType::TYPE_USB_ACCESSORY },
139                     { "TYPE_USB_DEVICE", OutDeviceType::TYPE_USB_DEVICE },
140                     { "TYPE_USB_HEADSET", OutDeviceType::TYPE_USB_HEADSET },
141                     { "TYPE_AUX_LINE", OutDeviceType::TYPE_AUX_LINE },
142                     { "TYPE_BUS", OutDeviceType::TYPE_BUS },
143                     { "TYPE_BLE_HEADSET", OutDeviceType::TYPE_BLE_HEADSET },
144                     { "TYPE_BLE_SPEAKER", OutDeviceType::TYPE_BLE_SPEAKER },
145                     { "TYPE_BLE_BROADCAST", OutDeviceType::TYPE_BLE_BROADCAST },
146                 };
147 
stringToOutDeviceType(const std::string & value)148                 OutDeviceType stringToOutDeviceType(const std::string& value) {
149                     auto enumValue = OutDeviceTypeString.find(value);
150                     return enumValue != OutDeviceTypeString.end() ? enumValue->second : OutDeviceType::UNKNOWN;
151                 }
152 
toString(OutDeviceType o)153                 std::string toString(OutDeviceType o) {
154                     switch (o) {
155                         case OutDeviceType::AUDIO_DEVICE_OUT_SPEAKER: return "AUDIO_DEVICE_OUT_SPEAKER";
156                         case OutDeviceType::AUDIO_DEVICE_OUT_WIRED_HEADSET: return "AUDIO_DEVICE_OUT_WIRED_HEADSET";
157                         case OutDeviceType::AUDIO_DEVICE_OUT_WIRED_HEADPHONE: return "AUDIO_DEVICE_OUT_WIRED_HEADPHONE";
158                         case OutDeviceType::AUDIO_DEVICE_OUT_BLUETOOTH_A2DP: return "AUDIO_DEVICE_OUT_BLUETOOTH_A2DP";
159                         case OutDeviceType::AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES: return "AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES";
160                         case OutDeviceType::AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER: return "AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER";
161                         case OutDeviceType::AUDIO_DEVICE_OUT_HDMI: return "AUDIO_DEVICE_OUT_HDMI";
162                         case OutDeviceType::AUDIO_DEVICE_OUT_HDMI_EARC: return "AUDIO_DEVICE_OUT_HDMI_EARC";
163                         case OutDeviceType::AUDIO_DEVICE_OUT_AUX_DIGITAL: return "AUDIO_DEVICE_OUT_AUX_DIGITAL";
164                         case OutDeviceType::AUDIO_DEVICE_OUT_USB_ACCESSORY: return "AUDIO_DEVICE_OUT_USB_ACCESSORY";
165                         case OutDeviceType::AUDIO_DEVICE_OUT_USB_DEVICE: return "AUDIO_DEVICE_OUT_USB_DEVICE";
166                         case OutDeviceType::AUDIO_DEVICE_OUT_LINE: return "AUDIO_DEVICE_OUT_LINE";
167                         case OutDeviceType::AUDIO_DEVICE_OUT_HDMI_ARC: return "AUDIO_DEVICE_OUT_HDMI_ARC";
168                         case OutDeviceType::AUDIO_DEVICE_OUT_AUX_LINE: return "AUDIO_DEVICE_OUT_AUX_LINE";
169                         case OutDeviceType::AUDIO_DEVICE_OUT_SPEAKER_SAFE: return "AUDIO_DEVICE_OUT_SPEAKER_SAFE";
170                         case OutDeviceType::AUDIO_DEVICE_OUT_BUS: return "AUDIO_DEVICE_OUT_BUS";
171                         case OutDeviceType::AUDIO_DEVICE_OUT_USB_HEADSET: return "AUDIO_DEVICE_OUT_USB_HEADSET";
172                         case OutDeviceType::AUDIO_DEVICE_OUT_BLE_HEADSET: return "AUDIO_DEVICE_OUT_BLE_HEADSET";
173                         case OutDeviceType::AUDIO_DEVICE_OUT_BLE_SPEAKER: return "AUDIO_DEVICE_OUT_BLE_SPEAKER";
174                         case OutDeviceType::AUDIO_DEVICE_OUT_BLE_BROADCAST: return "AUDIO_DEVICE_OUT_BLE_BROADCAST";
175                         case OutDeviceType::AUDIO_DEVICE_OUT_DEFAULT: return "AUDIO_DEVICE_OUT_DEFAULT";
176                         case OutDeviceType::TYPE_BUILTIN_SPEAKER: return "TYPE_BUILTIN_SPEAKER";
177                         case OutDeviceType::TYPE_WIRED_HEADSET: return "TYPE_WIRED_HEADSET";
178                         case OutDeviceType::TYPE_WIRED_HEADPHONES: return "TYPE_WIRED_HEADPHONES";
179                         case OutDeviceType::TYPE_BLUETOOTH_A2DP: return "TYPE_BLUETOOTH_A2DP";
180                         case OutDeviceType::TYPE_HDMI: return "TYPE_HDMI";
181                         case OutDeviceType::TYPE_USB_ACCESSORY: return "TYPE_USB_ACCESSORY";
182                         case OutDeviceType::TYPE_USB_DEVICE: return "TYPE_USB_DEVICE";
183                         case OutDeviceType::TYPE_USB_HEADSET: return "TYPE_USB_HEADSET";
184                         case OutDeviceType::TYPE_AUX_LINE: return "TYPE_AUX_LINE";
185                         case OutDeviceType::TYPE_BUS: return "TYPE_BUS";
186                         case OutDeviceType::TYPE_BLE_HEADSET: return "TYPE_BLE_HEADSET";
187                         case OutDeviceType::TYPE_BLE_SPEAKER: return "TYPE_BLE_SPEAKER";
188                         case OutDeviceType::TYPE_BLE_BROADCAST: return "TYPE_BLE_BROADCAST";
189                         default: return std::to_string(static_cast<int>(o));
190                     }
191                 }
192 
193                 const std::map<std::string, InDeviceType> InDeviceTypeString {
194                     { "AUDIO_DEVICE_IN_COMMUNICATION", InDeviceType::AUDIO_DEVICE_IN_COMMUNICATION },
195                     { "AUDIO_DEVICE_IN_AMBIENT", InDeviceType::AUDIO_DEVICE_IN_AMBIENT },
196                     { "AUDIO_DEVICE_IN_BUILTIN_MIC", InDeviceType::AUDIO_DEVICE_IN_BUILTIN_MIC },
197                     { "AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET", InDeviceType::AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET },
198                     { "AUDIO_DEVICE_IN_WIRED_HEADSET", InDeviceType::AUDIO_DEVICE_IN_WIRED_HEADSET },
199                     { "AUDIO_DEVICE_IN_AUX_DIGITAL", InDeviceType::AUDIO_DEVICE_IN_AUX_DIGITAL },
200                     { "AUDIO_DEVICE_IN_HDMI", InDeviceType::AUDIO_DEVICE_IN_HDMI },
201                     { "AUDIO_DEVICE_IN_VOICE_CALL", InDeviceType::AUDIO_DEVICE_IN_VOICE_CALL },
202                     { "AUDIO_DEVICE_IN_TELEPHONY_RX", InDeviceType::AUDIO_DEVICE_IN_TELEPHONY_RX },
203                     { "AUDIO_DEVICE_IN_BACK_MIC", InDeviceType::AUDIO_DEVICE_IN_BACK_MIC },
204                     { "AUDIO_DEVICE_IN_REMOTE_SUBMIX", InDeviceType::AUDIO_DEVICE_IN_REMOTE_SUBMIX },
205                     { "AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET", InDeviceType::AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET },
206                     { "AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET", InDeviceType::AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET },
207                     { "AUDIO_DEVICE_IN_USB_ACCESSORY", InDeviceType::AUDIO_DEVICE_IN_USB_ACCESSORY },
208                     { "AUDIO_DEVICE_IN_USB_DEVICE", InDeviceType::AUDIO_DEVICE_IN_USB_DEVICE },
209                     { "AUDIO_DEVICE_IN_FM_TUNER", InDeviceType::AUDIO_DEVICE_IN_FM_TUNER },
210                     { "AUDIO_DEVICE_IN_TV_TUNER", InDeviceType::AUDIO_DEVICE_IN_TV_TUNER },
211                     { "AUDIO_DEVICE_IN_LINE", InDeviceType::AUDIO_DEVICE_IN_LINE },
212                     { "AUDIO_DEVICE_IN_SPDIF", InDeviceType::AUDIO_DEVICE_IN_SPDIF },
213                     { "AUDIO_DEVICE_IN_BLUETOOTH_A2DP", InDeviceType::AUDIO_DEVICE_IN_BLUETOOTH_A2DP },
214                     { "AUDIO_DEVICE_IN_LOOPBACK", InDeviceType::AUDIO_DEVICE_IN_LOOPBACK },
215                     { "AUDIO_DEVICE_IN_IP", InDeviceType::AUDIO_DEVICE_IN_IP },
216                     { "AUDIO_DEVICE_IN_BUS", InDeviceType::AUDIO_DEVICE_IN_BUS },
217                     { "AUDIO_DEVICE_IN_PROXY", InDeviceType::AUDIO_DEVICE_IN_PROXY },
218                     { "AUDIO_DEVICE_IN_USB_HEADSET", InDeviceType::AUDIO_DEVICE_IN_USB_HEADSET },
219                     { "AUDIO_DEVICE_IN_BLUETOOTH_BLE", InDeviceType::AUDIO_DEVICE_IN_BLUETOOTH_BLE },
220                     { "AUDIO_DEVICE_IN_HDMI_ARC", InDeviceType::AUDIO_DEVICE_IN_HDMI_ARC },
221                     { "AUDIO_DEVICE_IN_ECHO_REFERENCE", InDeviceType::AUDIO_DEVICE_IN_ECHO_REFERENCE },
222                     { "AUDIO_DEVICE_IN_DEFAULT", InDeviceType::AUDIO_DEVICE_IN_DEFAULT },
223                     { "AUDIO_DEVICE_IN_STUB", InDeviceType::AUDIO_DEVICE_IN_STUB },
224                 };
225 
stringToInDeviceType(const std::string & value)226                 InDeviceType stringToInDeviceType(const std::string& value) {
227                     auto enumValue = InDeviceTypeString.find(value);
228                     return enumValue != InDeviceTypeString.end() ? enumValue->second : InDeviceType::UNKNOWN;
229                 }
230 
toString(InDeviceType o)231                 std::string toString(InDeviceType o) {
232                     switch (o) {
233                         case InDeviceType::AUDIO_DEVICE_IN_COMMUNICATION: return "AUDIO_DEVICE_IN_COMMUNICATION";
234                         case InDeviceType::AUDIO_DEVICE_IN_AMBIENT: return "AUDIO_DEVICE_IN_AMBIENT";
235                         case InDeviceType::AUDIO_DEVICE_IN_BUILTIN_MIC: return "AUDIO_DEVICE_IN_BUILTIN_MIC";
236                         case InDeviceType::AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET: return "AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET";
237                         case InDeviceType::AUDIO_DEVICE_IN_WIRED_HEADSET: return "AUDIO_DEVICE_IN_WIRED_HEADSET";
238                         case InDeviceType::AUDIO_DEVICE_IN_AUX_DIGITAL: return "AUDIO_DEVICE_IN_AUX_DIGITAL";
239                         case InDeviceType::AUDIO_DEVICE_IN_HDMI: return "AUDIO_DEVICE_IN_HDMI";
240                         case InDeviceType::AUDIO_DEVICE_IN_VOICE_CALL: return "AUDIO_DEVICE_IN_VOICE_CALL";
241                         case InDeviceType::AUDIO_DEVICE_IN_TELEPHONY_RX: return "AUDIO_DEVICE_IN_TELEPHONY_RX";
242                         case InDeviceType::AUDIO_DEVICE_IN_BACK_MIC: return "AUDIO_DEVICE_IN_BACK_MIC";
243                         case InDeviceType::AUDIO_DEVICE_IN_REMOTE_SUBMIX: return "AUDIO_DEVICE_IN_REMOTE_SUBMIX";
244                         case InDeviceType::AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET: return "AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET";
245                         case InDeviceType::AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET: return "AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET";
246                         case InDeviceType::AUDIO_DEVICE_IN_USB_ACCESSORY: return "AUDIO_DEVICE_IN_USB_ACCESSORY";
247                         case InDeviceType::AUDIO_DEVICE_IN_USB_DEVICE: return "AUDIO_DEVICE_IN_USB_DEVICE";
248                         case InDeviceType::AUDIO_DEVICE_IN_FM_TUNER: return "AUDIO_DEVICE_IN_FM_TUNER";
249                         case InDeviceType::AUDIO_DEVICE_IN_TV_TUNER: return "AUDIO_DEVICE_IN_TV_TUNER";
250                         case InDeviceType::AUDIO_DEVICE_IN_LINE: return "AUDIO_DEVICE_IN_LINE";
251                         case InDeviceType::AUDIO_DEVICE_IN_SPDIF: return "AUDIO_DEVICE_IN_SPDIF";
252                         case InDeviceType::AUDIO_DEVICE_IN_BLUETOOTH_A2DP: return "AUDIO_DEVICE_IN_BLUETOOTH_A2DP";
253                         case InDeviceType::AUDIO_DEVICE_IN_LOOPBACK: return "AUDIO_DEVICE_IN_LOOPBACK";
254                         case InDeviceType::AUDIO_DEVICE_IN_IP: return "AUDIO_DEVICE_IN_IP";
255                         case InDeviceType::AUDIO_DEVICE_IN_BUS: return "AUDIO_DEVICE_IN_BUS";
256                         case InDeviceType::AUDIO_DEVICE_IN_PROXY: return "AUDIO_DEVICE_IN_PROXY";
257                         case InDeviceType::AUDIO_DEVICE_IN_USB_HEADSET: return "AUDIO_DEVICE_IN_USB_HEADSET";
258                         case InDeviceType::AUDIO_DEVICE_IN_BLUETOOTH_BLE: return "AUDIO_DEVICE_IN_BLUETOOTH_BLE";
259                         case InDeviceType::AUDIO_DEVICE_IN_HDMI_ARC: return "AUDIO_DEVICE_IN_HDMI_ARC";
260                         case InDeviceType::AUDIO_DEVICE_IN_ECHO_REFERENCE: return "AUDIO_DEVICE_IN_ECHO_REFERENCE";
261                         case InDeviceType::AUDIO_DEVICE_IN_DEFAULT: return "AUDIO_DEVICE_IN_DEFAULT";
262                         case InDeviceType::AUDIO_DEVICE_IN_STUB: return "AUDIO_DEVICE_IN_STUB";
263                         default: return std::to_string(static_cast<int>(o));
264                     }
265                 }
266 
267             } // audiocontrol
268         } // automotive
269     } // hardware
270 } // android
271