Add audio configurations API to audio control HAL
The API will be used to obtain the car audio configuration:
- Audio device configurations
- Audio mirroring devices
- Audio zone information
- - Audio zone fade configuration
- - Audio zone configurations
- - Input audio devices
- - Audio zone info
Bug: 359686069
Test: m -j, presubmit
Flag: EXEMPT HAL interface
Change-Id: I32cd7fc351c58e7816a9187d70e5e9c790163dcc
diff --git a/automotive/audiocontrol/aidl/default/AudioControl.cpp b/automotive/audiocontrol/aidl/default/AudioControl.cpp
index 7e7e145..730aee8 100644
--- a/automotive/audiocontrol/aidl/default/AudioControl.cpp
+++ b/automotive/audiocontrol/aidl/default/AudioControl.cpp
@@ -19,6 +19,7 @@
#include "AudioControl.h"
+#include <aidl/android/hardware/automotive/audiocontrol/AudioDeviceConfiguration.h>
#include <aidl/android/hardware/automotive/audiocontrol/AudioFocusChange.h>
#include <aidl/android/hardware/automotive/audiocontrol/DuckingInfo.h>
#include <aidl/android/hardware/automotive/audiocontrol/IFocusListener.h>
@@ -256,6 +257,15 @@
});
}
+template <typename aidl_type>
+static inline std::string toString(const std::vector<std::optional<aidl_type>>& in_values) {
+ return std::accumulate(std::begin(in_values), std::end(in_values), std::string{},
+ [](const std::string& ls, const std::optional<aidl_type>& rs) {
+ return ls + (ls.empty() ? "" : ",") +
+ (rs.has_value() ? rs.value().toString() : "empty");
+ });
+}
+
ndk::ScopedAStatus AudioControl::onAudioFocusChangeWithMetaData(
const audiohalcommon::PlaybackTrackMetadata& in_playbackMetaData, int32_t in_zoneId,
AudioFocusChange in_focusChange) {
@@ -309,6 +319,27 @@
return ndk::ScopedAStatus::ok();
}
+ndk::ScopedAStatus AudioControl::getAudioDeviceConfiguration(
+ AudioDeviceConfiguration* audioDeviceConfig) {
+ LOG(DEBUG) << ":" << __func__ << "audioDeviceConfig" << audioDeviceConfig->toString();
+ return ndk::ScopedAStatus::ok();
+}
+
+ndk::ScopedAStatus AudioControl::getOutputMirroringDevices(
+ std::vector<AudioPort>* mirroringDevices) {
+ for (const auto& mirroringDevice : *mirroringDevices) {
+ LOG(DEBUG) << ":" << __func__ << "Mirror device: " << mirroringDevice.toString().c_str();
+ }
+ return ndk::ScopedAStatus::ok();
+}
+
+ndk::ScopedAStatus AudioControl::getCarAudioZones(std::vector<AudioZone>* audioZones) {
+ for (const auto& audioZone : *audioZones) {
+ LOG(DEBUG) << ":" << __func__ << "Audio zone: " << audioZone.toString().c_str();
+ }
+ return ndk::ScopedAStatus::ok();
+}
+
binder_status_t AudioControl::dump(int fd, const char** args, uint32_t numArgs) {
if (numArgs == 0) {
return dumpsys(fd);