• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2021 HIMSA II K/S - www.himsa.com.
3  * Represented by EHIMA - www.ehima.com
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 #pragma once
18 
19 #include <gmock/gmock.h>
20 
21 #include "include/hardware/bluetooth.h"
22 #include "types/raw_address.h"
23 
24 struct HearingDevice;
25 
26 namespace bluetooth {
27 namespace storage {
28 
29 class BtifStorageInterface {
30 public:
31   virtual void AddLeaudioAutoconnect(RawAddress const& addr, bool autoconnect) = 0;
32   virtual void LeAudioUpdatePacs(RawAddress const& addr) = 0;
33   virtual void LeAudioUpdateGmap(RawAddress const& addr) = 0;
34   virtual void LeAudioUpdateAses(RawAddress const& addr) = 0;
35   virtual void LeAudioUpdateHandles(RawAddress const& addr) = 0;
36   virtual void SetLeAudioSinkLocations(RawAddress const& addr, uint32_t sink_location) = 0;
37   virtual void SetLeAudioSourceLocations(RawAddress const& addr, uint32_t source_location) = 0;
38   virtual void SetLeAudioContexts(RawAddress const& addr, uint16_t sink_context,
39                                   uint16_t source_context) = 0;
40   virtual void ClearLeAudioServiceData(RawAddress const& addr) = 0;
41   virtual void RemoveLeaudio(RawAddress const& addr) = 0;
42   virtual void AddLeaudioHasDevice(const RawAddress& address, std::vector<uint8_t> presets_bin,
43                                    uint8_t features, uint8_t active_preset) = 0;
44   virtual void SetLeaudioHasPresets(const RawAddress& address,
45                                     std::vector<uint8_t> presets_bin) = 0;
46   virtual bool GetLeaudioHasFeatures(const RawAddress& address, uint8_t& features) = 0;
47   virtual void SetLeaudioHasFeatures(const RawAddress& address, uint8_t features) = 0;
48   virtual void SetLeaudioHasActivePreset(const RawAddress& address, uint8_t active_preset) = 0;
49   virtual bool GetLeaudioHasPresets(const RawAddress& address, std::vector<uint8_t>& presets_bin,
50                                     uint8_t& active_preset) = 0;
51   virtual void RemoveLeaudioHas(const RawAddress& address) = 0;
52   virtual bt_status_t GetRemoteDeviceProperty(const RawAddress* address,
53                                               bt_property_t* property) = 0;
54 
55   virtual bool GetHearingAidProp(const RawAddress& address, uint8_t* capabilities,
56                                  uint64_t* hi_sync_id, uint16_t* render_delay,
57                                  uint16_t* preparation_delay, uint16_t* codecs) = 0;
58   virtual void AddHearingAid(const HearingDevice* dev_info) = 0;
59 
60   virtual ~BtifStorageInterface() = default;
61 };
62 
63 class MockBtifStorageInterface : public BtifStorageInterface {
64 public:
65   MOCK_METHOD((void), AddLeaudioAutoconnect, (RawAddress const& addr, bool autoconnect),
66               (override));
67   MOCK_METHOD((void), LeAudioUpdatePacs, (RawAddress const& addr), (override));
68   MOCK_METHOD((void), LeAudioUpdateGmap, (RawAddress const& addr), (override));
69   MOCK_METHOD((void), LeAudioUpdateAses, (RawAddress const& addr), (override));
70   MOCK_METHOD((void), LeAudioUpdateHandles, (RawAddress const& addr), (override));
71   MOCK_METHOD((void), SetLeAudioSinkLocations, (RawAddress const& addr, uint32_t sink_location),
72               (override));
73   MOCK_METHOD((void), SetLeAudioSourceLocations, (RawAddress const& addr, uint32_t source_location),
74               (override));
75   MOCK_METHOD((void), SetLeAudioContexts,
76               (RawAddress const& addr, uint16_t sink_context, uint16_t source_context), (override));
77   MOCK_METHOD((void), ClearLeAudioServiceData, (RawAddress const& addr), (override));
78   MOCK_METHOD((void), RemoveLeaudio, (RawAddress const& addr), (override));
79   MOCK_METHOD((void), AddLeaudioHasDevice,
80               (const RawAddress& address, std::vector<uint8_t> presets_bin, uint8_t features,
81                uint8_t active_preset),
82               (override));
83   MOCK_METHOD((bool), GetLeaudioHasPresets,
84               (const RawAddress& address, std::vector<uint8_t>& presets_bin,
85                uint8_t& active_preset),
86               (override));
87   MOCK_METHOD((void), SetLeaudioHasPresets,
88               (const RawAddress& address, std::vector<uint8_t> presets_bin), (override));
89   MOCK_METHOD((bool), GetLeaudioHasFeatures, (const RawAddress& address, uint8_t& features),
90               (override));
91   MOCK_METHOD((void), SetLeaudioHasFeatures, (const RawAddress& address, uint8_t features),
92               (override));
93   MOCK_METHOD((void), SetLeaudioHasActivePreset, (const RawAddress& address, uint8_t active_preset),
94               (override));
95   MOCK_METHOD((void), RemoveLeaudioHas, (const RawAddress& address), (override));
96   MOCK_METHOD((bt_status_t), GetRemoteDeviceProperty,
97               (const RawAddress* address, bt_property_t* property), (override));
98   MOCK_METHOD((bool), GetHearingAidProp,
99               (const RawAddress& address, uint8_t* capabilities, uint64_t* hi_sync_id,
100                uint16_t* render_delay, uint16_t* preparation_delay, uint16_t* codecs),
101               (override));
102   MOCK_METHOD((void), AddHearingAid, (const HearingDevice* dev_info), (override));
103 };
104 
105 /**
106  * Set the {@link MockBifStorageInterface} for testing
107  *
108  * @param mock_btif_storage_interface pointer to mock btm security
109  * internal interface, could be null
110  */
111 void SetMockBtifStorageInterface(MockBtifStorageInterface* mock_btif_storage_interface);
112 
113 }  // namespace storage
114 }  // namespace bluetooth
115