Loading automotive/audiocontrol/1.0/Android.bp 0 → 100644 +23 −0 Original line number Original line Diff line number Diff line // This file is autogenerated by hidl-gen -Landroidbp. hidl_interface { name: "android.hardware.automotive.audiocontrol@1.0", root: "android.hardware", vndk: { enabled: true, }, srcs: [ "types.hal", "IAudioControl.hal", "IAudioControlCallback.hal", ], interfaces: [ "android.hidl.base@1.0", ], types: [ "AudioResult", "ContextNumber", ], gen_java: true, } automotive/audiocontrol/1.0/IAudioControl.hal 0 → 100644 +73 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2017 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@1.0; import IAudioControlCallback; /** * Interacts with the car's audio subsystem to manage audio sources and volumes */ interface IAudioControl { /** * Registers the required callback object so that we can be notified when the state * of the car's audio system changes. This call must be made when the interface is * initialized. */ setCallback(IAudioControlCallback notificationObject) generates (AudioResult result); /** * Called at startup once per context to get the mapping from ContextNumber to * busAddress. This lets the car tell the framework to which physical output stream * each context should be routed. * * For every context, a valid bus number (0 - num busses-1) must be returned. If an * unrecognized contextNumber is encountered, then -1 shall be returned. * * Any context for which an invalid busNumber is returned must be routed to bus 0. */ getBusForContext(uint32_t contextNumber) generates (int32_t busNumber); /** * Control the right/left balance setting of the car speakers. * * This is intended to shift the speaker volume toward the right (+) or left (-) side of * the car. 0.0 means "centered". +1.0 means fully right. -1.0 means fully left. * * A value outside the range -1 to 1 must be clamped by the implementation to the -1 to 1 * range. */ oneway setBalanceTowardRight(float value); /** * Control the fore/aft fade setting of the car speakers. * * This is intended to shift the speaker volume toward the front (+) or back (-) of the car. * 0.0 means "centered". +1.0 means fully forward. -1.0 means fully rearward. * * A value outside the range -1 to 1 must be clamped by the implementation to the -1 to 1 * range. */ oneway setFadeTowardFront(float value); }; automotive/audiocontrol/1.0/IAudioControlCallback.hal 0 → 100644 +57 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2017 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@1.0; /** * Implemented on client (framework) side to receive asynchronous updates from the car. */ interface IAudioControlCallback { /** * When the HAL makes this call, any apps currently playing must be asked to * temporarily suspend playback (via an AudioManager::AUDIOFOCUS_LOSS_TRANSIENT event). * * This is only a suggestion. Apps may be slow to react or even ignore this message * entirely. Enforcement, if necessary, must be done at the AudioHAL level as the * samples are delivered. In most instances, this is the way a car should ask for * quiet if it needs it for some important situation, such as warning alarms or chimes. */ oneway suggestPausePlayers(); /** * When the HAL makes this case, any apps currently playing must be asked to stop * playing (via an AudioManager::AUDIOFOCUS_LOSS event). Once stopped, the apps must * not resume their playback. * * It should be noted that not all apps or sound sources honor this request, but this * at least gives an app the chance to do the right thing. * Because it premanently stops media, this call is expected to be used only rarely. * Perhaps in the event of an E-call, where resuming music might be undesirable assuming * the driver is now dealing with whatever the emergency is? */ oneway suggestStopPlayers(); /** * Receives calls from the HAL when Android should resume normal operations. If the previous * action was a requestPausePlayers, then things that were paused must be told they may * resume. */ oneway resumePlayers(); }; automotive/audiocontrol/1.0/default/Android.bp 0 → 100644 +40 −0 Original line number Original line Diff line number Diff line // Copyright (C) 2017 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. cc_binary { name: "android.hardware.automotive.audiocontrol@1.0-service", defaults: ["hidl_defaults"], vendor: true, relative_install_path: "hw", srcs: [ "AudioControl.cpp", "AudioControlCallback.cpp", "service.cpp" ], init_rc: ["android.hardware.automotive.audiocontrol@1.0-service.rc"], shared_libs: [ "android.hardware.automotive.audiocontrol@1.0", "libhidlbase", "libhidltransport", "liblog", "libutils", ], cflags: [ "-DLOG_TAG=\"AudCntrlDrv\"", "-O0", "-g", ], } automotive/audiocontrol/1.0/default/AudioControl.cpp 0 → 100644 +86 −0 Original line number Original line Diff line number Diff line #include "AudioControl.h" #include <hidl/HidlTransportSupport.h> #include <log/log.h> namespace android { namespace hardware { namespace automotive { namespace audiocontrol { namespace V1_0 { namespace implementation { // This is the static map we're using to associate a ContextNumber with a // bus number from the audio_policy_configuration.xml setup. Every valid context needs // to be mapped to a bus address that actually exists in the platforms configuration. #define ARRAY_SIZE(a) (sizeof(a) / sizeof(*a)) // Would be nice if this were common... static int sContextToBusMap[] = { -1, // INVALID 0, // MUSIC_CONTEXT 1, // NAVIGATION_CONTEXT 2, // VOICE_COMMAND_CONTEXT 3, // CALL_RING_CONTEXT 4, // CALL_CONTEXT 5, // ALARM_CONTEXT 6, // NOTIFICATION_CONTEXT 7, // SYSTEM_SOUND_CONTEXT }; static const unsigned sContextMapSize = ARRAY_SIZE(sContextToBusMap); static const unsigned sContextCount = sContextMapSize - 1; // Less one for the INVALID entry static const unsigned sContextNumberMax = sContextCount; // contextNumber is counted from 1 AudioControl::AudioControl() { }; // Methods from ::android::hardware::automotive::audiocontrol::V1_0::IAudioControl follow. Return<AudioResult> AudioControl::setCallback(const sp<IAudioControlCallback>& notificationObject) { // Hang onto the provided callback object for future use callback = notificationObject; return AudioResult::OK; } Return<int32_t> AudioControl::getBusForContext(uint32_t contextNumber) { if (contextNumber > sContextNumberMax) { ALOGE("Unexpected context number %d (max expected is %d)", contextNumber, sContextCount); return -1; } else { return sContextToBusMap[contextNumber]; } } Return<void> AudioControl::setBalanceTowardRight(float value) { // For completeness, lets bounds check the input... if ((value > 1.0f) || (value < -1.0f)) { ALOGE("Balance value out of range -1 to 1 at %0.2f", value); } else { // Just log in this default mock implementation ALOGI("Balance set to %0.2f", value); } return Void(); } Return<void> AudioControl::setFadeTowardFront(float value) { // For completeness, lets bounds check the input... if ((value > 1.0f) || (value < -1.0f)) { ALOGE("Fader value out of range -1 to 1 at %0.2f", value); } else { // Just log in this default mock implementation ALOGI("Fader set to %0.2f", value); } return Void(); } } // namespace implementation } // namespace V1_0 } // namespace audiocontrol } // namespace automotive } // namespace hardware } // namespace android Loading
automotive/audiocontrol/1.0/Android.bp 0 → 100644 +23 −0 Original line number Original line Diff line number Diff line // This file is autogenerated by hidl-gen -Landroidbp. hidl_interface { name: "android.hardware.automotive.audiocontrol@1.0", root: "android.hardware", vndk: { enabled: true, }, srcs: [ "types.hal", "IAudioControl.hal", "IAudioControlCallback.hal", ], interfaces: [ "android.hidl.base@1.0", ], types: [ "AudioResult", "ContextNumber", ], gen_java: true, }
automotive/audiocontrol/1.0/IAudioControl.hal 0 → 100644 +73 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2017 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@1.0; import IAudioControlCallback; /** * Interacts with the car's audio subsystem to manage audio sources and volumes */ interface IAudioControl { /** * Registers the required callback object so that we can be notified when the state * of the car's audio system changes. This call must be made when the interface is * initialized. */ setCallback(IAudioControlCallback notificationObject) generates (AudioResult result); /** * Called at startup once per context to get the mapping from ContextNumber to * busAddress. This lets the car tell the framework to which physical output stream * each context should be routed. * * For every context, a valid bus number (0 - num busses-1) must be returned. If an * unrecognized contextNumber is encountered, then -1 shall be returned. * * Any context for which an invalid busNumber is returned must be routed to bus 0. */ getBusForContext(uint32_t contextNumber) generates (int32_t busNumber); /** * Control the right/left balance setting of the car speakers. * * This is intended to shift the speaker volume toward the right (+) or left (-) side of * the car. 0.0 means "centered". +1.0 means fully right. -1.0 means fully left. * * A value outside the range -1 to 1 must be clamped by the implementation to the -1 to 1 * range. */ oneway setBalanceTowardRight(float value); /** * Control the fore/aft fade setting of the car speakers. * * This is intended to shift the speaker volume toward the front (+) or back (-) of the car. * 0.0 means "centered". +1.0 means fully forward. -1.0 means fully rearward. * * A value outside the range -1 to 1 must be clamped by the implementation to the -1 to 1 * range. */ oneway setFadeTowardFront(float value); };
automotive/audiocontrol/1.0/IAudioControlCallback.hal 0 → 100644 +57 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2017 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@1.0; /** * Implemented on client (framework) side to receive asynchronous updates from the car. */ interface IAudioControlCallback { /** * When the HAL makes this call, any apps currently playing must be asked to * temporarily suspend playback (via an AudioManager::AUDIOFOCUS_LOSS_TRANSIENT event). * * This is only a suggestion. Apps may be slow to react or even ignore this message * entirely. Enforcement, if necessary, must be done at the AudioHAL level as the * samples are delivered. In most instances, this is the way a car should ask for * quiet if it needs it for some important situation, such as warning alarms or chimes. */ oneway suggestPausePlayers(); /** * When the HAL makes this case, any apps currently playing must be asked to stop * playing (via an AudioManager::AUDIOFOCUS_LOSS event). Once stopped, the apps must * not resume their playback. * * It should be noted that not all apps or sound sources honor this request, but this * at least gives an app the chance to do the right thing. * Because it premanently stops media, this call is expected to be used only rarely. * Perhaps in the event of an E-call, where resuming music might be undesirable assuming * the driver is now dealing with whatever the emergency is? */ oneway suggestStopPlayers(); /** * Receives calls from the HAL when Android should resume normal operations. If the previous * action was a requestPausePlayers, then things that were paused must be told they may * resume. */ oneway resumePlayers(); };
automotive/audiocontrol/1.0/default/Android.bp 0 → 100644 +40 −0 Original line number Original line Diff line number Diff line // Copyright (C) 2017 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. cc_binary { name: "android.hardware.automotive.audiocontrol@1.0-service", defaults: ["hidl_defaults"], vendor: true, relative_install_path: "hw", srcs: [ "AudioControl.cpp", "AudioControlCallback.cpp", "service.cpp" ], init_rc: ["android.hardware.automotive.audiocontrol@1.0-service.rc"], shared_libs: [ "android.hardware.automotive.audiocontrol@1.0", "libhidlbase", "libhidltransport", "liblog", "libutils", ], cflags: [ "-DLOG_TAG=\"AudCntrlDrv\"", "-O0", "-g", ], }
automotive/audiocontrol/1.0/default/AudioControl.cpp 0 → 100644 +86 −0 Original line number Original line Diff line number Diff line #include "AudioControl.h" #include <hidl/HidlTransportSupport.h> #include <log/log.h> namespace android { namespace hardware { namespace automotive { namespace audiocontrol { namespace V1_0 { namespace implementation { // This is the static map we're using to associate a ContextNumber with a // bus number from the audio_policy_configuration.xml setup. Every valid context needs // to be mapped to a bus address that actually exists in the platforms configuration. #define ARRAY_SIZE(a) (sizeof(a) / sizeof(*a)) // Would be nice if this were common... static int sContextToBusMap[] = { -1, // INVALID 0, // MUSIC_CONTEXT 1, // NAVIGATION_CONTEXT 2, // VOICE_COMMAND_CONTEXT 3, // CALL_RING_CONTEXT 4, // CALL_CONTEXT 5, // ALARM_CONTEXT 6, // NOTIFICATION_CONTEXT 7, // SYSTEM_SOUND_CONTEXT }; static const unsigned sContextMapSize = ARRAY_SIZE(sContextToBusMap); static const unsigned sContextCount = sContextMapSize - 1; // Less one for the INVALID entry static const unsigned sContextNumberMax = sContextCount; // contextNumber is counted from 1 AudioControl::AudioControl() { }; // Methods from ::android::hardware::automotive::audiocontrol::V1_0::IAudioControl follow. Return<AudioResult> AudioControl::setCallback(const sp<IAudioControlCallback>& notificationObject) { // Hang onto the provided callback object for future use callback = notificationObject; return AudioResult::OK; } Return<int32_t> AudioControl::getBusForContext(uint32_t contextNumber) { if (contextNumber > sContextNumberMax) { ALOGE("Unexpected context number %d (max expected is %d)", contextNumber, sContextCount); return -1; } else { return sContextToBusMap[contextNumber]; } } Return<void> AudioControl::setBalanceTowardRight(float value) { // For completeness, lets bounds check the input... if ((value > 1.0f) || (value < -1.0f)) { ALOGE("Balance value out of range -1 to 1 at %0.2f", value); } else { // Just log in this default mock implementation ALOGI("Balance set to %0.2f", value); } return Void(); } Return<void> AudioControl::setFadeTowardFront(float value) { // For completeness, lets bounds check the input... if ((value > 1.0f) || (value < -1.0f)) { ALOGE("Fader value out of range -1 to 1 at %0.2f", value); } else { // Just log in this default mock implementation ALOGI("Fader set to %0.2f", value); } return Void(); } } // namespace implementation } // namespace V1_0 } // namespace audiocontrol } // namespace automotive } // namespace hardware } // namespace android