122 lines
4.5 KiB
C
122 lines
4.5 KiB
C
/**
|
|
****************************************************************************************
|
|
* @file xc_gatt_client_api.c
|
|
* @brief GATT client APIs source code
|
|
* Copyright (c) 2022 - 2025, XinChip
|
|
* All rights reserved.
|
|
****************************************************************************************
|
|
*/
|
|
#include "rwip_config.h"
|
|
#include "stdint.h"
|
|
#if (BLE_GATT_CLI)
|
|
#include "xc_gatt_client_api.h"
|
|
|
|
uint16_t xc_ble_gatt_user_cli_register(uint16_t pref_mtu, uint8_t prio_level,
|
|
const gatt_cli_cb_t *p_cb,
|
|
uint8_t *p_user_lid)
|
|
{
|
|
return gatt_user_cli_register(pref_mtu, prio_level, p_cb, p_user_lid);
|
|
}
|
|
|
|
uint16_t xc_ble_gatt_user_unregister(uint8_t user_lid)
|
|
{
|
|
return gatt_user_unregister(user_lid);
|
|
}
|
|
|
|
uint16_t xc_ble_gatt_cli_discover_svc(uint8_t conidx, uint8_t user_lid,
|
|
uint16_t dummy, uint8_t disc_type, bool full,
|
|
uint16_t start_hdl, uint16_t end_hdl,
|
|
uint8_t uuid_type, const uint8_t *p_uuid)
|
|
{
|
|
return gatt_cli_discover_svc(conidx, user_lid, dummy, disc_type, full,
|
|
start_hdl, end_hdl, uuid_type, p_uuid);
|
|
}
|
|
|
|
uint16_t xc_ble_gatt_cli_discover_inc_svc(uint8_t conidx, uint8_t user_lid,
|
|
uint16_t dummy, uint16_t start_hdl,
|
|
uint16_t end_hdl)
|
|
{
|
|
return gatt_cli_discover_inc_svc(conidx, user_lid, dummy, start_hdl,
|
|
end_hdl);
|
|
}
|
|
|
|
uint16_t xc_ble_gatt_cli_discover_char(uint8_t conidx, uint8_t user_lid,
|
|
uint16_t dummy, uint8_t disc_type,
|
|
uint16_t start_hdl, uint16_t end_hdl,
|
|
uint8_t uuid_type, const uint8_t *p_uuid)
|
|
{
|
|
return gatt_cli_discover_char(conidx, user_lid, dummy, disc_type, start_hdl,
|
|
end_hdl, uuid_type, p_uuid);
|
|
}
|
|
|
|
uint16_t xc_ble_gatt_cli_discover_desc(uint8_t conidx, uint8_t user_lid,
|
|
uint16_t dummy, uint16_t start_hdl,
|
|
uint16_t end_hdl)
|
|
{
|
|
return gatt_cli_discover_desc(conidx, user_lid, dummy, start_hdl, end_hdl);
|
|
}
|
|
|
|
uint16_t xc_ble_gatt_cli_discover_cancel(uint8_t conidx, uint8_t user_lid,
|
|
uint16_t dummy)
|
|
{
|
|
return gatt_cli_discover_cancel(conidx, user_lid, dummy);
|
|
}
|
|
|
|
uint16_t xc_ble_gatt_cli_read(uint8_t conidx, uint8_t user_lid, uint16_t dummy,
|
|
uint16_t hdl, uint16_t offset, uint16_t length)
|
|
{
|
|
return gatt_cli_read(conidx, user_lid, dummy, hdl, offset, length);
|
|
}
|
|
|
|
uint16_t xc_ble_gatt_cli_read_by_uuid(uint8_t conidx, uint8_t user_lid,
|
|
uint16_t dummy, uint16_t start_hdl,
|
|
uint16_t end_hdl, uint8_t uuid_type,
|
|
const uint8_t *p_uuid)
|
|
{
|
|
return gatt_cli_read_by_uuid(conidx, user_lid, dummy, start_hdl, end_hdl,
|
|
uuid_type, p_uuid);
|
|
}
|
|
|
|
uint16_t xc_ble_gatt_cli_write(uint8_t conidx, uint8_t user_lid, uint16_t dummy,
|
|
uint8_t write_type, uint16_t hdl, uint16_t length,
|
|
const uint8_t* p_data)
|
|
{
|
|
co_buf_t* p_buf = NULL;
|
|
uint16_t status;
|
|
if(co_buf_alloc(&p_buf, GATT_BUFFER_HEADER_LEN, length, GATT_BUFFER_TAIL_LEN) == CO_BUF_ERR_NO_ERROR)
|
|
{
|
|
co_buf_copy_data_from_mem(p_buf, p_data, length);
|
|
status = gatt_cli_write(conidx, user_lid, dummy, write_type, hdl, 0, p_buf);
|
|
co_buf_release(p_buf);
|
|
}
|
|
else
|
|
{
|
|
status = GAP_ERR_INSUFF_RESOURCES;
|
|
}
|
|
|
|
return (status);
|
|
}
|
|
|
|
uint16_t xc_ble_gatt_cli_event_register(uint8_t conidx, uint8_t user_lid,
|
|
uint16_t start_hdl, uint16_t end_hdl)
|
|
{
|
|
return gatt_cli_event_register(conidx, user_lid, start_hdl, end_hdl);
|
|
}
|
|
|
|
uint16_t xc_ble_gatt_cli_event_unregister(uint8_t conidx, uint8_t user_lid,
|
|
uint16_t start_hdl, uint16_t end_hdl)
|
|
{
|
|
return gatt_cli_event_unregister(conidx, user_lid, start_hdl, end_hdl);
|
|
}
|
|
|
|
uint16_t xc_ble_gatt_cli_indicate_cfm(uint8_t conidx, uint8_t user_lid,
|
|
uint16_t token)
|
|
{
|
|
return gatt_cli_att_event_cfm(conidx, user_lid, token);
|
|
}
|
|
#endif // (BLE_GATT_CLI)
|
|
|
|
uint16_t xc_ble_gatt_cli_mtu_exch(uint8_t conidx, uint8_t user_lid)
|
|
{
|
|
return gatt_cli_mtu_exch(conidx, user_lid);
|
|
} |