1 /* 2 * Copyright 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #pragma once 18 19 #include <gmock/gmock.h> 20 21 #include <vector> 22 23 #include "stack/include/l2cap_interface.h" 24 25 namespace bluetooth { 26 namespace testing { 27 namespace stack { 28 namespace l2cap { 29 30 class Mock : public ::bluetooth::stack::l2cap::Interface { 31 public: 32 ~Mock() = default; 33 34 MOCK_METHOD(uint16_t, L2CA_Register, 35 (uint16_t psm, const tL2CAP_APPL_INFO& p_cb_info, bool enable_snoop, 36 tL2CAP_ERTM_INFO* p_ertm_info, uint16_t my_mtu, uint16_t required_remote_mtu, 37 uint16_t sec_level)); 38 MOCK_METHOD(uint16_t, L2CA_RegisterWithSecurity, 39 (uint16_t psm, const tL2CAP_APPL_INFO& p_cb_info, bool enable_snoop, 40 tL2CAP_ERTM_INFO* p_ertm_info, uint16_t my_mtu, uint16_t required_remote_mtu, 41 uint16_t sec_level)); 42 MOCK_METHOD(void, L2CA_Deregister, (uint16_t psm)); 43 44 MOCK_METHOD(uint16_t, L2CA_AllocateLePSM, ()); 45 MOCK_METHOD(void, L2CA_FreeLePSM, (uint16_t psm)); 46 47 MOCK_METHOD(uint16_t, L2CA_RegisterLECoc, 48 (uint16_t psm, const tL2CAP_APPL_INFO& p_cb_info, uint16_t sec_level, 49 tL2CAP_LE_CFG_INFO cfg)); 50 MOCK_METHOD(void, L2CA_DeregisterLECoc, (uint16_t psm)); 51 52 // Methods used for, both BR/EDR and BLE 53 MOCK_METHOD(bool, L2CA_IsLinkEstablished, (const RawAddress& bd_addr, tBT_TRANSPORT transport)); 54 MOCK_METHOD(bool, L2CA_SetIdleTimeoutByBdAddr, 55 (const RawAddress& bd_addr, uint16_t timeout, tBT_TRANSPORT transport)); 56 MOCK_METHOD(bool, L2CA_GetRemoteChannelId, (uint16_t lcid, uint16_t* rcid)); 57 58 MOCK_METHOD(uint16_t, L2CA_ConnectReq, (uint16_t psm, const RawAddress& bd_addr)); 59 60 MOCK_METHOD(uint16_t, L2CA_ConnectReqWithSecurity, 61 (uint16_t psm, const RawAddress& bd_addr, uint16_t sec_level)); 62 MOCK_METHOD(bool, L2CA_SetAclLatency, (const RawAddress& bd_addr, tL2CAP_LATENCY latency)); 63 MOCK_METHOD(bool, L2CA_UseLatencyMode, (const RawAddress& bd_addr, bool use_latency_mode)); 64 MOCK_METHOD(bool, L2CA_GetPeerFeatures, 65 (const RawAddress& bd_addr, uint32_t* p_ext_feat, uint8_t* p_chnl_mask)); 66 MOCK_METHOD(bool, L2CA_SetAclPriority, (const RawAddress& bd_addr, tL2CAP_PRIORITY priority)); 67 MOCK_METHOD(void, L2CA_SetDefaultSubrate, 68 (uint16_t subrate_min, uint16_t subrate_max, uint16_t max_latency, uint16_t cont_num, 69 uint16_t timeout)); 70 MOCK_METHOD(void, L2CA_AdjustConnectionIntervals, 71 (uint16_t* min_interval, uint16_t* max_interval, uint16_t floor_interval)); 72 MOCK_METHOD(void, L2CA_SetEcosystemBaseInterval, (uint32_t base_interval)); 73 74 MOCK_METHOD(bool, L2CA_SubrateRequest, 75 (const RawAddress& bd_addr, uint16_t subrate_min, uint16_t subrate_max, 76 uint16_t max_latency, uint16_t cont_num, uint16_t timeout)); 77 MOCK_METHOD(uint16_t, L2CA_FlushChannel, (uint16_t lcid, uint16_t num_to_flush)); 78 MOCK_METHOD(bool, L2CA_SetTxPriority, (uint16_t cid, tL2CAP_CHNL_PRIORITY priority)); 79 MOCK_METHOD(bool, L2CA_SetChnlFlushability, (uint16_t cid, bool is_flushable)); 80 81 MOCK_METHOD(uint16_t, L2CA_ConnectLECocReq, 82 (uint16_t psm, const RawAddress& bd_addr, tL2CAP_LE_CFG_INFO* p_cfg, 83 uint16_t sec_level)); 84 MOCK_METHOD(std::vector<uint16_t>, L2CA_ConnectCreditBasedReq, 85 (uint16_t psm, const RawAddress& bd_addr, tL2CAP_LE_CFG_INFO* p_cfg)); 86 MOCK_METHOD(bool, L2CA_ConnectCreditBasedRsp, 87 (const RawAddress& bd_addr, uint8_t id, std::vector<uint16_t>& accepted_lcids, 88 tL2CAP_LE_RESULT_CODE result, tL2CAP_LE_CFG_INFO* p_cfg)); 89 MOCK_METHOD(uint16_t, L2CA_GetPeerLECocCredit, (const RawAddress& bd_addr, uint16_t lcid)); 90 91 MOCK_METHOD(bool, L2CA_ReconfigCreditBasedConnsReq, 92 (const RawAddress& bd_addr, std::vector<uint16_t>& lcids, tL2CAP_LE_CFG_INFO* p_cfg)); 93 94 MOCK_METHOD(bool, L2CA_UpdateBleConnParams, 95 (const RawAddress& bd_addr, uint16_t min_int, uint16_t max_int, uint16_t latency, 96 uint16_t timeout, uint16_t min_ce_len, uint16_t max_ce_len)); 97 MOCK_METHOD(void, L2CA_LockBleConnParamsForServiceDiscovery, 98 (const RawAddress& bd_addr, bool lock)); 99 MOCK_METHOD(void, L2CA_LockBleConnParamsForProfileConnection, 100 (const RawAddress& bd_addr, bool lock)); 101 MOCK_METHOD(tHCI_ROLE, L2CA_GetBleConnRole, (const RawAddress& bd_addr)); 102 MOCK_METHOD(bool, L2CA_SetLeGattTimeout, (const RawAddress& bd_addr, uint16_t idle_tout)); 103 MOCK_METHOD(bool, L2CA_MarkLeLinkAsActive, (const RawAddress& bd_addr)); 104 MOCK_METHOD(bool, L2CA_GetPeerLECocConfig, (uint16_t lcid, tL2CAP_LE_CFG_INFO* peer_cfg)); 105 MOCK_METHOD(uint16_t, L2CA_LeCreditDefault, ()); 106 MOCK_METHOD(uint16_t, L2CA_LeCreditThreshold, ()); 107 108 MOCK_METHOD(void, L2CA_Consolidate, (const RawAddress& identity_addr, const RawAddress& rpa)); 109 MOCK_METHOD(bool, L2CA_GetAclHandle, (uint16_t lcid, uint16_t* acl_handle)); 110 111 // Disconnect methods an active connection for both BR/EDR and BLE 112 MOCK_METHOD(bool, L2CA_DisconnectReq, (uint16_t cid)); 113 MOCK_METHOD(bool, L2CA_DisconnectLECocReq, (uint16_t cid)); 114 115 // Data write methods for both BR/EDR and BLE 116 MOCK_METHOD(tL2CAP_DW_RESULT, L2CA_DataWrite, (uint16_t cid, BT_HDR* p_data)); 117 MOCK_METHOD(tL2CAP_DW_RESULT, L2CA_LECocDataWrite, (uint16_t cid, BT_HDR* p_data)); 118 119 MOCK_METHOD(bool, L2CA_RegisterFixedChannel, (uint16_t fixed_cid, tL2CAP_FIXED_CHNL_REG* p_freg)); 120 MOCK_METHOD(bool, L2CA_ConnectFixedChnl, (uint16_t fixed_cid, const RawAddress& bd_addr)); 121 MOCK_METHOD(tL2CAP_DW_RESULT, L2CA_SendFixedChnlData, 122 (uint16_t fixed_cid, const RawAddress& bd_addr, BT_HDR* p_buf)); 123 MOCK_METHOD(bool, L2CA_RemoveFixedChnl, (uint16_t fixed_cid, const RawAddress& bd_addr)); 124 125 // Media methods 126 MOCK_METHOD(void, L2CA_SetMediaStreamChannel, (uint16_t local_media_cid, bool status)); 127 MOCK_METHOD(bool, L2CA_isMediaChannel, (uint16_t handle, uint16_t channel_id, bool is_local_cid)); 128 }; 129 130 void reset_interface(); 131 void set_interface(bluetooth::stack::l2cap::Interface* interface_); 132 133 } // namespace l2cap 134 } // namespace stack 135 } // namespace testing 136 } // namespace bluetooth 137