Fork of LaOS. https://github.com/LaosLaser/Firmware

Dependencies:   mbed

Committer:
Michael J. Spencer
Date:
Wed Mar 05 06:14:02 2014 -0800
Revision:
1:f5ac63519541
Initial commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Michael J. Spencer 1:f5ac63519541 1 /*
Michael J. Spencer 1:f5ac63519541 2 *
Michael J. Spencer 1:f5ac63519541 3 * LaosFilesystem.h
Michael J. Spencer 1:f5ac63519541 4 * Simple Long Filename system on top of SDFilesystem.h
Michael J. Spencer 1:f5ac63519541 5 *
Michael J. Spencer 1:f5ac63519541 6 * Copyright (c) 2011 Jaap Vermaas
Michael J. Spencer 1:f5ac63519541 7 *
Michael J. Spencer 1:f5ac63519541 8 * This file is part of the LaOS project (see: http://wiki.laoslaser.org
Michael J. Spencer 1:f5ac63519541 9 *
Michael J. Spencer 1:f5ac63519541 10 * LaOS is free software: you can redistribute it and/or modify
Michael J. Spencer 1:f5ac63519541 11 * it under the terms of the GNU General Public License as published by
Michael J. Spencer 1:f5ac63519541 12 * the Free Software Foundation, either version 3 of the License, or
Michael J. Spencer 1:f5ac63519541 13 * (at your option) any later version.
Michael J. Spencer 1:f5ac63519541 14 *
Michael J. Spencer 1:f5ac63519541 15 * LaOS is distributed in the hope that it will be useful,
Michael J. Spencer 1:f5ac63519541 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Michael J. Spencer 1:f5ac63519541 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Michael J. Spencer 1:f5ac63519541 18 * GNU General Public License for more details.
Michael J. Spencer 1:f5ac63519541 19 *
Michael J. Spencer 1:f5ac63519541 20 * You should have received a copy of the GNU General Public License
Michael J. Spencer 1:f5ac63519541 21 * along with LaOS. If not, see <http://www.gnu.org/licenses/>.
Michael J. Spencer 1:f5ac63519541 22 */
Michael J. Spencer 1:f5ac63519541 23 #ifndef _LAOSFILESYSTEM_
Michael J. Spencer 1:f5ac63519541 24 #define _LAOSFILESYSTEM_
Michael J. Spencer 1:f5ac63519541 25
Michael J. Spencer 1:f5ac63519541 26 #include "SDFileSystem.h"
Michael J. Spencer 1:f5ac63519541 27 #include "FATFileSystem.h"
Michael J. Spencer 1:f5ac63519541 28 #include <string>
Michael J. Spencer 1:f5ac63519541 29 #include <ctype.h>
Michael J. Spencer 1:f5ac63519541 30
Michael J. Spencer 1:f5ac63519541 31 #define _LAOSFILE_TRANSTABLE "longname.sys"
Michael J. Spencer 1:f5ac63519541 32 #define MAXFILESIZE 21
Michael J. Spencer 1:f5ac63519541 33 #define SHORTFILESIZE 13
Michael J. Spencer 1:f5ac63519541 34
Michael J. Spencer 1:f5ac63519541 35 class LaosFileSystem : public SDFileSystem {
Michael J. Spencer 1:f5ac63519541 36 public:
Michael J. Spencer 1:f5ac63519541 37 LaosFileSystem(PinName mosi, PinName miso, PinName sclk, PinName cs,
Michael J. Spencer 1:f5ac63519541 38 const char* name); // Create the filesystem on SD
Michael J. Spencer 1:f5ac63519541 39 virtual ~LaosFileSystem(); // destructor
Michael J. Spencer 1:f5ac63519541 40 FILE* openfile(char* fname, char* iom); // open a file
Michael J. Spencer 1:f5ac63519541 41 void getlongname(char *result, char *searchname); // return long names
Michael J. Spencer 1:f5ac63519541 42 void getshortname(char* shortname, char* name); //get a short name
Michael J. Spencer 1:f5ac63519541 43 char pathname[MAXFILESIZE+2];
Michael J. Spencer 1:f5ac63519541 44 void cleanlist();
Michael J. Spencer 1:f5ac63519541 45 void shorten(char* name, int max);
Michael J. Spencer 1:f5ac63519541 46
Michael J. Spencer 1:f5ac63519541 47 private:
Michael J. Spencer 1:f5ac63519541 48 int islegalname(char* name);
Michael J. Spencer 1:f5ac63519541 49 int isshortname(char* name);
Michael J. Spencer 1:f5ac63519541 50 void removespaces(char* name);
Michael J. Spencer 1:f5ac63519541 51 void makeshortname(char* shortname, char* name);
Michael J. Spencer 1:f5ac63519541 52 size_t dirread(char* longname, char* shortname, FILE *fp);
Michael J. Spencer 1:f5ac63519541 53 size_t dirwrite(char* longname, char* shortname, FILE* fp);
Michael J. Spencer 1:f5ac63519541 54 char tablename[MAXFILESIZE + SHORTFILESIZE + 1];
Michael J. Spencer 1:f5ac63519541 55 };
Michael J. Spencer 1:f5ac63519541 56
Michael J. Spencer 1:f5ac63519541 57 void showfile(); // debug: list contents of long filesytem file
Michael J. Spencer 1:f5ac63519541 58 void cleandir(); // delete all files in directory
Michael J. Spencer 1:f5ac63519541 59 void printdir(); // list all files in directory (with long names)
Michael J. Spencer 1:f5ac63519541 60 //void getfilename(char *name, int filenr); // get name of the #filenr file
Michael J. Spencer 1:f5ac63519541 61 //int getfilenum(char *name); // get number of this filename
Michael J. Spencer 1:f5ac63519541 62 void getprevjob(char *name); // previous job
Michael J. Spencer 1:f5ac63519541 63 void getnextjob(char *name); // next job
Michael J. Spencer 1:f5ac63519541 64 void writefile(char *name); // example code to open a file
Michael J. Spencer 1:f5ac63519541 65 void removefile(char *name); // example code to remove a file
Michael J. Spencer 1:f5ac63519541 66 int readint(FILE *fp); // read integers from open file
Michael J. Spencer 1:f5ac63519541 67 void strtolower(char *name); // change characters to lowercase
Michael J. Spencer 1:f5ac63519541 68 int isFirmware(char *name); // check if it's firmware
Michael J. Spencer 1:f5ac63519541 69 void installFirmware(char *filename); // put firmware in place
Michael J. Spencer 1:f5ac63519541 70 void removeFirmware(); // remove old firmware
Michael J. Spencer 1:f5ac63519541 71 int SDcheckFirmware(); // check for firmware
Michael J. Spencer 1:f5ac63519541 72 int isLaosFile(char *filename); // check extension for LaOS compatibility
Michael J. Spencer 1:f5ac63519541 73 #endif