Loading automotive/audiocontrol/aidl/default/Android.bp +4 −1 Original line number Diff line number Diff line Loading @@ -22,15 +22,18 @@ cc_binary { generated_sources: ["audio_policy_configuration_V7_0"], header_libs: ["libxsdc-utils"], shared_libs: [ "android.frameworks.automotive.powerpolicy-ndk_platform", "android.hardware.automotive.audiocontrol-ndk_platform", "libbase", "libbinder_ndk", "liblog", "libcutils", "liblog", "libpowerpolicyclient", "libxml2", ], srcs: [ "AudioControl.cpp", "main.cpp", "PowerPolicyClient.cpp", ], } automotive/audiocontrol/aidl/default/PowerPolicyClient.cpp 0 → 100644 +69 −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. */ #include "PowerPolicyClient.h" #include "AudioControl.h" #include <android-base/logging.h> namespace aidl { namespace android { namespace hardware { namespace automotive { namespace audiocontrol { namespace aafap = aidl::android::frameworks::automotive::powerpolicy; using aafap::CarPowerPolicy; using aafap::CarPowerPolicyFilter; using aafap::PowerComponent; using ::android::frameworks::automotive::powerpolicy::hasComponent; using ::ndk::ScopedAStatus; namespace { constexpr PowerComponent kAudioComponent = PowerComponent::AUDIO; } // namespace PowerPolicyClient::PowerPolicyClient(std::shared_ptr<AudioControl> audioControl) : mAudioControl(audioControl) {} void PowerPolicyClient::onInitFailed() { LOG(ERROR) << "Initializing power policy client failed"; } std::vector<PowerComponent> PowerPolicyClient::getComponentsOfInterest() { std::vector<PowerComponent> components{kAudioComponent}; return components; } ScopedAStatus PowerPolicyClient::onPolicyChanged(const CarPowerPolicy& powerPolicy) { if (hasComponent(powerPolicy.enabledComponents, kAudioComponent)) { LOG(DEBUG) << "Power policy: Audio component is enabled"; // TODO(b/173719953): Do something when AUDIO is enabled. } else if (hasComponent(powerPolicy.disabledComponents, kAudioComponent)) { LOG(DEBUG) << "Power policy: Audio component is disabled"; // TODO(b/173719953): Do something when AUDIO is disabled. } return ScopedAStatus::ok(); } } // namespace audiocontrol } // namespace automotive } // namespace hardware } // namespace android } // namespace aidl automotive/audiocontrol/aidl/default/PowerPolicyClient.h 0 → 100644 +45 −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. */ #ifndef AUTOMOTIVE_AUDIOCONTROL_AIDL_DEFAULT_POWERPOLICYCLIENT_H_ #define AUTOMOTIVE_AUDIOCONTROL_AIDL_DEFAULT_POWERPOLICYCLIENT_H_ #include "PowerPolicyClientBase.h" #include <memory> namespace aidl::android::hardware::automotive::audiocontrol { class AudioControl; class PowerPolicyClient : public ::android::frameworks::automotive::powerpolicy::PowerPolicyClientBase { public: explicit PowerPolicyClient(std::shared_ptr<AudioControl> audioControl); void onInitFailed(); std::vector<::aidl::android::frameworks::automotive::powerpolicy::PowerComponent> getComponentsOfInterest() override; ::ndk::ScopedAStatus onPolicyChanged( const ::aidl::android::frameworks::automotive::powerpolicy::CarPowerPolicy&) override; private: std::shared_ptr<AudioControl> mAudioControl; }; } // namespace aidl::android::hardware::automotive::audiocontrol #endif // AUTOMOTIVE_AUDIOCONTROL_AIDL_DEFAULT_POWERPOLICYCLIENT_H_ automotive/audiocontrol/aidl/default/main.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -15,22 +15,28 @@ */ #include "AudioControl.h" #include "PowerPolicyClient.h" #include <android-base/logging.h> #include <android/binder_manager.h> #include <android/binder_process.h> using aidl::android::hardware::automotive::audiocontrol::AudioControl; using aidl::android::hardware::automotive::audiocontrol::PowerPolicyClient; int main() { ABinderProcess_setThreadPoolMaxThreadCount(0); std::shared_ptr<AudioControl> audioControl = ndk::SharedRefBase::make<AudioControl>(); std::shared_ptr<AudioControl> audioControl = ::ndk::SharedRefBase::make<AudioControl>(); const std::string instance = std::string() + AudioControl::descriptor + "/default"; binder_status_t status = AServiceManager_addService(audioControl->asBinder().get(), instance.c_str()); CHECK(status == STATUS_OK); std::shared_ptr<PowerPolicyClient> powerPolicyClient = ::ndk::SharedRefBase::make<PowerPolicyClient>(audioControl); powerPolicyClient->init(); ABinderProcess_joinThreadPool(); return EXIT_FAILURE; // should not reach } Loading
automotive/audiocontrol/aidl/default/Android.bp +4 −1 Original line number Diff line number Diff line Loading @@ -22,15 +22,18 @@ cc_binary { generated_sources: ["audio_policy_configuration_V7_0"], header_libs: ["libxsdc-utils"], shared_libs: [ "android.frameworks.automotive.powerpolicy-ndk_platform", "android.hardware.automotive.audiocontrol-ndk_platform", "libbase", "libbinder_ndk", "liblog", "libcutils", "liblog", "libpowerpolicyclient", "libxml2", ], srcs: [ "AudioControl.cpp", "main.cpp", "PowerPolicyClient.cpp", ], }
automotive/audiocontrol/aidl/default/PowerPolicyClient.cpp 0 → 100644 +69 −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. */ #include "PowerPolicyClient.h" #include "AudioControl.h" #include <android-base/logging.h> namespace aidl { namespace android { namespace hardware { namespace automotive { namespace audiocontrol { namespace aafap = aidl::android::frameworks::automotive::powerpolicy; using aafap::CarPowerPolicy; using aafap::CarPowerPolicyFilter; using aafap::PowerComponent; using ::android::frameworks::automotive::powerpolicy::hasComponent; using ::ndk::ScopedAStatus; namespace { constexpr PowerComponent kAudioComponent = PowerComponent::AUDIO; } // namespace PowerPolicyClient::PowerPolicyClient(std::shared_ptr<AudioControl> audioControl) : mAudioControl(audioControl) {} void PowerPolicyClient::onInitFailed() { LOG(ERROR) << "Initializing power policy client failed"; } std::vector<PowerComponent> PowerPolicyClient::getComponentsOfInterest() { std::vector<PowerComponent> components{kAudioComponent}; return components; } ScopedAStatus PowerPolicyClient::onPolicyChanged(const CarPowerPolicy& powerPolicy) { if (hasComponent(powerPolicy.enabledComponents, kAudioComponent)) { LOG(DEBUG) << "Power policy: Audio component is enabled"; // TODO(b/173719953): Do something when AUDIO is enabled. } else if (hasComponent(powerPolicy.disabledComponents, kAudioComponent)) { LOG(DEBUG) << "Power policy: Audio component is disabled"; // TODO(b/173719953): Do something when AUDIO is disabled. } return ScopedAStatus::ok(); } } // namespace audiocontrol } // namespace automotive } // namespace hardware } // namespace android } // namespace aidl
automotive/audiocontrol/aidl/default/PowerPolicyClient.h 0 → 100644 +45 −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. */ #ifndef AUTOMOTIVE_AUDIOCONTROL_AIDL_DEFAULT_POWERPOLICYCLIENT_H_ #define AUTOMOTIVE_AUDIOCONTROL_AIDL_DEFAULT_POWERPOLICYCLIENT_H_ #include "PowerPolicyClientBase.h" #include <memory> namespace aidl::android::hardware::automotive::audiocontrol { class AudioControl; class PowerPolicyClient : public ::android::frameworks::automotive::powerpolicy::PowerPolicyClientBase { public: explicit PowerPolicyClient(std::shared_ptr<AudioControl> audioControl); void onInitFailed(); std::vector<::aidl::android::frameworks::automotive::powerpolicy::PowerComponent> getComponentsOfInterest() override; ::ndk::ScopedAStatus onPolicyChanged( const ::aidl::android::frameworks::automotive::powerpolicy::CarPowerPolicy&) override; private: std::shared_ptr<AudioControl> mAudioControl; }; } // namespace aidl::android::hardware::automotive::audiocontrol #endif // AUTOMOTIVE_AUDIOCONTROL_AIDL_DEFAULT_POWERPOLICYCLIENT_H_
automotive/audiocontrol/aidl/default/main.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -15,22 +15,28 @@ */ #include "AudioControl.h" #include "PowerPolicyClient.h" #include <android-base/logging.h> #include <android/binder_manager.h> #include <android/binder_process.h> using aidl::android::hardware::automotive::audiocontrol::AudioControl; using aidl::android::hardware::automotive::audiocontrol::PowerPolicyClient; int main() { ABinderProcess_setThreadPoolMaxThreadCount(0); std::shared_ptr<AudioControl> audioControl = ndk::SharedRefBase::make<AudioControl>(); std::shared_ptr<AudioControl> audioControl = ::ndk::SharedRefBase::make<AudioControl>(); const std::string instance = std::string() + AudioControl::descriptor + "/default"; binder_status_t status = AServiceManager_addService(audioControl->asBinder().get(), instance.c_str()); CHECK(status == STATUS_OK); std::shared_ptr<PowerPolicyClient> powerPolicyClient = ::ndk::SharedRefBase::make<PowerPolicyClient>(audioControl); powerPolicyClient->init(); ABinderProcess_joinThreadPool(); return EXIT_FAILURE; // should not reach }