usb

Dependencies:   mbed FatFileSystemCpp

Committer:
CANGuru
Date:
Thu Feb 18 16:59:35 2021 +0000
Revision:
4:091ef1bde6d6
Parent:
0:e294af8d0e07
test

Who changed what in which revision?

UserRevisionLine numberNew 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 }