This my big project for PYRN Board

Dependencies:   CAN HTTPClient MODSERIAL MyThings Pyrn3GModem Socket TinyGPS MyUSBHost lwip-sys lwip mbed-rtos mbed-src

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?

UserRevisionLine numberNew 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 }