/** * init transport * @param transport_config */ static void transport_init(const void *transport_config){ log_info("transport_init"); ring_buffer_mutex = xSemaphoreCreateMutex(); // set up polling data_source btstack_run_loop_set_data_source_handler(&transport_data_source, &transport_process); btstack_run_loop_enable_data_source_callbacks(&transport_data_source, DATA_SOURCE_CALLBACK_POLL); btstack_run_loop_add_data_source(&transport_data_source); }
static int btstack_uart_block_freertos_init(const btstack_uart_config_t * config){ uart_config = config; hal_uart_dma_set_block_received(&btstack_uart_block_freertos_received_isr); hal_uart_dma_set_block_sent(&btstack_uart_block_freertos_sent_isr); // set up polling data_source btstack_run_loop_set_data_source_handler(&transport_data_source, &btstack_uart_block_freertos_process); btstack_run_loop_enable_data_source_callbacks(&transport_data_source, DATA_SOURCE_CALLBACK_POLL); btstack_run_loop_add_data_source(&transport_data_source); return 0; }
void btstack_stdin_setup(void (*handler)(char c)){ // set handler stdin_handler = handler; // set up polling data_source btstack_run_loop_set_data_source_handler(&stdin_data_source, &btstack_stdin_process); btstack_run_loop_enable_data_source_callbacks(&stdin_data_source, DATA_SOURCE_CALLBACK_POLL); btstack_run_loop_add_data_source(&stdin_data_source); //Create a task to block on UART RX xTaskCreate(btstack_stdin_task, "btstack_stdin", 2048, NULL, 12, NULL); }
/** * @brief Initialize SPI */ static int btstack_em9304_spi_embedded_open(void){ // set up polling data_source btstack_run_loop_set_data_source_handler(&btstack_em9304_spi_embedded_data_source, &btstack_em9304_spi_embedded_process); btstack_run_loop_enable_data_source_callbacks(&btstack_em9304_spi_embedded_data_source, DATA_SOURCE_CALLBACK_POLL); btstack_run_loop_add_data_source(&btstack_em9304_spi_embedded_data_source); // reset ready callback handler btstack_em9304_spi_embedded_ready_callback = NULL; // setup lower layer hal_em9304_spi_init(); // setup callbacks with lower layer hal_em9304_spi_set_ready_callback(&btstack_em9304_spi_embedded_ready); hal_em9304_spi_set_transfer_done_callback(&btstack_em9304_spi_transfer_done); return 0; }
static int h4_open(void){ // open uart hal_uart_dma_init(); hal_uart_dma_set_block_received(h4_block_received); hal_uart_dma_set_block_sent(h4_block_sent); // set up data_source btstack_run_loop_set_data_source_handler(&hci_transport_h4_dma_ds, &h4_process); btstack_run_loop_enable_data_source_callbacks(&hci_transport_h4_dma_ds, DATA_SOURCE_CALLBACK_POLL); btstack_run_loop_add_data_source(&hci_transport_h4_dma_ds); // h4_init_sm(); tx_state = TX_IDLE; return 0; }
static int h4_open(void){ int fd = mtk_bt_enable(); if (fd < 0) { log_error("mtk_bt_enable failed"); return -1; } // set up data_source hci_transport_h4->ds = (btstack_data_source_t*) malloc(sizeof(btstack_data_source_t)); if (!hci_transport_h4->ds) return -1; memset(hci_transport_h4->ds, 0, sizeof(btstack_data_source_t)); btstack_run_loop_set_data_source_fd(hci_transport_h4->ds, fd); btstack_run_loop_set_data_source_handler(hci_transport_h4->ds, &h4_process); btstack_run_loop_enable_data_source_callbacks(hci_transport_h4->ds, DATA_SOURCE_CALLBACK_READ); btstack_run_loop_add_data_source(hci_transport_h4->ds); return 0; }
void uhid_register(bthid_dev_t *dev) { if (dev->ds) { printf("ERROR: Tried to register device more than once\n"); return; } int fd = open("/dev/uhid", O_RDWR); if (fd < 0) { printf("ERROR: Cannot open /dev/uhid!\n"); exit(1); } int ret = create(fd, dev); if (ret) { close(fd); printf("ERROR: Cannot create UHID device!\n"); return; } dev->ds = malloc(sizeof(btstack_data_source_t)); dev->ds->fd = fd; dev->ds->process = process; btstack_run_loop_add_data_source(dev->ds); }