mirror of
https://github.com/pine64/blisp.git
synced 2026-09-18 15:51:32 +00:00
Fix it to work under FreeBSD
Add sp_drain() where needed. Without it FreeBSD won't pass the handshake phase. Also decreate max buffer size. Tested with Pinecil v2 and it can write and check new firmware.
This commit is contained in:
+10
-6
@@ -13,6 +13,12 @@
|
||||
|
||||
#define DEBUG
|
||||
|
||||
static void drain(struct sp_port* port) {
|
||||
#if defined(__APPLE__) || defined(__FreeBSD__)
|
||||
sp_drain(port);
|
||||
#endif
|
||||
}
|
||||
|
||||
int32_t blisp_device_init(struct blisp_device* device,
|
||||
struct blisp_chip* chip) {
|
||||
device->chip = chip;
|
||||
@@ -130,9 +136,7 @@ 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
|
||||
drain(serial_port);
|
||||
|
||||
return BLISP_OK;
|
||||
}
|
||||
@@ -195,12 +199,12 @@ 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
|
||||
drain(serial_port);
|
||||
}
|
||||
}
|
||||
ret = sp_blocking_write(serial_port, handshake_buffer, bytes_count, 500);
|
||||
// not sure about Apple part, but FreeBSD needs it
|
||||
drain(serial_port);
|
||||
if (ret < 0) {
|
||||
blisp_dlog("Handshake write failed, ret %d", ret);
|
||||
return BLISP_ERR_UNKNOWN;
|
||||
|
||||
Reference in New Issue
Block a user