B+IMU+SD

Dependencies:   BMI160 RTC SDFileSystem USBDevice max32630fthr sd-driver

Fork of MPSMAXbutton by Faizan Ahmad

Committer:
FaizanAhmad
Date:
Wed May 09 11:01:18 2018 +0000
Revision:
3:bd223559f79b
bUTTON+IMU+SD

Who changed what in which revision?

UserRevisionLine numberNew contents of line
FaizanAhmad 3:bd223559f79b 1 #include "files.h"
FaizanAhmad 3:bd223559f79b 2 #include "USBSerial.h"
FaizanAhmad 3:bd223559f79b 3 extern Serial _serialport;
FaizanAhmad 3:bd223559f79b 4
FaizanAhmad 3:bd223559f79b 5 #if (MBED_MAJOR_VERSION == 2)
FaizanAhmad 3:bd223559f79b 6 #include "SDFileSystem.h"
FaizanAhmad 3:bd223559f79b 7 #elif (MBED_MAJOR_VERSION == 5)
FaizanAhmad 3:bd223559f79b 8 #include "SDBlockDevice.h"
FaizanAhmad 3:bd223559f79b 9 #include "FATFileSystem.h"
FaizanAhmad 3:bd223559f79b 10 #endif
FaizanAhmad 3:bd223559f79b 11
FaizanAhmad 3:bd223559f79b 12 #if (MBED_MAJOR_VERSION == 2)
FaizanAhmad 3:bd223559f79b 13 SDFileSystem sd(D11, D12, D13, D10, "fs"); // do,di,clk,cs
FaizanAhmad 3:bd223559f79b 14 #elif (MBED_MAJOR_VERSION == 5)
FaizanAhmad 3:bd223559f79b 15 //SDBlockDevice sd(D11, D12, D13, D10, 8000000);
FaizanAhmad 3:bd223559f79b 16 SDBlockDevice sd(SPI0_MOSI, SPI0_MISO, SPI0_SCK, SPI0_SS, 8000000); // For MAX32630FTHR
FaizanAhmad 3:bd223559f79b 17 FATFileSystem fs("fs");
FaizanAhmad 3:bd223559f79b 18 #endif
FaizanAhmad 3:bd223559f79b 19
FaizanAhmad 3:bd223559f79b 20
FaizanAhmad 3:bd223559f79b 21 int totaFunctionlFiles = 0;
FaizanAhmad 3:bd223559f79b 22 int functionFileNumber = 1;
FaizanAhmad 3:bd223559f79b 23 int functionActive = 0;
FaizanAhmad 3:bd223559f79b 24 extern int functionPosition = 0;
FaizanAhmad 3:bd223559f79b 25 Function ffunc;
FaizanAhmad 3:bd223559f79b 26
FaizanAhmad 3:bd223559f79b 27 int initSDCard()
FaizanAhmad 3:bd223559f79b 28 {
FaizanAhmad 3:bd223559f79b 29 #if (MBED_MAJOR_VERSION == 5)
FaizanAhmad 3:bd223559f79b 30 /* Init SD CARD reader */
FaizanAhmad 3:bd223559f79b 31 sd.init();
FaizanAhmad 3:bd223559f79b 32 fs.mount(&sd);
FaizanAhmad 3:bd223559f79b 33 #endif
FaizanAhmad 3:bd223559f79b 34 FILE* fp = fopen("/fs/mydata.txt", "a");
FaizanAhmad 3:bd223559f79b 35 if (fp != 0) {
FaizanAhmad 3:bd223559f79b 36 _serialport.printf("writing something\n\r\n");
FaizanAhmad 3:bd223559f79b 37 fprintf(fp,"writing something\n\r\n");
FaizanAhmad 3:bd223559f79b 38 } else {
FaizanAhmad 3:bd223559f79b 39 _serialport.printf("ERROR\r\n");
FaizanAhmad 3:bd223559f79b 40 }
FaizanAhmad 3:bd223559f79b 41 fclose(fp);
FaizanAhmad 3:bd223559f79b 42 return 0;
FaizanAhmad 3:bd223559f79b 43 }
FaizanAhmad 3:bd223559f79b 44
FaizanAhmad 3:bd223559f79b 45 int readFileNames()
FaizanAhmad 3:bd223559f79b 46 {
FaizanAhmad 3:bd223559f79b 47 DIR *d;
FaizanAhmad 3:bd223559f79b 48 struct dirent *p;
FaizanAhmad 3:bd223559f79b 49
FaizanAhmad 3:bd223559f79b 50 d = opendir("/fs/functions");
FaizanAhmad 3:bd223559f79b 51 if (d != NULL) {
FaizanAhmad 3:bd223559f79b 52 while ((p = readdir(d)) != NULL) {
FaizanAhmad 3:bd223559f79b 53 // printf(" - %s\n", p->d_name);
FaizanAhmad 3:bd223559f79b 54 totaFunctionlFiles++;
FaizanAhmad 3:bd223559f79b 55 }
FaizanAhmad 3:bd223559f79b 56 } else {
FaizanAhmad 3:bd223559f79b 57 printf("Could not open directory!\n");
FaizanAhmad 3:bd223559f79b 58 }
FaizanAhmad 3:bd223559f79b 59 closedir(d);
FaizanAhmad 3:bd223559f79b 60 printf("Total files = %d\n", totaFunctionlFiles);
FaizanAhmad 3:bd223559f79b 61 return 0;
FaizanAhmad 3:bd223559f79b 62 }
FaizanAhmad 3:bd223559f79b 63
FaizanAhmad 3:bd223559f79b 64 int navFunctionFiles(int direction)
FaizanAhmad 3:bd223559f79b 65 {
FaizanAhmad 3:bd223559f79b 66
FaizanAhmad 3:bd223559f79b 67 if(direction == DIR_UP) {
FaizanAhmad 3:bd223559f79b 68 if(functionFileNumber < totaFunctionlFiles) {
FaizanAhmad 3:bd223559f79b 69 functionFileNumber++;
FaizanAhmad 3:bd223559f79b 70 } else {
FaizanAhmad 3:bd223559f79b 71 functionFileNumber = 1;
FaizanAhmad 3:bd223559f79b 72 }
FaizanAhmad 3:bd223559f79b 73 printf("UP: %d\n", functionFileNumber);
FaizanAhmad 3:bd223559f79b 74 } else {
FaizanAhmad 3:bd223559f79b 75 if(functionFileNumber > 1) {
FaizanAhmad 3:bd223559f79b 76 functionFileNumber--;
FaizanAhmad 3:bd223559f79b 77 } else {
FaizanAhmad 3:bd223559f79b 78 functionFileNumber = totaFunctionlFiles;
FaizanAhmad 3:bd223559f79b 79 }
FaizanAhmad 3:bd223559f79b 80 printf("DOWN: %d\n", functionFileNumber);
FaizanAhmad 3:bd223559f79b 81 }
FaizanAhmad 3:bd223559f79b 82 return 0;
FaizanAhmad 3:bd223559f79b 83 }
FaizanAhmad 3:bd223559f79b 84
FaizanAhmad 3:bd223559f79b 85 int openFunctionFile(int inpFile)
FaizanAhmad 3:bd223559f79b 86 {
FaizanAhmad 3:bd223559f79b 87 char fileLoc [40];
FaizanAhmad 3:bd223559f79b 88 sprintf (fileLoc, "/fs/functions/function%d.txt", inpFile);
FaizanAhmad 3:bd223559f79b 89 printf ("[%s] is location %d file number\n", fileLoc, inpFile);
FaizanAhmad 3:bd223559f79b 90
FaizanAhmad 3:bd223559f79b 91 FILE* fp = fopen(fileLoc, "r");
FaizanAhmad 3:bd223559f79b 92 ffunc.pos=0;
FaizanAhmad 3:bd223559f79b 93 while (fscanf(fp, "%d,%d", &ffunc.x[ffunc.pos], &ffunc.t[ffunc.pos]) != EOF) {
FaizanAhmad 3:bd223559f79b 94 ffunc.pos++;
FaizanAhmad 3:bd223559f79b 95 }
FaizanAhmad 3:bd223559f79b 96
FaizanAhmad 3:bd223559f79b 97 fclose(fp);
FaizanAhmad 3:bd223559f79b 98 functionActive = 1;
FaizanAhmad 3:bd223559f79b 99 functionPosition = 0;
FaizanAhmad 3:bd223559f79b 100 printFunctionData();
FaizanAhmad 3:bd223559f79b 101 return 0;
FaizanAhmad 3:bd223559f79b 102 }
FaizanAhmad 3:bd223559f79b 103
FaizanAhmad 3:bd223559f79b 104 void printFunctionData()
FaizanAhmad 3:bd223559f79b 105 {
FaizanAhmad 3:bd223559f79b 106 printf ("total: %d\n", ffunc.pos);
FaizanAhmad 3:bd223559f79b 107 for(int i=0; i<ffunc.pos; i++ ) {
FaizanAhmad 3:bd223559f79b 108 printf ("%d, %d\n", ffunc.x[i], ffunc.t[i]);
FaizanAhmad 3:bd223559f79b 109 }
FaizanAhmad 3:bd223559f79b 110 }
FaizanAhmad 3:bd223559f79b 111