Repo. for the ELEC351 Coursework - Oliver Thompson
Dependencies: BMP280 ELEC350-Practicals-FZ429- TextLCD watchdog_RTOS BME280 ntp-client
SerialComms.hpp@17:da78a552339d, 2018-12-08 (annotated)
- Committer:
- O_Thom
- Date:
- Sat Dec 08 00:59:10 2018 +0000
- Revision:
- 17:da78a552339d
- Parent:
- 16:73af0e3ddcaa
- Child:
- 18:a036c2e5ff89
Set time and date working. Bugs however include the date needing to be entered before the time.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
O_Thom | 6:b7f6e0c0f646 | 1 | #include "mbed.h" |
O_Thom | 14:dbb0741ce576 | 2 | #include "mbed_events.h" |
O_Thom | 14:dbb0741ce576 | 3 | #include <stdio.h> |
O_Thom | 14:dbb0741ce576 | 4 | |
O_Thom | 10:08c366434f2b | 5 | #include<string> |
O_Thom | 11:b8e8630c7e3b | 6 | #include <iostream> |
O_Thom | 9:654e14de9d74 | 7 | #include <vector> |
O_Thom | 10:08c366434f2b | 8 | |
O_Thom | 9:654e14de9d74 | 9 | #define ERROR_LCD_EXIT 1 |
O_Thom | 9:654e14de9d74 | 10 | #define ERROR_SERIAL_EXIT 2 |
O_Thom | 9:654e14de9d74 | 11 | #define ERROR_SD_EXIT 3 |
O_Thom | 9:654e14de9d74 | 12 | #define ERROR_NET_EXIT 4 |
O_Thom | 9:654e14de9d74 | 13 | #define ERROR_SAMPLER_EXIT 5 |
O_Thom | 9:654e14de9d74 | 14 | |
O_Thom | 16:73af0e3ddcaa | 15 | #define cmdRow 36 |
O_Thom | 16:73af0e3ddcaa | 16 | #define cmdCol 37 |
O_Thom | 13:37a7c57f4641 | 17 | Serial pc(USBTX, USBRX); // USB Tx and Rx Connections |
O_Thom | 6:b7f6e0c0f646 | 18 | |
O_Thom | 17:da78a552339d | 19 | const int buffer_size = 30; |
O_Thom | 13:37a7c57f4641 | 20 | char rx_buffer[buffer_size+1]; |
O_Thom | 13:37a7c57f4641 | 21 | |
O_Thom | 16:73af0e3ddcaa | 22 | struct Timestamp |
O_Thom | 16:73af0e3ddcaa | 23 | { |
O_Thom | 16:73af0e3ddcaa | 24 | int Day; |
O_Thom | 16:73af0e3ddcaa | 25 | int Month; |
O_Thom | 16:73af0e3ddcaa | 26 | int Year; |
O_Thom | 16:73af0e3ddcaa | 27 | int Second; |
O_Thom | 16:73af0e3ddcaa | 28 | int Minute; |
O_Thom | 16:73af0e3ddcaa | 29 | int Hour; |
O_Thom | 16:73af0e3ddcaa | 30 | }; |
O_Thom | 10:08c366434f2b | 31 | |
O_Thom | 6:b7f6e0c0f646 | 32 | class Serialcomms |
O_Thom | 1:f89c930c6491 | 33 | { |
O_Thom | 1:f89c930c6491 | 34 | private: |
O_Thom | 8:7d218affea71 | 35 | float fTemp; //current temperature of sensor |
O_Thom | 8:7d218affea71 | 36 | float fPressure; //current pressure of sensor |
O_Thom | 9:654e14de9d74 | 37 | float fLDR; //current light level from LDR |
O_Thom | 9:654e14de9d74 | 38 | vector<int> ErrorCodes; |
O_Thom | 15:f8748fd0c5b1 | 39 | int rx_in; |
O_Thom | 16:73af0e3ddcaa | 40 | //char rx_buffer[buffer_size + 1]; |
O_Thom | 15:f8748fd0c5b1 | 41 | int cmdCount; |
O_Thom | 16:73af0e3ddcaa | 42 | int rxInputFlag; |
O_Thom | 16:73af0e3ddcaa | 43 | char RxIn[buffer_size+1]; |
O_Thom | 16:73af0e3ddcaa | 44 | char clearingArray[buffer_size+1]; |
O_Thom | 17:da78a552339d | 45 | char timestampArray[buffer_size+1]; |
O_Thom | 11:b8e8630c7e3b | 46 | public: |
O_Thom | 9:654e14de9d74 | 47 | EventQueue SERIAL_Queue; //Initialise the EventQueue |
O_Thom | 14:dbb0741ce576 | 48 | void displayFrame() |
O_Thom | 14:dbb0741ce576 | 49 | { |
O_Thom | 14:dbb0741ce576 | 50 | printf("\033[2J"); // Clear screen |
O_Thom | 14:dbb0741ce576 | 51 | printf("\033[0;0H"); // Home Positon Reset |
O_Thom | 16:73af0e3ddcaa | 52 | printf("*********************************************************************************\n" |
O_Thom | 16:73af0e3ddcaa | 53 | "* ELEC351 COURSEWORK ENVIRONMENTAL SYSTEM *\n" |
O_Thom | 16:73af0e3ddcaa | 54 | "*********************************************************************************\n" |
O_Thom | 16:73af0e3ddcaa | 55 | "* Sensor Readout * Terminal *\n" |
O_Thom | 16:73af0e3ddcaa | 56 | "*********************************************************************************\n" |
O_Thom | 16:73af0e3ddcaa | 57 | "* Timestamp: * *\n" // Col 5 Row 13 |
O_Thom | 16:73af0e3ddcaa | 58 | "* Temperature: * *\n" // Col 6 Row 15 |
O_Thom | 16:73af0e3ddcaa | 59 | "* Pressure: * *\n" // Col 7 Row 12 |
O_Thom | 16:73af0e3ddcaa | 60 | "* Light Level: * *\n" // Col 8 Row15 |
O_Thom | 16:73af0e3ddcaa | 61 | "********************************* *\n" |
O_Thom | 16:73af0e3ddcaa | 62 | "* Error Codes * *\n" //Col 10 |
O_Thom | 16:73af0e3ddcaa | 63 | "********************************* *\n" // Col 11 Row 2 |
O_Thom | 16:73af0e3ddcaa | 64 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 65 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 66 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 67 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 68 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 69 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 70 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 71 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 72 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 73 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 74 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 75 | "********************************* *\n" |
O_Thom | 16:73af0e3ddcaa | 76 | "* Thread Health * *\n" |
O_Thom | 16:73af0e3ddcaa | 77 | "********************************* *\n" |
O_Thom | 16:73af0e3ddcaa | 78 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 79 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 80 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 81 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 82 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 83 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 84 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 85 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 86 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 87 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 88 | "* * *\n" |
O_Thom | 16:73af0e3ddcaa | 89 | "* * *\n" // cmd position r:36 c:37 |
O_Thom | 16:73af0e3ddcaa | 90 | "*********************************************************************************\n\n" |
O_Thom | 14:dbb0741ce576 | 91 | ); |
O_Thom | 16:73af0e3ddcaa | 92 | printf("\033[%d;%dfcmd: ", cmdRow, cmdCol); |
O_Thom | 15:f8748fd0c5b1 | 93 | |
O_Thom | 14:dbb0741ce576 | 94 | } |
O_Thom | 14:dbb0741ce576 | 95 | |
O_Thom | 10:08c366434f2b | 96 | Serialcomms() |
O_Thom | 10:08c366434f2b | 97 | { |
O_Thom | 10:08c366434f2b | 98 | pc.baud(9600); |
O_Thom | 15:f8748fd0c5b1 | 99 | rx_in = 0; |
O_Thom | 15:f8748fd0c5b1 | 100 | cmdCount = 0; |
O_Thom | 15:f8748fd0c5b1 | 101 | fTemp = 0; |
O_Thom | 15:f8748fd0c5b1 | 102 | fPressure = 0; |
O_Thom | 15:f8748fd0c5b1 | 103 | fLDR = 0; |
O_Thom | 16:73af0e3ddcaa | 104 | for (int i = 0; i < buffer_size+1; i++) |
O_Thom | 16:73af0e3ddcaa | 105 | { |
O_Thom | 16:73af0e3ddcaa | 106 | clearingArray[i] = ' '; |
O_Thom | 17:da78a552339d | 107 | timestampArray[i] = 0; |
O_Thom | 17:da78a552339d | 108 | rx_buffer[i] = 0; |
O_Thom | 16:73af0e3ddcaa | 109 | } |
O_Thom | 14:dbb0741ce576 | 110 | displayFrame(); |
O_Thom | 16:73af0e3ddcaa | 111 | SERIAL_Queue.call_every(1000, callback(this, &Serialcomms::updateTerminal)); |
O_Thom | 15:f8748fd0c5b1 | 112 | SERIAL_Queue.call_every(50, callback(this, &Serialcomms::ReadData)); // Start the periodic event queue to check the buffer |
O_Thom | 10:08c366434f2b | 113 | } |
O_Thom | 13:37a7c57f4641 | 114 | |
O_Thom | 10:08c366434f2b | 115 | ~Serialcomms() |
O_Thom | 10:08c366434f2b | 116 | { |
O_Thom | 11:b8e8630c7e3b | 117 | printf("Closing Serial Comms."); |
O_Thom | 10:08c366434f2b | 118 | } |
O_Thom | 10:08c366434f2b | 119 | |
O_Thom | 6:b7f6e0c0f646 | 120 | void setsampledata(sample_message msg) // Update internal values |
O_Thom | 6:b7f6e0c0f646 | 121 | { |
O_Thom | 6:b7f6e0c0f646 | 122 | fTemp = msg.temp; |
O_Thom | 6:b7f6e0c0f646 | 123 | fPressure = msg.pressure; |
O_Thom | 6:b7f6e0c0f646 | 124 | fLDR = msg.ldr; |
O_Thom | 6:b7f6e0c0f646 | 125 | } |
O_Thom | 6:b7f6e0c0f646 | 126 | |
O_Thom | 9:654e14de9d74 | 127 | sample_message getsampledata() // Retrieves the data |
O_Thom | 6:b7f6e0c0f646 | 128 | { |
O_Thom | 6:b7f6e0c0f646 | 129 | sample_message msg; |
O_Thom | 6:b7f6e0c0f646 | 130 | msg.temp = fTemp; |
O_Thom | 6:b7f6e0c0f646 | 131 | msg.pressure = fPressure; |
O_Thom | 6:b7f6e0c0f646 | 132 | msg.ldr = fLDR; |
O_Thom | 6:b7f6e0c0f646 | 133 | return msg; |
O_Thom | 6:b7f6e0c0f646 | 134 | } |
O_Thom | 16:73af0e3ddcaa | 135 | |
O_Thom | 6:b7f6e0c0f646 | 136 | void updateTerminal() // Print internal values of sensors |
O_Thom | 17:da78a552339d | 137 | { |
O_Thom | 17:da78a552339d | 138 | printf("\033[6;16f%s", timestampArray); |
O_Thom | 15:f8748fd0c5b1 | 139 | printf("\033[7;16f%5.2f", fTemp); |
O_Thom | 15:f8748fd0c5b1 | 140 | printf("\033[8;16f%5.2f", fPressure); |
O_Thom | 15:f8748fd0c5b1 | 141 | printf("\033[9;16f%5.2f", fLDR); |
O_Thom | 9:654e14de9d74 | 142 | if (ErrorCodes.size() == 0) |
O_Thom | 9:654e14de9d74 | 143 | { |
O_Thom | 16:73af0e3ddcaa | 144 | printf("\033[13;3fNo Error Codes Raised\n"); |
O_Thom | 9:654e14de9d74 | 145 | } |
O_Thom | 9:654e14de9d74 | 146 | else |
O_Thom | 9:654e14de9d74 | 147 | { |
O_Thom | 9:654e14de9d74 | 148 | for (int idx = 0; idx < ErrorCodes.size(); idx++) |
O_Thom | 9:654e14de9d74 | 149 | { |
O_Thom | 16:73af0e3ddcaa | 150 | printf("\033[%d;3: %d\n",(11+idx),ErrorCodes[idx]); |
O_Thom | 9:654e14de9d74 | 151 | } |
O_Thom | 9:654e14de9d74 | 152 | } |
O_Thom | 15:f8748fd0c5b1 | 153 | // Add code to receive feedback from watchdog and place into thread safe section |
O_Thom | 9:654e14de9d74 | 154 | } |
O_Thom | 16:73af0e3ddcaa | 155 | |
O_Thom | 16:73af0e3ddcaa | 156 | |
O_Thom | 16:73af0e3ddcaa | 157 | void printstringtoTerminal(char Data[]) |
O_Thom | 16:73af0e3ddcaa | 158 | { |
O_Thom | 16:73af0e3ddcaa | 159 | printf("\033[%d;%df%s", (cmdRow-(cmdCount+1)),(cmdCol+5), Data); // Confirmation of Command |
O_Thom | 16:73af0e3ddcaa | 160 | cmdCount++; |
O_Thom | 16:73af0e3ddcaa | 161 | } |
O_Thom | 16:73af0e3ddcaa | 162 | void printintegertoTerminal(int Data) |
O_Thom | 16:73af0e3ddcaa | 163 | { |
O_Thom | 16:73af0e3ddcaa | 164 | printf("\033[%d;%df%d", (cmdRow-(cmdCount+1)),(cmdCol+5), Data); // Confirmation of Command |
O_Thom | 16:73af0e3ddcaa | 165 | cmdCount++; |
O_Thom | 16:73af0e3ddcaa | 166 | } |
O_Thom | 16:73af0e3ddcaa | 167 | |
O_Thom | 16:73af0e3ddcaa | 168 | |
O_Thom | 16:73af0e3ddcaa | 169 | int searchInput(char stream[], char command[]) |
O_Thom | 16:73af0e3ddcaa | 170 | { |
O_Thom | 16:73af0e3ddcaa | 171 | int match = 0; |
O_Thom | 17:da78a552339d | 172 | const int commandLength = strlen(command); |
O_Thom | 16:73af0e3ddcaa | 173 | for (int i = 0; i < commandLength; i++) |
O_Thom | 16:73af0e3ddcaa | 174 | { |
O_Thom | 16:73af0e3ddcaa | 175 | if (stream[i] == command[i]) |
O_Thom | 16:73af0e3ddcaa | 176 | { |
O_Thom | 16:73af0e3ddcaa | 177 | match = i; // Return the position of the last command character |
O_Thom | 16:73af0e3ddcaa | 178 | } |
O_Thom | 16:73af0e3ddcaa | 179 | else |
O_Thom | 16:73af0e3ddcaa | 180 | { |
O_Thom | 17:da78a552339d | 181 | match = 0; |
O_Thom | 17:da78a552339d | 182 | i = commandLength-1; |
O_Thom | 16:73af0e3ddcaa | 183 | } |
O_Thom | 17:da78a552339d | 184 | } |
O_Thom | 16:73af0e3ddcaa | 185 | return match; |
O_Thom | 16:73af0e3ddcaa | 186 | } |
O_Thom | 16:73af0e3ddcaa | 187 | |
O_Thom | 16:73af0e3ddcaa | 188 | |
O_Thom | 9:654e14de9d74 | 189 | |
O_Thom | 13:37a7c57f4641 | 190 | void handleInput() |
O_Thom | 16:73af0e3ddcaa | 191 | { |
O_Thom | 16:73af0e3ddcaa | 192 | if (int readall = searchInput(RxIn, "READ ALL") > 0) |
O_Thom | 16:73af0e3ddcaa | 193 | { |
O_Thom | 16:73af0e3ddcaa | 194 | printstringtoTerminal("READING ALL"); |
O_Thom | 9:654e14de9d74 | 195 | } |
O_Thom | 16:73af0e3ddcaa | 196 | else if(int readall = searchInput(RxIn, "DELETE ALL") > 0) |
O_Thom | 16:73af0e3ddcaa | 197 | { |
O_Thom | 16:73af0e3ddcaa | 198 | printf("\033[%d;%df%s", (cmdRow-(cmdCount+1)),(cmdCol+5), "DELETING ALL"); // Confirmation of Command |
O_Thom | 16:73af0e3ddcaa | 199 | cmdCount++; |
O_Thom | 16:73af0e3ddcaa | 200 | } |
O_Thom | 16:73af0e3ddcaa | 201 | else if(int read = searchInput(RxIn, "READ") > 0) |
O_Thom | 9:654e14de9d74 | 202 | { |
O_Thom | 17:da78a552339d | 203 | read = searchInput(RxIn, "READ"); |
O_Thom | 16:73af0e3ddcaa | 204 | char count[buffer_size] = {0}; |
O_Thom | 16:73af0e3ddcaa | 205 | for (int i = read; i < strlen(RxIn); i++) |
O_Thom | 16:73af0e3ddcaa | 206 | { |
O_Thom | 17:da78a552339d | 207 | count[i-read] = RxIn[i+1]; |
O_Thom | 16:73af0e3ddcaa | 208 | } |
O_Thom | 17:da78a552339d | 209 | } |
O_Thom | 16:73af0e3ddcaa | 210 | else if(int del = searchInput(RxIn, "DELETE") > 0) |
O_Thom | 9:654e14de9d74 | 211 | { |
O_Thom | 17:da78a552339d | 212 | del = searchInput(RxIn, "DELETE"); |
O_Thom | 17:da78a552339d | 213 | char count[buffer_size] = {0}; |
O_Thom | 17:da78a552339d | 214 | for (int i = del; i < strlen(RxIn); i++) |
O_Thom | 17:da78a552339d | 215 | { |
O_Thom | 17:da78a552339d | 216 | count[i-del] = RxIn[i+1]; |
O_Thom | 17:da78a552339d | 217 | } |
O_Thom | 9:654e14de9d74 | 218 | } |
O_Thom | 16:73af0e3ddcaa | 219 | else if(int setdate = searchInput(RxIn, "SETDATE") > 0) //<dd> <mm> <yyyy> |
O_Thom | 17:da78a552339d | 220 | { |
O_Thom | 17:da78a552339d | 221 | setdate = searchInput(RxIn, "SETDATE"); |
O_Thom | 17:da78a552339d | 222 | char count[buffer_size] = {0}; |
O_Thom | 17:da78a552339d | 223 | for (int i = setdate; i < strlen(RxIn); i++) |
O_Thom | 17:da78a552339d | 224 | { |
O_Thom | 17:da78a552339d | 225 | count[i-setdate] = RxIn[i+1]; |
O_Thom | 17:da78a552339d | 226 | timestampArray[i-setdate] = RxIn[i+1]; |
O_Thom | 17:da78a552339d | 227 | } |
O_Thom | 9:654e14de9d74 | 228 | } |
O_Thom | 16:73af0e3ddcaa | 229 | else if(int settime = searchInput(RxIn, "SETTIME") > 0) //<hh> <mm> <ss> |
O_Thom | 9:654e14de9d74 | 230 | { |
O_Thom | 17:da78a552339d | 231 | settime = searchInput(RxIn, "SETTIME"); |
O_Thom | 17:da78a552339d | 232 | char count[buffer_size] = {0}; |
O_Thom | 17:da78a552339d | 233 | for (int i = settime; i < strlen(RxIn); i++) |
O_Thom | 17:da78a552339d | 234 | { |
O_Thom | 17:da78a552339d | 235 | count[i-settime] = RxIn[i+1]; |
O_Thom | 17:da78a552339d | 236 | timestampArray[i-settime+6] = RxIn[i+1]; |
O_Thom | 17:da78a552339d | 237 | } |
O_Thom | 17:da78a552339d | 238 | } |
O_Thom | 16:73af0e3ddcaa | 239 | else if(int sett = searchInput(RxIn, "SETT") > 0) |
O_Thom | 9:654e14de9d74 | 240 | { |
O_Thom | 9:654e14de9d74 | 241 | } |
O_Thom | 16:73af0e3ddcaa | 242 | else if(int state = searchInput(RxIn, "STATE") > 0) |
O_Thom | 9:654e14de9d74 | 243 | { |
O_Thom | 9:654e14de9d74 | 244 | } |
O_Thom | 16:73af0e3ddcaa | 245 | else if(int logging = searchInput(RxIn, "LOGGING") > 0) // Verbose logging |
O_Thom | 16:73af0e3ddcaa | 246 | { |
O_Thom | 16:73af0e3ddcaa | 247 | } |
O_Thom | 16:73af0e3ddcaa | 248 | else if(int clearall = searchInput(RxIn, "CLEAR ALL") > 0) |
O_Thom | 16:73af0e3ddcaa | 249 | { |
O_Thom | 17:da78a552339d | 250 | cmdCount = 0; |
O_Thom | 17:da78a552339d | 251 | for (int i = 0; i < 22; i++) |
O_Thom | 17:da78a552339d | 252 | { |
O_Thom | 17:da78a552339d | 253 | printstringtoTerminal(clearingArray); |
O_Thom | 17:da78a552339d | 254 | } |
O_Thom | 17:da78a552339d | 255 | cmdCount = 0; |
O_Thom | 16:73af0e3ddcaa | 256 | } |
O_Thom | 16:73af0e3ddcaa | 257 | else |
O_Thom | 9:654e14de9d74 | 258 | { |
O_Thom | 16:73af0e3ddcaa | 259 | printstringtoTerminal("UNKNOWN COMMAND"); |
O_Thom | 16:73af0e3ddcaa | 260 | } |
O_Thom | 16:73af0e3ddcaa | 261 | |
O_Thom | 16:73af0e3ddcaa | 262 | for (int i = 0; i < (buffer_size+1); i++) // Init |
O_Thom | 16:73af0e3ddcaa | 263 | { |
O_Thom | 16:73af0e3ddcaa | 264 | RxIn[i] = 0; |
O_Thom | 16:73af0e3ddcaa | 265 | } |
O_Thom | 16:73af0e3ddcaa | 266 | printf("\033[%d;%dfcmd: ", cmdRow, cmdCol); // Reset to cmd location |
O_Thom | 9:654e14de9d74 | 267 | } |
O_Thom | 10:08c366434f2b | 268 | |
O_Thom | 13:37a7c57f4641 | 269 | |
O_Thom | 13:37a7c57f4641 | 270 | void ReadData() |
O_Thom | 10:08c366434f2b | 271 | { |
O_Thom | 16:73af0e3ddcaa | 272 | while(pc.readable()) // While there's data in the Rx buffer |
O_Thom | 10:08c366434f2b | 273 | { |
O_Thom | 16:73af0e3ddcaa | 274 | char c = pc.getc(); // Take a character off the buffer |
O_Thom | 16:73af0e3ddcaa | 275 | if (c == 0x0D) // Enter ASCII Code |
O_Thom | 13:37a7c57f4641 | 276 | { |
O_Thom | 16:73af0e3ddcaa | 277 | printf("\033[%d;%df%s", (cmdRow-(cmdCount+1)),(cmdCol+5), rx_buffer); // Echo the Command back to the terminal |
O_Thom | 16:73af0e3ddcaa | 278 | rx_in = 0; // Reset the buffer indexer |
O_Thom | 16:73af0e3ddcaa | 279 | int stringLength = strlen(rx_buffer); //finds length of the array |
O_Thom | 16:73af0e3ddcaa | 280 | for (int i = 0; i < stringLength; i++) { |
O_Thom | 16:73af0e3ddcaa | 281 | RxIn[i] = rx_buffer[i]; // Copies buffer into global // stringLength-1-i |
O_Thom | 16:73af0e3ddcaa | 282 | } |
O_Thom | 16:73af0e3ddcaa | 283 | RxIn[stringLength] = '\0'; //adds NULL character |
O_Thom | 16:73af0e3ddcaa | 284 | SERIAL_Queue.call(callback(this, &Serialcomms::handleInput)); |
O_Thom | 16:73af0e3ddcaa | 285 | |
O_Thom | 16:73af0e3ddcaa | 286 | for (int i = 0 ; i < stringLength; i++) |
O_Thom | 15:f8748fd0c5b1 | 287 | { |
O_Thom | 16:73af0e3ddcaa | 288 | rx_buffer[i] = 0; // Clear the buffer with spaces |
O_Thom | 15:f8748fd0c5b1 | 289 | } |
O_Thom | 16:73af0e3ddcaa | 290 | printf("\033[%d;%df%s", cmdRow, (cmdCol+5), clearingArray); // Clear the Command entry space |
O_Thom | 16:73af0e3ddcaa | 291 | //printf("\033[%d;%df%s", (cmdRow -(cmdCount+2)), cmdCol, clearingArray); // Clear above the oldest record Command |
O_Thom | 15:f8748fd0c5b1 | 292 | |
O_Thom | 16:73af0e3ddcaa | 293 | if (cmdCount >= 20) |
O_Thom | 15:f8748fd0c5b1 | 294 | { |
O_Thom | 15:f8748fd0c5b1 | 295 | cmdCount = 0; |
O_Thom | 15:f8748fd0c5b1 | 296 | } |
O_Thom | 15:f8748fd0c5b1 | 297 | cmdCount++; |
O_Thom | 15:f8748fd0c5b1 | 298 | |
O_Thom | 15:f8748fd0c5b1 | 299 | break; |
O_Thom | 13:37a7c57f4641 | 300 | } |
O_Thom | 13:37a7c57f4641 | 301 | rx_buffer[rx_in] = c; |
O_Thom | 16:73af0e3ddcaa | 302 | printf("\033[%d;%df%s",cmdRow, (cmdCol+5), rx_buffer); // Echo |
O_Thom | 13:37a7c57f4641 | 303 | rx_in += 1; // Increase received indexer |
O_Thom | 11:b8e8630c7e3b | 304 | } |
O_Thom | 10:08c366434f2b | 305 | } |
O_Thom | 13:37a7c57f4641 | 306 | |
O_Thom | 9:654e14de9d74 | 307 | void updateErrors(vector<int> ErrorsIn) |
O_Thom | 9:654e14de9d74 | 308 | { |
O_Thom | 9:654e14de9d74 | 309 | for (int idx = 0; idx < ErrorsIn.size() ; idx++) // Add the Error Codes to the vector |
O_Thom | 9:654e14de9d74 | 310 | { |
O_Thom | 9:654e14de9d74 | 311 | ErrorCodes.push_back(ErrorsIn[idx]); |
O_Thom | 9:654e14de9d74 | 312 | } |
O_Thom | 6:b7f6e0c0f646 | 313 | } |
O_Thom | 6:b7f6e0c0f646 | 314 | void updateTimeDate() |
O_Thom | 6:b7f6e0c0f646 | 315 | { |
O_Thom | 16:73af0e3ddcaa | 316 | |
O_Thom | 6:b7f6e0c0f646 | 317 | } |
O_Thom | 6:b7f6e0c0f646 | 318 | |
O_Thom | 10:08c366434f2b | 319 | |
O_Thom | 1:f89c930c6491 | 320 | }; |
O_Thom | 7:8664a45f5ce1 | 321 |