From 7a4d61a3839cca16d148d13598e5b3ada33e2c26 Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Tue, 31 Mar 2020 21:41:30 +0200 Subject: [PATCH] chipset: assert hci packet buffers are suitable for firmware upload or patches (atwilc3000,bcm,cc256x,intel) --- CHANGELOG.md | 1 + .../atwilc3000/btstack_chipset_atwilc3000.c | 20 +++++++++++++------ chipset/bcm/btstack_chipset_bcm.c | 9 +++++++++ chipset/cc256x/btstack_chipset_cc256x.c | 9 +++++++++ .../intel/btstack_chipset_intel_firmware.c | 18 +++++++++++++---- 5 files changed, 47 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d2f507d19..1fb283b52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Added GATT Client: allow to register for any notification/indication and/or any connection hci_cmd: added hci_read_inquiry_scan_activity and hci_write_inquiry_scan_activity +chipset: assert hci packet buffers are suitable for firmware upload or patches (atwilc3000,bcm,cc256x,intel) ### Changed - AVRCP Target: volume in avrcp_target_volume_changed is reported as current value in interim response to register for volume change notifications diff --git a/chipset/atwilc3000/btstack_chipset_atwilc3000.c b/chipset/atwilc3000/btstack_chipset_atwilc3000.c index 72425ee5d..15447c7c0 100644 --- a/chipset/atwilc3000/btstack_chipset_atwilc3000.c +++ b/chipset/atwilc3000/btstack_chipset_atwilc3000.c @@ -35,6 +35,8 @@ * */ +#define BTSTACK_FILE__ "btstack_chipset_atwilc3000.c" + /* * btstack_chipset_atwilc3000.c * @@ -42,18 +44,24 @@ * */ -#define BTSTACK_FILE__ "btstack_chipset_atwilc3000.c" - #include "btstack_config.h" -#include "btstack_chipset_atwilc3000.h" -#include "btstack_debug.h" - #include /* NULL */ -#include +#include #include /* memcpy */ + +#include "btstack_chipset_atwilc3000.h" +#include "btstack_debug.h" #include "hci.h" +// assert outgoing and incoming hci packet buffers can hold max hci command resp. event packet +#if HCI_OUTGOING_PACKET_BUFFER_SIZE < (HCI_CMD_HEADER_SIZE + 255) +#error "HCI_OUTGOING_PACKET_BUFFER_SIZE to small. Outgoing HCI packet buffer to small for largest HCI Command packet. Please set HCI_ACL_PAYLOAD_SIZE to 258 or higher." +#endif +#if HCI_INCOMING_PACKET_BUFFER_SIZE < (HCI_EVENT_HEADER_SIZE_HEADER_SIZE + 255) +#error "HCI_INCOMING_PACKET_BUFFER_SIZE to small. Incoming HCI packet buffer to small for largest HCI Event packet. Please set HCI_ACL_PAYLOAD_SIZE to 257 or higher." +#endif + // Address to load firmware #define IRAM_START 0x80000000 diff --git a/chipset/bcm/btstack_chipset_bcm.c b/chipset/bcm/btstack_chipset_bcm.c index 220d378f8..e2b995b46 100644 --- a/chipset/bcm/btstack_chipset_bcm.c +++ b/chipset/bcm/btstack_chipset_bcm.c @@ -52,6 +52,7 @@ #include "btstack_control.h" #include "btstack_debug.h" #include "btstack_chipset_bcm.h" +#include "hci.h" #ifdef HAVE_POSIX_FILE_IO #include @@ -64,6 +65,14 @@ #include #endif +// assert outgoing and incoming hci packet buffers can hold max hci command resp. event packet +#if HCI_OUTGOING_PACKET_BUFFER_SIZE < (HCI_CMD_HEADER_SIZE + 255) +#error "HCI_OUTGOING_PACKET_BUFFER_SIZE to small. Outgoing HCI packet buffer to small for largest HCI Command packet. Please set HCI_ACL_PAYLOAD_SIZE to 258 or higher." +#endif +#if HCI_INCOMING_PACKET_BUFFER_SIZE < (HCI_EVENT_HEADER_SIZE_HEADER_SIZE + 255) +#error "HCI_INCOMING_PACKET_BUFFER_SIZE to small. Incoming HCI packet buffer to small for largest HCI Event packet. Please set HCI_ACL_PAYLOAD_SIZE to 257 or higher." +#endif + static int send_download_command; static uint32_t init_script_offset; diff --git a/chipset/cc256x/btstack_chipset_cc256x.c b/chipset/cc256x/btstack_chipset_cc256x.c index 1127b2651..d6584bbd8 100644 --- a/chipset/cc256x/btstack_chipset_cc256x.c +++ b/chipset/cc256x/btstack_chipset_cc256x.c @@ -64,11 +64,20 @@ #include "btstack_config.h" #include "btstack_chipset_cc256x.h" #include "btstack_debug.h" +#include "hci.h" #include /* NULL */ #include #include /* memcpy */ +// assert outgoing and incoming hci packet buffers can hold max hci command resp. event packet +#if HCI_OUTGOING_PACKET_BUFFER_SIZE < (HCI_CMD_HEADER_SIZE + 255) +#error "HCI_OUTGOING_PACKET_BUFFER_SIZE to small. Outgoing HCI packet buffer to small for largest HCI Command packet. Please set HCI_ACL_PAYLOAD_SIZE to 258 or higher." +#endif +#if HCI_INCOMING_PACKET_BUFFER_SIZE < (HCI_EVENT_HEADER_SIZE_HEADER_SIZE + 255) +#error "HCI_INCOMING_PACKET_BUFFER_SIZE to small. Incoming HCI packet buffer to small for largest HCI Event packet. Please set HCI_ACL_PAYLOAD_SIZE to 257 or higher." +#endif + #if defined(__GNUC__) && defined(__MSP430X__) && (__MSP430X__ > 0) #include "hal_compat.h" #endif diff --git a/chipset/intel/btstack_chipset_intel_firmware.c b/chipset/intel/btstack_chipset_intel_firmware.c index d7a46b138..3861da90e 100644 --- a/chipset/intel/btstack_chipset_intel_firmware.c +++ b/chipset/intel/btstack_chipset_intel_firmware.c @@ -42,13 +42,23 @@ #include #include "btstack_chipset_intel_firmware.h" -#include "hci_cmd.h" + #include "bluetooth.h" -#include "hci_dump.h" -#include "btstack_event.h" #include "btstack_debug.h" -#include "btstack_util.h" +#include "btstack_event.h" #include "btstack_run_loop.h" +#include "btstack_util.h" +#include "hci.h" +#include "hci_cmd.h" +#include "hci_dump.h" + +// assert outgoing and incoming hci packet buffers can hold max hci command resp. event packet +#if HCI_OUTGOING_PACKET_BUFFER_SIZE < (HCI_CMD_HEADER_SIZE + 255) +#error "HCI_OUTGOING_PACKET_BUFFER_SIZE to small. Outgoing HCI packet buffer to small for largest HCI Command packet. Please set HCI_ACL_PAYLOAD_SIZE to 258 or higher." +#endif +#if HCI_INCOMING_PACKET_BUFFER_SIZE < (HCI_EVENT_HEADER_SIZE_HEADER_SIZE + 255) +#error "HCI_INCOMING_PACKET_BUFFER_SIZE to small. Incoming HCI packet buffer to small for largest HCI Event packet. Please set HCI_ACL_PAYLOAD_SIZE to 257 or higher." +#endif // Vendor specific structs