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

Dependencies:   SWD USBDevice mbed BaseDAP

Committer:
va009039
Date:
Tue Sep 17 04:33:44 2013 +0000
Revision:
0:2385683c867a
Child:
1:ea8e179320d7
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 0:2385683c867a 1 // USBMSD_LPC.h 2013/9/16
va009039 0:2385683c867a 2 #pragma once
va009039 0:2385683c867a 3 #include "USBMSD.h"
va009039 0:2385683c867a 4 #include "RomDisk.h"
va009039 0:2385683c867a 5 #include "Target2.h"
va009039 0:2385683c867a 6 #include "Flash.h"
va009039 0:2385683c867a 7
va009039 0:2385683c867a 8 /** drag-and-drop flash writer using the USBMSD class
va009039 0:2385683c867a 9 *
va009039 0:2385683c867a 10 * @code
va009039 0:2385683c867a 11 * #include "mbed.h"
va009039 0:2385683c867a 12 * #include "USBMSD_LPC.h"
va009039 0:2385683c867a 13 * Serial pc(USBTX, USBRX);
va009039 0:2385683c867a 14 * int main() {
va009039 0:2385683c867a 15 * USBMSD_LPC* LPC1114 = new USBMSD_LPC(PTB8,PTB9,PTB10,&pc); // SWDIO(dp12),SWCLK(dp3),nReset(dp23)
va009039 0:2385683c867a 16 * while(1); // forever
va009039 0:2385683c867a 17 * }
va009039 0:2385683c867a 18 * @endcode
va009039 0:2385683c867a 19 */
va009039 0:2385683c867a 20 class USBMSD_LPC : public USBMSD {
va009039 0:2385683c867a 21 public:
va009039 0:2385683c867a 22 /** create drag-and-drop flash writer
va009039 0:2385683c867a 23 * @param swdio SWD(swdio) pin
va009039 0:2385683c867a 24 * @param swclk SWD(swclk) pin
va009039 0:2385683c867a 25 * @param reset reset pin
va009039 0:2385683c867a 26 * @param usbpc output stream
va009039 0:2385683c867a 27 */
va009039 0:2385683c867a 28 USBMSD_LPC(PinName swdio, PinName swclk, PinName reset, Serial* usbpc);
va009039 0:2385683c867a 29 virtual ~USBMSD_LPC() {}
va009039 0:2385683c867a 30 virtual int disk_initialize();
va009039 0:2385683c867a 31 virtual int disk_status();
va009039 0:2385683c867a 32 virtual int disk_read(uint8_t * data, uint64_t block);
va009039 0:2385683c867a 33 virtual int disk_write(const uint8_t * data, uint64_t block);
va009039 0:2385683c867a 34 virtual uint64_t disk_sectors();
va009039 0:2385683c867a 35 virtual uint64_t disk_size();
va009039 0:2385683c867a 36 protected:
va009039 0:2385683c867a 37 void flashBinary(int addr, const uint8_t* buf, int size);
va009039 0:2385683c867a 38 RomDisk _romdisk;
va009039 0:2385683c867a 39 bool _prog_mode;
va009039 0:2385683c867a 40 int _prev_block;
va009039 0:2385683c867a 41 int _addr;
va009039 0:2385683c867a 42 uint8_t _status;
va009039 0:2385683c867a 43 Target2 _target;
va009039 0:2385683c867a 44 Flash* _flash;
va009039 0:2385683c867a 45 Serial* _pc;
va009039 0:2385683c867a 46 };