Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: ExoController MODSERIAL SDFileSystem_HelloWorld UI-Honka mbed
Fork of Data Management by
main.cpp@10:057620949ce1, 2015-02-20 (annotated)
- Committer:
- mzling
- Date:
- Fri Feb 20 20:11:41 2015 +0000
- Revision:
- 10:057620949ce1
- Parent:
- 9:26e200175e0e
- Child:
- 11:6f5a8a88fa21
Determined cause of apparent timeout--caused by changed PC baud rate in initializeDatabed(), not any code bugs.
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 | 8:f8fd59fe3e11 | 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 |
| perr1940 | 1:78452728a306 | 113 | |
| mzling | 8:f8fd59fe3e11 | 114 | if(comm.receive()) { |
| perr1940 | 2:b87aaf1bc803 | 115 | dataIn[0] = comm.read(); |
| perr1940 | 2:b87aaf1bc803 | 116 | comm.reply(UI); // Make this the next reply |
| perr1940 | 2:b87aaf1bc803 | 117 | while(dataIn[0]==7) { |
| perr1940 | 1:78452728a306 | 118 | if(comm.receive()) { |
| perr1940 | 2:b87aaf1bc803 | 119 | dataIn[1]=comm.read(); |
| perr1940 | 2:b87aaf1bc803 | 120 | comm.reply(22); |
| perr1940 | 2:b87aaf1bc803 | 121 | break; |
| perr1940 | 2:b87aaf1bc803 | 122 | dataIn[0]=0; |
| perr1940 | 2:b87aaf1bc803 | 123 | } |
| perr1940 | 2:b87aaf1bc803 | 124 | } |
| perr1940 | 2:b87aaf1bc803 | 125 | while(dataIn[1]==30) { |
| perr1940 | 2:b87aaf1bc803 | 126 | if(comm.receive()) { |
| perr1940 | 2:b87aaf1bc803 | 127 | dataIn[2]=comm.read(); |
| perr1940 | 2:b87aaf1bc803 | 128 | comm.reply(5); |
| perr1940 | 2:b87aaf1bc803 | 129 | pc.printf("Fault: %d, %d ", leftFault.read(), rightFault.read()); |
| perr1940 | 2:b87aaf1bc803 | 130 | pc.printf("Data1: %u, Data2: %u, Data3: %u\r\n", dataIn[0], dataIn[1], dataIn[2]); |
| perr1940 | 2:b87aaf1bc803 | 131 | dataIn[1]=0; |
| perr1940 | 1:78452728a306 | 132 | break; |
| perr1940 | 1:78452728a306 | 133 | } |
| mzling | 8:f8fd59fe3e11 | 134 | } |
| perr1940 | 3:ef7e0cbade6d | 135 | if(comm.receive()) { |
| perr1940 | 3:ef7e0cbade6d | 136 | buffer = comm.read(); |
| perr1940 | 3:ef7e0cbade6d | 137 | if(buffer==0xFE) { //end of message |
| perr1940 | 3:ef7e0cbade6d | 138 | ii=0; |
| perr1940 | 3:ef7e0cbade6d | 139 | dataIn[3]=buffer; |
| perr1940 | 3:ef7e0cbade6d | 140 | comm.reply(5); |
| perr1940 | 3:ef7e0cbade6d | 141 | counter++; |
| perr1940 | 3:ef7e0cbade6d | 142 | if(BMS.read(msg)) { |
| perr1940 | 3:ef7e0cbade6d | 143 | if(msg.id==0x18FF8320) { |
| perr1940 | 4:46d4917f2464 | 144 | //pc.printf("%x\r\n",msg.data[0]); |
| perr1940 | 3:ef7e0cbade6d | 145 | } |
| perr1940 | 3:ef7e0cbade6d | 146 | } |
| perr1940 | 3:ef7e0cbade6d | 147 | phone.attachment(); |
| perr1940 | 3:ef7e0cbade6d | 148 | } else if(buffer==0xFF) { //beginning of message |
| perr1940 | 3:ef7e0cbade6d | 149 | ii=1; |
| perr1940 | 3:ef7e0cbade6d | 150 | dataIn[0]=buffer; |
| perr1940 | 3:ef7e0cbade6d | 151 | comm.reply(UI); |
| perr1940 | 3:ef7e0cbade6d | 152 | } else if(ii==1) { |
| perr1940 | 3:ef7e0cbade6d | 153 | ii++; |
| perr1940 | 3:ef7e0cbade6d | 154 | dataIn[1]=buffer; |
| perr1940 | 3:ef7e0cbade6d | 155 | comm.reply(52); |
| perr1940 | 3:ef7e0cbade6d | 156 | } else if(ii==2) { |
| perr1940 | 3:ef7e0cbade6d | 157 | ii++; |
| perr1940 | 3:ef7e0cbade6d | 158 | dataIn[2]=buffer; |
| perr1940 | 3:ef7e0cbade6d | 159 | comm.reply(25); |
| perr1940 | 0:cbb61997e231 | 160 | } |
| perr1940 | 3:ef7e0cbade6d | 161 | |
| perr1940 | 0:cbb61997e231 | 162 | } |
| mzling | 8:f8fd59fe3e11 | 163 | if(counter>=15) { |
| perr1940 | 3:ef7e0cbade6d | 164 | UI=0;//set the UI to 0 unless it's changed in checkUI_Xbee() |
| mzling | 8:f8fd59fe3e11 | 165 | userInterface.readBuffer(); |
| mzling | 8:f8fd59fe3e11 | 166 | userInterface.checkUI_XBee(); //check UI from Xbee |
| perr1940 | 3:ef7e0cbade6d | 167 | xbeeUI.rxBufferFlush(); |
| perr1940 | 3:ef7e0cbade6d | 168 | counter=0; |
| mzling | 8:f8fd59fe3e11 | 169 | // pc.printf("UI: %d\r\n", UI); |
| perr1940 | 3:ef7e0cbade6d | 170 | } |
| mzling | 8:f8fd59fe3e11 | 171 | counter++; |
| mzling | 8:f8fd59fe3e11 | 172 | } |
| perr1940 | 2:b87aaf1bc803 | 173 | |
| perr1940 | 0:cbb61997e231 | 174 | } |
| perr1940 | 0:cbb61997e231 | 175 | } |
