diff --git a/lib/blisp.c b/lib/blisp.c index 0375bef..3491496 100644 --- a/lib/blisp.c +++ b/lib/blisp.c @@ -130,6 +130,10 @@ int32_t blisp_send_command(struct blisp_device* device, blisp_dlog("Received error or not written all data: %d", ret); return BLISP_ERR_UNKNOWN; } +#ifdef __APPLE__ + sp_drain(serial_port); +#endif + return BLISP_OK; } @@ -191,6 +195,9 @@ int32_t blisp_device_handshake(struct blisp_device* device, bool in_ef_loader) { if (!in_ef_loader) { if (device->is_usb) { sp_blocking_write(serial_port, "BOUFFALOLAB5555RESET\0\0", 22, 100); +#ifdef __APPLE__ + sp_drain(serial_port); +#endif } } ret = sp_blocking_write(serial_port, handshake_buffer, bytes_count, 500); @@ -210,6 +217,7 @@ int32_t blisp_device_handshake(struct blisp_device* device, bool in_ef_loader) { return BLISP_OK; } } + } blisp_dlog("Received no response from chip."); return BLISP_ERR_NO_RESPONSE; diff --git a/lib/blisp_easy.c b/lib/blisp_easy.c index 37a9216..d0df3a8 100644 --- a/lib/blisp_easy.c +++ b/lib/blisp_easy.c @@ -57,17 +57,23 @@ int32_t blisp_easy_load_segment_data( struct blisp_easy_transport* segment_transport, blisp_easy_progress_callback progress_callback) { int32_t ret; +#ifdef __APPLE__ + const uint16_t buffer_max_size = 252 * 16; +#else + const uint16_t buffer_max_size = 4092; +#endif + uint32_t sent_data = 0; uint32_t buffer_size = 0; - uint8_t buffer[4092]; + uint8_t buffer[buffer_max_size]; blisp_easy_report_progress(progress_callback, 0, segment_size); while (sent_data < segment_size) { buffer_size = segment_size - sent_data; - if (buffer_size > 4092) { - buffer_size = 4092; + if (buffer_size > buffer_max_size) { + buffer_size = buffer_max_size; } blisp_easy_transport_read(segment_transport, buffer, buffer_size); // TODO: Error Handling @@ -319,15 +325,21 @@ int32_t blisp_easy_flash_write(struct blisp_device* device, uint32_t data_size, blisp_easy_progress_callback progress_callback) { int32_t ret; +#ifdef __APPLE__ + const uint16_t buffer_max_size = 372 * 1; +#else + const uint16_t buffer_max_size = 2052; +#endif + uint32_t sent_data = 0; uint32_t buffer_size = 0; - uint8_t buffer[8184]; + uint8_t buffer[buffer_max_size]; blisp_easy_report_progress(progress_callback, 0, data_size); while (sent_data < data_size) { buffer_size = data_size - sent_data; - if (buffer_size > 2052) { - buffer_size = 2052; + if (buffer_size > buffer_max_size) { + buffer_size = buffer_max_size; } blisp_easy_transport_read(data_transport, buffer, buffer_size); // TODO: Error Handling