This my big project for PYRN Board
Dependencies: CAN HTTPClient MODSERIAL MyThings Pyrn3GModem Socket TinyGPS MyUSBHost lwip-sys lwip mbed-rtos mbed-src
MainThread.cpp@0:efe6085327fd, 2015-04-14 (annotated)
- Committer:
- clemounet
- Date:
- Tue Apr 14 13:30:02 2015 +0000
- Revision:
- 0:efe6085327fd
All the projet PYRN 3G-CAN-ACC...
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
clemounet | 0:efe6085327fd | 1 | |
clemounet | 0:efe6085327fd | 2 | #define __DEBUG__ 5 |
clemounet | 0:efe6085327fd | 3 | #ifndef __MODULE__ |
clemounet | 0:efe6085327fd | 4 | #define __MODULE__ "MainThread.cpp" |
clemounet | 0:efe6085327fd | 5 | #endif |
clemounet | 0:efe6085327fd | 6 | #include "MyDebug.h" |
clemounet | 0:efe6085327fd | 7 | |
clemounet | 0:efe6085327fd | 8 | #include "mbed.h" |
clemounet | 0:efe6085327fd | 9 | |
clemounet | 0:efe6085327fd | 10 | #include "MyOsHelpers.h" |
clemounet | 0:efe6085327fd | 11 | #include "MyThread.h" |
clemounet | 0:efe6085327fd | 12 | #include "MyBlinker.h" |
clemounet | 0:efe6085327fd | 13 | #include "IMUSensor.h" |
clemounet | 0:efe6085327fd | 14 | #include "GPSSensor.h" |
clemounet | 0:efe6085327fd | 15 | #include "CANInterface.h" |
clemounet | 0:efe6085327fd | 16 | #include "CANSniffer.h" |
clemounet | 0:efe6085327fd | 17 | #include "PyrnUSBModem.h" |
clemounet | 0:efe6085327fd | 18 | |
clemounet | 0:efe6085327fd | 19 | #include "HTTPClient.h" |
clemounet | 0:efe6085327fd | 20 | //#include "TCPSocketConnection.h" |
clemounet | 0:efe6085327fd | 21 | |
clemounet | 0:efe6085327fd | 22 | char dataResult[1024]; |
clemounet | 0:efe6085327fd | 23 | |
clemounet | 0:efe6085327fd | 24 | #if 0 |
clemounet | 0:efe6085327fd | 25 | void test(void const*) { |
clemounet | 0:efe6085327fd | 26 | |
clemounet | 0:efe6085327fd | 27 | DBG("Start"); |
clemounet | 0:efe6085327fd | 28 | |
clemounet | 0:efe6085327fd | 29 | //HTTPClient http; |
clemounet | 0:efe6085327fd | 30 | //TCPSocketConnection tcpSock; |
clemounet | 0:efe6085327fd | 31 | |
clemounet | 0:efe6085327fd | 32 | IMUSensor imu(p28,p27); |
clemounet | 0:efe6085327fd | 33 | GPSSensor gps(p13,p14,4,250); |
clemounet | 0:efe6085327fd | 34 | CANInterface canItf; |
clemounet | 0:efe6085327fd | 35 | CANSniffer canSnif(&canItf); |
clemounet | 0:efe6085327fd | 36 | //PyrnUSBModem modem; |
clemounet | 0:efe6085327fd | 37 | |
clemounet | 0:efe6085327fd | 38 | PrintActiveThreads(); |
clemounet | 0:efe6085327fd | 39 | |
clemounet | 0:efe6085327fd | 40 | //modem.connect("a2bouygtel.com","",""); |
clemounet | 0:efe6085327fd | 41 | |
clemounet | 0:efe6085327fd | 42 | PwmOut led_red(LED1); |
clemounet | 0:efe6085327fd | 43 | PwmOut led_green(LED2); |
clemounet | 0:efe6085327fd | 44 | |
clemounet | 0:efe6085327fd | 45 | MyBlinker br = MyBlinker(&led_red,1000); |
clemounet | 0:efe6085327fd | 46 | MyBlinker bg = MyBlinker(&led_green,2000); |
clemounet | 0:efe6085327fd | 47 | |
clemounet | 0:efe6085327fd | 48 | imu.Start(); |
clemounet | 0:efe6085327fd | 49 | gps.Start(); |
clemounet | 0:efe6085327fd | 50 | canItf.Start(); |
clemounet | 0:efe6085327fd | 51 | br.Start(); |
clemounet | 0:efe6085327fd | 52 | bg.Start(); |
clemounet | 0:efe6085327fd | 53 | |
clemounet | 0:efe6085327fd | 54 | imu.Run(); |
clemounet | 0:efe6085327fd | 55 | gps.Run(); |
clemounet | 0:efe6085327fd | 56 | canItf.Run(); |
clemounet | 0:efe6085327fd | 57 | br.Run(); |
clemounet | 0:efe6085327fd | 58 | bg.Run(); |
clemounet | 0:efe6085327fd | 59 | |
clemounet | 0:efe6085327fd | 60 | // ecrire dans 5 et 6 |
clemounet | 0:efe6085327fd | 61 | char cbuff[8] = {'C','A','N','1','[',' ',' ',']'}; |
clemounet | 0:efe6085327fd | 62 | uint16_t loop = 0; |
clemounet | 0:efe6085327fd | 63 | uint16_t len = 0; |
clemounet | 0:efe6085327fd | 64 | |
clemounet | 0:efe6085327fd | 65 | while(1) { |
clemounet | 0:efe6085327fd | 66 | // Fill up the cbuff |
clemounet | 0:efe6085327fd | 67 | cbuff[5] = 0xff & (loop>>8); |
clemounet | 0:efe6085327fd | 68 | cbuff[6] = 0xff & loop; |
clemounet | 0:efe6085327fd | 69 | // Print all threads |
clemounet | 0:efe6085327fd | 70 | PrintActiveThreads(); |
clemounet | 0:efe6085327fd | 71 | Thread::wait(1000); |
clemounet | 0:efe6085327fd | 72 | time_t seconds = time(NULL); |
clemounet | 0:efe6085327fd | 73 | if((loop % 20) == 0) { |
clemounet | 0:efe6085327fd | 74 | gps.Capture(dataResult,&len); |
clemounet | 0:efe6085327fd | 75 | DBG("GPS[%04d] Got %03d chars",seconds,len); |
clemounet | 0:efe6085327fd | 76 | } |
clemounet | 0:efe6085327fd | 77 | if((loop % 30) == 0) { |
clemounet | 0:efe6085327fd | 78 | imu.Capture(dataResult,&len); |
clemounet | 0:efe6085327fd | 79 | DBG("IMU[%04d] Got %03d chars",seconds,len); |
clemounet | 0:efe6085327fd | 80 | } |
clemounet | 0:efe6085327fd | 81 | /* |
clemounet | 0:efe6085327fd | 82 | if((loop%10) == 0) { |
clemounet | 0:efe6085327fd | 83 | DBG("Trying to fetch page...\n"); |
clemounet | 0:efe6085327fd | 84 | int ret = http.get("http://developer.mbed.org/media/uploads/donatien/hello.txt", dataResult, 128); |
clemounet | 0:efe6085327fd | 85 | if (!ret) |
clemounet | 0:efe6085327fd | 86 | { |
clemounet | 0:efe6085327fd | 87 | DBG("Page fetched successfully - read %d characters\n", strlen(dataResult)); |
clemounet | 0:efe6085327fd | 88 | DBG("Result: %s\n", dataResult); |
clemounet | 0:efe6085327fd | 89 | } else { |
clemounet | 0:efe6085327fd | 90 | DBG("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode()); |
clemounet | 0:efe6085327fd | 91 | } |
clemounet | 0:efe6085327fd | 92 | } |
clemounet | 0:efe6085327fd | 93 | */ |
clemounet | 0:efe6085327fd | 94 | /* |
clemounet | 0:efe6085327fd | 95 | if((loop%10) == 0) { |
clemounet | 0:efe6085327fd | 96 | char rcvBuf[16]; |
clemounet | 0:efe6085327fd | 97 | if(modem.pppConnected()) { |
clemounet | 0:efe6085327fd | 98 | DBG("====> PPP is connected go for TCP Socket"); |
clemounet | 0:efe6085327fd | 99 | if(!tcpSock.is_connected()) { |
clemounet | 0:efe6085327fd | 100 | if(tcpSock.connect("carbon14.clemounet.fr",8888) == 0){ |
clemounet | 0:efe6085327fd | 101 | //if(tcpSock.connect("195.154.85.42",8888) == 0){ |
clemounet | 0:efe6085327fd | 102 | DBG("TCP Socket got Connected"); |
clemounet | 0:efe6085327fd | 103 | } else { |
clemounet | 0:efe6085327fd | 104 | DBG("TCP Socket could not Connected"); |
clemounet | 0:efe6085327fd | 105 | } |
clemounet | 0:efe6085327fd | 106 | } |
clemounet | 0:efe6085327fd | 107 | if(tcpSock.is_connected()) { |
clemounet | 0:efe6085327fd | 108 | //if(tcpSock.connect("carbon14.clemounet.fr",8888) == 0){ |
clemounet | 0:efe6085327fd | 109 | DBG("TCP Socket is Connected"); |
clemounet | 0:efe6085327fd | 110 | if(tcpSock.send(cbuff,8)){ |
clemounet | 0:efe6085327fd | 111 | DBG("TCP Data Sent ... now receive"); |
clemounet | 0:efe6085327fd | 112 | int n = tcpSock.receive(rcvBuf, 16); |
clemounet | 0:efe6085327fd | 113 | if(n) { |
clemounet | 0:efe6085327fd | 114 | DBG("TCP Data Received"); |
clemounet | 0:efe6085327fd | 115 | DBG_MEMDUMP("TCP RCV",rcvBuf,n); |
clemounet | 0:efe6085327fd | 116 | } else { |
clemounet | 0:efe6085327fd | 117 | DBG("TCP Data Receive Failed"); |
clemounet | 0:efe6085327fd | 118 | } |
clemounet | 0:efe6085327fd | 119 | } else { |
clemounet | 0:efe6085327fd | 120 | DBG("TCP Failed to send data"); |
clemounet | 0:efe6085327fd | 121 | |
clemounet | 0:efe6085327fd | 122 | } |
clemounet | 0:efe6085327fd | 123 | } else { |
clemounet | 0:efe6085327fd | 124 | DBG("TCP Socket not connected"); |
clemounet | 0:efe6085327fd | 125 | } |
clemounet | 0:efe6085327fd | 126 | } |
clemounet | 0:efe6085327fd | 127 | } |
clemounet | 0:efe6085327fd | 128 | */ |
clemounet | 0:efe6085327fd | 129 | canItf.Send(1,0x666,cbuff,8); |
clemounet | 0:efe6085327fd | 130 | loop++; |
clemounet | 0:efe6085327fd | 131 | } |
clemounet | 0:efe6085327fd | 132 | |
clemounet | 0:efe6085327fd | 133 | imu.Stop(); |
clemounet | 0:efe6085327fd | 134 | gps.Stop(); |
clemounet | 0:efe6085327fd | 135 | canItf.Stop(); |
clemounet | 0:efe6085327fd | 136 | br.Stop(); |
clemounet | 0:efe6085327fd | 137 | bg.Stop(); |
clemounet | 0:efe6085327fd | 138 | } |
clemounet | 0:efe6085327fd | 139 | #endif |
clemounet | 0:efe6085327fd | 140 | |
clemounet | 0:efe6085327fd | 141 | void ModemLuncher(void const*) { |
clemounet | 0:efe6085327fd | 142 | DBG("Start"); |
clemounet | 0:efe6085327fd | 143 | HTTPClient http; |
clemounet | 0:efe6085327fd | 144 | PyrnUSBModem modem; |
clemounet | 0:efe6085327fd | 145 | |
clemounet | 0:efe6085327fd | 146 | PrintActiveThreads(); |
clemounet | 0:efe6085327fd | 147 | |
clemounet | 0:efe6085327fd | 148 | Thread::wait(500); |
clemounet | 0:efe6085327fd | 149 | modem.connect("a2bouygtel.com","",""); |
clemounet | 0:efe6085327fd | 150 | int loop = 0; |
clemounet | 0:efe6085327fd | 151 | |
clemounet | 0:efe6085327fd | 152 | while(1) { |
clemounet | 0:efe6085327fd | 153 | DBG("LoopThread"); |
clemounet | 0:efe6085327fd | 154 | Thread::wait(1000); |
clemounet | 0:efe6085327fd | 155 | |
clemounet | 0:efe6085327fd | 156 | if((loop%10) == 0) { |
clemounet | 0:efe6085327fd | 157 | PrintActiveThreads(); |
clemounet | 0:efe6085327fd | 158 | DBG("Trying to fetch page...\n"); |
clemounet | 0:efe6085327fd | 159 | int ret = http.get("http://developer.mbed.org/media/uploads/donatien/hello.txt", dataResult, 128); |
clemounet | 0:efe6085327fd | 160 | if (!ret) |
clemounet | 0:efe6085327fd | 161 | { |
clemounet | 0:efe6085327fd | 162 | DBG("Page fetched successfully - read %d characters\n", strlen(dataResult)); |
clemounet | 0:efe6085327fd | 163 | DBG("Result: %s\n", dataResult); |
clemounet | 0:efe6085327fd | 164 | } else { |
clemounet | 0:efe6085327fd | 165 | DBG("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode()); |
clemounet | 0:efe6085327fd | 166 | } |
clemounet | 0:efe6085327fd | 167 | } |
clemounet | 0:efe6085327fd | 168 | |
clemounet | 0:efe6085327fd | 169 | /* |
clemounet | 0:efe6085327fd | 170 | if((loop%10) == 0) { |
clemounet | 0:efe6085327fd | 171 | char rcvBuf[16]; |
clemounet | 0:efe6085327fd | 172 | if(modem.pppConnected()) { |
clemounet | 0:efe6085327fd | 173 | DBG("====> PPP is connected go for TCP Socket"); |
clemounet | 0:efe6085327fd | 174 | if(!tcpSock.is_connected()) { |
clemounet | 0:efe6085327fd | 175 | if(tcpSock.connect("carbon14.clemounet.fr",8888) == 0){ |
clemounet | 0:efe6085327fd | 176 | //if(tcpSock.connect("195.154.85.42",8888) == 0){ |
clemounet | 0:efe6085327fd | 177 | DBG("TCP Socket got Connected"); |
clemounet | 0:efe6085327fd | 178 | } else { |
clemounet | 0:efe6085327fd | 179 | DBG("TCP Socket could not Connected"); |
clemounet | 0:efe6085327fd | 180 | } |
clemounet | 0:efe6085327fd | 181 | } |
clemounet | 0:efe6085327fd | 182 | if(tcpSock.is_connected()) { |
clemounet | 0:efe6085327fd | 183 | //if(tcpSock.connect("carbon14.clemounet.fr",8888) == 0){ |
clemounet | 0:efe6085327fd | 184 | DBG("TCP Socket is Connected"); |
clemounet | 0:efe6085327fd | 185 | if(tcpSock.send(cbuff,8)){ |
clemounet | 0:efe6085327fd | 186 | DBG("TCP Data Sent ... now receive"); |
clemounet | 0:efe6085327fd | 187 | int n = tcpSock.receive(rcvBuf, 16); |
clemounet | 0:efe6085327fd | 188 | if(n) { |
clemounet | 0:efe6085327fd | 189 | DBG("TCP Data Received"); |
clemounet | 0:efe6085327fd | 190 | DBG_MEMDUMP("TCP RCV",rcvBuf,n); |
clemounet | 0:efe6085327fd | 191 | } else { |
clemounet | 0:efe6085327fd | 192 | DBG("TCP Data Receive Failed"); |
clemounet | 0:efe6085327fd | 193 | } |
clemounet | 0:efe6085327fd | 194 | } else { |
clemounet | 0:efe6085327fd | 195 | DBG("TCP Failed to send data"); |
clemounet | 0:efe6085327fd | 196 | |
clemounet | 0:efe6085327fd | 197 | } |
clemounet | 0:efe6085327fd | 198 | } else { |
clemounet | 0:efe6085327fd | 199 | DBG("TCP Socket not connected"); |
clemounet | 0:efe6085327fd | 200 | } |
clemounet | 0:efe6085327fd | 201 | } |
clemounet | 0:efe6085327fd | 202 | } |
clemounet | 0:efe6085327fd | 203 | */ |
clemounet | 0:efe6085327fd | 204 | loop++; |
clemounet | 0:efe6085327fd | 205 | } |
clemounet | 0:efe6085327fd | 206 | } |
clemounet | 0:efe6085327fd | 207 | |
clemounet | 0:efe6085327fd | 208 | |
clemounet | 0:efe6085327fd | 209 | int main(void) { |
clemounet | 0:efe6085327fd | 210 | |
clemounet | 0:efe6085327fd | 211 | set_time(0); |
clemounet | 0:efe6085327fd | 212 | debug_init(); |
clemounet | 0:efe6085327fd | 213 | debug_set_newline("\r\n"); |
clemounet | 0:efe6085327fd | 214 | debug_set_speed(115200); |
clemounet | 0:efe6085327fd | 215 | |
clemounet | 0:efe6085327fd | 216 | // Simply lunch the modem stuffs in separate thread, (not using the MyThread Stuffs) |
clemounet | 0:efe6085327fd | 217 | // >>>> It allows to do other stuffs during this dead time <<<< |
clemounet | 0:efe6085327fd | 218 | Thread testTask(ModemLuncher, NULL, osPriorityNormal, 1024 * 5); |
clemounet | 0:efe6085327fd | 219 | |
clemounet | 0:efe6085327fd | 220 | //IMUSensor imu(p28,p27); |
clemounet | 0:efe6085327fd | 221 | //GPSSensor gps(p13,p14,4,250); |
clemounet | 0:efe6085327fd | 222 | //CANInterface canItf; |
clemounet | 0:efe6085327fd | 223 | //CANSniffer canSnif(&canItf); |
clemounet | 0:efe6085327fd | 224 | |
clemounet | 0:efe6085327fd | 225 | //PwmOut led_red(LED1); |
clemounet | 0:efe6085327fd | 226 | //PwmOut led_green(LED2); |
clemounet | 0:efe6085327fd | 227 | |
clemounet | 0:efe6085327fd | 228 | //MyBlinker br = MyBlinker(&led_red,1000); |
clemounet | 0:efe6085327fd | 229 | //MyBlinker bg = MyBlinker(&led_green,2000); |
clemounet | 0:efe6085327fd | 230 | |
clemounet | 0:efe6085327fd | 231 | //imu.Start(); |
clemounet | 0:efe6085327fd | 232 | //gps.Start(); |
clemounet | 0:efe6085327fd | 233 | //canItf.Start(); |
clemounet | 0:efe6085327fd | 234 | //br.Start(); |
clemounet | 0:efe6085327fd | 235 | //bg.Start(); |
clemounet | 0:efe6085327fd | 236 | |
clemounet | 0:efe6085327fd | 237 | //imu.Run(); |
clemounet | 0:efe6085327fd | 238 | //gps.Run(); |
clemounet | 0:efe6085327fd | 239 | //canItf.Run(); |
clemounet | 0:efe6085327fd | 240 | //br.Run(); |
clemounet | 0:efe6085327fd | 241 | //bg.Run(); |
clemounet | 0:efe6085327fd | 242 | |
clemounet | 0:efe6085327fd | 243 | // ecrire dans 5 et 6 |
clemounet | 0:efe6085327fd | 244 | char cbuff[8] = {'C','A','N','1','[',' ',' ',']'}; |
clemounet | 0:efe6085327fd | 245 | uint16_t loop = 0; |
clemounet | 0:efe6085327fd | 246 | uint16_t len = 0; |
clemounet | 0:efe6085327fd | 247 | |
clemounet | 0:efe6085327fd | 248 | while(1){ |
clemounet | 0:efe6085327fd | 249 | // Fill up the cbuff |
clemounet | 0:efe6085327fd | 250 | cbuff[5] = 0xff & (loop>>8); |
clemounet | 0:efe6085327fd | 251 | cbuff[6] = 0xff & loop; |
clemounet | 0:efe6085327fd | 252 | // Print all threads |
clemounet | 0:efe6085327fd | 253 | PrintActiveThreads(); |
clemounet | 0:efe6085327fd | 254 | Thread::wait(1000); |
clemounet | 0:efe6085327fd | 255 | time_t seconds = time(NULL); |
clemounet | 0:efe6085327fd | 256 | /*if((loop % 20) == 0) { |
clemounet | 0:efe6085327fd | 257 | gps.Capture(dataResult,&len); |
clemounet | 0:efe6085327fd | 258 | DBG("GPS[%04d] Got %03d chars",seconds,len); |
clemounet | 0:efe6085327fd | 259 | } |
clemounet | 0:efe6085327fd | 260 | if((loop % 30) == 0) { |
clemounet | 0:efe6085327fd | 261 | imu.Capture(dataResult,&len); |
clemounet | 0:efe6085327fd | 262 | DBG("IMU[%04d] Got %03d chars",seconds,len); |
clemounet | 0:efe6085327fd | 263 | }*/ |
clemounet | 0:efe6085327fd | 264 | DBG("LoopMain"); |
clemounet | 0:efe6085327fd | 265 | //canItf.Send(1,0x666,cbuff,8); |
clemounet | 0:efe6085327fd | 266 | Thread::wait(1000); |
clemounet | 0:efe6085327fd | 267 | loop++; |
clemounet | 0:efe6085327fd | 268 | } |
clemounet | 0:efe6085327fd | 269 | |
clemounet | 0:efe6085327fd | 270 | //imu.Stop(); |
clemounet | 0:efe6085327fd | 271 | //gps.Stop(); |
clemounet | 0:efe6085327fd | 272 | //canItf.Stop(); |
clemounet | 0:efe6085327fd | 273 | //br.Stop(); |
clemounet | 0:efe6085327fd | 274 | //bg.Stop(); |
clemounet | 0:efe6085327fd | 275 | |
clemounet | 0:efe6085327fd | 276 | return 0; |
clemounet | 0:efe6085327fd | 277 | } |