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:
RomDisk.cpp@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 // RomDisk.cpp 2013/9/26
va009039 0:2385683c867a 2 #include "mbed.h"
va009039 0:2385683c867a 3 #include "RomDisk.h"
va009039 0:2385683c867a 4
va009039 0:2385683c867a 5 RomDisk::RomDisk()
va009039 0:2385683c867a 6 {
va009039 0:2385683c867a 7 _sectors = 128; // 64KB(512*128)
va009039 0:2385683c867a 8 }
va009039 0:2385683c867a 9
va009039 0:2385683c867a 10 int RomDisk::read(uint8_t * data, uint32_t block)
va009039 0:2385683c867a 11 {
va009039 0:2385683c867a 12 SectorIndex* p = const_cast<SectorIndex*>(sector_index);
va009039 0:2385683c867a 13 while(p->data) {
va009039 0:2385683c867a 14 if (p->block == block) {
va009039 0:2385683c867a 15 memcpy(data, p->data, 512);
va009039 0:2385683c867a 16 return 0;
va009039 0:2385683c867a 17 }
va009039 0:2385683c867a 18 p++;
va009039 0:2385683c867a 19 }
va009039 0:2385683c867a 20 memset(data, 0x00, 512);
va009039 0:2385683c867a 21 return 0;
va009039 0:2385683c867a 22 }
va009039 0:2385683c867a 23
va009039 0:2385683c867a 24 int RomDisk::write(const uint8_t * data, uint32_t block)
va009039 0:2385683c867a 25 {
va009039 0:2385683c867a 26 return 0;
va009039 0:2385683c867a 27 }
va009039 0:2385683c867a 28
va009039 0:2385683c867a 29 uint32_t RomDisk::sectors()
va009039 0:2385683c867a 30 {
va009039 0:2385683c867a 31 return _sectors;
va009039 0:2385683c867a 32 }
va009039 0:2385683c867a 33
va009039 1:ea8e179320d7 34 bool RomDisk::is_fat(uint32_t sector)
va009039 1:ea8e179320d7 35 {
va009039 1:ea8e179320d7 36 return sector >= 6 && sector <= 7;
va009039 1:ea8e179320d7 37 }
va009039 1:ea8e179320d7 38
va009039 1:ea8e179320d7 39 bool RomDisk::is_rootdir(uint32_t sector)
va009039 0:2385683c867a 40 {
va009039 1:ea8e179320d7 41 return sector >= 8 && sector <= 15;
va009039 0:2385683c867a 42 }
va009039 1:ea8e179320d7 43
va009039 1:ea8e179320d7 44 int RomDisk::dir_count(uint32_t sector)
va009039 1:ea8e179320d7 45 {
va009039 1:ea8e179320d7 46 if (!is_rootdir(sector)) {
va009039 1:ea8e179320d7 47 return -1;
va009039 1:ea8e179320d7 48 }
va009039 1:ea8e179320d7 49 return sector - 8;
va009039 1:ea8e179320d7 50 }
va009039 1:ea8e179320d7 51
va009039 1:ea8e179320d7 52 uint32_t RomDisk::cluster_to_sector(uint32_t cluster)
va009039 1:ea8e179320d7 53 {
va009039 1:ea8e179320d7 54 return cluster + 38;
va009039 1:ea8e179320d7 55 }