Emulation of LocalFileSystem with virtual COM.

Dependencies:   USBDevice

Dependents:   KL46Z-lpc81isp lpcterm2

#include "USBLocalFileSystem.h"

int main() {
    USBLocalFileSystem* usb_local = new USBLocalFileSystem(); // RamDisk(64KB)

    while(1) {
        usb_local->lock(true);
        usb_local->remount();
        char filename[32];
        if (usb_local->find(filename, sizeof(filename), "*.TXT")) {
            FILE* fp = fopen(filename, "r");
            if (fp) {
                int c;
                while((c = fgetc(fp)) != EOF) {
                    usb_local->putc(c);
                }
                fclose(fp);
            }
        }    
        usb_local->lock(false);

        wait_ms(1000*5);
    }
}



Sample application:

Import programKL46Z-lpc81isp

ISP example program.

Import programlpcterm2

semihost server example program

Committer:
va009039
Date:
Sat Jun 21 22:39:59 2014 +0000
Revision:
6:528036abfb02
Parent:
0:39eb4d5b97df
add LPC11U68

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 0:39eb4d5b97df 1 #include <stdlib.h>
va009039 0:39eb4d5b97df 2 #include <string.h>
va009039 0:39eb4d5b97df 3 #pragma once
va009039 0:39eb4d5b97df 4 class mystring {
va009039 0:39eb4d5b97df 5 public:
va009039 0:39eb4d5b97df 6 mystring(){
va009039 0:39eb4d5b97df 7 _init();
va009039 0:39eb4d5b97df 8 }
va009039 0:39eb4d5b97df 9 mystring(const char* s) {
va009039 0:39eb4d5b97df 10 _init();
va009039 0:39eb4d5b97df 11 append(s);
va009039 0:39eb4d5b97df 12 }
va009039 0:39eb4d5b97df 13
va009039 0:39eb4d5b97df 14 ~mystring() {
va009039 0:39eb4d5b97df 15 if (_buf) {
va009039 0:39eb4d5b97df 16 free(_buf);
va009039 0:39eb4d5b97df 17 }
va009039 0:39eb4d5b97df 18 }
va009039 0:39eb4d5b97df 19 void clear() {
va009039 0:39eb4d5b97df 20 if (_buf) {
va009039 0:39eb4d5b97df 21 free(_buf);
va009039 0:39eb4d5b97df 22 }
va009039 0:39eb4d5b97df 23 _init();
va009039 0:39eb4d5b97df 24 }
va009039 0:39eb4d5b97df 25 bool empty() {
va009039 0:39eb4d5b97df 26 return _len == 0;
va009039 0:39eb4d5b97df 27 }
va009039 0:39eb4d5b97df 28 size_t size() {
va009039 0:39eb4d5b97df 29 return _len;
va009039 0:39eb4d5b97df 30 }
va009039 0:39eb4d5b97df 31 void append(const char* s, int len) {
va009039 0:39eb4d5b97df 32 if (_buf == NULL) {
va009039 0:39eb4d5b97df 33 return;
va009039 0:39eb4d5b97df 34 }
va009039 0:39eb4d5b97df 35 int new_len = _len + len;
va009039 0:39eb4d5b97df 36 char* new_buf = (char*)malloc(new_len + 1);
va009039 0:39eb4d5b97df 37 if (new_buf == NULL) {
va009039 0:39eb4d5b97df 38 return;
va009039 0:39eb4d5b97df 39 }
va009039 0:39eb4d5b97df 40 memcpy(new_buf, _buf, _len);
va009039 0:39eb4d5b97df 41 memcpy(new_buf+_len, s, len);
va009039 0:39eb4d5b97df 42 new_buf[_len+len] = '\0';
va009039 0:39eb4d5b97df 43 free(_buf);
va009039 0:39eb4d5b97df 44 _buf = new_buf;
va009039 0:39eb4d5b97df 45 _len += new_len;
va009039 0:39eb4d5b97df 46 }
va009039 0:39eb4d5b97df 47 void append(const char* s) {
va009039 0:39eb4d5b97df 48 append(s, strlen(s));
va009039 0:39eb4d5b97df 49 }
va009039 0:39eb4d5b97df 50 void append(int c) {
va009039 0:39eb4d5b97df 51 char buf[1];
va009039 0:39eb4d5b97df 52 buf[0] = c;
va009039 0:39eb4d5b97df 53 append(buf, sizeof(buf));
va009039 0:39eb4d5b97df 54 }
va009039 0:39eb4d5b97df 55 char* c_str() {
va009039 0:39eb4d5b97df 56 if (_buf) {
va009039 0:39eb4d5b97df 57 return _buf;
va009039 0:39eb4d5b97df 58 }
va009039 0:39eb4d5b97df 59 return "";
va009039 0:39eb4d5b97df 60 }
va009039 0:39eb4d5b97df 61 mystring& operator= (const char* s) {
va009039 0:39eb4d5b97df 62 _init();
va009039 0:39eb4d5b97df 63 append(s);
va009039 0:39eb4d5b97df 64 return *this;
va009039 0:39eb4d5b97df 65 }
va009039 0:39eb4d5b97df 66 mystring& operator+= (const char* s) {
va009039 0:39eb4d5b97df 67 append(s);
va009039 0:39eb4d5b97df 68 return *this;
va009039 0:39eb4d5b97df 69 }
va009039 0:39eb4d5b97df 70 char& operator[] (size_t pos) {
va009039 0:39eb4d5b97df 71 return _buf[pos];
va009039 0:39eb4d5b97df 72 }
va009039 0:39eb4d5b97df 73 private:
va009039 0:39eb4d5b97df 74 void _init() {
va009039 0:39eb4d5b97df 75 _len = 0;
va009039 0:39eb4d5b97df 76 _buf = (char*)malloc(1);
va009039 0:39eb4d5b97df 77 if (_buf) {
va009039 0:39eb4d5b97df 78 _buf[0] = '\0';
va009039 0:39eb4d5b97df 79 }
va009039 0:39eb4d5b97df 80 }
va009039 0:39eb4d5b97df 81 char* _buf;
va009039 0:39eb4d5b97df 82 int _len;
va009039 0:39eb4d5b97df 83 };