#define DEVICE_NAME "BL618_GATT" // 设备名称 #define PROFILE_NUM 1 // 设备支持的服务数量 #define PROFILE_A_APP_ID 0 // 第一个服务的ID static void gap_event_handler(ble_event_t *event); static void gatt_event_handler(ble_event_t *event); int main(void) { // 初始化蓝牙协议栈 bluetooth_init(gap_event_handler, gatt_event_handler); // 设置设备名称 bluetooth_set_device_name(DEVICE_NAME); // 创建一个服务 bluetooth_gatt_create_service(PROFILE_NUM); // 添加服务的特征值 bluetooth_gatt_add_char(PROFILE_A_APP_ID, "CHAR_A", 0xFF01, 0x20, NULL); // 开始广播 bluetooth_start_advertising(); while (1) { // 等待事件 bluetooth_wait_for_event(); } return 0; } static void gap_event_handler(ble_event_t *event) { switch (event->type) { case BLE_GAP_EVENT_ADV_IND: { // 收到广播包,可以连接该设备 ble_gap_connect(&event->gap_event.adv_ind.address); break; } case BLE_GAP_EVENT_CONNECTED: { // 连接成功,可以开始 GATT 操作 break; } case BLE_GAP_EVENT_DISCONNECTED: { // 断开连接,重新开始广播 bluetooth_start_advertising(); break; } default: break; } } static void gatt_event_handler(ble_event_t *event) { switch (event->type) { case BLE_GATT_EVENT_READ: { // 处理读操作 break; } case BLE_GATT_EVENT_WRITE: { // 处理写操作 ble_err_t err = ble_gatt_server_send_indication(event->conn_handle, 0x1234, raw_data, sizeof(raw_data)); // 发送通知给主机 if (err != BLE_ERR_NONE) { // 发送失败,需要处理错误 break; } break; } default: break; } }给出无注释代码
时间: 2023-11-26 22:06:02 浏览: 153
```
#define DEVICE_NAME "BL618_GATT"
#define PROFILE_NUM 1
#define PROFILE_A_APP_ID 0
static void gap_event_handler(ble_event_t *event);
static void gatt_event_handler(ble_event_t *event);
int main(void) {
bluetooth_init(gap_event_handler, gatt_event_handler);
bluetooth_set_device_name(DEVICE_NAME);
bluetooth_gatt_create_service(PROFILE_NUM);
bluetooth_gatt_add_char(PROFILE_A_APP_ID, "CHAR_A", 0xFF01, 0x20, NULL);
bluetooth_start_advertising();
while (1) {
bluetooth_wait_for_event();
}
return 0;
}
static void gap_event_handler(ble_event_t *event) {
switch (event->type) {
case BLE_GAP_EVENT_ADV_IND: {
ble_gap_connect(&event->gap_event.adv_ind.address);
break;
}
case BLE_GAP_EVENT_CONNECTED: {
// 连接成功,可以开始 GATT 操作
break;
}
case BLE_GAP_EVENT_DISCONNECTED: {
// 断开连接,重新开始广播
bluetooth_start_advertising();
break;
}
default:
break;
}
}
static void gatt_event_handler(ble_event_t *event) {
switch (event->type) {
case BLE_GATT_EVENT_READ: {
// 处理读操作
break;
}
case BLE_GATT_EVENT_WRITE: {
ble_err_t err = ble_gatt_server_send_indication(event->conn_handle, 0x1234, raw_data, sizeof(raw_data));
// 发送通知给主机
if (err != BLE_ERR_NONE) {
// 发送失败,需要处理错误
break;
}
break;
}
default:
break;
}
}
```
阅读全文