163 lines
4.5 KiB
C
163 lines
4.5 KiB
C
#ifndef GATTC_H_
|
|
#define GATTC_H_
|
|
|
|
/**
|
|
****************************************************************************************
|
|
* @addtogroup GATTC Generic Attribute Profile Controller
|
|
* @ingroup GATT
|
|
* @brief Generic Attribute Profile Controller.
|
|
*
|
|
* This GATT module is responsible for providing an API for all attribute related operations
|
|
* related to a BLE connection.
|
|
* It is responsible for all the service framework activities using the Attribute protocol
|
|
* for discovering services and for reading and writing characteristic values on a peer device.
|
|
* To achieve this, the GATT interfaces with @ref ATTC "ATTC" and the @ref ATTS "ATTS".
|
|
*
|
|
* @{
|
|
****************************************************************************************
|
|
*/
|
|
|
|
/*
|
|
* INCLUDE FILES
|
|
****************************************************************************************
|
|
*/
|
|
/* kernel task */
|
|
#include "rwip_config.h"
|
|
#if (BLE_GATTC)
|
|
|
|
#include "co_list.h"
|
|
|
|
|
|
/*
|
|
* DEFINES
|
|
****************************************************************************************
|
|
*/
|
|
|
|
/// Operation type
|
|
enum gattc_op_type
|
|
{
|
|
#if (BLE_ATTS)
|
|
/// Operation used to Server Request operations
|
|
GATTC_OP_SERVER,
|
|
#endif // (BLE_ATTS)
|
|
|
|
#if (BLE_ATTC)
|
|
/// Operation used to Client Request operations
|
|
GATTC_OP_CLIENT,
|
|
/// Service Discovery Procedure operation
|
|
GATTC_OP_SDP,
|
|
#endif // (BLE_ATTC)
|
|
|
|
/// Max number of operations
|
|
GATTC_OP_MAX
|
|
};
|
|
|
|
/*
|
|
* TYPES DEFINITIONS
|
|
****************************************************************************************
|
|
*/
|
|
|
|
#if (BLE_ATTC)
|
|
/// Attribute Client environment variable requirements
|
|
struct attc_env
|
|
{
|
|
/// List of ATT message used to aggregate long value in a single buffer.
|
|
struct co_list rsp_list;
|
|
/// List that contains peer device event registration
|
|
struct co_list reg_evt;
|
|
/// List that contains data for service discovery
|
|
struct co_list sdp_data;
|
|
};
|
|
#endif // (BLE_ATTC)
|
|
|
|
#if (BLE_ATTS)
|
|
/// Attribute server environment variables
|
|
struct atts_env
|
|
{
|
|
/// This is used to merge save all the prepare write request received ,
|
|
/// before receiving the execute or cancel or disconnection.
|
|
struct co_list prep_wr_req_list;
|
|
/// This list is used to put any data in order to send a response to peer device
|
|
struct co_list rsp;
|
|
/// This structure is used to store in cache latest attribute read value
|
|
struct gattc_read_cfm* read_cache;
|
|
/// pointer to the PDU which is currently handled by ATTS
|
|
struct l2cc_pdu_recv_ind* pdu;
|
|
};
|
|
#endif // (BLE_ATTS)
|
|
|
|
/// GATT controller environment variable structure.
|
|
struct gattc_env_tag
|
|
{
|
|
/// Request operation Kernel message
|
|
void* operation[GATTC_OP_MAX];
|
|
|
|
#if (BLE_ATTC)
|
|
struct attc_env client;
|
|
#endif // (BLE_ATTC)
|
|
|
|
#if (BLE_ATTS)
|
|
struct atts_env server;
|
|
#endif // (BLE_ATTS)
|
|
|
|
/// Current MTU Size
|
|
uint16_t mtu_size;
|
|
|
|
/// A transaction timeout occurs, reject next attribute commands
|
|
bool trans_timeout;
|
|
};
|
|
/*
|
|
* MACRO DEFINITIONS
|
|
****************************************************************************************
|
|
*/
|
|
|
|
|
|
/*
|
|
* FUNCTION DECLARATIONS
|
|
****************************************************************************************
|
|
*/
|
|
|
|
|
|
/**
|
|
****************************************************************************************
|
|
* @brief Created link connection parameters (from bond data) has been set, connection
|
|
* ready to be used.
|
|
*
|
|
* @param[in] conidx Connection Index
|
|
*
|
|
****************************************************************************************
|
|
*/
|
|
void gattc_con_enable(uint8_t conidx);
|
|
|
|
|
|
/**
|
|
****************************************************************************************
|
|
* @brief Gets the negotiated MTU. This function gets the negotiated MTU.
|
|
*
|
|
* @param[in] idx connection record index
|
|
*
|
|
* @return MTU negotiated
|
|
*
|
|
****************************************************************************************
|
|
*/
|
|
uint16_t gattc_get_mtu(uint8_t idx);
|
|
|
|
/**
|
|
****************************************************************************************
|
|
* @brief Sets the negotiated MTU This function stores the negotiated MTU.
|
|
*
|
|
* @param[in] idx connection record index
|
|
* @param[in] mtu negotiated MTU
|
|
*
|
|
* @return status indicates if the MTU setting operation is successful
|
|
*
|
|
****************************************************************************************
|
|
*/
|
|
void gattc_set_mtu(uint8_t idx, uint16_t mtu);
|
|
|
|
|
|
|
|
#endif /* (BLE_GATTC) */
|
|
|
|
/// @} GATTC
|
|
#endif // GATTC_H_
|