示例#1
0
文件: main.c 项目: notmikeb/btstack
/**
 * 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;
}
示例#3
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;
}
示例#6
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;
}
示例#7
0
文件: uhid.c 项目: huangqiheng/hid
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);
}