diff --git a/platform/posix/btstack_uart_block.h b/platform/posix/btstack_uart_block.h new file mode 100644 index 000000000..16e314f5b --- /dev/null +++ b/platform/posix/btstack_uart_block.h @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2016 BlueKitchen GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holders nor the names of + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * 4. Any redistribution, use, or modification is done solely for + * personal benefit and not for any commercial purpose or for + * monetary gain. + * + * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS + * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * Please inquire about commercial licensing options at + * contact@bluekitchen-gmbh.com + * + */ + +/* + * btstack_uart_posix.h + * + * Common code to access serial port via POSIX interface + * Used by hci_transport_h4_posix.c and hci_transport_h5.posix + * + */ + +#ifndef __BTSTACK_UART_BLOCK_H +#define __BTSTACK_UART_BLOCK_H + +#include +#include "hci_transport.h" + +typedef struct { + /** + * init transport + * @param transport_config + */ + int (*init)(const hci_transport_config_uart_t * config); + + /** + * open transport connection + */ + int (*open)(void); + + /** + * close transport connection + */ + int (*close)(void); + + /** + * set callback for block received + */ + void (*set_block_received)(void (*block_handler)(void)); + + /** + * set callback for sent + */ + void (*set_block_sent)(void (*block_handler)(void)); + + /** + * set baudrate + */ + int (*set_baudrate)(uint32_t baudrate); + + /** + * set parity + */ + int (*set_parity)(int parity); + + /** + * receive block + */ + void (*receive_block)(uint8_t *buffer, uint16_t len); + + /** + * send block + */ + void (*send_block)(const uint8_t *buffer, uint16_t length); + + // void hal_uart_dma_set_sleep(uint8_t sleep); + // void hal_uart_dma_set_csr_irq_handler( void (*csr_irq_handler)(void)); + +} btstack_uart_block_t; + +#endif diff --git a/platform/posix/hci_transport_h5_posix.c b/platform/posix/hci_transport_h5_posix.c index 5d4d2f0a3..89a1b8c02 100644 --- a/platform/posix/hci_transport_h5_posix.c +++ b/platform/posix/hci_transport_h5_posix.c @@ -54,7 +54,7 @@ #include "btstack_debug.h" #include "hci_transport.h" #include "btstack_uart_posix.h" - +#include "btstack_uart_block.h" #ifdef HAVE_EHCILL #error "HCI Transport H5 POSIX does not support eHCILL. Please either use HAVE_EHCILL or H5 Transport" @@ -79,59 +79,6 @@ typedef enum { HCI_TRANSPORT_LINK_SEND_ACK_PACKET = 1 << 7, } hci_transport_link_actions_t; -typedef struct { - /** - * init transport - * @param transport_config - */ - int (*init)(const hci_transport_config_uart_t * config); - - /** - * open transport connection - */ - int (*open)(void); - - /** - * close transport connection - */ - int (*close)(void); - - /** - * set callback for block received - */ - void (*set_block_received)(void (*block_handler)(void)); - - /** - * set callback for sent - */ - void (*set_block_sent)(void (*block_handler)(void)); - - /** - * set baudrate - */ - int (*set_baudrate)(uint32_t baudrate); - - /** - * set parity - */ - int (*set_parity)(int parity); - - /** - * receive block - */ - void (*receive_block)(uint8_t *buffer, uint16_t len); - - /** - * send block - */ - void (*send_block)(const uint8_t *buffer, uint16_t length); - - // void hal_uart_dma_set_sleep(uint8_t sleep); - - // void hal_uart_dma_set_csr_irq_handler( void (*csr_irq_handler)(void)); - -} btstack_uart_block_t; - // Configuration Field. No packet buffers -> sliding window = 1, no OOF flow control, no data integrity check #define LINK_CONFIG_SLIDING_WINDOW_SIZE 1 #define LINK_CONFIG_OOF_FLOW_CONTROL 0