Home | History | Annotate | Download | only in mcap_tool
      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