From 29c6772bc68e470e5e7fd6a129b9ce19f63bdd8a Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Fri, 21 Sep 2018 11:11:59 +0200 Subject: [PATCH] chipset/intel: add btstack_chipset_intel_set_firmware_path --- .../intel/btstack_chipset_intel_firmware.c | 26 ++++++++++++------- .../intel/btstack_chipset_intel_firmware.h | 8 +++++- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/chipset/intel/btstack_chipset_intel_firmware.c b/chipset/intel/btstack_chipset_intel_firmware.c index 05f0399c6..d801c79f7 100644 --- a/chipset/intel/btstack_chipset_intel_firmware.c +++ b/chipset/intel/btstack_chipset_intel_firmware.c @@ -71,6 +71,8 @@ static const hci_cmd_t hci_intel_fc9f = { // state +const char * firmware_path = "."; + const hci_transport_t * transport; static int state = 0; @@ -181,10 +183,10 @@ static int waiting_for_command_complete; static void state_machine(uint8_t * packet){ intel_version_t * version; intel_boot_params_t * boot_params; - char fw_name[30]; int res; uint16_t buffer_offset; bd_addr_t addr; + char fw_path[300]; if (packet){ // firmware upload complete event? @@ -240,15 +242,15 @@ static void state_machine(uint8_t * packet){ if (boot_params->limited_cce != 0) break; // firmware file - snprintf(fw_name, sizeof(fw_name), "ibt-%u-%u.sfi", hw_variant, dev_revid); - log_info("Open firmware %s", fw_name); - printf("Firwmare %s\n", fw_name); + snprintf(fw_path, sizeof(fw_path), "%s/ibt-%u-%u.sfi", firmware_path, hw_variant, dev_revid); + log_info("Open firmware %s", fw_path); + printf("Firwmare %s\n", fw_path); // open firmware file fw_offset = 0; - fw_file = fopen(fw_name, "rb"); + fw_file = fopen(fw_path, "rb"); if (!fw_file){ - log_error("can't open file %s", fw_name); + log_error("can't open file %s", fw_path); (*done)(1); return; } @@ -341,14 +343,14 @@ static void state_machine(uint8_t * packet){ dump_intel_version(version); // ddc config - snprintf(fw_name, sizeof(fw_name), "ibt-%u-%u.ddc", hw_variant, dev_revid); - log_info("Open DDC %s", fw_name); + snprintf(fw_path, sizeof(fw_path), "%s/ibt-%u-%u.ddc", firmware_path, hw_variant, dev_revid); + log_info("Open DDC %s", fw_path); // open ddc file fw_offset = 0; - fw_file = fopen(fw_name, "rb"); + fw_file = fopen(fw_path, "rb"); if (!fw_file){ - log_error("can't open file %s", fw_name); + log_error("can't open file %s", fw_path); (*done)(1); return; @@ -402,6 +404,10 @@ static void transport_packet_handler (uint8_t packet_type, uint8_t *packet, uint } } +void btstack_chipset_intel_set_firmware_path(const char * path){ + firmware_path = path; +} + void btstack_chipset_intel_download_firmware(const hci_transport_t * hci_transport, void (*callback)(int result)){ done = callback; diff --git a/chipset/intel/btstack_chipset_intel_firmware.h b/chipset/intel/btstack_chipset_intel_firmware.h index 7ecd11362..fd0fb9952 100644 --- a/chipset/intel/btstack_chipset_intel_firmware.h +++ b/chipset/intel/btstack_chipset_intel_firmware.h @@ -51,13 +51,19 @@ extern "C" { #endif - /** +/** * @brief Download firmware via hci_transport * @param transport * @param done callback. 0 = Success */ void btstack_chipset_intel_download_firmware(const hci_transport_t * hci_transport, void (*done)(int result)); +/** + * @brief Set path to firmware files + * @param firmware_path defeaults to "." + */ +void btstack_chipset_intel_set_firmware_path(const char * firmware_path); + #if defined __cplusplus } #endif