SCIboard(TM): mbed base board data logger - Altimeter: MPL3115A2 - Accelerometer: LSM303DLHC - Gyro: L3G4200D - 4 High Current MOSFET switches

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers SCIboard_DataLogger.cpp Source File

SCIboard_DataLogger.cpp

00001 /* SCIboard(TM) DataLogger.cpp
00002 Copyright (c) 2013 K. Andres
00003 
00004 Permission is hereby granted, free of charge, to any person obtaining a copy
00005 of this software and associated documentation files (the "Software"), to deal
00006 in the Software without restriction, including without limitation the rights
00007 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00008 copies of the Software, and to permit persons to whom the Software is
00009 furnished to do so, subject to the following conditions:
00010 
00011 The above copyright notice and this permission notice shall be included in
00012 all copies or substantial portions of the Software.
00013 
00014 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00015 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00016 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
00017 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00018 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00019 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
00020 THE SOFTWARE.
00021 */
00022 
00023 #include "SCIboard_DataLogger.h"
00024 
00025 LocalFileSystem local("local");               // Create the local filesystem under the name "local"
00026 
00027 char filenm[40] = "/local/OUT.CSV";
00028 
00029 //#define LOGTEST
00030 #ifdef LOGTEST
00031 Timer logTimer;
00032 
00033 int main()
00034 {
00035     logTimer.start();  // Start timer
00036     led1=1;
00037     log_open();
00038     for(n=0; n<1000; n++) {
00039         sprintf(str,"%d %d \r\n", n, logTimer.read_ms());
00040 //        sprintf(str,"%d\r\n", n);
00041         log_write(str);
00042         wait(0.01);
00043         if(!(n%50)) {
00044             led1=!led1;
00045         }
00046     }
00047     log_close();
00048     logTimer.stop();
00049     led2=1;
00050 }
00051 #endif
00052 
00053 
00054 //---------------------------------------------------------------------
00055 FILE *fp=NULL;
00056 
00057 void log_open(void)
00058 {
00059     if(fp==NULL) {
00060         fp = fopen(filenm, "w");  // Open file for appending
00061     }
00062 }
00063 
00064 
00065 void log_close(void)
00066 {
00067     if(fp!=NULL) {
00068         fclose(fp);
00069         fp=NULL;
00070     }
00071 }
00072 
00073 
00074 void log_write(char *str)
00075 {
00076     if(fp!=NULL) {
00077         fprintf(fp, str);
00078     }
00079 }
00080 
00081 
00082 bool fileExists(char *filename) {
00083     bool result = false;
00084     DIR *d;
00085     struct dirent *ptr;
00086     d = opendir("/local");
00087  
00088     if(d != NULL ) {
00089         while (!result && (ptr = readdir(d)) != NULL) {
00090             if(strcmp(ptr->d_name, filename) == 0)
00091                 result = true;
00092         }
00093     }
00094     closedir(d);
00095     return(result);
00096 }
00097 
00098 
00099 void nextFilename(void) {
00100     bool result=true;
00101     int filenum=1;
00102     char tempStr[80]="/local/";;
00103     
00104     while(result==true) {
00105         sprintf(filenm, "OUT%02d.CSV", filenum);
00106         if(fileExists(filenm)) {
00107             filenum++;
00108         }
00109         else {
00110             result = false;
00111         }
00112     }
00113     
00114     strcat(tempStr, filenm);
00115     strcpy(filenm, tempStr);
00116 }