SDFileSystem, slightly modified for the ExoController

Dependencies:   SDFileSystem

Dependents:   Data-Management-Honka

Fork of SDFileSystem_HelloWorld by Bradley Perry

SDFile.cpp

Committer:
mzling
Date:
2015-02-04
Revision:
3:8f5903a77a13
Parent:
2:ec4d7e5fa68e
Child:
4:99e9c9e0dfb0

File content as of revision 3:8f5903a77a13:

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


SDFile::SDFile(string path, string filename)
{
    //Creates the necessary directory
    printf("Creating SDFile object\r\n");
    char *a = new char[path.size()+1];
    a[path.size()] = 0;
    memcpy(a,path.c_str(),path.size());
    //Calculates the full filename, then creates the file
    std::string fullname = path + filename;

    char *b = new char[fullname.size()+1];
    b[fullname.size()] = 0;
    memcpy(b,fullname.c_str(),fullname.size());
    _fp = fopen((const char*)b, "w+");
    printf("fp is %d\r\n", _fp);
    
    
}

/**
* This function reads bytes from the SDFile object.
* @author Michael Ling
* @param length    The number of bytes to read
* @param array    The int array the bytes are copied to
* @date 2/2/2015
*/
int* SDFile::read(int length, int *array)
{
   
    //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;
}

/** 
* This function writes from an array to the file pointed to by fp
* @param length    length of data to write
* @param array    array to draw written data from
* @author Michael Ling
* @date 2/2/2015
*/
void SDFile::write(int length, int *array)
{
    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]);
}