|
/*******************************************************************************
|
|
File Name: CYBLE_StackL2cap.h
|
|
Version 2.0
|
|
|
|
Description:
|
|
This file contains the L2CAP APIs of the BLE Host Stack IP
|
|
|
|
Related Document:
|
|
BLE Standard Spec - CoreV4.1, CSS, CSAs, ESR05, ESR06
|
|
|
|
********************************************************************************
|
|
Copyright 2014-2015, Cypress Semiconductor Corporation. All rights reserved.
|
|
You may use this file only in accordance with the license, terms, conditions,
|
|
disclaimers, and limitations in the end user license agreement accompanying
|
|
the software package with which this file was provided.
|
|
*******************************************************************************/
|
|
|
|
|
|
#ifndef CY_BLE_CYBLE_STACK_L2CAP_H
|
|
#define CY_BLE_CYBLE_STACK_L2CAP_H
|
|
|
|
|
|
/***************************************
|
|
##Common stack includes
|
|
***************************************/
|
|
|
|
#include "BLE_StackGap.h"
|
|
|
|
|
|
/***************************************
|
|
##Exported Constants
|
|
***************************************/
|
|
|
|
#ifdef L2CAP_SUPPORT_CBFC_MODE
|
|
|
|
/* Protocol and Service Multiplexers (PSMs) */
|
|
#define CYBLE_L2CAP_PSM_SDP 0x0001u
|
|
#define CYBLE_L2CAP_PSM_RFCOMM 0x0003u
|
|
#define CYBLE_L2CAP_PSM_TCS_BIN 0x0005u
|
|
#define CYBLE_L2CAP_PSM_TCS_BIN_CORDLESS 0x0007u
|
|
#define CYBLE_L2CAP_PSM_BNEP 0x000Fu
|
|
#define CYBLE_L2CAP_PSM_HID_CONTROL 0x0011u
|
|
#define CYBLE_L2CAP_PSM_HID_INTERRUPT 0x0013u
|
|
#define CYBLE_L2CAP_PSM_UPNP 0x0015u
|
|
#define CYBLE_L2CAP_PSM_AVCTP 0x0017u
|
|
#define CYBLE_L2CAP_PSM_AVDTP 0x0019u
|
|
#define CYBLE_L2CAP_PSM_AVCTP_BROWSING 0x001Bu
|
|
#define CYBLE_L2CAP_PSM_UDI_C_PLANE 0x001Du
|
|
#define CYBLE_L2CAP_PSM_ATT 0x001Fu
|
|
#define CYBLE_L2CAP_PSM_3DSP 0x0021u
|
|
#define CYBLE_L2CAP_PSM_LE_PSM_IPSP 0x0023u
|
|
|
|
/* L2CAP Invalid PSM */
|
|
#define CYBLE_L2CAP_PSM_INVALID 0x0000u
|
|
|
|
/* L2CAP Header Size */
|
|
#define CYBLE_L2CAP_HDR_LEN 4u
|
|
#define CYBLE_L2CAP_CREDIT_MODE_HDR_LEN 6u
|
|
|
|
/* L2CAP Connect Results */
|
|
#define CYBLE_L2CAP_CONNECTION_SUCCESSFUL 0x0000u
|
|
#define CYBLE_L2CAP_CONNECTION_PENDING 0x0001u
|
|
#define CYBLE_L2CAP_CONNECTION_REFUSED_PSM_UNSUPPORTED 0x0002u
|
|
#define CYBLE_L2CAP_CONNECTION_REFUSED_SECURITY_BLOCK 0x0003u
|
|
#define CYBLE_L2CAP_CONNECTION_REFUSED_NO_RESOURCE 0x0004u
|
|
#define CYBLE_L2CAP_CONNECTION_REFUSED_AUTHENTICATION_INSUFFICIENT 0x0005u
|
|
#define CYBLE_L2CAP_CONNECTION_REFUSED_AUTHORIZATION_INSUFFICIENT 0x0006u
|
|
#define CYBLE_L2CAP_CONNECTION_REFUSED_ENC_KEY_SIZE_INSUFFICIENT 0x0007u
|
|
|
|
|
|
|
|
/*##Response codes for Connection parameter update request */
|
|
|
|
/* Connection Parameters accepted */
|
|
#define CYBLE_L2CAP_CONN_PARAM_ACCEPTED 0x0000u
|
|
|
|
/* Connection Parameters rejected */
|
|
#define CYBLE_L2CAP_CONN_PARAM_REJECTED 0x0001u
|
|
|
|
/* Config Parameter index for PSM */
|
|
#define CYBLE_L2CAP_CONFIG_POS_PSM 0x00u
|
|
|
|
/* Config Parameter index for CBFC Channel */
|
|
#define CYBLE_L2CAP_CONFIG_POS_CHANNEL 0x01u
|
|
|
|
/* Config Parameter index for L2CAP Signalling timeout */
|
|
#define CYBLE_L2CAP_CONFIG_POS_SIG_TO 0x02u
|
|
|
|
|
|
/***************************************
|
|
##Exported Enumerations
|
|
***************************************/
|
|
|
|
/* Reason for command reject event - CYBLE_EVT_L2CAP_COMMAND_REJ */
|
|
typedef enum
|
|
{
|
|
/* Command Not Understood */
|
|
CYBLE_L2CAP_COMMAND_NOT_UNDERSTOOD = 0x0000u,
|
|
|
|
/* Signaling MTU exceeded */
|
|
CYBLE_L2CAP_SIGNALLING_MTU_EXCEEDED,
|
|
|
|
/* Invalid Connection Identifier in request */
|
|
CYBLE_L2CAP_INVALID_CID_IN_REQUEST
|
|
|
|
}CYBLE_L2CAP_COMMAND_REJ_REASON_T;
|
|
|
|
/* The result code of call back structures for L2CAP */
|
|
typedef enum
|
|
{
|
|
/* Operation Successful */
|
|
CYBLE_L2CAP_RESULT_SUCCESS = 0x0000u,
|
|
|
|
/* Command timeout, if l2cap signaling channel timeout occurs, app should disconnect.*/
|
|
CYBLE_L2CAP_RESULT_COMMAND_TIMEOUT = 0x2318u,
|
|
|
|
/* Invalid sdu length */
|
|
CYBLE_L2CAP_RESULT_INCORRECT_SDU_LENGTH = 0x2347u,
|
|
|
|
/* Not enough credit to perform this operation */
|
|
CYBLE_L2CAP_RESULT_NOT_ENOUGH_CREDITS = 0x2371u,
|
|
|
|
/* Credit overflow. Total credit exceeded 65535 (maximum) */
|
|
CYBLE_L2CAP_RESULT_CREDIT_OVERFLOW = 0x2373u,
|
|
|
|
/* Invalid credit value, receive credit is Zero */
|
|
CYBLE_L2CAP_RESULT_UNACCEPTABLE_CREDIT_VALUE = 0x2374u
|
|
|
|
}CYBLE_L2CAP_RESULT_PARAM_T;
|
|
|
|
|
|
/***************************************
|
|
##Exported data types
|
|
***************************************/
|
|
|
|
/* L2CAP Credit based flow Connection parameter */
|
|
typedef struct
|
|
{
|
|
/* MTU - Maximum SDU Size
|
|
|
|
The MTU field specifies the maximum SDU size (in octets) that the L2CAP
|
|
layer entity sending the LE Credit Based Connection Request can receive
|
|
on this channel. L2CAP implementations shall support a minimum MTU size
|
|
of 23 octets. */
|
|
uint16 mtu;
|
|
|
|
/* MPS - Maximum PDU Size
|
|
|
|
The MPS field specifies the maximum payload size (in octets) that the
|
|
L2CAP layer entity sending the LE Credit Based Connection Request is
|
|
capable of receiving on this channel. L2CAP implementations shall support
|
|
a minimum MPS of 23 octets and may support an MPS up to 65533 octets. */
|
|
uint16 mps;
|
|
|
|
/* Initial number of Credits
|
|
|
|
The initial credit value indicates the number of LE-frames that the peer
|
|
device can send to the L2CAP layer entity sending the LE Credit Based
|
|
Connection Request. The initial credit value shall be in the range of 0 to
|
|
65535. */
|
|
uint16 credit;
|
|
|
|
}CYBLE_L2CAP_CBFC_CONNECT_PARAM_T;
|
|
|
|
/* Connect indication parameter*/
|
|
typedef struct
|
|
{
|
|
/* bd handle of the remote device */
|
|
uint8 bdHandle;
|
|
|
|
/* Local CID */
|
|
uint16 lCid;
|
|
|
|
/* PSM value for the Protocol */
|
|
uint16 psm;
|
|
|
|
/* L2CAP Credit based flow Connection parameter */
|
|
CYBLE_L2CAP_CBFC_CONNECT_PARAM_T connParam;
|
|
|
|
}CYBLE_L2CAP_CBFC_CONN_IND_PARAM_T;
|
|
|
|
/* Connect confirmation parameter*/
|
|
typedef struct
|
|
{
|
|
/* bd handle of the remote device */
|
|
uint8 bdHandle;
|
|
|
|
/* Local CID*/
|
|
uint16 lCid;
|
|
|
|
/* Response codes for Connection parameter update request */
|
|
uint16 response;
|
|
|
|
/* L2CAP Credit based flow Connection parameter */
|
|
CYBLE_L2CAP_CBFC_CONNECT_PARAM_T connParam;
|
|
|
|
}CYBLE_L2CAP_CBFC_CONN_CNF_PARAM_T;
|
|
|
|
/* Disconnect confirmation parameter */
|
|
typedef struct
|
|
{
|
|
/* Local CID */
|
|
uint16 lCid;
|
|
|
|
/* The result field indicates the outcome of the connection request. The result
|
|
value of 0x0000 indicates success while a non-zero value indicates the connection
|
|
request failed or is pending. */
|
|
CYBLE_L2CAP_RESULT_PARAM_T result;
|
|
|
|
}CYBLE_L2CAP_CBFC_DISCONN_CNF_PARAM_T;
|
|
|
|
/* Receive Data parameter */
|
|
typedef struct
|
|
{
|
|
/* Local CID */
|
|
uint16 lCid;
|
|
|
|
/* A result value of 0x0000 indicates success, while a non-zero value
|
|
indicates an error condition (e.g. peer device violating credit flow, or MTU size limit) */
|
|
CYBLE_L2CAP_RESULT_PARAM_T result;
|
|
|
|
/* Received L2cap Data */
|
|
uint8 * rxData;
|
|
|
|
/* Received L2cap Data Length */
|
|
uint16 rxDataLength;
|
|
|
|
}CYBLE_L2CAP_CBFC_RX_PARAM_T;
|
|
|
|
/* Rx credit info parameter*/
|
|
typedef struct
|
|
{
|
|
/* Local CID */
|
|
uint16 lCid;
|
|
|
|
/* The number of credits (LE-frames) */
|
|
uint16 credit;
|
|
|
|
}CYBLE_L2CAP_CBFC_LOW_RX_CREDIT_PARAM_T;
|
|
|
|
/* Tx credit info parameter */
|
|
typedef struct
|
|
{
|
|
/* Local CID */
|
|
uint16 lCid;
|
|
|
|
/* A result value of 0x0000 indicates success, while a non-zero value
|
|
indicates an error condition (e.g. credit overflow, if total number of credits
|
|
crosses specification defined maximum limit of 0xFFFF) */
|
|
CYBLE_L2CAP_RESULT_PARAM_T result;
|
|
|
|
/* The number of credits (LE-frames) */
|
|
uint16 credit;
|
|
|
|
}CYBLE_L2CAP_CBFC_LOW_TX_CREDIT_PARAM_T;
|
|
|
|
/* Data Write parameter*/
|
|
typedef struct
|
|
{
|
|
/*Local CID*/
|
|
uint16 lCid;
|
|
|
|
/* The result field indicates the outcome of the connection request. The result
|
|
value of 0x0000 indicates success while a non-zero value indicates the connection
|
|
request failed or is pending. */
|
|
CYBLE_L2CAP_RESULT_PARAM_T result;
|
|
|
|
/* Currently NULL. For future usage */
|
|
uint8 * buffer;
|
|
|
|
/* Currently 0. For future usage */
|
|
uint16 bufferLength;
|
|
|
|
}CYBLE_L2CAP_CBFC_DATA_WRITE_PARAM_T;
|
|
|
|
|
|
/***************************************
|
|
##Exported APIs
|
|
***************************************/
|
|
|
|
/******************************************************************************
|
|
##Function Name: CyBle_L2capCbfcRegisterPsm
|
|
*******************************************************************************
|
|
|
|
Summary:
|
|
This function registers a new upper layer protocol or PSM to L2CAP, along
|
|
with the set of callbacks for the L2CAP Credit Based Flow Control mode. This
|
|
is a blocking function. No event is generated on calling this function.
|
|
|
|
Refer Bluetooth 4.1 core specification, Volume 3, Part A, section 3.4
|
|
for more details about credit based flow control mode of operation.
|
|
|
|
Parameters:
|
|
l2capPsm: PSM value of the higher-level protocol
|
|
creditLwm: Upper Layer defined Receive Credit Low Mark
|
|
|
|
Return Value:
|
|
CYBLE_API_RESULT_T : Return value indicates if the function succeeded or
|
|
failed. Following are the possible error codes.
|
|
<table>
|
|
Errors codes Description
|
|
------------ -----------
|
|
CYBLE_ERROR_OK On successful operation
|
|
CYBLE_ERROR_INVALID_PARAMETER If 'l2capPsm' is 0
|
|
CYBLE_ERROR_INSUFFICIENT_RESOURCES Cannot register more than
|
|
one PSM
|
|
CYBLE_ERROR_L2CAP_PSM_WRONG_ENCODING PSM value must be an odd
|
|
number and the Most
|
|
Significant Byte must
|
|
have Least Significant
|
|
Bit value set to '0'.
|
|
If PSM does not follow
|
|
this guideline, this
|
|
return code is generated.
|
|
CYBLE_ERROR_L2CAP_PSM_ALREADY_REGISTERED PSM already Registered
|
|
</table>
|
|
|
|
******************************************************************************/
|
|
CYBLE_API_RESULT_T CyBle_L2capCbfcRegisterPsm
|
|
(
|
|
uint16 l2capPsm,
|
|
uint16 creditLwm
|
|
);
|
|
|
|
|
|
/******************************************************************************
|
|
##Function Name: CyBle_L2capCbfcUnregisterPsm
|
|
*******************************************************************************
|
|
|
|
Summary:
|
|
This function de-registers an upper layer protocol or LE_PSM from L2CAP for
|
|
the L2CAP Credit Based Flow Control mode. This is a blocking function. No
|
|
event is generated on calling this function.
|
|
|
|
Parameters:
|
|
l2capPsm: PSM value of the higher-level protocol
|
|
|
|
Return:
|
|
CYBLE_API_RESULT_T : Return value indicates if the function succeeded or
|
|
failed. Following are the possible error codes.
|
|
<table>
|
|
Errors codes Description
|
|
------------ -----------
|
|
CYBLE_ERROR_OK On successful operation
|
|
CYBLE_ERROR_MEMORY_ALLOCATION_FAILED Memory allocation failed
|
|
CYBLE_ERROR_L2CAP_PSM_WRONG_ENCODING L2CAP PSM value specified is
|
|
incorrect or does not exist
|
|
</table>
|
|
|
|
******************************************************************************/
|
|
CYBLE_API_RESULT_T CyBle_L2capCbfcUnregisterPsm (uint16 l2capPsm);
|
|
|
|
|
|
/******************************************************************************
|
|
##Function Name: CyBle_L2capCbfcConnectReq
|
|
*******************************************************************************
|
|
|
|
Summary:
|
|
This L2CAP function initiates L2CAP channel establishment procedure in Credit
|
|
Based Flow Control (CBFC) mode. Connection establishment is initiated to the
|
|
specified remote Bluetooth device, for the specified PSM representing an
|
|
upper layer protocol above L2CAP. This is a non-blocking function.
|
|
|
|
At the receiver's end, CYBLE_EVT_L2CAP_CBFC_CONN_IND event is generated.
|
|
In response to this call, CYBLE_EVT_L2CAP_CBFC_CONN_CNF event is generated
|
|
at the sender's end.
|
|
|
|
Refer to Bluetooth 4.1 core specification, Volume 3, Part A, section 4.22 for
|
|
more details about this operation.
|
|
|
|
Parameters:
|
|
bdHandle: Peer device handle.
|
|
remotePsm: Remote PSM, representing the upper layer protocol above L2CAP.
|
|
localPsm: Local PSM, representing the upper layer protocol above L2CAP.
|
|
param: This parameter must be a pointer to the
|
|
CYBLE_L2CAP_CBFC_CONNECT_PARAM_T variable containing the connection
|
|
parameters for the L2CAP channel.
|
|
|
|
Return Value:
|
|
CYBLE_API_RESULT_T : Return value indicates if the function succeeded or
|
|
failed. Following are the possible error codes.
|
|
<table>
|
|
Errors codes Description
|
|
------------ -----------
|
|
CYBLE_ERROR_OK On successful operation
|
|
CYBLE_ERROR_INVALID_PARAMETER If "param" is NULL
|
|
CYBLE_ERROR_INSUFFICIENT_RESOURCES Insufficient resources
|
|
CYBLE_L2CAP_PSM_NOT_REGISTERED PSM not Registered
|
|
</table>
|
|
|
|
******************************************************************************/
|
|
CYBLE_API_RESULT_T CyBle_L2capCbfcConnectReq
|
|
(
|
|
uint8 bdHandle,
|
|
uint16 remotePsm,
|
|
uint16 localPsm,
|
|
CYBLE_L2CAP_CBFC_CONNECT_PARAM_T * param
|
|
);
|
|
|
|
|
|
/******************************************************************************
|
|
##Function Name: CyBle_L2capCbfcConnectRsp
|
|
*******************************************************************************
|
|
|
|
Summary:
|
|
This L2CAP function enables an upper layer protocol to respond to L2CAP
|
|
connection request for LE Credit Based Flow Control mode of the specified PSM
|
|
from the specified remote Bluetooth device. This is a non-blocking function.
|
|
It is mandatory that the upper layer PSM always responds back by calling this
|
|
function upon receiving CBFC Connection Request
|
|
(CYBLE_EVT_L2CAP_CBFC_CONN_IND) event.
|
|
|
|
The channel is established (opened) only when the PSM concerned responds back
|
|
with an event indicating success (CYBLE_EVT_L2CAP_CBFC_CONN_CNF, at the peer
|
|
device's end). Otherwise, the channel establishment request from the peer
|
|
will be rejected by L2CAP with appropriate result and status as received
|
|
from the upper layer PSM.
|
|
|
|
Refer to Bluetooth 4.1 core specification, Volume 3, Part A, section 4.23
|
|
for more details about this operation.
|
|
|
|
Parameters:
|
|
localCid: This parameter specifies the local L2CAP channel end-point for this
|
|
new L2CAP channel. On receipt of L2CAP Connect Request command
|
|
from the peer, local L2CAP will temporarily create a channel.
|
|
This parameter identifies the new channel. If the upper layer PSM
|
|
chooses to reject this connection, this temporary channel will be
|
|
closed.
|
|
response: This parameter specifies the response of the upper layer for the
|
|
new L2CAP channel establishment request from the peer. It must be
|
|
set to a value as specified in L2CAP Connect Result Codes. Refer
|
|
to Bluetooth 4.1 core specification, Volume 3, Part A, section
|
|
4.23 for more details.
|
|
param: This parameter must be a pointer to the
|
|
CYBLE_L2CAP_CBFC_CONNECT_PARAM_T variable containing the connection
|
|
parameters for the L2CAP channel.
|
|
|
|
Return:
|
|
CYBLE_API_RESULT_T : Return value indicates if the function succeeded or
|
|
failed. Following are the possible error codes.
|
|
<table>
|
|
Errors codes Description
|
|
------------ -----------
|
|
CYBLE_ERROR_OK On successful
|
|
operation
|
|
CYBLE_ERROR_INVALID_PARAMETER If "param" is NULL
|
|
CYBLE_ERROR_L2CAP_CONNECTION_ENTITY_NOT_FOUND Connection entity
|
|
is not found
|
|
</table>
|
|
|
|
******************************************************************************/
|
|
CYBLE_API_RESULT_T CyBle_L2capCbfcConnectRsp
|
|
(
|
|
uint16 localCid,
|
|
uint16 response,
|
|
CYBLE_L2CAP_CBFC_CONNECT_PARAM_T * param
|
|
);
|
|
|
|
|
|
/******************************************************************************
|
|
##Function Name: CyBle_L2capCbfcSendFlowControlCredit
|
|
*******************************************************************************
|
|
|
|
Summary:
|
|
This L2CAP function enables an upper layer protocol to send LE Flow Control
|
|
Credit packet to peer Bluetooth device, when it is capable of receiving
|
|
additional LE-frames. This is a non-blocking function.
|
|
|
|
This function is invoked when the device is expecting more data from the peer
|
|
device and it gets an event indicating that the peer device is low on credits
|
|
CYBLE_EVT_L2CAP_CBFC_RX_CREDIT_IND for which it needs to respond by sending
|
|
credits by invoking this function. Once the peer device receives these credits,
|
|
it gets CYBLE_EVT_L2CAP_CBFC_TX_CREDIT_IND event indicating the same. It is
|
|
the responsibility of the application layer of the device sending the credit
|
|
to keep track of the total number of credits and making sure that it does
|
|
not exceed 65535.
|
|
|
|
Refer to Bluetooth 4.1 core specification, Volume 3, Part A, section 4.24 for
|
|
more details about this operation.
|
|
|
|
Parameters:
|
|
localCid: This parameter specifies the local channel end-point for the L2CAP
|
|
channel. For the initiator of L2CAP channel establishment, this must
|
|
be set to the value indicated by the CYBLE_EVT_L2CAP_CBFC_CONN_CNF
|
|
event. For the responder, the upper layer protocol obtains this
|
|
value when it receives the event CYBLE_EVT_L2CAP_CBFC_CONN_IND.
|
|
|
|
credit: The credit value field represents number of credits the receiving
|
|
device can increment. The credit value field is a number between 1 and
|
|
65535.
|
|
|
|
Return:
|
|
CYBLE_API_RESULT_T : Return value indicates if the function succeeded or
|
|
failed. Following are the possible error codes.
|
|
<table>
|
|
Errors codes Description
|
|
------------ -----------
|
|
CYBLE_ERROR_OK On successful operation
|
|
CYBLE_ERROR_MEMORY_ALLOCATION_FAILED Memory allocation failed
|
|
CYBLE_L2CAP_CONNECTION_ENTITY_NOT_FOUND L2CAP connection instance
|
|
is not present
|
|
</table>
|
|
|
|
******************************************************************************/
|
|
CYBLE_API_RESULT_T CyBle_L2capCbfcSendFlowControlCredit
|
|
(
|
|
uint16 localCid,
|
|
uint16 credit
|
|
);
|
|
|
|
|
|
/******************************************************************************
|
|
##Function Name: CyBle_L2capChannelDataWrite
|
|
*******************************************************************************
|
|
|
|
Summary:
|
|
This function sends a data packet on the L2CAP CBFC channel. This is a
|
|
blocking function.
|
|
|
|
This API generates 'CYBLE_EVT_L2CAP_CBFC_DATA_WRITE_IND' event which
|
|
is kept for backward compatibility and the user should handle CYBLE_API_RESULT_T
|
|
to determine whether the last data packet was sent out properly.
|
|
|
|
Refer to Bluetooth 4.1 core specification, Volume 3, Part A, section 3.4 for
|
|
more details about this operation.
|
|
|
|
Parameters:
|
|
bdHandle: Peer device handle.
|
|
localCid: This parameter specifies the local channel end-point for the L2CAP
|
|
channel. For the initiator of L2CAP channel establishment, this
|
|
must be set to the value indicated by the
|
|
CYBLE_EVT_L2CAP_CBFC_CONN_CNF event. For the responder, the upper
|
|
layer protocol obtains this value when it receives the event
|
|
CYBLE_EVT_L2CAP_CBFC_CONN_IND.
|
|
buffer: Buffer containing packet to be sent.
|
|
bufferLen: Packet length.
|
|
|
|
Return:
|
|
CYBLE_API_RESULT_T : Return value indicates if the function succeeded or
|
|
failed. Following are the possible error codes.
|
|
<table>
|
|
Errors codes Description
|
|
------------ -----------
|
|
CYBLE_ERROR_OK On successful operation
|
|
CYBLE_ERROR_INVALID_PARAMETER If "buffer" is NULL
|
|
CYBLE_ERROR_MEMORY_ALLOCATION_FAILED Memory allocation failed
|
|
CYBLE_ERROR_NO_CONNECTION No Link Layer connection
|
|
is present
|
|
CYBLE_L2CAP_CHANNEL_NOT_FOUND No L2ACP channel found
|
|
corresponding to CID
|
|
CYBLE_L2CAP_NOT_ENOUGH_CREDITS Not Enough Credits to
|
|
transfer data
|
|
</table>
|
|
|
|
******************************************************************************/
|
|
CYBLE_API_RESULT_T CyBle_L2capChannelDataWrite
|
|
(
|
|
uint8 bdHandle,
|
|
uint16 localCid,
|
|
uint8* buffer,
|
|
uint16 bufferLen
|
|
);
|
|
|
|
|
|
/******************************************************************************
|
|
##Function Name: CyBle_L2capDisconnectReq
|
|
*******************************************************************************
|
|
|
|
Summary:
|
|
This function initiates sending of an L2CAP Disconnect Request
|
|
(CYBLE_EVT_L2CAP_CBFC_DISCONN_IND event received by the peer device) command
|
|
to the remote L2CAP entity to initiate disconnection of the referred L2CAP
|
|
channel. This is a non-blocking function.
|
|
|
|
Disconnection of the L2CAP channel always succeeds - either by reception of
|
|
the L2CAP Disconnect Response from the peer, or by timeout. In any case,
|
|
L2CAP will confirm disconnection of the channel, by calling the
|
|
CYBLE_EVT_L2CAP_CBFC_DISCONN_CNF event.
|
|
|
|
Refer to Bluetooth 4.1 core specification, Volume 3, Part A, section 4.6 for
|
|
more details about this operation.
|
|
|
|
Parameters:
|
|
localCid: This parameter specifies the local channel end-point for the L2CAP
|
|
channel.
|
|
* For initiator of L2CAP channel establishment, this must be set to
|
|
the value indicated by the event CYBLE_EVT_L2CAP_CBFC_CONN_CNF.
|
|
* For the responder, the upper layer protocol obtains this value
|
|
when it receives the event CYBLE_EVT_L2CAP_CBFC_CONN_IND.
|
|
|
|
Return:
|
|
CYBLE_API_RESULT_T : Return value indicates if the function succeeded or
|
|
failed. Following are the possible error codes.
|
|
<table>
|
|
Errors codes Description
|
|
------------ -----------
|
|
CYBLE_ERROR_OK On successful operation
|
|
CYBLE_ERROR_INVALID_OPERATION No Link Layer connection
|
|
is present
|
|
CYBLE_ERROR_MEMORY_ALLOCATION_FAILED Memory allocation failed
|
|
CYBLE_L2CAP_CONNECTION_ENTITY_NOT_FOUND No connection entity found
|
|
which can be disconnected
|
|
</table>
|
|
|
|
******************************************************************************/
|
|
CYBLE_API_RESULT_T CyBle_L2capDisconnectReq
|
|
(
|
|
uint16 localCid
|
|
);
|
|
|
|
#endif /*L2CAP_SUPPORT_CBFC_MODE*/
|
|
|
|
|
|
#ifdef GAP_PERIPHERAL
|
|
|
|
/******************************************************************************
|
|
##Function Name: CyBle_L2capLeConnectionParamUpdateRequest
|
|
*******************************************************************************
|
|
|
|
Summary:
|
|
This function sends the connection parameter update request to the Master of
|
|
the link. This is a non-blocking function. This function can only be used
|
|
from device connected in LE slave role.
|
|
|
|
To send connection parameter update request from the master to the slave,
|
|
use CyBle_GapcConnectionParamUpdateRequest() function. This function
|
|
results in CYBLE_EVT_L2CAP_CONN_PARAM_UPDATE_REQ event at the Master's end.
|
|
|
|
Refer to Bluetooth 4.1 core specification, Volume 3, Part A, section 4.20 for
|
|
more details about this operation.
|
|
|
|
Parameters:
|
|
bdHandle: Peer device handle
|
|
connParam: Pointer to a variable of type CYBLE_GAP_CONN_UPDATE_PARAM_T which
|
|
indicates the response to the Connection Parameter Update Request
|
|
|
|
Return:
|
|
CYBLE_API_RESULT_T : Return value indicates if the function succeeded or
|
|
failed. Following are the possible error codes.
|
|
<table>
|
|
Errors codes Description
|
|
------------ -----------
|
|
CYBLE_ERROR_OK On successful operation
|
|
CYBLE_ERROR_INVALID_PARAMETER If "connParam" is NULL
|
|
CYBLE_ERROR_INVALID_OPERATION Connection Parameter Update
|
|
Request is not allowed
|
|
CYBLE_ERROR_MEMORY_ALLOCATION_FAILED Memory allocation failed
|
|
CYBLE_ERROR_NO_CONNECTION No Link Layer connection is
|
|
present
|
|
</table>
|
|
|
|
******************************************************************************/
|
|
CYBLE_API_RESULT_T CyBle_L2capLeConnectionParamUpdateRequest
|
|
(
|
|
uint8 bdHandle,
|
|
CYBLE_GAP_CONN_UPDATE_PARAM_T *connParam
|
|
);
|
|
|
|
|
|
#endif /*GAP_PERIPHERAL*/
|
|
|
|
|
|
#ifdef GAP_CENTRAL
|
|
|
|
/******************************************************************************
|
|
##Function Name: CyBle_L2capLeConnectionParamUpdateResponse
|
|
*******************************************************************************
|
|
|
|
Summary:
|
|
This API sends the connection parameter update response to slave. This API
|
|
can only be used from device connected in LE master role.
|
|
|
|
Parameters:
|
|
bdHandle: Peer device handle
|
|
result: This field indicates the response to the Connection Parameter Update
|
|
Request
|
|
|
|
Return Value:
|
|
CYBLE_API_RESULT_T : Return value indicates if the function succeeded or
|
|
failed. Following are the possible error codes.
|
|
<table>
|
|
Errors codes Description
|
|
------------ -----------
|
|
CYBLE_ERROR_OK On successful operation
|
|
CYBLE_ERROR_INVALID_PARAMETER If 'result' is invalid (greater
|
|
than connection parameter
|
|
reject code i.e., 0x0001)
|
|
CYBLE_ERROR_MEMORY_ALLOCATION_FAILED Memory allocation failed
|
|
CYBLE_ERROR_NO_CONNECTION No Link Layer connection is
|
|
present
|
|
</table>
|
|
|
|
******************************************************************************/
|
|
CYBLE_API_RESULT_T CyBle_L2capLeConnectionParamUpdateResponse
|
|
(
|
|
uint8 bdHandle,
|
|
uint16 result
|
|
);
|
|
|
|
|
|
#endif /*GAP_CENTRAL*/
|
|
|
|
|
|
#endif /*CY_BLE_CYBLE_STACK_L2CAP_H*/
|
|
|
|
|
|
/*EOF*/
|