From bb6989c2a84746038de75a5c6816960042b0b3d8 Mon Sep 17 00:00:00 2001 From: Hubert Chrzaniuk Date: Fri, 18 Dec 2020 13:24:45 +0100 Subject: [PATCH] [EGD-4978] Add Bluetooth virtual audio device Bluetooth audio device requires different handling than other audio devices. The commit adds proxy device that does not handle requests itself but instead sends requests too Bluetooth service. --- changelog.md | 1 + module-audio/Audio/Audio.cpp | 9 --- module-audio/Audio/Audio.hpp | 2 - module-audio/Audio/AudioCommon.hpp | 16 ++-- module-audio/Audio/BluetoothProxyAudio.cpp | 75 +++++++++++++++++++ module-audio/Audio/BluetoothProxyAudio.hpp | 38 ++++++++++ .../Audio/Operation/IdleOperation.hpp | 3 - module-audio/Audio/Operation/Operation.cpp | 23 +++--- module-audio/Audio/Operation/Operation.hpp | 19 +++-- .../Audio/Operation/PlaybackOperation.cpp | 2 +- .../Audio/Operation/PlaybackOperation.hpp | 2 - .../Audio/Operation/RecorderOperation.cpp | 2 +- .../Audio/Operation/RouterOperation.cpp | 5 +- module-audio/Audio/test/unittest_audio.cpp | 4 +- module-audio/CMakeLists.txt | 1 + module-bsp/bsp/audio/bsp_audio.cpp | 2 +- module-bsp/targets/Target_Linux.cmake | 2 - .../service-audio/ServiceAudio.cpp | 37 +++++---- .../service-audio/ServiceAudio.hpp | 2 +- .../service-bluetooth/BluetoothMessage.hpp | 75 ++++++++++++++++++- source/MessageType.hpp | 8 ++ 21 files changed, 253 insertions(+), 75 deletions(-) create mode 100644 module-audio/Audio/BluetoothProxyAudio.cpp create mode 100644 module-audio/Audio/BluetoothProxyAudio.hpp diff --git a/changelog.md b/changelog.md index 227519278c0feb9c9f9c00965227a55afc83232f..9d40e64ef332417bbb0326253fc07fa34dc0107f 100644 --- a/changelog.md +++ b/changelog.md @@ -6,6 +6,7 @@ * `[PowerManagement]` Critial battery level notification to SystemManager. * `[Bluetooth]` Add settings storage to bluetooth related items +* Add Bluetooth virtual audio device. ## [0.51.1 2020-12-18] diff --git a/module-audio/Audio/Audio.cpp b/module-audio/Audio/Audio.cpp index fc349993ff1f21d25a7c3f8da794e693ff0b908e..887c3471dcea1874a98b8d80a1ba232e5bb014fd 100644 --- a/module-audio/Audio/Audio.cpp +++ b/module-audio/Audio/Audio.cpp @@ -93,10 +93,6 @@ namespace audio currentOperation->SetDataStreams(&dataStreamOut, &dataStreamIn); UpdateProfiles(); - - if (btData) { - currentOperation->SetBluetoothStreamData(btData); - } } catch (const AudioInitException &audioException) { // If creating operation failed fallback to IdleOperation which is guaranteed to work @@ -163,11 +159,6 @@ namespace audio return SetOutputVolume(0); } - void Audio::SetBluetoothStreamData(std::shared_ptr data) - { - btData = data; - } - void Audio::UpdateProfiles() { auto updateEvents = audioSinkState.getUpdateEvents(); diff --git a/module-audio/Audio/Audio.hpp b/module-audio/Audio/Audio.hpp index 6f6261628939b79aa673f4b1036039da790a50f5..2a42fb9a426a5d8ac9759232d92d263ba356990c 100644 --- a/module-audio/Audio/Audio.hpp +++ b/module-audio/Audio/Audio.hpp @@ -105,8 +105,6 @@ namespace audio virtual audio::RetCode Mute(); - virtual void SetBluetoothStreamData(std::shared_ptr data); - private: void UpdateProfiles(); AudioSinkState audioSinkState; diff --git a/module-audio/Audio/AudioCommon.hpp b/module-audio/Audio/AudioCommon.hpp index d89870a40188b36f9e4d23f9976beb81ca45a9bb..92f9fc8bd75ccbebc80a9d2b9a1114e1de010479 100644 --- a/module-audio/Audio/AudioCommon.hpp +++ b/module-audio/Audio/AudioCommon.hpp @@ -8,6 +8,7 @@ #include #include #include +#include #include "Profiles/Profile.hpp" @@ -249,14 +250,7 @@ namespace audio namespace AudioServiceMessage { - - class Message - { - public: - virtual ~Message() = default; - }; - - class EndOfFile : public Message + class EndOfFile : public sys::Message { public: explicit EndOfFile(audio::Token &token) : token(token) @@ -270,7 +264,7 @@ namespace AudioServiceMessage audio::Token token = audio::Token::MakeBadToken(); }; - class FileSystemNoSpace : public Message + class FileSystemNoSpace : public sys::Message { public: explicit FileSystemNoSpace(audio::Token &token) : token(token) @@ -284,7 +278,7 @@ namespace AudioServiceMessage audio::Token token = audio::Token::MakeBadToken(); }; - class DbRequest : public Message + class DbRequest : public sys::Message { public: explicit DbRequest(std::string path) : path(std::move(path)) @@ -298,5 +292,5 @@ namespace AudioServiceMessage const std::string path; }; - using Callback = std::function(const Message *e)>; + using Callback = std::function(const sys::Message *msg)>; } // namespace AudioServiceMessage diff --git a/module-audio/Audio/BluetoothProxyAudio.cpp b/module-audio/Audio/BluetoothProxyAudio.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ddf04ac6075863142b90430a985e8109a0305dce --- /dev/null +++ b/module-audio/Audio/BluetoothProxyAudio.cpp @@ -0,0 +1,75 @@ +// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include "BluetoothProxyAudio.hpp" +#include + +namespace bsp +{ + BluetoothProxyAudio::BluetoothProxyAudio(AudioServiceMessage::Callback callback, + audio::Stream &dataStreamOut, + audio::Stream &dataStreamIn, + AudioDevice::Format &format) + : AudioDevice(nullptr), dataStreamOut(dataStreamOut), dataStreamIn(dataStreamIn), serviceCallback(callback), + audioFormat(format) + { + LOG_DEBUG("BluetoothProxyAudio created."); + } + + AudioDevice::RetCode BluetoothProxyAudio::Start(const AudioDevice::Format &format) + { + auto msg = BluetoothProxyStartMessage(dataStreamOut, dataStreamIn, format); + serviceCallback(&msg); + return AudioDevice::RetCode::Success; + } + + AudioDevice::RetCode BluetoothProxyAudio::Stop() + { + auto msg = BluetoothProxyStopMessage(audioFormat); + serviceCallback(&msg); + return AudioDevice::RetCode::Success; + } + + AudioDevice::RetCode BluetoothProxyAudio::OutputVolumeCtrl(float vol) + { + audioFormat.outputVolume = vol; + auto msg = BluetoothProxySetVolumeMessage(audioFormat); + serviceCallback(&msg); + return AudioDevice::RetCode::Success; + } + + AudioDevice::RetCode BluetoothProxyAudio::InputGainCtrl(float gain) + { + audioFormat.inputGain = gain; + auto msg = BluetoothProxySetGainMessage(audioFormat); + serviceCallback(&msg); + return AudioDevice::RetCode::Success; + } + + AudioDevice::RetCode BluetoothProxyAudio::OutputPathCtrl(AudioDevice::OutputPath outputPath) + { + audioFormat.outputPath = outputPath; + auto msg = BluetoothProxySetOutputPathMessage(audioFormat); + serviceCallback(&msg); + return AudioDevice::RetCode::Success; + } + + AudioDevice::RetCode BluetoothProxyAudio::InputPathCtrl(AudioDevice::InputPath inputPath) + { + audioFormat.inputPath = inputPath; + auto msg = BluetoothProxySetInputPathMessage(audioFormat); + serviceCallback(&msg); + return AudioDevice::RetCode::Success; + } + + bool BluetoothProxyAudio::IsFormatSupported(const AudioDevice::Format &format) + { + LOG_DEBUG("Format assumed to be supported"); + return true; + } + + BluetoothProxyAudio::~BluetoothProxyAudio() + { + Stop(); + } +} // namespace bsp diff --git a/module-audio/Audio/BluetoothProxyAudio.hpp b/module-audio/Audio/BluetoothProxyAudio.hpp new file mode 100644 index 0000000000000000000000000000000000000000..2be1222f82efc73929f5bbbc33209bba5e9fa52c --- /dev/null +++ b/module-audio/Audio/BluetoothProxyAudio.hpp @@ -0,0 +1,38 @@ +// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#pragma once + +#include "AudioCommon.hpp" +#include "Stream.hpp" + +#include "bsp/audio/bsp_audio.hpp" + +namespace bsp +{ + class BluetoothProxyAudio final : public AudioDevice + { + public: + BluetoothProxyAudio(AudioServiceMessage::Callback callback, + audio::Stream &dataStreamOut, + audio::Stream &dataStreamIn, + AudioDevice::Format &format); + + ~BluetoothProxyAudio() final; + + AudioDevice::RetCode Start(const Format &format) final; + AudioDevice::RetCode Stop() final; + AudioDevice::RetCode OutputVolumeCtrl(float vol) final; + AudioDevice::RetCode InputGainCtrl(float gain) final; + AudioDevice::RetCode OutputPathCtrl(OutputPath outputPath) final; + AudioDevice::RetCode InputPathCtrl(InputPath inputPath) final; + bool IsFormatSupported(const Format &format) final; + + private: + audio::Stream &dataStreamOut; + audio::Stream &dataStreamIn; + AudioServiceMessage::Callback serviceCallback; + AudioDevice::Format audioFormat; + }; + +} // namespace bsp diff --git a/module-audio/Audio/Operation/IdleOperation.hpp b/module-audio/Audio/Operation/IdleOperation.hpp index d25ba09897826934f47fe6d492961b3b581c4b8c..8785ed9c9d7826ba3c88ab692379050e2d2db3e4 100644 --- a/module-audio/Audio/Operation/IdleOperation.hpp +++ b/module-audio/Audio/Operation/IdleOperation.hpp @@ -57,9 +57,6 @@ namespace audio { return 0.0; } - - void SetBluetoothStreamData(std::shared_ptr data) final - {} }; } // namespace audio diff --git a/module-audio/Audio/Operation/Operation.cpp b/module-audio/Audio/Operation/Operation.cpp index bfbe1217470f9ff92853d49e3ea440fb31757c6e..3284ddc5b44fddd648f31a769c30b8d007f3b3b3 100644 --- a/module-audio/Audio/Operation/Operation.cpp +++ b/module-audio/Audio/Operation/Operation.cpp @@ -10,10 +10,9 @@ #include "RecorderOperation.hpp" #include "RouterOperation.hpp" -#include "Audio/decoder/Decoder.hpp" +#include "Audio/BluetoothProxyAudio.hpp" #include -#include namespace audio { @@ -57,16 +56,6 @@ namespace audio } } - void Operation::SetBluetoothStreamData(std::shared_ptr data) - { - if (auto device = dynamic_cast(audioDevice.get()); device != nullptr) { - GetProfile()->SetSampleRate(data->metadata.sampleRate); - device->sourceQueue = data->out; - device->metadata = data->metadata; - LOG_INFO("Queue and metadata set!"); - } - } - audio::RetCode Operation::SwitchToPriorityProfile() { for (auto &p : supportedProfiles) { @@ -104,4 +93,14 @@ namespace audio supportedProfiles.emplace_back(Profile::Create(profile, nullptr, volume, gain), isAvailable); } + std::optional> Operation::CreateDevice(bsp::AudioDevice::Type type, + bsp::AudioDevice::audioCallback_t callback) + { + if (type == bsp::AudioDevice::Type::Bluetooth) { + auto audioFormat = currentProfile->GetAudioFormat(); + return std::make_unique( + serviceCallback, *dataStreamOut, *dataStreamIn, audioFormat); + } + return bsp::AudioDevice::Create(type, callback).value_or(nullptr); + } } // namespace audio diff --git a/module-audio/Audio/Operation/Operation.hpp b/module-audio/Audio/Operation/Operation.hpp index 0873046e16d8dd2973a0c792d3a2adecaf41f01d..21416f595842cbe1e0ca5e21e8d59bdcd1b81e24 100644 --- a/module-audio/Audio/Operation/Operation.hpp +++ b/module-audio/Audio/Operation/Operation.hpp @@ -69,7 +69,6 @@ namespace audio virtual audio::RetCode SetInputGain(float gain) = 0; virtual Position GetPosition() = 0; - virtual void SetBluetoothStreamData(std::shared_ptr data); Volume GetOutputVolume() const { @@ -135,26 +134,26 @@ namespace audio std::shared_ptr currentProfile; std::unique_ptr audioDevice; - std::vector supportedProfiles; - void SetProfileAvailability(std::vector profiles, bool available); - void AddProfile(const Profile::Type &profile, const PlaybackType &playback, bool isAvailable); State state = State::Idle; - audio::Token operationToken; Type opType = Type::Idle; std::string filePath; - audio::PlaybackType playbackType = audio::PlaybackType::None; - virtual audio::RetCode SwitchProfile(const Profile::Type type) = 0; - - std::shared_ptr GetProfile(const Profile::Type type); - AudioServiceMessage::Callback serviceCallback; std::function audioCallback = nullptr; + + void SetProfileAvailability(std::vector profiles, bool available); + void AddProfile(const Profile::Type &profile, const PlaybackType &playback, bool isAvailable); + + virtual audio::RetCode SwitchProfile(const Profile::Type type) = 0; + std::shared_ptr GetProfile(const Profile::Type type); + + std::optional> CreateDevice(bsp::AudioDevice::Type type, + bsp::AudioDevice::audioCallback_t callback); }; } // namespace audio diff --git a/module-audio/Audio/Operation/PlaybackOperation.cpp b/module-audio/Audio/Operation/PlaybackOperation.cpp index 80b1b9ce274c222178ae65e055a6f7ab4bc3a299..4a9edca0b20e46ec0461fdbdda9e45826ce35518 100644 --- a/module-audio/Audio/Operation/PlaybackOperation.cpp +++ b/module-audio/Audio/Operation/PlaybackOperation.cpp @@ -168,7 +168,7 @@ namespace audio dec->disconnectStream(); } - audioDevice = bsp::AudioDevice::Create(currentProfile->GetAudioDeviceType(), audioCallback).value_or(nullptr); + audioDevice = CreateDevice(currentProfile->GetAudioDeviceType(), audioCallback).value_or(nullptr); if (audioDevice == nullptr) { LOG_ERROR("Error creating AudioDevice"); return RetCode::Failed; diff --git a/module-audio/Audio/Operation/PlaybackOperation.hpp b/module-audio/Audio/Operation/PlaybackOperation.hpp index f16f51c93ac0e4521a5339157c68ee2355ef2ae4..376e0c15c67017572f1d028b208e92699e36a27d 100644 --- a/module-audio/Audio/Operation/PlaybackOperation.hpp +++ b/module-audio/Audio/Operation/PlaybackOperation.hpp @@ -10,8 +10,6 @@ #include "Audio/StreamQueuedEventsListener.hpp" #include "Audio/decoder/Decoder.hpp" -#include - namespace audio::playbackDefaults { constexpr audio::Volume defaultLoudspeakerVolume = 10; diff --git a/module-audio/Audio/Operation/RecorderOperation.cpp b/module-audio/Audio/Operation/RecorderOperation.cpp index d636bb415c08e844f75bddcb8047911b3151086c..3b891860da2c5a8fb133cf05219bc1d05daa00c0 100644 --- a/module-audio/Audio/Operation/RecorderOperation.cpp +++ b/module-audio/Audio/Operation/RecorderOperation.cpp @@ -157,7 +157,7 @@ namespace audio return RetCode::UnsupportedProfile; } - audioDevice = AudioDevice::Create(currentProfile->GetAudioDeviceType(), audioCallback).value_or(nullptr); + audioDevice = CreateDevice(currentProfile->GetAudioDeviceType(), audioCallback).value_or(nullptr); if (audioDevice == nullptr) { LOG_ERROR("Error creating AudioDevice"); return RetCode::Failed; diff --git a/module-audio/Audio/Operation/RouterOperation.cpp b/module-audio/Audio/Operation/RouterOperation.cpp index 8062a885081d847537cb8841c8502a51b16f96aa..e17a83f71b683f64c4b9700cb39b72613f1c9035 100644 --- a/module-audio/Audio/Operation/RouterOperation.cpp +++ b/module-audio/Audio/Operation/RouterOperation.cpp @@ -158,13 +158,12 @@ namespace audio return RetCode::UnsupportedProfile; } - audioDevice = bsp::AudioDevice::Create(currentProfile->GetAudioDeviceType(), nullptr).value_or(nullptr); + audioDevice = CreateDevice(currentProfile->GetAudioDeviceType(), nullptr).value_or(nullptr); if (audioDevice == nullptr) { LOG_ERROR("Error creating AudioDevice"); return RetCode::Failed; } - - audioDeviceCellular = bsp::AudioDevice::Create(bsp::AudioDevice::Type::Cellular, nullptr).value_or(nullptr); + audioDeviceCellular = CreateDevice(bsp::AudioDevice::Type::Cellular, nullptr).value_or(nullptr); if (audioDeviceCellular == nullptr) { LOG_ERROR("Error creating AudioDeviceCellular"); return RetCode::Failed; diff --git a/module-audio/Audio/test/unittest_audio.cpp b/module-audio/Audio/test/unittest_audio.cpp index 0729ab4dad3dcb6be37eab2df8a0d6342fa5c0f0..19383a5547055e17594b88e002643a5bd66f7f42 100644 --- a/module-audio/Audio/test/unittest_audio.cpp +++ b/module-audio/Audio/test/unittest_audio.cpp @@ -74,8 +74,8 @@ class MockAudio : public audio::Audio public: MockAudio(audio::Audio::State state, audio::PlaybackType plbckType, audio::Operation::State opState) - : audio::Audio([](const AudioServiceMessage::Message *e) { return std::optional(); }), - state(state), plbckType(plbckType), opState(opState) + : audio::Audio([](const sys::Message *e) { return std::optional(); }), state(state), + plbckType(plbckType), opState(opState) {} audio::PlaybackType GetCurrentOperationPlaybackType() const override diff --git a/module-audio/CMakeLists.txt b/module-audio/CMakeLists.txt index c0ea1fe6d3115635e7822030ca4bd4b3e94055ea..0241c4579ffd379eb0003b1990e6771289b64597 100755 --- a/module-audio/CMakeLists.txt +++ b/module-audio/CMakeLists.txt @@ -21,6 +21,7 @@ set(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/Audio/Endpoint.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Audio/Stream.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Audio/StreamQueuedEventsListener.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/Audio/BluetoothProxyAudio.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Audio/Operation/Operation.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Audio/Operation/PlaybackOperation.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/Audio/Operation/RecorderOperation.cpp" diff --git a/module-bsp/bsp/audio/bsp_audio.cpp b/module-bsp/bsp/audio/bsp_audio.cpp index eeb3a566d8cdcaacb204257f389fffa44ac0921a..4bd91fbf32e15de44b08f77e35fb6382596490b3 100644 --- a/module-bsp/bsp/audio/bsp_audio.cpp +++ b/module-bsp/bsp/audio/bsp_audio.cpp @@ -15,7 +15,7 @@ namespace bsp{ - std::optional> AudioDevice::Create(bsp::AudioDevice::Type type,audioCallback_t callback) { + std::optional> AudioDevice::Create(bsp::AudioDevice::Type type, audioCallback_t callback) { std::unique_ptr inst; diff --git a/module-bsp/targets/Target_Linux.cmake b/module-bsp/targets/Target_Linux.cmake index c5b109e3c2a13f06fe531af5ad3e5bf25e502d91..95acc03594d64adb21bbe3735e8a9aca651ed1f1 100644 --- a/module-bsp/targets/Target_Linux.cmake +++ b/module-bsp/targets/Target_Linux.cmake @@ -16,8 +16,6 @@ set(BOARD_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/board/linux/audio/linux_audiocodec.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/board/linux/audio/LinuxCellularAudio.cpp" - #needed because of PlaybackOperation::SetBluetoothStreamData - "${CMAKE_CURRENT_SOURCE_DIR}/board/rt1051/bsp/audio/RT1051BluetoothAudio.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/board/linux/bluetooth/Bluetooth.cpp" diff --git a/module-services/service-audio/ServiceAudio.cpp b/module-services/service-audio/ServiceAudio.cpp index e4dc81b55d6a44fdbce5ffc5863a801393398f7b..5cb15a9855f70e524bbd6389cd010fc9150c2467 100644 --- a/module-services/service-audio/ServiceAudio.cpp +++ b/module-services/service-audio/ServiceAudio.cpp @@ -107,7 +107,7 @@ sys::ReturnCodes ServiceAudio::DeinitHandler() return sys::ReturnCodes::Success; } -std::optional ServiceAudio::AudioServicesCallback(const AudioServiceMessage::Message *msg) +std::optional ServiceAudio::AudioServicesCallback(const sys::Message *msg) { if (const auto *eof = dynamic_cast(msg); eof) { auto newMsg = @@ -123,6 +123,29 @@ std::optional ServiceAudio::AudioServicesCallback(const AudioServic } return settings_it->second; } + else if (const auto *btReq = dynamic_cast(msg); btReq) { + std::shared_ptr request; + if (const auto *btStart = dynamic_cast(msg); btStart) { + request = std::make_shared(*btStart); + } + else if (const auto *btVolume = dynamic_cast(msg); btVolume) { + request = std::make_shared(*btVolume); + } + else if (const auto *btGain = dynamic_cast(msg); btGain) { + request = std::make_shared(*btGain); + } + else if (const auto *btOutPath = dynamic_cast(msg); btOutPath) { + request = std::make_shared(*btOutPath); + } + else if (const auto *btInPath = dynamic_cast(msg); btInPath) { + request = std::make_shared(*btInPath); + } + else { + LOG_DEBUG("BluetoothProxyMessage not supported."); + return std::nullopt; + } + sys::Bus::SendUnicast(request, service::name::bluetooth, this); + } else { LOG_DEBUG("Message received but not handled - no effect."); } @@ -328,9 +351,6 @@ std::unique_ptr ServiceAudio::HandleSendEvent(std::shared_ for (auto &input : audioMux.GetAllInputs()) { input.audio->SendEvent(evt); - if (isBT && evt->getDeviceState() == audio::Event::DeviceState::Connected) { - input.audio->SetBluetoothStreamData(nullptr); - } } return std::make_unique(RetCode::Success); } @@ -506,15 +526,6 @@ sys::MessagePointer ServiceAudio::DataReceivedHandler(sys::DataMessage *msgl, sy auto *msg = static_cast(msgl); responseMsg = HandleKeyPressed(msg->step); } - else if (msgType == typeid(BluetoothRequestStreamResultMessage)) { - auto *msg = static_cast(msgl); - for (auto &input : audioMux.GetAllInputs()) { - input.audio->SetBluetoothStreamData(msg->getData()); - input.audio->SendEvent( - std::make_unique(EventType::BlutoothA2DPDeviceState, audio::Event::DeviceState::Connected)); - LOG_INFO("Queues received!"); - } - } else { LOG_DEBUG("Unhandled message"); } diff --git a/module-services/service-audio/service-audio/ServiceAudio.hpp b/module-services/service-audio/service-audio/ServiceAudio.hpp index 958a98b5d59b2a9dcbf9579286ef1e48094bcb65..b7f2ab7a527b328d6db59b4e862d5a18ccea1976 100644 --- a/module-services/service-audio/service-audio/ServiceAudio.hpp +++ b/module-services/service-audio/service-audio/ServiceAudio.hpp @@ -56,7 +56,7 @@ class ServiceAudio : public sys::Service return vibrationMotorStatus == audio::AudioMux::VibrationStatus::On; } - auto AudioServicesCallback(const AudioServiceMessage::Message *msg) -> std::optional; + auto AudioServicesCallback(const sys::Message *msg) -> std::optional; auto HandleStart(const audio::Operation::Type opType, const std::string = "", diff --git a/module-services/service-bluetooth/service-bluetooth/BluetoothMessage.hpp b/module-services/service-bluetooth/service-bluetooth/BluetoothMessage.hpp index 0674dc03a1bffa1d45d0ed1fe94f416c4832d32b..f14c443821a8d6110b22753496c230547db5916a 100644 --- a/module-services/service-bluetooth/service-bluetooth/BluetoothMessage.hpp +++ b/module-services/service-bluetooth/service-bluetooth/BluetoothMessage.hpp @@ -3,10 +3,13 @@ #pragma once -#include -#include #include "ServiceBluetoothCommon.hpp" + +#include #include +#include