Fork for marginal Data Management modifications.

Dependencies:   ExoController MODSERIAL SDFileSystem_HelloWorld UI-Honka mbed

Fork of Data Management by HEL's Angels

Committer:
nathanhonka
Date:
Wed Apr 08 00:51:58 2015 +0000
Revision:
14:e6d05e3fdf94
Parent:
12:310d5488e48a
Comment updates only.

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