@@ -81,7 +81,7 @@ typedef struct
81
81
uint32_t bt2host_out_addr ;
82
82
} cybt_fw_membuf_info_t ;
83
83
84
- cybt_fw_membuf_info_t buf_info ;
84
+ static cybt_fw_membuf_info_t buf_info ;
85
85
86
86
#define BTFW_ADDR_MODE_UNKNOWN (0)
87
87
#define BTFW_ADDR_MODE_EXTENDED (1)
@@ -131,6 +131,7 @@ typedef struct hex_file_data
131
131
#endif
132
132
133
133
static cyw43_ll_t * cyw43_ll = NULL ;
134
+ static void * streaming_context ;
134
135
135
136
static cybt_result_t cybt_reg_write (uint32_t reg_addr , uint32_t value );
136
137
static cybt_result_t cybt_reg_read (uint32_t reg_addr , uint32_t * p_value );
@@ -265,7 +266,7 @@ static void cybt_fw_get_bytes(uint8_t *dst, const uint8_t **addr, uint8_t count)
265
266
#if CYW43_USE_HEX_BTFW
266
267
memcpy (dst , * addr , count );
267
268
#else
268
- const uint8_t * data = cyw43_get_firmware_funcs ()-> get_bt_fw ( * addr , count , dst , count );
269
+ const uint8_t * data = cyw43_get_firmware_funcs ()-> stream_fw ( streaming_context , count , dst );
269
270
if (data != dst ) {
270
271
memcpy (dst , data , count );
271
272
}
@@ -334,12 +335,19 @@ cybt_result_t cybt_fw_download(const uint8_t *p_bt_firmware,
334
335
return CYBT_ERR_BADARG ;
335
336
}
336
337
337
- if (NULL == p_bt_firmware || 0 == bt_firmware_len || NULL == p_write_buf || NULL == p_hex_buf ) {
338
+ if (NULL == p_write_buf || NULL == p_hex_buf ) {
338
339
return CYBT_ERR_BADARG ;
339
340
}
340
-
341
+ #if CYW43_USE_HEX_BTFW
342
+ if (NULL == p_bt_firmware || 0 == bt_firmware_len ) {
343
+ return CYBT_ERR_BADARG ;
344
+ }
345
+ #else
346
+ if (cyw43_get_firmware_funcs ()-> start_fw_stream (cyw43_get_firmware_funcs ()-> firmware_details (), CYW43_FIRMWARE_BLUETOOTH , & streaming_context ) != 0 ) {
347
+ assert (false);
348
+ return CYW43_EIO ;
349
+ }
341
350
// BT firmware starts with length of version string including a null terminator
342
- #if !CYW43_USE_HEX_BTFW
343
351
uint8_t version_len ;
344
352
cybt_fw_get_bytes (& version_len , & p_bt_firmware , 1 );
345
353
cybt_fw_get_bytes (p_hex_buf , & p_bt_firmware , version_len );
@@ -413,6 +421,9 @@ cybt_result_t cybt_fw_download(const uint8_t *p_bt_firmware,
413
421
write_data_len - first_write_len );
414
422
}
415
423
}
424
+ #if !CYW43_USE_HEX_BTFW
425
+ cyw43_get_firmware_funcs ()-> end_fw_stream (streaming_context , CYW43_FIRMWARE_BLUETOOTH );
426
+ #endif
416
427
return CYBT_SUCCESS ;
417
428
}
418
429
0 commit comments