• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2017 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 #pragma once
17 
18 #include "mca_api.h"
19 
20 namespace SYSTEM_BT_TOOLS_MCAP_TOOL {
21 
22 const tMCA_CHNL_CFG* get_test_channel_config();
23 
24 class McapMdl {
25  public:
26   /**
27    * An abstraction for the MCAP Data Link (MDL)
28    * @param mcap_test_interface Underlining MCAP interface to Bluetooth stack
29    * @param mcl_handle Parent MCL handle
30    * @param mdep_handle Associated MDEP handle
31    * @param mdl_id Desired MDL ID, application supported
32    * @param dep_id Peer or self MDEP ID
33    * @param cfg Configuration flags
34    */
35   McapMdl(btmcap_test_interface_t* mcap_test_interface, tMCA_CL mcl_handle,
36           tMCA_DEP mdep_handle, uint16_t mdl_id, uint8_t dep_id, uint8_t cfg);
37   /**
38    * Update this MDL's context so that it can be reused for a new connection
39    * This will close this MDL connection at the same time
40    * @param mdep_handle Associated MDEP handle
41    * @param dep_id Peer or self MDEP ID
42    * @param cfg Configuration flags
43    * @return True on success
44    */
45   bool UpdateContext(tMCA_DEP mdep_handle, uint8_t dep_id, uint8_t cfg);
46   /**
47    * Request to create this MDL to remote device through MCL
48    * The create command won't initiate an L2CAP connection unless a non-null
49    * config is given
50    * @param data_psm Data channel L2CAP PSM
51    * @return True on success
52    */
53   bool Create(uint16_t data_psm, bool should_connect);
54   /**
55    * Connect this MDL to remote by configuring the data channel
56    * @return True on success
57    */
58   bool Connect();
59   /**
60    * Close this MDL connection
61    * @return True on success
62    */
63   bool Close();
64   /**
65    * Request to reconnect connect this MDL to remote device through MCL
66    * @param data_psm Data channel L2CAP PSM
67    * @return True on success
68    */
69   bool Reconnect(uint16_t data_psm);
70   /**
71    * Respond to a reconnect request from peer
72    * @return True on success
73    */
74   bool ReconnectResponse();
75   /**
76    * Respond to a connect request from peer
77    * @return True on success
78    */
79   bool CreateResponse();
80   bool IsConnected();
81   int32_t GetResponseCode();
82   void SetResponseCode(int32_t rsp_code);
83   uint16_t GetId();
84   void SetHandle(tMCA_DL mdl_handle);
85   tMCA_DL GetHandle();
86   void SetMtu(uint16_t mtu);
87   uint16_t GetMtu();
88 
89  private:
90   // Initialized at start up
91   btmcap_test_interface_t* _mcap_test_interface;
92   tMCA_CL _mcl_handle;
93   tMCA_DEP _mdep_handle;
94   uint16_t _mdl_id;
95   uint8_t _dep_id;
96   uint8_t _cfg;
97 
98   // Initialized later
99   tMCA_DL _mdl_handle = 0;
100   uint16_t _data_mtu = 0;
101   int32_t _mdl_rsp_code = -1;
102 };
103 
104 }  // namespace SYSTEM_BT_TOOLS_MCAP_TOOL
105