Files
MuditaOS/module-audio/Audio/BluetoothProxyAudio.cpp
Hubert Chrzaniuk bb6989c2a8 [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.
2020-12-21 13:46:40 +01:00

76 lines
2.6 KiB
C++

// 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 <service-bluetooth/BluetoothMessage.hpp>
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