usb
Dependencies: mbed FatFileSystemCpp
main.cpp@4:091ef1bde6d6, 2021-02-18 (annotated)
- Committer:
- CANGuru
- Date:
- Thu Feb 18 16:59:35 2021 +0000
- Revision:
- 4:091ef1bde6d6
- Parent:
- 0:e294af8d0e07
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
igorsk | 0:e294af8d0e07 | 1 | #include "mbed.h" |
igorsk | 0:e294af8d0e07 | 2 | #include "MSCFileSystem.h" |
igorsk | 0:e294af8d0e07 | 3 | //#include <stat.h> |
igorsk | 0:e294af8d0e07 | 4 | |
igorsk | 0:e294af8d0e07 | 5 | #define FSNAME "msc" |
igorsk | 0:e294af8d0e07 | 6 | MSCFileSystem msc(FSNAME); |
igorsk | 0:e294af8d0e07 | 7 | |
CANGuru | 4:091ef1bde6d6 | 8 | uint8_t myblock[1024]; |
CANGuru | 4:091ef1bde6d6 | 9 | |
CANGuru | 4:091ef1bde6d6 | 10 | |
igorsk | 0:e294af8d0e07 | 11 | int main() |
igorsk | 0:e294af8d0e07 | 12 | { |
igorsk | 0:e294af8d0e07 | 13 | DIR *d; |
igorsk | 0:e294af8d0e07 | 14 | struct dirent *p; |
igorsk | 0:e294af8d0e07 | 15 | //struct stat st; |
igorsk | 0:e294af8d0e07 | 16 | //char path[PATH_MAX]; |
igorsk | 0:e294af8d0e07 | 17 | |
CANGuru | 4:091ef1bde6d6 | 18 | printf("\r\n================================\r\n"); |
CANGuru | 4:091ef1bde6d6 | 19 | printf("USB Mass storage demo program for mbed LPC1768\r\n"); |
CANGuru | 4:091ef1bde6d6 | 20 | printf("================================\r\n"); |
igorsk | 0:e294af8d0e07 | 21 | |
igorsk | 0:e294af8d0e07 | 22 | d = opendir("/" FSNAME); |
igorsk | 0:e294af8d0e07 | 23 | |
CANGuru | 4:091ef1bde6d6 | 24 | printf("\r\nList of files on the flash drive:\r\n"); |
igorsk | 0:e294af8d0e07 | 25 | if ( d != NULL ) |
igorsk | 0:e294af8d0e07 | 26 | { |
igorsk | 0:e294af8d0e07 | 27 | while ( (p = readdir(d)) != NULL ) |
igorsk | 0:e294af8d0e07 | 28 | { |
CANGuru | 4:091ef1bde6d6 | 29 | printf(" - %s\r\n", p->d_name); |
igorsk | 0:e294af8d0e07 | 30 | /* no <stat.h> on mbed, it seems :/ |
igorsk | 0:e294af8d0e07 | 31 | sprintf(path, "/"FSNAME"/%s", p->d_name); |
igorsk | 0:e294af8d0e07 | 32 | if ( stat(path, &st) == 0 ) |
igorsk | 0:e294af8d0e07 | 33 | { |
igorsk | 0:e294af8d0e07 | 34 | if ( S_ISDIR(st.st_mode) ) |
igorsk | 0:e294af8d0e07 | 35 | printf(" <directory>\n"); |
igorsk | 0:e294af8d0e07 | 36 | else |
igorsk | 0:e294af8d0e07 | 37 | printf(" %d\n", st.st_size); |
igorsk | 0:e294af8d0e07 | 38 | } |
igorsk | 0:e294af8d0e07 | 39 | else |
igorsk | 0:e294af8d0e07 | 40 | { |
igorsk | 0:e294af8d0e07 | 41 | printf(" ???\n"); |
igorsk | 0:e294af8d0e07 | 42 | }*/ |
igorsk | 0:e294af8d0e07 | 43 | } |
igorsk | 0:e294af8d0e07 | 44 | } |
igorsk | 0:e294af8d0e07 | 45 | else |
igorsk | 0:e294af8d0e07 | 46 | { |
igorsk | 0:e294af8d0e07 | 47 | error("Could not open directory!"); |
igorsk | 0:e294af8d0e07 | 48 | } |
CANGuru | 4:091ef1bde6d6 | 49 | printf("\r\nTesting file write:\r\n"); |
igorsk | 0:e294af8d0e07 | 50 | FILE *fp = fopen( "/" FSNAME "/msctest.txt", "w"); |
igorsk | 0:e294af8d0e07 | 51 | if ( fp == NULL ) |
igorsk | 0:e294af8d0e07 | 52 | { |
CANGuru | 4:091ef1bde6d6 | 53 | error("Could not open file for write\r\n"); |
igorsk | 0:e294af8d0e07 | 54 | } |
CANGuru | 4:091ef1bde6d6 | 55 | |
CANGuru | 4:091ef1bde6d6 | 56 | printf("\r\nWriting 1MB:\r\n"); |
CANGuru | 4:091ef1bde6d6 | 57 | for (int mb=0;mb<10;mb++){ |
CANGuru | 4:091ef1bde6d6 | 58 | for (int k=0;k<1024;k++){ |
CANGuru | 4:091ef1bde6d6 | 59 | fwrite(&myblock, sizeof(myblock), 1, fp); |
CANGuru | 4:091ef1bde6d6 | 60 | |
CANGuru | 4:091ef1bde6d6 | 61 | } |
CANGuru | 4:091ef1bde6d6 | 62 | printf("Written %dMB:\r\n",mb); |
CANGuru | 4:091ef1bde6d6 | 63 | } |
CANGuru | 4:091ef1bde6d6 | 64 | printf("\r\nFinished:\r\n"); |
CANGuru | 4:091ef1bde6d6 | 65 | |
igorsk | 0:e294af8d0e07 | 66 | fprintf(fp, "Hello mass storage!"); |
igorsk | 0:e294af8d0e07 | 67 | fclose(fp); |
CANGuru | 4:091ef1bde6d6 | 68 | printf("\n - OK\r\n"); |
CANGuru | 4:091ef1bde6d6 | 69 | /* |
igorsk | 0:e294af8d0e07 | 70 | printf("\nTesting file read:\n"); |
igorsk | 0:e294af8d0e07 | 71 | fp = fopen( "/" FSNAME "/msctest.txt", "r"); |
igorsk | 0:e294af8d0e07 | 72 | if ( fp == NULL ) |
igorsk | 0:e294af8d0e07 | 73 | { |
igorsk | 0:e294af8d0e07 | 74 | error("Could not open file for read\n"); |
igorsk | 0:e294af8d0e07 | 75 | } |
igorsk | 0:e294af8d0e07 | 76 | char buf[256]; |
igorsk | 0:e294af8d0e07 | 77 | if ( NULL == fgets(buf, sizeof(buf), fp) ) |
igorsk | 0:e294af8d0e07 | 78 | { |
igorsk | 0:e294af8d0e07 | 79 | error("Error reading from file\n"); |
igorsk | 0:e294af8d0e07 | 80 | } |
igorsk | 0:e294af8d0e07 | 81 | fclose(fp); |
igorsk | 0:e294af8d0e07 | 82 | printf("\n - OK, read string: '%s'\n\n", buf); |
CANGuru | 4:091ef1bde6d6 | 83 | |
CANGuru | 4:091ef1bde6d6 | 84 | */ |
igorsk | 0:e294af8d0e07 | 85 | } |