GATT Service Client API
src/ble/gatt_service_client.h
/**
* @brief Initialize GATT Service Client infrastructure
*/
void gatt_service_client_init(void);
/**
* @brief Register new GATT Service Client with list of Characteristic UUID16s
* @param client
* @param characteristic_uuid16s
* @param characteristic_uuid16s_num
* @param trampoline_packet_handler packet handler that calls gatt_service_client_trampoline_packet_handler with client
*/
void gatt_service_client_register_client(gatt_service_client_t *client, btstack_packet_handler_t packet_handler,
const uint16_t *characteristic_uuid16s, uint16_t characteristic_uuid16s_num);
/**
* @brief Get Characteristic UUID16 for given Characteristic index
*
* @param client
* @param characteristic_index
* @return uuid16 or 0 if index out of range
*/
uint16_t gatt_service_client_characteristic_uuid16_for_index(const gatt_service_client_t * client, uint8_t characteristic_index);
/**
* @bbreif Unregister GATT Service Client
* @param client
*/
void gatt_service_client_unregister_client(gatt_service_client_t * client);
/**
* @brief Connect to the n-th instance of Primary GATT Service with UUID16
*
* @param con_handle
* @param client
* @param connection
* @param service_uuid16
* @param service_index
* @param characteristics
* @param characteristics_num
* @return
*/
uint8_t
gatt_service_client_connect_primary_service_with_uuid16(hci_con_handle_t con_handle, gatt_service_client_t *client,
gatt_service_client_connection_t *connection,
uint16_t service_uuid16, uint8_t service_index,
gatt_service_client_characteristic_t *characteristics,
uint8_t characteristics_num);
/**
* @brief Connect to the Secondary GATT Service with given handle range
*
* UUID16 and Service Index are stored for GATT Service Client user only
*
* @param con_handle
* @param client
* @param connection
* @param service_uuid16
* @param service_start_handle
* @param service_end_handle
* @param service_index
* @param characteristics
* @param characteristics_num
* @return
*/
uint8_t
gatt_service_client_connect_secondary_service_with_uuid16(hci_con_handle_t con_handle, gatt_service_client_t *client,
gatt_service_client_connection_t *connection,
uint16_t service_uuid16, uint8_t service_index,
uint16_t service_start_handle, uint16_t service_end_handle,
gatt_service_client_characteristic_t *characteristics,
uint8_t characteristics_num);
/**
* @brief Disconnect service client
* @param client
* @param connection
* @return
*/
uint8_t gatt_service_client_disconnect(gatt_service_client_connection_t *connection);
/**
* @brief Check if Characteristic is available and can be queried
* @param client
* @param connection
* @param characteristic_index
* @return ERROR_CODE_SUCCESS if ready, ERROR_CODE_COMMAND_DISALLOWED or ERROR_CODE_UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE otherwise
*/
uint8_t
gatt_service_client_can_query_characteristic(const gatt_service_client_connection_t *connection,
uint8_t characteristic_index);
/**
* @brief Get Characteristic Value Handle for given Characteristic index
* *
* @param connection
* @param characteristic_index
* @return
*/
uint16_t gatt_service_client_characteristic_value_handle_for_index(const gatt_service_client_connection_t *connection,
uint8_t characteristic_index);
/**
* @brief Get Characteristic index Handle for given Characteristic Value Handle
* *
* @param connection
* @param value_handle
* @return index of characteristic in initial list or GATT_SERVICE_CLIENT_INVALID_INDEX
*/
uint8_t gatt_service_client_characteristic_index_for_value_handle(const gatt_service_client_connection_t *connection,
uint16_t value_handle);
/**
* @brief Get connection id
* @param client
* @param connection
* @returns connection_id
*/
uint16_t gatt_service_client_get_connection_id(const gatt_service_client_connection_t * connection);
/**
* @brief Get connection handle
* @param client
* @param connection
* @returns con_handle
*/
hci_con_handle_t gatt_service_client_get_con_handle(const gatt_service_client_connection_t * connection);
/**
* @brief Get service index provided in connect call
* @param client
* @param connection
* @returns connection_id
*/
uint8_t gatt_service_client_get_service_index(const gatt_service_client_connection_t * connection);
/**
* @brief Get remote MTU
* @param client
* @param connection
* @returns MTU or 0 in case of error
*/
uint16_t gatt_service_client_get_mtu(const gatt_service_client_connection_t *connection);
/**
* @brief Dump characteristic value handles
* @param client
* @param connection
* @param characteristic_names
*/
void gatt_service_client_dump_characteristic_value_handles(const gatt_service_client_connection_t *connection,
const char **characteristic_names);
/**
* @brief De-Init
* @param client
*/
void gatt_service_client_deinit(void);