Flash Local Filesystem Test Program

Dependencies:   mbed

Committer:
User_4574
Date:
Wed Mar 24 00:02:31 2010 +0000
Revision:
0:ad25de01864e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
User_4574 0:ad25de01864e 1 #include "mbed.h"
User_4574 0:ad25de01864e 2
User_4574 0:ad25de01864e 3 Serial pc(USBTX, USBRX);
User_4574 0:ad25de01864e 4 LocalFileSystem local("local");
User_4574 0:ad25de01864e 5
User_4574 0:ad25de01864e 6 void get_from_pc(char* buffer) {
User_4574 0:ad25de01864e 7 char c;
User_4574 0:ad25de01864e 8 int i;
User_4574 0:ad25de01864e 9 for (i=0; i<64; i++) buffer[i] = '\0';
User_4574 0:ad25de01864e 10 i=0;
User_4574 0:ad25de01864e 11 pc.printf(": ");
User_4574 0:ad25de01864e 12 while ((i<64) && ((c = pc.getc()) != '\n')) {
User_4574 0:ad25de01864e 13 if (c == 0x7f) {
User_4574 0:ad25de01864e 14 if (i>0) {
User_4574 0:ad25de01864e 15 i--;
User_4574 0:ad25de01864e 16 buffer[i] = '\0';
User_4574 0:ad25de01864e 17 pc.putc(8);
User_4574 0:ad25de01864e 18 pc.putc(' ');
User_4574 0:ad25de01864e 19 pc.putc(8);
User_4574 0:ad25de01864e 20 }
User_4574 0:ad25de01864e 21 } else {
User_4574 0:ad25de01864e 22 pc.putc(c);
User_4574 0:ad25de01864e 23 buffer[i] = c;
User_4574 0:ad25de01864e 24 i++;
User_4574 0:ad25de01864e 25 }
User_4574 0:ad25de01864e 26 }
User_4574 0:ad25de01864e 27 pc.printf("\n\r");
User_4574 0:ad25de01864e 28 }
User_4574 0:ad25de01864e 29
User_4574 0:ad25de01864e 30 void ls() {
User_4574 0:ad25de01864e 31 DIR* d = opendir("/local");
User_4574 0:ad25de01864e 32 struct dirent *p;
User_4574 0:ad25de01864e 33 while ((p=readdir(d)) != NULL) pc.printf("%s\n\r", p->d_name);
User_4574 0:ad25de01864e 34 closedir(d);
User_4574 0:ad25de01864e 35 }
User_4574 0:ad25de01864e 36
User_4574 0:ad25de01864e 37 void cat(char* buffer) {
User_4574 0:ad25de01864e 38 int i;
User_4574 0:ad25de01864e 39 signed char c;
User_4574 0:ad25de01864e 40 char filepath[19] = "/local/";
User_4574 0:ad25de01864e 41 for (i=0;i<60;i++) buffer[i] = buffer[i+4];
User_4574 0:ad25de01864e 42 for (i=7;i<19;i++) filepath[i] = buffer[i-7];
User_4574 0:ad25de01864e 43 FILE* file = fopen(filepath, "r");
User_4574 0:ad25de01864e 44 while ((c=fgetc(file)) != EOF) {
User_4574 0:ad25de01864e 45 pc.putc(c);
User_4574 0:ad25de01864e 46 if (c == '\n') pc.putc('\r');
User_4574 0:ad25de01864e 47 }
User_4574 0:ad25de01864e 48 fclose(file);
User_4574 0:ad25de01864e 49 pc.printf("\r");
User_4574 0:ad25de01864e 50 }
User_4574 0:ad25de01864e 51
User_4574 0:ad25de01864e 52 void ed(char* buffer) {
User_4574 0:ad25de01864e 53 int i;
User_4574 0:ad25de01864e 54 signed char c;
User_4574 0:ad25de01864e 55 char filepath[19] = "/local/";
User_4574 0:ad25de01864e 56 for (i=0;i<61;i++) buffer[i] = buffer[i+3];
User_4574 0:ad25de01864e 57 for (i=7;i<19;i++) filepath[i] = buffer[i-7];
User_4574 0:ad25de01864e 58 FILE* file = fopen(filepath, "w");
User_4574 0:ad25de01864e 59 c = pc.getc();
User_4574 0:ad25de01864e 60 while ((c != 4) && (c != EOF)) {
User_4574 0:ad25de01864e 61 if (c == 0x7F) {
User_4574 0:ad25de01864e 62 pc.putc(8);
User_4574 0:ad25de01864e 63 pc.putc(' ');
User_4574 0:ad25de01864e 64 pc.putc(8);
User_4574 0:ad25de01864e 65 fseek(file, -1, SEEK_CUR);
User_4574 0:ad25de01864e 66 } else {
User_4574 0:ad25de01864e 67 pc.putc(c);
User_4574 0:ad25de01864e 68 fputc(c, file);
User_4574 0:ad25de01864e 69 if (c == '\n') pc.putc('\r');
User_4574 0:ad25de01864e 70 }
User_4574 0:ad25de01864e 71 c = pc.getc();
User_4574 0:ad25de01864e 72 }
User_4574 0:ad25de01864e 73 pc.printf("\n\r");
User_4574 0:ad25de01864e 74 fputc('\n', file);
User_4574 0:ad25de01864e 75 fflush(file);
User_4574 0:ad25de01864e 76 fclose(file);
User_4574 0:ad25de01864e 77 }
User_4574 0:ad25de01864e 78
User_4574 0:ad25de01864e 79 int main() {
User_4574 0:ad25de01864e 80 char buffer[64];
User_4574 0:ad25de01864e 81 pc.baud(115200);
User_4574 0:ad25de01864e 82 pc.printf("Local Flash Filesystem Test\n\r");
User_4574 0:ad25de01864e 83 pc.printf("Nathan Lasseter 2010\n\n\r");
User_4574 0:ad25de01864e 84 pc.printf("Up to 64 characters input is allowed,\n\r\tup to 8 character filenames (excluding extension)\n\r");
User_4574 0:ad25de01864e 85 pc.printf("Commands: ls, cat filename, ed filename\n\n\r");
User_4574 0:ad25de01864e 86 while(1) {
User_4574 0:ad25de01864e 87 get_from_pc(buffer);
User_4574 0:ad25de01864e 88 if (strncmp(buffer, "ls", 2) == 0) {
User_4574 0:ad25de01864e 89 ls();
User_4574 0:ad25de01864e 90 } else if (strncmp(buffer, "cat", 3) == 0) {
User_4574 0:ad25de01864e 91 cat(buffer);
User_4574 0:ad25de01864e 92 } else if (strncmp(buffer, "ed", 2) == 0) {
User_4574 0:ad25de01864e 93 ed(buffer);
User_4574 0:ad25de01864e 94 } else if (strcmp(buffer, "") == 0) {
User_4574 0:ad25de01864e 95 pc.printf("! No command\n\r");
User_4574 0:ad25de01864e 96 } else {
User_4574 0:ad25de01864e 97 pc.printf("! Invalid Command <%s>\n\r", buffer);
User_4574 0:ad25de01864e 98 }
User_4574 0:ad25de01864e 99 }
User_4574 0:ad25de01864e 100 }