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

Dependencies:   SWD USBDevice mbed BaseDAP

Committer:
va009039
Date:
Sat Sep 28 03:21:14 2013 +0000
Revision:
1:ea8e179320d7
Parent:
0:2385683c867a
add USBMSD_Drop class. add CDC(Virtual COM) and HID(for example CMSIS-DAP), but KL25Z not work.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 1:ea8e179320d7 1 // USBMSD_LPC.cpp 2013/9/28
va009039 0:2385683c867a 2 #include "mbed.h"
va009039 0:2385683c867a 3 #include "USBMSD_LPC.h"
va009039 1:ea8e179320d7 4 #define MY_DEBUG
va009039 0:2385683c867a 5 #include "mydebug.h"
va009039 0:2385683c867a 6
va009039 1:ea8e179320d7 7 #ifdef TARGET_LPC1768
va009039 1:ea8e179320d7 8 #define LED_ON 1
va009039 1:ea8e179320d7 9 #define LED_OFF 0
va009039 1:ea8e179320d7 10 #endif
va009039 1:ea8e179320d7 11 #ifdef TARGET_KL25Z
va009039 1:ea8e179320d7 12 #define LED_ON 0
va009039 1:ea8e179320d7 13 #define LED_OFF 1
va009039 1:ea8e179320d7 14 #endif
va009039 1:ea8e179320d7 15 DigitalOut led3(LED3);
va009039 0:2385683c867a 16
va009039 1:ea8e179320d7 17 USBMSD_LPC::USBMSD_LPC(SWD* swd, Serial* usbpc) : _pc(usbpc)
va009039 0:2385683c867a 18 {
va009039 1:ea8e179320d7 19 _target = new Target2(swd);
va009039 1:ea8e179320d7 20 _flash = NULL;
va009039 1:ea8e179320d7 21 led3 = LED_OFF;
va009039 0:2385683c867a 22 }
va009039 0:2385683c867a 23
va009039 1:ea8e179320d7 24 /* virtual */ void USBMSD_LPC::Drop(const uint8_t* data, int len, int offset, int total)
va009039 0:2385683c867a 25 {
va009039 1:ea8e179320d7 26 if (_flash == NULL) {
va009039 1:ea8e179320d7 27 _target->setup();
va009039 1:ea8e179320d7 28 _flash = new Flash(_target, _pc);
va009039 0:2385683c867a 29 }
va009039 1:ea8e179320d7 30 DBG("%d/%d", offset, total);
va009039 1:ea8e179320d7 31 if (offset == 0) {
va009039 0:2385683c867a 32 _flash->init();
va009039 0:2385683c867a 33 _flash->eraseAll();
va009039 1:ea8e179320d7 34 led3 = LED_ON;
va009039 0:2385683c867a 35 }
va009039 1:ea8e179320d7 36 _flash->write(offset, data, len);
va009039 1:ea8e179320d7 37 led3 = !led3;
va009039 1:ea8e179320d7 38 if (offset+len >= total) {
va009039 1:ea8e179320d7 39 led3 = LED_OFF;
va009039 1:ea8e179320d7 40 delete _flash;
va009039 1:ea8e179320d7 41 _flash = NULL;
va009039 1:ea8e179320d7 42 _target->SoftwareReset();
va009039 1:ea8e179320d7 43 _target->setup();
va009039 1:ea8e179320d7 44 }
va009039 0:2385683c867a 45 }