Fork for marginal Data Management modifications.
Dependencies: ExoController MODSERIAL SDFileSystem_HelloWorld UI-Honka mbed
Fork of Data Management by
main.cpp@14:e6d05e3fdf94, 2015-04-08 (annotated)
- 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?
User | Revision | Line number | New 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 | } |