USB composite device example program, drag-and-drop flash writer.
Dependencies: SWD USBDevice mbed BaseDAP
Diff: USBMSD_LPC.h
- Revision:
- 0:2385683c867a
- Child:
- 1:ea8e179320d7
diff -r 000000000000 -r 2385683c867a USBMSD_LPC.h --- /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; +};