Microchip® Advanced Software Framework

btstack_chipset_atwilc3000.c File Reference
#include "btstack_config.h"
#include "btstack_chipset_atwilc3000.h"
#include "btstack_debug.h"
#include "conf_board.h"
#include "usart.h"
#include "hal_uart_dma.h"
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include "hci.h"

Macros

#define __BTSTACK_FILE__   "btstack_chipset_atwilc3000.c"
 
#define ATWILC3000_RESET_TIME_MS   250
 
#define FIRMWARE_CHUNK_SIZE   4096
 
#define IRAM_START   0x80000000
 

Functions

static void atwilc3000_configure_uart (btstack_timer_source_t *ts)
 
static void atwilc3000_done (void)
 
static void atwilc3000_log_event (void)
 
static void atwilc3000_send_command (const uint8_t *data, uint16_t len)
 
static void atwilc3000_set_baudrate_command (uint32_t baudrate, uint8_t *hci_cmd_buffer)
 
static void atwilc3000_set_bd_addr_command (bd_addr_t addr, uint8_t *hci_cmd_buffer)
 
static void atwilc3000_start (void)
 
static void atwilc3000_update_uart_params (void)
 
static void atwilc3000_vendor_specific_reset (void)
 
static void atwilc3000_w4_baudrate_update (void)
 
static void atwilc3000_w4_command_complete_read_local_version_information (void)
 
static void atwilc3000_w4_command_complete_reset (void)
 
static void atwilc3000_wait_for_reset_completed (void)
 
static void atwilc3000_write_firmware (void)
 
static void atwilc3000_write_memory (void)
 
void btstack_chipset_atwilc3000_download_firmware (const btstack_uart_block_t *uart_driver, uint32_t baudrate, int flowcontrol, const uint8_t *da_fw_data, uint32_t da_fw_size, void(*done)(int result))
 Download firmware via uart_driver. More...
 
const btstack_chipset_tbtstack_chipset_atwilc3000_instance (void)
 get chipset instance More...
 

Variables

static int atwilc3000_flowcontrol
 
static const btstack_chipset_t btstack_chipset_atwilc3000
 
static uint8_t command_buffer [12]
 
static void(* download_complete )(int result)
 
static int download_count
 
static uint8_t event_buffer [15]
 
static uint32_t fw_baudrate
 
static const uint8_t * fw_data
 
static int fw_flowcontrol
 
static uint32_t fw_offset
 
static uint32_t fw_size
 
static const uint8_t hci_read_local_version_information_command [] = { 0x01, 0x01, 0x10, 0x00 }
 
static const uint8_t hci_reset_command [] = { 0x01, 0x03, 0x0c, 0x00 }
 
static const uint8_t hci_vendor_specific_reset_command [] = { 0x01, 0x55, 0xfc, 0x00 }
 
static btstack_timer_source_t reset_timer
 
static const btstack_uart_block_tthe_uart_driver
 

#define __BTSTACK_FILE__   "btstack_chipset_atwilc3000.c"
#define ATWILC3000_RESET_TIME_MS   250
#define FIRMWARE_CHUNK_SIZE   4096
#define IRAM_START   0x80000000

Referenced by atwilc3000_write_memory().

static void atwilc3000_set_baudrate_command ( uint32_t  baudrate,
uint8_t *  hci_cmd_buffer 
)
static
static void atwilc3000_set_bd_addr_command ( bd_addr_t  addr,
uint8_t *  hci_cmd_buffer 
)
static

References reverse_bd_addr().

static void atwilc3000_w4_baudrate_update ( void  )
static
static void atwilc3000_w4_command_complete_read_local_version_information ( void  )
static
void btstack_chipset_atwilc3000_download_firmware ( const btstack_uart_block_t uart_driver,
uint32_t  baudrate,
int  flowcontrol,
const uint8_t *  fw,
uint32_t  fw_size,
void(*)(int result)  done 
)

Download firmware via uart_driver.

Parameters
uart_driver– already initialized
baudratefor firmware update
flowcontrolafter firmwware update
donecallback. 0 = Success

References atwilc3000_start(), download_complete, download_count, fw_baudrate, fw_data, fw_flowcontrol, fw_offset, fw_size, log_error, btstack_uart_block_t::open, and uart_driver.

Referenced by bt_task().

const btstack_chipset_t* btstack_chipset_atwilc3000_instance ( void  )

get chipset instance

References btstack_chipset_atwilc3000.

Referenced by bt_app_init().

const btstack_chipset_t btstack_chipset_atwilc3000
static
Initial value:
= {
"atwilc3000",
NULL,
NULL,
}
#define NULL
Definition: src/include/lwip/def.h:47
static void atwilc3000_set_baudrate_command(uint32_t baudrate, uint8_t *hci_cmd_buffer)
Definition: btstack_chipset_atwilc3000.c:108
static void atwilc3000_set_bd_addr_command(bd_addr_t addr, uint8_t *hci_cmd_buffer)
Definition: btstack_chipset_atwilc3000.c:117

Referenced by btstack_chipset_atwilc3000_instance().

uint8_t command_buffer[12]
static
int download_count
static
const uint8_t* fw_data
static
int fw_flowcontrol
static
const uint8_t hci_read_local_version_information_command[] = { 0x01, 0x01, 0x10, 0x00 }
static
const uint8_t hci_reset_command[] = { 0x01, 0x03, 0x0c, 0x00 }
static

Referenced by atwilc3000_start().

const uint8_t hci_vendor_specific_reset_command[] = { 0x01, 0x55, 0xfc, 0x00 }
static
btstack_timer_source_t reset_timer
static
const btstack_uart_block_t* the_uart_driver
static