Nathaniel Honka / Mbed 2 deprecated Data-Management-Honka

Dependencies:   ExoController MODSERIAL SDFileSystem_HelloWorld UI-Honka mbed

Fork of Data Management by HEL's Angels

Committer:
mzling
Date:
Sat Feb 14 00:38:04 2015 +0000
Revision:
8:f8fd59fe3e11
Parent:
4:46d4917f2464
Child:
9:26e200175e0e
SDFile test functions, checksum, Bluetooth communication, and SDCard storage.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
perr1940 0:cbb61997e231 1 #include "mbed.h"
perr1940 0:cbb61997e231 2 #include "MODSERIAL.h"
perr1940 0:cbb61997e231 3 #include "initDatabed.h"
mzling 8:f8fd59fe3e11 4 #include "UserInterface.h"
perr1940 0:cbb61997e231 5
perr1940 0:cbb61997e231 6 Timer t_debug;
mzling 8:f8fd59fe3e11 7 UserInterface userInterface;
mzling 8:f8fd59fe3e11 8
mzling 8:f8fd59fe3e11 9
mzling 8:f8fd59fe3e11 10 bool check_errfile()
mzling 8:f8fd59fe3e11 11 {
mzling 8:f8fd59fe3e11 12 printf("checking errfile\r\n");
mzling 8:f8fd59fe3e11 13 /* This line causes error, reason unknown */
mzling 8:f8fd59fe3e11 14 int *errors = new int[1];
mzling 8:f8fd59fe3e11 15 printf("about to open errfile for reading");
mzling 8:f8fd59fe3e11 16 err.open_for_read("/sd/", "error.txt");
mzling 8:f8fd59fe3e11 17 err.read_from_start(1, errors);
mzling 8:f8fd59fe3e11 18 err.close();
mzling 8:f8fd59fe3e11 19 printf("Errors[0]: %d\r\n", errors[0]);
mzling 8:f8fd59fe3e11 20 if (errors[0] == 1) {
mzling 8:f8fd59fe3e11 21 return false;
mzling 8:f8fd59fe3e11 22 }
mzling 8:f8fd59fe3e11 23 printf("Sucess--no errors detected\r\n");
mzling 8:f8fd59fe3e11 24 return true;
mzling 8:f8fd59fe3e11 25 }
mzling 8:f8fd59fe3e11 26
mzling 8:f8fd59fe3e11 27 bool check_sdcard()
mzling 8:f8fd59fe3e11 28 {
mzling 8:f8fd59fe3e11 29 int testArray[] = {1, 2, 3, 4};
mzling 8:f8fd59fe3e11 30 //int badArray[] = {1,2,3,3};
mzling 8:f8fd59fe3e11 31 int *output = new int[4];
mzling 8:f8fd59fe3e11 32 printf("created output array\r\n");
mzling 8:f8fd59fe3e11 33 testFile.write(4, testArray);
mzling 8:f8fd59fe3e11 34 printf("wrote to testfile\r\n");
mzling 8:f8fd59fe3e11 35 //testFile.write(4, badArray);
mzling 8:f8fd59fe3e11 36 testFile.read(4, output);
mzling 8:f8fd59fe3e11 37 printf("read to output\r\n");
mzling 8:f8fd59fe3e11 38 for (int i = 0; i < 4; i++) {
mzling 8:f8fd59fe3e11 39 if (testArray[i] != output[i]) {
mzling 8:f8fd59fe3e11 40 printf("ERROR--test read failed\r\n");
mzling 8:f8fd59fe3e11 41 int error[] = {0x0001};
mzling 8:f8fd59fe3e11 42 //err("/sd/", "error.txt", true);
mzling 8:f8fd59fe3e11 43 err.open_for_write("/sd/", "error.txt");
mzling 8:f8fd59fe3e11 44 err.write(1, error);
mzling 8:f8fd59fe3e11 45 int *check = new int[1];
mzling 8:f8fd59fe3e11 46 err.read_from_start(1, check);
mzling 8:f8fd59fe3e11 47 err.close();
mzling 8:f8fd59fe3e11 48 printf("%d writtten to ERR\r\n", check[0]);
mzling 8:f8fd59fe3e11 49 return false;
mzling 8:f8fd59fe3e11 50 }
mzling 8:f8fd59fe3e11 51 }
mzling 8:f8fd59fe3e11 52 pc.printf("Success! Test read worked\r\n");
mzling 8:f8fd59fe3e11 53 return true;
mzling 8:f8fd59fe3e11 54 }
mzling 8:f8fd59fe3e11 55 /**
mzling 8:f8fd59fe3e11 56 int main() {
mzling 8:f8fd59fe3e11 57 // check_sdcard();
mzling 8:f8fd59fe3e11 58 // int[] errors = new int[10];
mzling 8:f8fd59fe3e11 59 // err.read(10, errors);
mzling 8:f8fd59fe3e11 60 //if (error.hasFlag) {
mzling 8:f8fd59fe3e11 61 //stop startup;
mzling 8:f8fd59fe3e11 62 //}
mzling 8:f8fd59fe3e11 63 printf("Hello world!\r\n");
mzling 8:f8fd59fe3e11 64 pc.baud(9600);
mzling 8:f8fd59fe3e11 65 interrupt.attach(&attachment, 0.002);
mzling 8:f8fd59fe3e11 66 }
perr1940 0:cbb61997e231 67
perr1940 0:cbb61997e231 68 int main()
perr1940 0:cbb61997e231 69 {
mzling 8:f8fd59fe3e11 70 pc.printf("ENTERING MAIN\r\n");
mzling 8:f8fd59fe3e11 71 if (!check_errfile() || !check_sdcard()) {
mzling 8:f8fd59fe3e11 72 pc.printf("Check failed...aborting power-on\r\n");
mzling 8:f8fd59fe3e11 73 return 1;
mzling 8:f8fd59fe3e11 74 }
mzling 8:f8fd59fe3e11 75 }
mzling 8:f8fd59fe3e11 76 */
mzling 8:f8fd59fe3e11 77
mzling 8:f8fd59fe3e11 78 int main()
mzling 8:f8fd59fe3e11 79 {
mzling 8:f8fd59fe3e11 80 printf("ENTERING MAIN\r\n");
mzling 8:f8fd59fe3e11 81 if (!check_errfile() || !check_sdcard()) {
mzling 8:f8fd59fe3e11 82 // if (!check_sdcard()) {
mzling 8:f8fd59fe3e11 83 printf("Check failed...aborting power-on\r\n");
mzling 8:f8fd59fe3e11 84 return 1;
mzling 8:f8fd59fe3e11 85 }
mzling 8:f8fd59fe3e11 86 printf("ERRFILE/SDCARD checks passed!\r\n");
perr1940 3:ef7e0cbade6d 87 int dataIn[4], dataOut[4], buffer;
perr1940 1:78452728a306 88 dataOut[0]=7;
perr1940 1:78452728a306 89 dataOut[1]=30;
perr1940 2:b87aaf1bc803 90 mainPower=1;//Don't turn on for initial testing
perr1940 0:cbb61997e231 91 initializeDatabed();
perr1940 0:cbb61997e231 92 comm.reply(dataOut[0]);//make this the first message
mzling 8:f8fd59fe3e11 93 printf("DataBed On!\r\n");
perr1940 0:cbb61997e231 94 int counter=0;
perr1940 3:ef7e0cbade6d 95 int ii=0;
perr1940 0:cbb61997e231 96 //float blah=1;
perr1940 0:cbb61997e231 97 //t_debug.start();
perr1940 0:cbb61997e231 98 while (1) { //Run these functions as fast as possible
perr1940 1:78452728a306 99
mzling 8:f8fd59fe3e11 100 if(comm.receive()) {
perr1940 2:b87aaf1bc803 101 dataIn[0] = comm.read();
perr1940 2:b87aaf1bc803 102 comm.reply(UI); // Make this the next reply
perr1940 2:b87aaf1bc803 103 while(dataIn[0]==7) {
perr1940 1:78452728a306 104 if(comm.receive()) {
perr1940 2:b87aaf1bc803 105 dataIn[1]=comm.read();
perr1940 2:b87aaf1bc803 106 comm.reply(22);
perr1940 2:b87aaf1bc803 107 break;
perr1940 2:b87aaf1bc803 108 dataIn[0]=0;
perr1940 2:b87aaf1bc803 109 }
perr1940 2:b87aaf1bc803 110 }
perr1940 2:b87aaf1bc803 111 while(dataIn[1]==30) {
perr1940 2:b87aaf1bc803 112 if(comm.receive()) {
perr1940 2:b87aaf1bc803 113 dataIn[2]=comm.read();
perr1940 2:b87aaf1bc803 114 comm.reply(5);
perr1940 2:b87aaf1bc803 115 pc.printf("Fault: %d, %d ", leftFault.read(), rightFault.read());
perr1940 2:b87aaf1bc803 116 pc.printf("Data1: %u, Data2: %u, Data3: %u\r\n", dataIn[0], dataIn[1], dataIn[2]);
perr1940 2:b87aaf1bc803 117 dataIn[1]=0;
perr1940 1:78452728a306 118 break;
perr1940 1:78452728a306 119 }
mzling 8:f8fd59fe3e11 120 }
perr1940 3:ef7e0cbade6d 121 if(comm.receive()) {
perr1940 3:ef7e0cbade6d 122 buffer = comm.read();
perr1940 3:ef7e0cbade6d 123 if(buffer==0xFE) { //end of message
perr1940 3:ef7e0cbade6d 124 ii=0;
perr1940 3:ef7e0cbade6d 125 dataIn[3]=buffer;
perr1940 3:ef7e0cbade6d 126 comm.reply(5);
perr1940 3:ef7e0cbade6d 127 counter++;
perr1940 3:ef7e0cbade6d 128 if(BMS.read(msg)) {
perr1940 3:ef7e0cbade6d 129 if(msg.id==0x18FF8320) {
perr1940 4:46d4917f2464 130 //pc.printf("%x\r\n",msg.data[0]);
perr1940 3:ef7e0cbade6d 131 }
perr1940 3:ef7e0cbade6d 132 }
perr1940 3:ef7e0cbade6d 133 phone.attachment();
perr1940 3:ef7e0cbade6d 134 } else if(buffer==0xFF) { //beginning of message
perr1940 3:ef7e0cbade6d 135 ii=1;
perr1940 3:ef7e0cbade6d 136 dataIn[0]=buffer;
perr1940 3:ef7e0cbade6d 137 comm.reply(UI);
perr1940 3:ef7e0cbade6d 138 } else if(ii==1) {
perr1940 3:ef7e0cbade6d 139 ii++;
perr1940 3:ef7e0cbade6d 140 dataIn[1]=buffer;
perr1940 3:ef7e0cbade6d 141 comm.reply(52);
perr1940 3:ef7e0cbade6d 142 } else if(ii==2) {
perr1940 3:ef7e0cbade6d 143 ii++;
perr1940 3:ef7e0cbade6d 144 dataIn[2]=buffer;
perr1940 3:ef7e0cbade6d 145 comm.reply(25);
perr1940 0:cbb61997e231 146 }
perr1940 3:ef7e0cbade6d 147
perr1940 0:cbb61997e231 148 }
mzling 8:f8fd59fe3e11 149 if(counter>=15) {
perr1940 3:ef7e0cbade6d 150 UI=0;//set the UI to 0 unless it's changed in checkUI_Xbee()
mzling 8:f8fd59fe3e11 151 userInterface.readBuffer();
mzling 8:f8fd59fe3e11 152 userInterface.checkUI_XBee(); //check UI from Xbee
perr1940 3:ef7e0cbade6d 153 xbeeUI.rxBufferFlush();
perr1940 3:ef7e0cbade6d 154 counter=0;
mzling 8:f8fd59fe3e11 155 // pc.printf("UI: %d\r\n", UI);
perr1940 3:ef7e0cbade6d 156 }
mzling 8:f8fd59fe3e11 157 counter++;
mzling 8:f8fd59fe3e11 158 }
perr1940 2:b87aaf1bc803 159
perr1940 0:cbb61997e231 160 }
perr1940 0:cbb61997e231 161 }