aboutsummaryrefslogtreecommitdiff
path: root/bootloaders/nuevo_diskloader/src/USBCore.cpp
diff options
context:
space:
mode:
authorZach Eveland <zeveland@blacklabel-development.com>2011-10-25 18:56:10 -0400
committerZach Eveland <zeveland@blacklabel-development.com>2011-10-25 18:56:10 -0400
commit89108dd2b9aa1bc533bbbdb0f1461ec0899c8d1d (patch)
tree423a8df43afb84d45a09d821bd3b06644a5500e9 /bootloaders/nuevo_diskloader/src/USBCore.cpp
parent9a5c50d5864e9a18c856edb446ed2565037260e2 (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.cpp13
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)