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

Dependencies:   SWD USBDevice mbed BaseDAP

USBMSD_LPC.h

Committer:
va009039
Date:
2013-09-17
Revision:
0:2385683c867a
Child:
1:ea8e179320d7

File content as of revision 0:2385683c867a:

// 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;
};