From 0af2bb27be58ba90331690e10c3930d4a2d95b12 Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Fri, 22 Jan 2016 11:19:59 +0100 Subject: [PATCH] add btstack_chipset_t --- chipset/bcm/bt_control_bcm.h | 1 + chipset/cc256x/bt_control_cc256x.h | 2 +- chipset/csr/bt_control_csr.c | 3 - chipset/csr/bt_control_csr.h | 11 ++- chipset/em9301/bt_control_em9301.h | 1 + chipset/stlc2500d/bt_control_stlc2500d.h | 1 + chipset/tc3556x/bt_control_tc3566x.h | 7 +- src/btstack_chipset.h | 101 +++++++++++++++++++++++ 8 files changed, 114 insertions(+), 13 deletions(-) create mode 100644 src/btstack_chipset.h diff --git a/chipset/bcm/bt_control_bcm.h b/chipset/bcm/bt_control_bcm.h index fed795780..486df5704 100644 --- a/chipset/bcm/bt_control_bcm.h +++ b/chipset/bcm/bt_control_bcm.h @@ -49,6 +49,7 @@ extern "C" { #include #include "btstack_control.h" +#include "btstack_chipset.h" bt_control_t * bt_control_bcm_instance(void); diff --git a/chipset/cc256x/bt_control_cc256x.h b/chipset/cc256x/bt_control_cc256x.h index f6d6cb63b..e94467266 100644 --- a/chipset/cc256x/bt_control_cc256x.h +++ b/chipset/cc256x/bt_control_cc256x.h @@ -49,7 +49,7 @@ extern "C" { #include #include "btstack_control.h" -#include "hci_transport.h" +#include "btstack_chipset.h" bt_control_t *bt_control_cc256x_instance(void); void bt_control_cc256x_set_power(int16_t power_in_dB); diff --git a/chipset/csr/bt_control_csr.c b/chipset/csr/bt_control_csr.c index ddba16590..7fa502069 100644 --- a/chipset/csr/bt_control_csr.c +++ b/chipset/csr/bt_control_csr.c @@ -141,9 +141,6 @@ static const bt_control_t bt_control_csr = { }; // MARK: public API -void bt_control_csr_set_power(int16_t power_in_dB){ -} - bt_control_t *bt_control_csr_instance(void){ return (bt_control_t*) &bt_control_csr; } diff --git a/chipset/csr/bt_control_csr.h b/chipset/csr/bt_control_csr.h index b4f2e99b7..211306d88 100644 --- a/chipset/csr/bt_control_csr.h +++ b/chipset/csr/bt_control_csr.h @@ -38,11 +38,11 @@ /* * bt_control_cc256x.c * - * Adapter to use cc256x-based chipsets with BTstack + * Adapter to use CSR-based chipsets with BTstack */ -#ifndef __BT_CONTROL_CC256X_H -#define __BT_CONTROL_CC256X_H +#ifndef __BT_CONTROL_CSR_H +#define __BT_CONTROL_CSR_H #if defined __cplusplus extern "C" { @@ -50,13 +50,12 @@ extern "C" { #include #include "btstack_control.h" -#include "hci_transport.h" +#include "btstack_chipset.h" bt_control_t * bt_control_csr_instance(void); -void bt_control_csr_set_power(int16_t power_in_dB); #if defined __cplusplus } #endif -#endif // __BT_CONTROL_CC256X_H +#endif // __BT_CONTROL_CSR_H diff --git a/chipset/em9301/bt_control_em9301.h b/chipset/em9301/bt_control_em9301.h index 07bcd0a50..1aaa5fe29 100644 --- a/chipset/em9301/bt_control_em9301.h +++ b/chipset/em9301/bt_control_em9301.h @@ -51,6 +51,7 @@ extern "C" { #endif #include "btstack_control.h" +#include "btstack_chipset.h" bt_control_t *bt_control_em9301_instance(void); diff --git a/chipset/stlc2500d/bt_control_stlc2500d.h b/chipset/stlc2500d/bt_control_stlc2500d.h index 6a484f54b..f8a7766bb 100644 --- a/chipset/stlc2500d/bt_control_stlc2500d.h +++ b/chipset/stlc2500d/bt_control_stlc2500d.h @@ -51,6 +51,7 @@ extern "C" { #endif #include "btstack_control.h" +#include "btstack_chipset.h" bt_control_t *bt_control_stlc2500d_instance(void); diff --git a/chipset/tc3556x/bt_control_tc3566x.h b/chipset/tc3556x/bt_control_tc3566x.h index 8008e9517..5b8bad8ef 100644 --- a/chipset/tc3556x/bt_control_tc3566x.h +++ b/chipset/tc3556x/bt_control_tc3566x.h @@ -45,14 +45,15 @@ * - Set baud rate */ -#ifndef __BT_CONTROL_TC3566x_H -#define __BT_CONTROL_TC3566x_H +#ifndef __BT_CONTROL_TC3566X_H +#define __BT_CONTROL_TC3566X_H #if defined __cplusplus extern "C" { #endif #include "btstack_control.h" +#include "btstack_chipset.h" bt_control_t *bt_control_tc3566x_instance(void); @@ -60,4 +61,4 @@ bt_control_t *bt_control_tc3566x_instance(void); } #endif -#endif // __BT_CONTROL_TC3566x_H +#endif // __BT_CONTROL_TC3566X_H diff --git a/src/btstack_chipset.h b/src/btstack_chipset.h new file mode 100644 index 000000000..f99855a37 --- /dev/null +++ b/src/btstack_chipset.h @@ -0,0 +1,101 @@ +/* + * 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_chipset.h + * + * Chipset Driver - implements custom chipset initializtion and support proprietary extensions + * to set UART baud rate, Bluetooth Address, and similar. + */ + +#ifndef __BTSTACK_CHIPSET_H +#define __BTSTACK_CHIPSET_H + +#include +#include "btstack_util.h" + +#if defined __cplusplus +extern "C" { +#endif + +typedef enum { + BTSTACK_CHIPSET_DONE = 0, + BTSTACK_CHIPSET_VALID_COMMAND, + BTSTACK_CHIPSET_WARMSTART_REQUIRED, +} btstack_chipset_result_t; + +typedef struct { + /** + * chipset driver name + */ + const char * name; + + /** + * init driver + * allows to reset init script index + * @param config + */ + void (*init)(void * config); + + /** + * support custom init sequences after RESET command + * @param hci_cmd_buffer to store generated command + * @return result see btstack_chipset_result_t + */ + btstack_chipset_result_t (*next_cmd)(uint8_t * hci_cmd_buffer); + + /** + * provide UART Baud Rate change command. + * @param baudrate + * @param hci_cmd_buffer to store generated command + */ + void (*baudrate_cmd)(uint32_t baudrate, uint8_t *hci_cmd_buffer); + + /** provide Set BD Addr command + * @param baudrate + * @param hci_cmd_buffer to store generated command + */ + void (*set_bd_addr_cmd)(void * config, bd_addr_t addr, uint8_t *hci_cmd_buffer); + + +} btstack_chipset_t; + +#if defined __cplusplus +} +#endif + +#endif // __BTSTACK_CHIPSET_H