Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3413e6ac authored by Guru Nagarajan's avatar Guru Nagarajan Committed by Android (Google) Code Review
Browse files

Merge "Added IAudioControl#onDevicesToMuteChange"

parents 9c70ad02 b8e5cd08
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ package android.hardware.automotive.audiocontrol;
interface IAudioControl {
  oneway void onAudioFocusChange(in String usage, in int zoneId, in android.hardware.automotive.audiocontrol.AudioFocusChange focusChange);
  oneway void onDevicesToDuckChange(in android.hardware.automotive.audiocontrol.DuckingInfo[] duckingInfos);
  oneway void onDevicesToMuteChange(in android.hardware.automotive.audiocontrol.MutingInfo[] mutingInfos);
  oneway void registerFocusListener(in android.hardware.automotive.audiocontrol.IFocusListener listener);
  oneway void setBalanceTowardRight(in float value);
  oneway void setFadeTowardFront(in float value);
+24 −0
Original line number Diff line number Diff line
///////////////////////////////////////////////////////////////////////////////
// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
///////////////////////////////////////////////////////////////////////////////

// This file is a snapshot of an AIDL interface (or parcelable). Do not try to
// edit this file. It looks like you are doing that because you have modified
// an AIDL interface in a backward-incompatible way, e.g., deleting a function
// from an interface or a field from a parcelable and it broke the build. That
// breakage is intended.
//
// You must not make a backward incompatible changes to the AIDL files built
// with the aidl_interface module type with versions property set. The module
// type is used to build AIDL files in a way that they can be used across
// independently updatable components of the system. If a device is shipped
// with such a backward incompatible change, it has a high risk of breaking
// later when a module using the interface is updated, e.g., Mainline modules.

package android.hardware.automotive.audiocontrol;
@VintfStability
parcelable MutingInfo {
  int zoneId;
  String[] deviceAddressesToMute;
  String[] deviceAddressesToUnmute;
}
+13 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.hardware.automotive.audiocontrol;

import android.hardware.automotive.audiocontrol.AudioFocusChange;
import android.hardware.automotive.audiocontrol.DuckingInfo;
import android.hardware.automotive.audiocontrol.MutingInfo;
import android.hardware.automotive.audiocontrol.IFocusListener;

/**
@@ -53,6 +54,18 @@ interface IAudioControl {
     */
     oneway void onDevicesToDuckChange(in DuckingInfo[] duckingInfos);

     /**
      * Notifies HAL of changes in output devices that the HAL should apply muting to.
      *
      * This will be called in response to changes in audio mute state for each volume group
      * and will include a {@link MutingInfo} object per audio zone that experienced a mute state
      * event.
      *
      * @param mutingInfos an array of {@link MutingInfo} objects for the audio zones where audio
      * mute state has changed.
      */
     oneway void onDevicesToMuteChange(in MutingInfo[] mutingInfos);

    /**
     * Registers focus listener to be used by HAL for requesting and abandoning audio focus.
     *
+46 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

 package android.hardware.automotive.audiocontrol;

 /**
  * The current muting information for a single audio zone.
  *
  * <p>This includes devices to mute, as well as mute based on the contents of a previous
  * {@link MutingInfo}.
  */
 @VintfStability
 parcelable MutingInfo {
     /**
      * ID of the associated audio zone
      */
     int zoneId;

     /**
      * List of addresses for audio output devices that should be muted.
      *
      * <p>The provided address strings are defined in audio_policy_configuration.xml.
      */
     String[] deviceAddressesToMute;

     /**
      * List of addresses for audio output devices that were previously be muted and should now be
      * unmuted.
      *
      * <p>The provided address strings are defined in audio_policy_configuration.xml.
      */
     String[] deviceAddressesToUnmute;
 }
 No newline at end of file
+20 −3
Original line number Diff line number Diff line
@@ -109,21 +109,38 @@ ndk::ScopedAStatus AudioControl::onDevicesToDuckChange(
    for (const DuckingInfo& duckingInfo : in_duckingInfos) {
        LOG(INFO) << "zone: " << duckingInfo.zoneId;
        LOG(INFO) << "Devices to duck:";
        for (auto& addressToDuck : duckingInfo.deviceAddressesToDuck) {
        for (const auto& addressToDuck : duckingInfo.deviceAddressesToDuck) {
            LOG(INFO) << addressToDuck;
        }
        LOG(INFO) << "Devices to unduck:";
        for (auto& addressToUnduck : duckingInfo.deviceAddressesToUnduck) {
        for (const auto& addressToUnduck : duckingInfo.deviceAddressesToUnduck) {
            LOG(INFO) << addressToUnduck;
        }
        LOG(INFO) << "Usages holding focus:";
        for (auto& usage : duckingInfo.usagesHoldingFocus) {
        for (const auto& usage : duckingInfo.usagesHoldingFocus) {
            LOG(INFO) << usage;
        }
    }
    return ndk::ScopedAStatus::ok();
}

ndk::ScopedAStatus AudioControl::onDevicesToMuteChange(
        const std::vector<MutingInfo>& in_mutingInfos) {
    LOG(INFO) << "AudioControl::onDevicesToMuteChange";
    for (const MutingInfo& mutingInfo : in_mutingInfos) {
        LOG(INFO) << "zone: " << mutingInfo.zoneId;
        LOG(INFO) << "Devices to mute:";
        for (const auto& addressToMute : mutingInfo.deviceAddressesToMute) {
            LOG(INFO) << addressToMute;
        }
        LOG(INFO) << "Devices to unmute:";
        for (const auto& addressToUnmute : mutingInfo.deviceAddressesToUnmute) {
            LOG(INFO) << addressToUnmute;
        }
    }
    return ndk::ScopedAStatus::ok();
}

binder_status_t AudioControl::dump(int fd, const char** args, uint32_t numArgs) {
    if (numArgs == 0) {
        return dumpsys(fd);
Loading