USB composite device example program, drag-and-drop flash writer.

Dependencies:   SWD USBDevice mbed BaseDAP

Revision:
0:2385683c867a
Child:
1:ea8e179320d7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/USBMSD_LPC.h	Tue Sep 17 04:33:44 2013 +0000
@@ -0,0 +1,46 @@
+// USBMSD_LPC.h 2013/9/16
+#pragma once
+#include "USBMSD.h"
+#include "RomDisk.h"
+#include "Target2.h"
+#include "Flash.h"
+
+/** drag-and-drop flash writer using the USBMSD class
+ *
+ * @code
+ * #include "mbed.h"
+ * #include "USBMSD_LPC.h"
+ * Serial pc(USBTX, USBRX);
+ * int main() {
+ *     USBMSD_LPC* LPC1114 = new USBMSD_LPC(PTB8,PTB9,PTB10,&pc); // SWDIO(dp12),SWCLK(dp3),nReset(dp23)
+ *     while(1); // forever
+ * }
+ * @endcode
+ */
+class USBMSD_LPC : public USBMSD {
+public:
+    /** create drag-and-drop flash writer
+     * @param swdio SWD(swdio) pin
+     * @param swclk SWD(swclk) pin
+     * @param reset reset pin
+     * @param usbpc output stream
+     */
+    USBMSD_LPC(PinName swdio, PinName swclk, PinName reset, Serial* usbpc);
+    virtual ~USBMSD_LPC() {}
+    virtual int disk_initialize();
+    virtual int disk_status();
+    virtual int disk_read(uint8_t * data, uint64_t block);
+    virtual int disk_write(const uint8_t * data, uint64_t block);
+    virtual uint64_t disk_sectors();
+    virtual uint64_t disk_size();
+protected:
+    void flashBinary(int addr, const uint8_t* buf, int size);
+    RomDisk _romdisk;
+    bool _prog_mode;
+    int _prev_block;
+    int _addr;
+    uint8_t _status;
+    Target2 _target;
+    Flash* _flash;
+    Serial* _pc;
+};