diff options
author | Zach Eveland <zeveland@blacklabel-development.com> | 2011-10-25 18:56:10 -0400 |
---|---|---|
committer | Zach Eveland <zeveland@blacklabel-development.com> | 2011-10-25 18:56:10 -0400 |
commit | 89108dd2b9aa1bc533bbbdb0f1461ec0899c8d1d (patch) | |
tree | 423a8df43afb84d45a09d821bd3b06644a5500e9 /bootloaders/nuevo_diskloader/src/USBCore.cpp | |
parent | 9a5c50d5864e9a18c856edb446ed2565037260e2 (diff) |
progress on bootloader bug - have implemented blocking USB_Recv. avrdude makes it to flash programming address 0400 or so before hanging
Diffstat (limited to 'bootloaders/nuevo_diskloader/src/USBCore.cpp')
-rw-r--r-- | bootloaders/nuevo_diskloader/src/USBCore.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/bootloaders/nuevo_diskloader/src/USBCore.cpp b/bootloaders/nuevo_diskloader/src/USBCore.cpp index cfcef73..fffe6f7 100644 --- a/bootloaders/nuevo_diskloader/src/USBCore.cpp +++ b/bootloaders/nuevo_diskloader/src/USBCore.cpp @@ -217,6 +217,19 @@ u8 USB_Available(u8 ep) return FifoByteCount(); } +void USB_Recv_block(u8 ep, u8* dst, int len) +{ + SetEP(ep); + while (len--) + { + while (!ReadWriteAllowed()) + ; + *dst++ = Recv8(); + if (!ReadWriteAllowed()) // release empty buffer + ReleaseRX(); + } +} + // Non Blocking receive // Return number of bytes read int USB_Recv(u8 ep, void* d, int len) |