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@8:f8fd59fe3e11, 2015-02-14 (annotated)
- 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?
| 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 | 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 | } |
