static void bt_ready(int err) { if (err) { printk("Bluetooth init failed (err %d)\n", err); return; } printk("Bluetooth initialized\n"); gap_init(DEVICE_NAME, CSC_APPEARANCE); bas_init(); dis_init(CONFIG_SOC, "ACME"); bt_gatt_register(csc_attrs, ARRAY_SIZE(csc_attrs)); err = bt_le_adv_start(BT_LE_ADV(BT_LE_ADV_IND), ad, ARRAY_SIZE(ad), sd, ARRAY_SIZE(sd)); if (err) { printk("Advertising failed to start (err %d)\n", err); return; } printk("Advertising successfully started\n"); }
int ble_hrs_init(void) { /* cast to discard the const qualifier */ return bt_gatt_register((struct bt_gatt_attr *)hrs_attrs, ARRAY_SIZE(hrs_attrs)); }
static void service_register(const void *buf, uint16_t len) { const struct hal_cmd_register_module *m = buf; uint8_t status; if (m->service_id > HAL_SERVICE_ID_MAX || services[m->service_id]) { status = HAL_STATUS_FAILED; goto failed; } switch (m->service_id) { case HAL_SERVICE_ID_BLUETOOTH: if (!bt_bluetooth_register(hal_ipc, m->mode)) { status = HAL_STATUS_FAILED; goto failed; } break; case HAL_SERVICE_ID_SOCKET: bt_socket_register(hal_ipc, &adapter_bdaddr, m->mode); break; case HAL_SERVICE_ID_HIDHOST: if (!bt_hid_register(hal_ipc, &adapter_bdaddr, m->mode)) { status = HAL_STATUS_FAILED; goto failed; } break; case HAL_SERVICE_ID_A2DP: if (!bt_a2dp_register(hal_ipc, &adapter_bdaddr, m->mode)) { status = HAL_STATUS_FAILED; goto failed; } break; case HAL_SERVICE_ID_PAN: if (!bt_pan_register(hal_ipc, &adapter_bdaddr, m->mode)) { status = HAL_STATUS_FAILED; goto failed; } break; case HAL_SERVICE_ID_AVRCP: if (!bt_avrcp_register(hal_ipc, &adapter_bdaddr, m->mode)) { status = HAL_STATUS_FAILED; goto failed; } break; case HAL_SERVICE_ID_HANDSFREE: if (!bt_handsfree_register(hal_ipc, &adapter_bdaddr, m->mode, m->max_clients)) { status = HAL_STATUS_FAILED; goto failed; } break; case HAL_SERVICE_ID_GATT: if (!bt_gatt_register(hal_ipc, &adapter_bdaddr)) { status = HAL_STATUS_FAILED; goto failed; } break; case HAL_SERVICE_ID_HEALTH: if (!bt_health_register(hal_ipc, &adapter_bdaddr, m->mode)) { status = HAL_STATUS_FAILED; goto failed; } break; case HAL_SERVICE_ID_HANDSFREE_CLIENT: if (!bt_hf_client_register(hal_ipc, &adapter_bdaddr)) { status = HAL_STATUS_FAILED; goto failed; } break; case HAL_SERVICE_ID_MAP_CLIENT: if (!bt_map_client_register(hal_ipc, &adapter_bdaddr, m->mode)) { status = HAL_STATUS_FAILED; goto failed; } break; default: DBG("service %u not supported", m->service_id); status = HAL_STATUS_FAILED; goto failed; } services[m->service_id] = true; status = HAL_STATUS_SUCCESS; info("Service ID=%u registered", m->service_id); failed: if(status==HAL_STATUS_FAILED) error("Service ID=%u register failed", m->service_id); ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_CORE, HAL_OP_REGISTER_MODULE, status); }
void bas_init(void) { bt_gatt_register(attrs, ARRAY_SIZE(attrs)); }