113 lines
4.0 KiB
C++
113 lines
4.0 KiB
C++
/*
|
|
* Copyright (C) 2018 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.
|
|
*/
|
|
|
|
#define LOG_TAG "bluetooth_a2dp_hidl_hal_test"
|
|
|
|
#include <android-base/logging.h>
|
|
#include <android/hardware/bluetooth/a2dp/1.0/IBluetoothAudioHost.h>
|
|
#include <android/hardware/bluetooth/a2dp/1.0/IBluetoothAudioOffload.h>
|
|
#include <gtest/gtest.h>
|
|
#include <hardware/bluetooth.h>
|
|
#include <hidl/GtestPrinter.h>
|
|
#include <hidl/MQDescriptor.h>
|
|
#include <hidl/ServiceManagement.h>
|
|
#include <utils/Log.h>
|
|
|
|
#include <VtsHalHidlTargetCallbackBase.h>
|
|
|
|
using ::android::sp;
|
|
using ::android::hardware::Return;
|
|
using ::android::hardware::Void;
|
|
using ::android::hardware::bluetooth::a2dp::V1_0::BitsPerSample;
|
|
using ::android::hardware::bluetooth::a2dp::V1_0::ChannelMode;
|
|
using ::android::hardware::bluetooth::a2dp::V1_0::CodecConfiguration;
|
|
using ::android::hardware::bluetooth::a2dp::V1_0::CodecType;
|
|
using ::android::hardware::bluetooth::a2dp::V1_0::IBluetoothAudioHost;
|
|
using ::android::hardware::bluetooth::a2dp::V1_0::IBluetoothAudioOffload;
|
|
using ::android::hardware::bluetooth::a2dp::V1_0::SampleRate;
|
|
using ::android::hardware::bluetooth::a2dp::V1_0::Status;
|
|
|
|
// The main test class for Bluetooth A2DP HIDL HAL.
|
|
class BluetoothA2dpHidlTest : public ::testing::TestWithParam<std::string> {
|
|
public:
|
|
virtual void SetUp() override {
|
|
// currently test passthrough mode only
|
|
audio_offload = IBluetoothAudioOffload::getService(GetParam());
|
|
ASSERT_NE(audio_offload, nullptr);
|
|
|
|
audio_host = new BluetoothAudioHost(*this);
|
|
ASSERT_NE(audio_host, nullptr);
|
|
|
|
codec.codecType = CodecType::AAC;
|
|
codec.sampleRate = SampleRate::RATE_44100;
|
|
codec.bitsPerSample = BitsPerSample::BITS_16;
|
|
codec.channelMode = ChannelMode::STEREO;
|
|
codec.encodedAudioBitrate = 320000;
|
|
codec.peerMtu = 1000;
|
|
}
|
|
|
|
virtual void TearDown() override {}
|
|
|
|
// A simple test implementation of IBluetoothAudioHost.
|
|
class BluetoothAudioHost
|
|
: public ::testing::VtsHalHidlTargetCallbackBase<BluetoothA2dpHidlTest>,
|
|
public IBluetoothAudioHost {
|
|
BluetoothA2dpHidlTest& parent_;
|
|
|
|
public:
|
|
BluetoothAudioHost(BluetoothA2dpHidlTest& parent) : parent_(parent){};
|
|
virtual ~BluetoothAudioHost() = default;
|
|
|
|
Return<void> startStream() override {
|
|
parent_.audio_offload->streamStarted(Status::SUCCESS);
|
|
return Void();
|
|
};
|
|
|
|
Return<void> suspendStream() override {
|
|
parent_.audio_offload->streamSuspended(Status::SUCCESS);
|
|
return Void();
|
|
};
|
|
|
|
Return<void> stopStream() override { return Void(); };
|
|
};
|
|
|
|
// audio_host is for the Audio HAL to send stream start/suspend/stop commands
|
|
// to Bluetooth
|
|
sp<IBluetoothAudioHost> audio_host;
|
|
// audio_offload is for the Bluetooth HAL to report session started/ended and
|
|
// handled audio stream started/suspended
|
|
sp<IBluetoothAudioOffload> audio_offload;
|
|
// codec is the currently used codec
|
|
CodecConfiguration codec;
|
|
};
|
|
|
|
// Empty test: Initialize()/Close() are called in SetUp()/TearDown().
|
|
TEST_P(BluetoothA2dpHidlTest, InitializeAndClose) {}
|
|
|
|
// Test start and end session
|
|
TEST_P(BluetoothA2dpHidlTest, StartAndEndSession) {
|
|
EXPECT_EQ(Status::SUCCESS, audio_offload->startSession(audio_host, codec));
|
|
audio_offload->endSession();
|
|
}
|
|
|
|
INSTANTIATE_TEST_SUITE_P(
|
|
PerInstance, BluetoothA2dpHidlTest,
|
|
testing::ValuesIn(android::hardware::getAllHalInstanceNames(
|
|
IBluetoothAudioOffload::descriptor)),
|
|
android::hardware::PrintInstanceNameToString);
|
|
|
|
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(BluetoothA2dpHidlTest);
|