SDFileSystem, slightly modified for the ExoController

Dependencies:   SDFileSystem

Dependents:   Data-Management-Honka

Fork of SDFileSystem_HelloWorld by Bradley Perry

SDFile.cpp

Committer:
mzling
Date:
2014-12-17
Revision:
2:ec4d7e5fa68e
Child:
3:8f5903a77a13

File content as of revision 2:ec4d7e5fa68e:

#include "mbed.h"
#include "SDFileSystem.h"
#include "SDFile.h"
#include "errno.h"


SDFile::SDFile(string path, string filename) {
    //Creates the necessary directory
    char *a=new char[path.size()+1];
    a[path.size()]=0;
    memcpy(a,path.c_str(),path.size());
    int dir = mkdir((const char *)a, 0777);
    //Calculates the full filename, then creates the file
    std::string fullname = path + filename;

    char *b=new char[filename.size()+1];
    b[filename.size()]=0;
    memcpy(b,filename.c_str(),filename.size());
    fp = fopen((const char*)b, "w+");
    
    
}

//Reads from the file pointed to by FP to an array
int* SDFile::read(int *array, int length) {
   
    //shift to the end of the file and go back accounting for the commas, spaces, \n, and \r (6 places per data)
    fseek(fp, -6*length, SEEK_END);
    //cycle through the length of the vector and read the values.
    for(int i=0; i<length; i++) {
        fscanf(fp, "%x, ", &array[i]);
    }
   
    return array;
}

//writes from an array to the file pointed to by fp
void SDFile::write(int *array, int length) {
    fseek(fp, 0, SEEK_SET);
    for(int i=0; i<length-1; i++) {
        fprintf(fp,"%04x, ", array[i]);
    }
    fprintf(fp, "%04x\r\n", array[length-1]);
}