From 9df3854281ed2a27d34cd863be7d6743c1e066ce Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Sun, 23 Jul 2017 19:03:13 +0200 Subject: [PATCH] atwilc3000: configure main baud rate --- .../atwilc3000/btstack_chipset_atwilc3000.c | 27 ++++++++++++++----- port/posix-h4-atwilc3000/main.c | 3 ++- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/chipset/atwilc3000/btstack_chipset_atwilc3000.c b/chipset/atwilc3000/btstack_chipset_atwilc3000.c index c0f8e5e17..21e21f08a 100644 --- a/chipset/atwilc3000/btstack_chipset_atwilc3000.c +++ b/chipset/atwilc3000/btstack_chipset_atwilc3000.c @@ -82,6 +82,23 @@ static uint32_t fw_size; static uint32_t fw_offset; static uint32_t fw_baudrate; +static void atwilc3000_set_baudrate_command(uint32_t baudrate, uint8_t *hci_cmd_buffer){ + hci_cmd_buffer[0] = 0x53; + hci_cmd_buffer[1] = 0xfc; + hci_cmd_buffer[2] = 5; + little_endian_store_32(hci_cmd_buffer, 3, fw_baudrate); + hci_cmd_buffer[7] = 0; // No flow control +} + +#if 0 +static void atwilc3000_set_bd_addr_command(bd_addr_t addr, uint8_t *hci_cmd_buffer){ + hci_cmd_buffer[0] = 0x06; + hci_cmd_buffer[1] = 0xFC; + hci_cmd_buffer[2] = 0x06; + reverse_bd_addr(addr, &hci_cmd_buffer[3]); +} +#endif + static void atwilc3000_send_command(const uint8_t * data, uint16_t len){ hci_dump_packet(HCI_COMMAND_DATA_PACKET, 0, (uint8_t *) &data[1], len - 1); the_uart_driver->send_block(data, len); @@ -133,11 +150,7 @@ static void atwilc3000_w4_command_complete_read_local_version_information(void){ static void atwilc3000_update_uart_params(void){ command_buffer[0] = 1; - command_buffer[1] = 0x53; - command_buffer[2] = 0xfc; - command_buffer[3] = 5; - little_endian_store_32(command_buffer, 4, fw_baudrate); - command_buffer[8] = 0; // No flow control + atwilc3000_set_baudrate_command(fw_baudrate, &command_buffer[1]); the_uart_driver->receive_block(&event_buffer[0], 7); the_uart_driver->set_block_received(&atwilc3000_w4_baudrate_update); atwilc3000_send_command(&command_buffer[0], 9); @@ -222,8 +235,8 @@ static const btstack_chipset_t btstack_chipset_atwilc3000 = { "atwilc3000", NULL, // chipset_init not used NULL, // chipset_next_command not used - NULL, // chipset_set_baudrate_command not needed as we're connected via SPI - NULL, // chipset_set_bd_addr not provided + atwilc3000_set_baudrate_command, + NULL, // atwilc3000_set_bd_addr_command, }; // MARK: public API diff --git a/port/posix-h4-atwilc3000/main.c b/port/posix-h4-atwilc3000/main.c index e64d3304e..29e6cd188 100644 --- a/port/posix-h4-atwilc3000/main.c +++ b/port/posix-h4-atwilc3000/main.c @@ -74,7 +74,7 @@ int btstack_main(int argc, const char * argv[]); static hci_transport_config_uart_t transport_config = { HCI_TRANSPORT_CONFIG_UART, 115200, - 0, // main baudrate + 921600, // main baudrate 0, // flow control NULL, }; @@ -128,6 +128,7 @@ static void phase2(int status){ const hci_transport_t * transport = hci_transport_h4_instance(uart_driver); const btstack_link_key_db_t * link_key_db = btstack_link_key_db_fs_instance(); hci_init(transport, (void*) &transport_config); + hci_set_chipset(btstack_chipset_atwilc3000_instance()); hci_set_link_key_db(link_key_db); // inform about BTstack state