The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 2 /*!
AnnaBridge 171:3a7713b1edbc 3 * \file l2c_api.h
AnnaBridge 171:3a7713b1edbc 4 *
AnnaBridge 171:3a7713b1edbc 5 * \brief L2CAP subsystem API.
AnnaBridge 171:3a7713b1edbc 6 *
AnnaBridge 171:3a7713b1edbc 7 * $Date: 2015-10-09 09:08:23 -0700 (Fri, 09 Oct 2015) $
AnnaBridge 171:3a7713b1edbc 8 * $Revision: 4164 $
AnnaBridge 171:3a7713b1edbc 9 *
AnnaBridge 171:3a7713b1edbc 10 * Copyright (c) 2009 Wicentric, Inc., all rights reserved.
AnnaBridge 171:3a7713b1edbc 11 * Wicentric confidential and proprietary.
AnnaBridge 171:3a7713b1edbc 12 *
AnnaBridge 171:3a7713b1edbc 13 * IMPORTANT. Your use of this file is governed by a Software License Agreement
AnnaBridge 171:3a7713b1edbc 14 * ("Agreement") that must be accepted in order to download or otherwise receive a
AnnaBridge 171:3a7713b1edbc 15 * copy of this file. You may not use or copy this file for any purpose other than
AnnaBridge 171:3a7713b1edbc 16 * as described in the Agreement. If you do not agree to all of the terms of the
AnnaBridge 171:3a7713b1edbc 17 * Agreement do not use this file and delete all copies in your possession or control;
AnnaBridge 171:3a7713b1edbc 18 * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior
AnnaBridge 171:3a7713b1edbc 19 * to any use, copying or further distribution of this software.
AnnaBridge 171:3a7713b1edbc 20 */
AnnaBridge 171:3a7713b1edbc 21 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 22 #ifndef L2C_API_H
AnnaBridge 171:3a7713b1edbc 23 #define L2C_API_H
AnnaBridge 171:3a7713b1edbc 24
AnnaBridge 171:3a7713b1edbc 25 #include "dm_api.h"
AnnaBridge 171:3a7713b1edbc 26 #include "l2c_defs.h"
AnnaBridge 171:3a7713b1edbc 27
AnnaBridge 171:3a7713b1edbc 28 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 29 extern "C" {
AnnaBridge 171:3a7713b1edbc 30 #endif
AnnaBridge 171:3a7713b1edbc 31
AnnaBridge 171:3a7713b1edbc 32 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 33 Macros
AnnaBridge 171:3a7713b1edbc 34 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 35
AnnaBridge 171:3a7713b1edbc 36 /*! Control callback message events */
AnnaBridge 171:3a7713b1edbc 37 #define L2C_CTRL_FLOW_ENABLE_IND 0 /*! Data flow enabled */
AnnaBridge 171:3a7713b1edbc 38 #define L2C_CTRL_FLOW_DISABLE_IND 1 /*! Data flow disabled */
AnnaBridge 171:3a7713b1edbc 39
AnnaBridge 171:3a7713b1edbc 40 /*! Invalid channel registration ID for connection oriented channels */
AnnaBridge 171:3a7713b1edbc 41 #define L2C_COC_REG_ID_NONE 0
AnnaBridge 171:3a7713b1edbc 42
AnnaBridge 171:3a7713b1edbc 43 /*! Invalid channel ID for connection oriented channels */
AnnaBridge 171:3a7713b1edbc 44 #define L2C_COC_CID_NONE 0
AnnaBridge 171:3a7713b1edbc 45
AnnaBridge 171:3a7713b1edbc 46 /*! Connection oriented channel initiator/acceptor role */
AnnaBridge 171:3a7713b1edbc 47 #define L2C_COC_ROLE_NONE 0x00 /*! No role (unallocated) */
AnnaBridge 171:3a7713b1edbc 48 #define L2C_COC_ROLE_INITIATOR 0x01 /*! Channel initiator */
AnnaBridge 171:3a7713b1edbc 49 #define L2C_COC_ROLE_ACCEPTOR 0x02 /*! Channel acceptor */
AnnaBridge 171:3a7713b1edbc 50
AnnaBridge 171:3a7713b1edbc 51 /*! Connection oriented channel data confirm status values */
AnnaBridge 171:3a7713b1edbc 52 #define L2C_COC_DATA_SUCCESS 0 /*! Data request successful */
AnnaBridge 171:3a7713b1edbc 53 #define L2C_COC_DATA_ERR_MEMORY 1 /*! Out of memory */
AnnaBridge 171:3a7713b1edbc 54 #define L2C_COC_DATA_ERR_OVERFLOW 2 /*! Transaction overflow */
AnnaBridge 171:3a7713b1edbc 55
AnnaBridge 171:3a7713b1edbc 56 /*! Connection oriented channel callback events */
AnnaBridge 171:3a7713b1edbc 57 #define L2C_COC_CBACK_START 0x40 /*! L2C callback event starting value */
AnnaBridge 171:3a7713b1edbc 58 enum
AnnaBridge 171:3a7713b1edbc 59 {
AnnaBridge 171:3a7713b1edbc 60 L2C_COC_CONNECT_IND = L2C_COC_CBACK_START, /*! Channel connect indication */
AnnaBridge 171:3a7713b1edbc 61 L2C_COC_DISCONNECT_IND, /*! Channel disconnect indication */
AnnaBridge 171:3a7713b1edbc 62 L2C_COC_DATA_IND, /*! Received data indication */
AnnaBridge 171:3a7713b1edbc 63 L2C_COC_DATA_CNF /*! Transmit data confirm */
AnnaBridge 171:3a7713b1edbc 64 };
AnnaBridge 171:3a7713b1edbc 65
AnnaBridge 171:3a7713b1edbc 66 #define L2C_COC_CBACK_CBACK_END L2C_COC_DATA_CNF /*! L2C callback event ending value */
AnnaBridge 171:3a7713b1edbc 67
AnnaBridge 171:3a7713b1edbc 68 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 69 Data Types
AnnaBridge 171:3a7713b1edbc 70 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 71
AnnaBridge 171:3a7713b1edbc 72 /*! Connection oriented channel registration ID */
AnnaBridge 171:3a7713b1edbc 73 typedef uint16_t l2cCocRegId_t;
AnnaBridge 171:3a7713b1edbc 74
AnnaBridge 171:3a7713b1edbc 75 /*! Connection oriented channel registration structure */
AnnaBridge 171:3a7713b1edbc 76 typedef struct
AnnaBridge 171:3a7713b1edbc 77 {
AnnaBridge 171:3a7713b1edbc 78 uint16_t psm; /*! Protocol service multiplexer */
AnnaBridge 171:3a7713b1edbc 79 uint16_t mps; /*! Maximum receive PDU fragment size */
AnnaBridge 171:3a7713b1edbc 80 uint16_t mtu; /*! Maximum receive data packet size */
AnnaBridge 171:3a7713b1edbc 81 uint16_t credits; /*! Data packet receive credits for this channel */
AnnaBridge 171:3a7713b1edbc 82 bool_t authoriz; /*! TRUE if authorization is required */
AnnaBridge 171:3a7713b1edbc 83 uint8_t secLevel; /*! Channel minimum security level requirements */
AnnaBridge 171:3a7713b1edbc 84 uint8_t role; /*! Channel initiator/acceptor role */
AnnaBridge 171:3a7713b1edbc 85 } l2cCocReg_t;
AnnaBridge 171:3a7713b1edbc 86
AnnaBridge 171:3a7713b1edbc 87 /* Connection oriented channel connect indication structure */
AnnaBridge 171:3a7713b1edbc 88 typedef struct
AnnaBridge 171:3a7713b1edbc 89 {
AnnaBridge 171:3a7713b1edbc 90 wsfMsgHdr_t hdr; /*! Header structure */
AnnaBridge 171:3a7713b1edbc 91 uint16_t cid; /*! Local channel ID */
AnnaBridge 171:3a7713b1edbc 92 uint16_t peerMtu; /*! Data packet MTU peer can receive */
AnnaBridge 171:3a7713b1edbc 93 uint16_t psm; /*! Connected PSM */
AnnaBridge 171:3a7713b1edbc 94 } l2cCocConnectInd_t;
AnnaBridge 171:3a7713b1edbc 95
AnnaBridge 171:3a7713b1edbc 96 /* Connection oriented channel disconnect indication structure */
AnnaBridge 171:3a7713b1edbc 97 typedef struct
AnnaBridge 171:3a7713b1edbc 98 {
AnnaBridge 171:3a7713b1edbc 99 wsfMsgHdr_t hdr; /*! Header structure */
AnnaBridge 171:3a7713b1edbc 100 uint16_t cid; /*! Local channel ID */
AnnaBridge 171:3a7713b1edbc 101 uint16_t result; /*! Connection failure result code */
AnnaBridge 171:3a7713b1edbc 102 } l2cCocDisconnectInd_t;
AnnaBridge 171:3a7713b1edbc 103
AnnaBridge 171:3a7713b1edbc 104 /* Connection oriented channel data indication structure */
AnnaBridge 171:3a7713b1edbc 105 typedef struct
AnnaBridge 171:3a7713b1edbc 106 {
AnnaBridge 171:3a7713b1edbc 107 wsfMsgHdr_t hdr; /*! Header structure */
AnnaBridge 171:3a7713b1edbc 108 uint16_t cid; /*! Local channel ID */
AnnaBridge 171:3a7713b1edbc 109 uint8_t *pData; /*! Pointer to packet data */
AnnaBridge 171:3a7713b1edbc 110 uint16_t dataLen; /*! packet data length */
AnnaBridge 171:3a7713b1edbc 111 } l2cCocDataInd_t;
AnnaBridge 171:3a7713b1edbc 112
AnnaBridge 171:3a7713b1edbc 113 /* Connection oriented channel disconnect indication structure */
AnnaBridge 171:3a7713b1edbc 114 typedef struct
AnnaBridge 171:3a7713b1edbc 115 {
AnnaBridge 171:3a7713b1edbc 116 wsfMsgHdr_t hdr; /*! Header structure */
AnnaBridge 171:3a7713b1edbc 117 uint16_t cid; /*! Local channel ID */
AnnaBridge 171:3a7713b1edbc 118 } l2cCocDataCnf_t;
AnnaBridge 171:3a7713b1edbc 119
AnnaBridge 171:3a7713b1edbc 120 /*!
AnnaBridge 171:3a7713b1edbc 121 * Connection oriented channel event structure
AnnaBridge 171:3a7713b1edbc 122 *
AnnaBridge 171:3a7713b1edbc 123 * Connection oriented channel callback header parameters:
AnnaBridge 171:3a7713b1edbc 124 *
AnnaBridge 171:3a7713b1edbc 125 * \param hdr.event Callback event
AnnaBridge 171:3a7713b1edbc 126 * \param hdr.param DM connection ID
AnnaBridge 171:3a7713b1edbc 127 * \param hdr.status Event status (L2C_COC_DATA_CNF only)
AnnaBridge 171:3a7713b1edbc 128 */
AnnaBridge 171:3a7713b1edbc 129 typedef union
AnnaBridge 171:3a7713b1edbc 130 {
AnnaBridge 171:3a7713b1edbc 131 wsfMsgHdr_t hdr; /*! Header structure */
AnnaBridge 171:3a7713b1edbc 132 l2cCocConnectInd_t connectInd; /*! Channel connect indication */
AnnaBridge 171:3a7713b1edbc 133 l2cCocDisconnectInd_t disconnectInd; /*! Channel disconnect indication */
AnnaBridge 171:3a7713b1edbc 134 l2cCocDataInd_t dataInd; /*! Received data indication */
AnnaBridge 171:3a7713b1edbc 135 l2cCocDataCnf_t dataCnf; /*! Transmit data confirm */
AnnaBridge 171:3a7713b1edbc 136 } l2cCocEvt_t;
AnnaBridge 171:3a7713b1edbc 137
AnnaBridge 171:3a7713b1edbc 138 /*! Configurable parameters */
AnnaBridge 171:3a7713b1edbc 139 typedef struct
AnnaBridge 171:3a7713b1edbc 140 {
AnnaBridge 171:3a7713b1edbc 141 uint16_t reqTimeout; /*! Request timeout in seconds */
AnnaBridge 171:3a7713b1edbc 142 } l2cCfg_t;
AnnaBridge 171:3a7713b1edbc 143
AnnaBridge 171:3a7713b1edbc 144 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 145 Global Variables;
AnnaBridge 171:3a7713b1edbc 146 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 147
AnnaBridge 171:3a7713b1edbc 148 /*! Configuration pointer */
AnnaBridge 171:3a7713b1edbc 149 extern l2cCfg_t *pL2cCfg;
AnnaBridge 171:3a7713b1edbc 150
AnnaBridge 171:3a7713b1edbc 151 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 152 Callback Function Types
AnnaBridge 171:3a7713b1edbc 153 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 154
AnnaBridge 171:3a7713b1edbc 155 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 156 /*!
AnnaBridge 171:3a7713b1edbc 157 * \fn l2cDataCback_t
AnnaBridge 171:3a7713b1edbc 158 *
AnnaBridge 171:3a7713b1edbc 159 * \brief This callback function sends a received L2CAP packet to the client.
AnnaBridge 171:3a7713b1edbc 160 *
AnnaBridge 171:3a7713b1edbc 161 * \param handle The connection handle.
AnnaBridge 171:3a7713b1edbc 162 * \param len The length of the L2CAP payload data in pPacket.
AnnaBridge 171:3a7713b1edbc 163 * \param pPacket A buffer containing the packet.
AnnaBridge 171:3a7713b1edbc 164 *
AnnaBridge 171:3a7713b1edbc 165 * \return None.
AnnaBridge 171:3a7713b1edbc 166 */
AnnaBridge 171:3a7713b1edbc 167 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 168 typedef void (*l2cDataCback_t)(uint16_t handle, uint16_t len, uint8_t *pPacket);
AnnaBridge 171:3a7713b1edbc 169
AnnaBridge 171:3a7713b1edbc 170 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 171 /*!
AnnaBridge 171:3a7713b1edbc 172 * \fn l2cCtrlCback_t
AnnaBridge 171:3a7713b1edbc 173 *
AnnaBridge 171:3a7713b1edbc 174 * \brief This callback function sends control messages to the client.
AnnaBridge 171:3a7713b1edbc 175 *
AnnaBridge 171:3a7713b1edbc 176 * \param pMsg Pointer to message structure.
AnnaBridge 171:3a7713b1edbc 177 *
AnnaBridge 171:3a7713b1edbc 178 * \return None.
AnnaBridge 171:3a7713b1edbc 179 */
AnnaBridge 171:3a7713b1edbc 180 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 181 typedef void (*l2cCtrlCback_t)(wsfMsgHdr_t *pMsg);
AnnaBridge 171:3a7713b1edbc 182
AnnaBridge 171:3a7713b1edbc 183 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 184 /*!
AnnaBridge 171:3a7713b1edbc 185 * \fn l2cCocCback_t
AnnaBridge 171:3a7713b1edbc 186 *
AnnaBridge 171:3a7713b1edbc 187 * \brief This callback function sends data and other events to connection oriented
AnnaBridge 171:3a7713b1edbc 188 * channels clients.
AnnaBridge 171:3a7713b1edbc 189 *
AnnaBridge 171:3a7713b1edbc 190 * \param pMsg Pointer to message structure.
AnnaBridge 171:3a7713b1edbc 191 *
AnnaBridge 171:3a7713b1edbc 192 * \return None.
AnnaBridge 171:3a7713b1edbc 193 */
AnnaBridge 171:3a7713b1edbc 194 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 195 typedef void (*l2cCocCback_t)(l2cCocEvt_t *pMsg);
AnnaBridge 171:3a7713b1edbc 196
AnnaBridge 171:3a7713b1edbc 197 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 198 /*!
AnnaBridge 171:3a7713b1edbc 199 * \fn l2cCocAuthorCback_t
AnnaBridge 171:3a7713b1edbc 200 *
AnnaBridge 171:3a7713b1edbc 201 * \brief This callback function is used for authoriztion of connection oriented channels.
AnnaBridge 171:3a7713b1edbc 202 *
AnnaBridge 171:3a7713b1edbc 203 * \param connId DM connection ID.
AnnaBridge 171:3a7713b1edbc 204 * \param regId The registration instance requiring authorization.
AnnaBridge 171:3a7713b1edbc 205 * \param psm The PSM of the registration instance.
AnnaBridge 171:3a7713b1edbc 206 *
AnnaBridge 171:3a7713b1edbc 207 * \return L2C_CONN_SUCCESS if authorization is successful, any other value for failure.
AnnaBridge 171:3a7713b1edbc 208 */
AnnaBridge 171:3a7713b1edbc 209 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 210 typedef uint16_t (*l2cCocAuthorCback_t)(dmConnId_t connId, l2cCocRegId_t regId, uint16_t psm);
AnnaBridge 171:3a7713b1edbc 211
AnnaBridge 171:3a7713b1edbc 212 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 213 Function Declarations
AnnaBridge 171:3a7713b1edbc 214 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 215
AnnaBridge 171:3a7713b1edbc 216 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 217 /*!
AnnaBridge 171:3a7713b1edbc 218 * \fn L2cInit
AnnaBridge 171:3a7713b1edbc 219 *
AnnaBridge 171:3a7713b1edbc 220 * \brief Initialize L2C subsystem.
AnnaBridge 171:3a7713b1edbc 221 *
AnnaBridge 171:3a7713b1edbc 222 * \return None.
AnnaBridge 171:3a7713b1edbc 223 */
AnnaBridge 171:3a7713b1edbc 224 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 225 void L2cInit(void);
AnnaBridge 171:3a7713b1edbc 226
AnnaBridge 171:3a7713b1edbc 227 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 228 /*!
AnnaBridge 171:3a7713b1edbc 229 * \fn L2cMasterInit
AnnaBridge 171:3a7713b1edbc 230 *
AnnaBridge 171:3a7713b1edbc 231 * \brief Initialize L2C for operation as a Bluetooth LE master.
AnnaBridge 171:3a7713b1edbc 232 *
AnnaBridge 171:3a7713b1edbc 233 * \return None.
AnnaBridge 171:3a7713b1edbc 234 */
AnnaBridge 171:3a7713b1edbc 235 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 236 void L2cMasterInit(void);
AnnaBridge 171:3a7713b1edbc 237
AnnaBridge 171:3a7713b1edbc 238 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 239 /*!
AnnaBridge 171:3a7713b1edbc 240 * \fn L2cSlaveInit
AnnaBridge 171:3a7713b1edbc 241 *
AnnaBridge 171:3a7713b1edbc 242 * \brief Initialize L2C for operation as a Bluetooth LE slave.
AnnaBridge 171:3a7713b1edbc 243 *
AnnaBridge 171:3a7713b1edbc 244 * \return None.
AnnaBridge 171:3a7713b1edbc 245 */
AnnaBridge 171:3a7713b1edbc 246 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 247 void L2cSlaveInit(void);
AnnaBridge 171:3a7713b1edbc 248
AnnaBridge 171:3a7713b1edbc 249 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 250 /*!
AnnaBridge 171:3a7713b1edbc 251 * \fn L2cSlaveInit
AnnaBridge 171:3a7713b1edbc 252 *
AnnaBridge 171:3a7713b1edbc 253 * \brief Initialize L2C for operation with connection-oriented channels.
AnnaBridge 171:3a7713b1edbc 254 *
AnnaBridge 171:3a7713b1edbc 255 * \return None.
AnnaBridge 171:3a7713b1edbc 256 */
AnnaBridge 171:3a7713b1edbc 257 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 258 void L2cCocInit(void);
AnnaBridge 171:3a7713b1edbc 259
AnnaBridge 171:3a7713b1edbc 260 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 261 /*!
AnnaBridge 171:3a7713b1edbc 262 * \fn L2cRegister
AnnaBridge 171:3a7713b1edbc 263 *
AnnaBridge 171:3a7713b1edbc 264 * \brief called by the L2C client, such as ATT or SMP, to register for the given CID.
AnnaBridge 171:3a7713b1edbc 265 *
AnnaBridge 171:3a7713b1edbc 266 * \param cid channel identifier.
AnnaBridge 171:3a7713b1edbc 267 * \param dataCback Callback function for L2CAP data received for this CID.
AnnaBridge 171:3a7713b1edbc 268 * \param ctrlCback Callback function for control events for this CID.
AnnaBridge 171:3a7713b1edbc 269 *
AnnaBridge 171:3a7713b1edbc 270 * \return None.
AnnaBridge 171:3a7713b1edbc 271 */
AnnaBridge 171:3a7713b1edbc 272 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 273 void L2cRegister(uint16_t cid, l2cDataCback_t dataCback, l2cCtrlCback_t ctrlCback);
AnnaBridge 171:3a7713b1edbc 274
AnnaBridge 171:3a7713b1edbc 275 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 276 /*!
AnnaBridge 171:3a7713b1edbc 277 * \fn L2cDataReq
AnnaBridge 171:3a7713b1edbc 278 *
AnnaBridge 171:3a7713b1edbc 279 * \brief Send an L2CAP data packet on the given CID.
AnnaBridge 171:3a7713b1edbc 280 *
AnnaBridge 171:3a7713b1edbc 281 * \param cid The channel identifier.
AnnaBridge 171:3a7713b1edbc 282 * \param handle The connection handle. The client receives this handle from DM.
AnnaBridge 171:3a7713b1edbc 283 * \param len The length of the payload data in pPacket.
AnnaBridge 171:3a7713b1edbc 284 * \param pPacket A buffer containing the packet.
AnnaBridge 171:3a7713b1edbc 285 *
AnnaBridge 171:3a7713b1edbc 286 * \return None.
AnnaBridge 171:3a7713b1edbc 287 */
AnnaBridge 171:3a7713b1edbc 288 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 289 void L2cDataReq(uint16_t cid, uint16_t handle, uint16_t len, uint8_t *pL2cPacket);
AnnaBridge 171:3a7713b1edbc 290
AnnaBridge 171:3a7713b1edbc 291 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 292 /*!
AnnaBridge 171:3a7713b1edbc 293 * \fn L2cCocInit
AnnaBridge 171:3a7713b1edbc 294 *
AnnaBridge 171:3a7713b1edbc 295 * \brief Initialize L2C connection oriented channel subsystem.
AnnaBridge 171:3a7713b1edbc 296 *
AnnaBridge 171:3a7713b1edbc 297 * \return None.
AnnaBridge 171:3a7713b1edbc 298 */
AnnaBridge 171:3a7713b1edbc 299 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 300 void L2cCocInit(void);
AnnaBridge 171:3a7713b1edbc 301
AnnaBridge 171:3a7713b1edbc 302 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 303 /*!
AnnaBridge 171:3a7713b1edbc 304 * \fn L2cCocRegister
AnnaBridge 171:3a7713b1edbc 305 *
AnnaBridge 171:3a7713b1edbc 306 * \brief Register to use a connection oriented channel, as either a channel acceptor,
AnnaBridge 171:3a7713b1edbc 307 * initiator, or both. If registering as channel acceptor then the PSM is specified.
AnnaBridge 171:3a7713b1edbc 308 * After registering a connection can be established by the client using this
AnnaBridge 171:3a7713b1edbc 309 * registration instance.
AnnaBridge 171:3a7713b1edbc 310 *
AnnaBridge 171:3a7713b1edbc 311 * \param cback Client callback function.
AnnaBridge 171:3a7713b1edbc 312 * \param pReg Registration parameter structure.
AnnaBridge 171:3a7713b1edbc 313 *
AnnaBridge 171:3a7713b1edbc 314 * \return Registration instance ID or L2C_COC_REG_ID_NONE if registration failed.
AnnaBridge 171:3a7713b1edbc 315 */
AnnaBridge 171:3a7713b1edbc 316 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 317 l2cCocRegId_t L2cCocRegister(l2cCocCback_t cback, l2cCocReg_t *pReg);
AnnaBridge 171:3a7713b1edbc 318
AnnaBridge 171:3a7713b1edbc 319 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 320 /*!
AnnaBridge 171:3a7713b1edbc 321 * \fn L2cCocDeregister
AnnaBridge 171:3a7713b1edbc 322 *
AnnaBridge 171:3a7713b1edbc 323 * \brief Deregister and deallocate a connection oriented channel registration instance.
AnnaBridge 171:3a7713b1edbc 324 * This function should only be called if there are no active channels using this
AnnaBridge 171:3a7713b1edbc 325 * registration instance.
AnnaBridge 171:3a7713b1edbc 326 *
AnnaBridge 171:3a7713b1edbc 327 * \param regId Registration instance ID.
AnnaBridge 171:3a7713b1edbc 328 *
AnnaBridge 171:3a7713b1edbc 329 * \return None.
AnnaBridge 171:3a7713b1edbc 330 */
AnnaBridge 171:3a7713b1edbc 331 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 332 void L2cCocDeregister(l2cCocRegId_t regId);
AnnaBridge 171:3a7713b1edbc 333
AnnaBridge 171:3a7713b1edbc 334 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 335 /*!
AnnaBridge 171:3a7713b1edbc 336 * \fn L2cCocConnectReq
AnnaBridge 171:3a7713b1edbc 337 *
AnnaBridge 171:3a7713b1edbc 338 * \brief Initiate a connection to the given peer PSM.
AnnaBridge 171:3a7713b1edbc 339 *
AnnaBridge 171:3a7713b1edbc 340 * \param connId DM connection ID.
AnnaBridge 171:3a7713b1edbc 341 * \param regId The associated registration instance.
AnnaBridge 171:3a7713b1edbc 342 * \param psm Peer PSM.
AnnaBridge 171:3a7713b1edbc 343 *
AnnaBridge 171:3a7713b1edbc 344 * \return Local CID or L2C_COC_CID_NONE none if failure.
AnnaBridge 171:3a7713b1edbc 345 */
AnnaBridge 171:3a7713b1edbc 346 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 347 uint16_t L2cCocConnectReq(dmConnId_t connId, l2cCocRegId_t regId, uint16_t psm);
AnnaBridge 171:3a7713b1edbc 348
AnnaBridge 171:3a7713b1edbc 349 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 350 /*!
AnnaBridge 171:3a7713b1edbc 351 * \fn L2cCocDisconnectReq
AnnaBridge 171:3a7713b1edbc 352 *
AnnaBridge 171:3a7713b1edbc 353 * \brief Disconnect the channel for the given CID.
AnnaBridge 171:3a7713b1edbc 354 *
AnnaBridge 171:3a7713b1edbc 355 * \param cid Channel ID.
AnnaBridge 171:3a7713b1edbc 356 *
AnnaBridge 171:3a7713b1edbc 357 * \return None.
AnnaBridge 171:3a7713b1edbc 358 */
AnnaBridge 171:3a7713b1edbc 359 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 360 void L2cCocDisconnectReq(uint16_t cid);
AnnaBridge 171:3a7713b1edbc 361
AnnaBridge 171:3a7713b1edbc 362 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 363 /*!
AnnaBridge 171:3a7713b1edbc 364 * \fn L2cCocDataReq
AnnaBridge 171:3a7713b1edbc 365 *
AnnaBridge 171:3a7713b1edbc 366 * \brief Send an L2CAP data packet on the given connection oriented CID.
AnnaBridge 171:3a7713b1edbc 367 *
AnnaBridge 171:3a7713b1edbc 368 * \param cid The local channel identifier.
AnnaBridge 171:3a7713b1edbc 369 * \param len The length of the payload data in pPacket.
AnnaBridge 171:3a7713b1edbc 370 * \param pPacket Packet payload data.
AnnaBridge 171:3a7713b1edbc 371 *
AnnaBridge 171:3a7713b1edbc 372 * \return None.
AnnaBridge 171:3a7713b1edbc 373 */
AnnaBridge 171:3a7713b1edbc 374 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 375 void L2cCocDataReq(uint16_t cid, uint16_t len, uint8_t *pPayload);
AnnaBridge 171:3a7713b1edbc 376
AnnaBridge 171:3a7713b1edbc 377 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 378 /*!
AnnaBridge 171:3a7713b1edbc 379 * \fn L2cCocErrorTest
AnnaBridge 171:3a7713b1edbc 380 *
AnnaBridge 171:3a7713b1edbc 381 * \brief For testing purposes only.
AnnaBridge 171:3a7713b1edbc 382 *
AnnaBridge 171:3a7713b1edbc 383 * \param result Result code
AnnaBridge 171:3a7713b1edbc 384 *
AnnaBridge 171:3a7713b1edbc 385 * \return None.
AnnaBridge 171:3a7713b1edbc 386 */
AnnaBridge 171:3a7713b1edbc 387 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 388 void L2cCocErrorTest(uint16_t result);
AnnaBridge 171:3a7713b1edbc 389
AnnaBridge 171:3a7713b1edbc 390 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 391 /*!
AnnaBridge 171:3a7713b1edbc 392 * \fn L2cCocCreditSendTest
AnnaBridge 171:3a7713b1edbc 393 *
AnnaBridge 171:3a7713b1edbc 394 * \brief For testing purposes only.
AnnaBridge 171:3a7713b1edbc 395 *
AnnaBridge 171:3a7713b1edbc 396 * \param cid The local channel identifier.
AnnaBridge 171:3a7713b1edbc 397 * \param credits Credits to send.
AnnaBridge 171:3a7713b1edbc 398 *
AnnaBridge 171:3a7713b1edbc 399 * \return None.
AnnaBridge 171:3a7713b1edbc 400 */
AnnaBridge 171:3a7713b1edbc 401 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 402 void L2cCocCreditSendTest(uint16_t cid, uint16_t credits);
AnnaBridge 171:3a7713b1edbc 403
AnnaBridge 171:3a7713b1edbc 404 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 405 /*!
AnnaBridge 171:3a7713b1edbc 406 * \fn L2cDmConnUpdateReq
AnnaBridge 171:3a7713b1edbc 407 *
AnnaBridge 171:3a7713b1edbc 408 * \brief For internal use only. This function is called by DM to send an L2CAP
AnnaBridge 171:3a7713b1edbc 409 * connection update request.
AnnaBridge 171:3a7713b1edbc 410 *
AnnaBridge 171:3a7713b1edbc 411 * \param handle The connection handle.
AnnaBridge 171:3a7713b1edbc 412 * \param pConnSpec Pointer to the connection specification structure.
AnnaBridge 171:3a7713b1edbc 413 *
AnnaBridge 171:3a7713b1edbc 414 * \return None.
AnnaBridge 171:3a7713b1edbc 415 */
AnnaBridge 171:3a7713b1edbc 416 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 417 void L2cDmConnUpdateReq(uint16_t handle, hciConnSpec_t *pConnSpec);
AnnaBridge 171:3a7713b1edbc 418
AnnaBridge 171:3a7713b1edbc 419 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 420 /*!
AnnaBridge 171:3a7713b1edbc 421 * \fn L2cDmConnUpdateRsp
AnnaBridge 171:3a7713b1edbc 422 *
AnnaBridge 171:3a7713b1edbc 423 * \brief For internal use only. This function is called by DM to send an L2CAP
AnnaBridge 171:3a7713b1edbc 424 * connection update response.
AnnaBridge 171:3a7713b1edbc 425 *
AnnaBridge 171:3a7713b1edbc 426 * \param identifier Identifier value previously passed from L2C to DM.
AnnaBridge 171:3a7713b1edbc 427 * \param handle The connection handle.
AnnaBridge 171:3a7713b1edbc 428 * \param result Connection update response result.
AnnaBridge 171:3a7713b1edbc 429 *
AnnaBridge 171:3a7713b1edbc 430 * \return None.
AnnaBridge 171:3a7713b1edbc 431 */
AnnaBridge 171:3a7713b1edbc 432 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 433 void L2cDmConnUpdateRsp(uint8_t identifier, uint16_t handle, uint16_t result);
AnnaBridge 171:3a7713b1edbc 434
AnnaBridge 171:3a7713b1edbc 435 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 436 };
AnnaBridge 171:3a7713b1edbc 437 #endif
AnnaBridge 171:3a7713b1edbc 438
AnnaBridge 171:3a7713b1edbc 439 #endif /* L2C_API_H */