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@9:26e200175e0e, 2015-02-18 (annotated)
- Committer:
- mzling
- Date:
- Wed Feb 18 01:11:47 2015 +0000
- Revision:
- 9:26e200175e0e
- Parent:
- 8:f8fd59fe3e11
- Child:
- 10:057620949ce1
Removed print statements--SDCard checking functions complete.
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 | 8:f8fd59fe3e11 | 83 | int main() |
| mzling | 8:f8fd59fe3e11 | 84 | { |
| mzling | 9:26e200175e0e | 85 | //printf("ENTERING MAIN\r\n"); |
| mzling | 8:f8fd59fe3e11 | 86 | if (!check_errfile() || !check_sdcard()) { |
| mzling | 9:26e200175e0e | 87 | //if (!check_sdcard()) { |
| mzling | 8:f8fd59fe3e11 | 88 | printf("Check failed...aborting power-on\r\n"); |
| mzling | 8:f8fd59fe3e11 | 89 | return 1; |
| mzling | 8:f8fd59fe3e11 | 90 | } |
| mzling | 8:f8fd59fe3e11 | 91 | printf("ERRFILE/SDCARD checks passed!\r\n"); |
| perr1940 | 3:ef7e0cbade6d | 92 | int dataIn[4], dataOut[4], buffer; |
| perr1940 | 1:78452728a306 | 93 | dataOut[0]=7; |
| perr1940 | 1:78452728a306 | 94 | dataOut[1]=30; |
| perr1940 | 2:b87aaf1bc803 | 95 | mainPower=1;//Don't turn on for initial testing |
| perr1940 | 0:cbb61997e231 | 96 | initializeDatabed(); |
| perr1940 | 0:cbb61997e231 | 97 | comm.reply(dataOut[0]);//make this the first message |
| mzling | 8:f8fd59fe3e11 | 98 | printf("DataBed On!\r\n"); |
| perr1940 | 0:cbb61997e231 | 99 | int counter=0; |
| perr1940 | 3:ef7e0cbade6d | 100 | int ii=0; |
| perr1940 | 0:cbb61997e231 | 101 | //float blah=1; |
| perr1940 | 0:cbb61997e231 | 102 | //t_debug.start(); |
| perr1940 | 0:cbb61997e231 | 103 | while (1) { //Run these functions as fast as possible |
| perr1940 | 1:78452728a306 | 104 | |
| mzling | 8:f8fd59fe3e11 | 105 | if(comm.receive()) { |
| perr1940 | 2:b87aaf1bc803 | 106 | dataIn[0] = comm.read(); |
| perr1940 | 2:b87aaf1bc803 | 107 | comm.reply(UI); // Make this the next reply |
| perr1940 | 2:b87aaf1bc803 | 108 | while(dataIn[0]==7) { |
| perr1940 | 1:78452728a306 | 109 | if(comm.receive()) { |
| perr1940 | 2:b87aaf1bc803 | 110 | dataIn[1]=comm.read(); |
| perr1940 | 2:b87aaf1bc803 | 111 | comm.reply(22); |
| perr1940 | 2:b87aaf1bc803 | 112 | break; |
| perr1940 | 2:b87aaf1bc803 | 113 | dataIn[0]=0; |
| perr1940 | 2:b87aaf1bc803 | 114 | } |
| perr1940 | 2:b87aaf1bc803 | 115 | } |
| perr1940 | 2:b87aaf1bc803 | 116 | while(dataIn[1]==30) { |
| perr1940 | 2:b87aaf1bc803 | 117 | if(comm.receive()) { |
| perr1940 | 2:b87aaf1bc803 | 118 | dataIn[2]=comm.read(); |
| perr1940 | 2:b87aaf1bc803 | 119 | comm.reply(5); |
| perr1940 | 2:b87aaf1bc803 | 120 | pc.printf("Fault: %d, %d ", leftFault.read(), rightFault.read()); |
| perr1940 | 2:b87aaf1bc803 | 121 | pc.printf("Data1: %u, Data2: %u, Data3: %u\r\n", dataIn[0], dataIn[1], dataIn[2]); |
| perr1940 | 2:b87aaf1bc803 | 122 | dataIn[1]=0; |
| perr1940 | 1:78452728a306 | 123 | break; |
| perr1940 | 1:78452728a306 | 124 | } |
| mzling | 8:f8fd59fe3e11 | 125 | } |
| perr1940 | 3:ef7e0cbade6d | 126 | if(comm.receive()) { |
| perr1940 | 3:ef7e0cbade6d | 127 | buffer = comm.read(); |
| perr1940 | 3:ef7e0cbade6d | 128 | if(buffer==0xFE) { //end of message |
| perr1940 | 3:ef7e0cbade6d | 129 | ii=0; |
| perr1940 | 3:ef7e0cbade6d | 130 | dataIn[3]=buffer; |
| perr1940 | 3:ef7e0cbade6d | 131 | comm.reply(5); |
| perr1940 | 3:ef7e0cbade6d | 132 | counter++; |
| perr1940 | 3:ef7e0cbade6d | 133 | if(BMS.read(msg)) { |
| perr1940 | 3:ef7e0cbade6d | 134 | if(msg.id==0x18FF8320) { |
| perr1940 | 4:46d4917f2464 | 135 | //pc.printf("%x\r\n",msg.data[0]); |
| perr1940 | 3:ef7e0cbade6d | 136 | } |
| perr1940 | 3:ef7e0cbade6d | 137 | } |
| perr1940 | 3:ef7e0cbade6d | 138 | phone.attachment(); |
| perr1940 | 3:ef7e0cbade6d | 139 | } else if(buffer==0xFF) { //beginning of message |
| perr1940 | 3:ef7e0cbade6d | 140 | ii=1; |
| perr1940 | 3:ef7e0cbade6d | 141 | dataIn[0]=buffer; |
| perr1940 | 3:ef7e0cbade6d | 142 | comm.reply(UI); |
| perr1940 | 3:ef7e0cbade6d | 143 | } else if(ii==1) { |
| perr1940 | 3:ef7e0cbade6d | 144 | ii++; |
| perr1940 | 3:ef7e0cbade6d | 145 | dataIn[1]=buffer; |
| perr1940 | 3:ef7e0cbade6d | 146 | comm.reply(52); |
| perr1940 | 3:ef7e0cbade6d | 147 | } else if(ii==2) { |
| perr1940 | 3:ef7e0cbade6d | 148 | ii++; |
| perr1940 | 3:ef7e0cbade6d | 149 | dataIn[2]=buffer; |
| perr1940 | 3:ef7e0cbade6d | 150 | comm.reply(25); |
| perr1940 | 0:cbb61997e231 | 151 | } |
| perr1940 | 3:ef7e0cbade6d | 152 | |
| perr1940 | 0:cbb61997e231 | 153 | } |
| mzling | 8:f8fd59fe3e11 | 154 | if(counter>=15) { |
| perr1940 | 3:ef7e0cbade6d | 155 | UI=0;//set the UI to 0 unless it's changed in checkUI_Xbee() |
| mzling | 8:f8fd59fe3e11 | 156 | userInterface.readBuffer(); |
| mzling | 8:f8fd59fe3e11 | 157 | userInterface.checkUI_XBee(); //check UI from Xbee |
| perr1940 | 3:ef7e0cbade6d | 158 | xbeeUI.rxBufferFlush(); |
| perr1940 | 3:ef7e0cbade6d | 159 | counter=0; |
| mzling | 8:f8fd59fe3e11 | 160 | // pc.printf("UI: %d\r\n", UI); |
| perr1940 | 3:ef7e0cbade6d | 161 | } |
| mzling | 8:f8fd59fe3e11 | 162 | counter++; |
| mzling | 8:f8fd59fe3e11 | 163 | } |
| perr1940 | 2:b87aaf1bc803 | 164 | |
| perr1940 | 0:cbb61997e231 | 165 | } |
| perr1940 | 0:cbb61997e231 | 166 | } |
