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: CAN HTTPClient MODSERIAL MyThings Pyrn3GModem Socket TinyGPS MyUSBHost lwip-sys lwip mbed-rtos mbed-src
MainThread.cpp
- Committer:
- clemounet
- Date:
- 2015-04-14
- Revision:
- 0:efe6085327fd
File content as of revision 0:efe6085327fd:
#define __DEBUG__ 5
#ifndef __MODULE__
#define __MODULE__ "MainThread.cpp"
#endif
#include "MyDebug.h"
#include "mbed.h"
#include "MyOsHelpers.h"
#include "MyThread.h"
#include "MyBlinker.h"
#include "IMUSensor.h"
#include "GPSSensor.h"
#include "CANInterface.h"
#include "CANSniffer.h"
#include "PyrnUSBModem.h"
#include "HTTPClient.h"
//#include "TCPSocketConnection.h"
char dataResult[1024];
#if 0
void test(void const*) {
DBG("Start");
//HTTPClient http;
//TCPSocketConnection tcpSock;
IMUSensor imu(p28,p27);
GPSSensor gps(p13,p14,4,250);
CANInterface canItf;
CANSniffer canSnif(&canItf);
//PyrnUSBModem modem;
PrintActiveThreads();
//modem.connect("a2bouygtel.com","","");
PwmOut led_red(LED1);
PwmOut led_green(LED2);
MyBlinker br = MyBlinker(&led_red,1000);
MyBlinker bg = MyBlinker(&led_green,2000);
imu.Start();
gps.Start();
canItf.Start();
br.Start();
bg.Start();
imu.Run();
gps.Run();
canItf.Run();
br.Run();
bg.Run();
// ecrire dans 5 et 6
char cbuff[8] = {'C','A','N','1','[',' ',' ',']'};
uint16_t loop = 0;
uint16_t len = 0;
while(1) {
// Fill up the cbuff
cbuff[5] = 0xff & (loop>>8);
cbuff[6] = 0xff & loop;
// Print all threads
PrintActiveThreads();
Thread::wait(1000);
time_t seconds = time(NULL);
if((loop % 20) == 0) {
gps.Capture(dataResult,&len);
DBG("GPS[%04d] Got %03d chars",seconds,len);
}
if((loop % 30) == 0) {
imu.Capture(dataResult,&len);
DBG("IMU[%04d] Got %03d chars",seconds,len);
}
/*
if((loop%10) == 0) {
DBG("Trying to fetch page...\n");
int ret = http.get("http://developer.mbed.org/media/uploads/donatien/hello.txt", dataResult, 128);
if (!ret)
{
DBG("Page fetched successfully - read %d characters\n", strlen(dataResult));
DBG("Result: %s\n", dataResult);
} else {
DBG("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
}
}
*/
/*
if((loop%10) == 0) {
char rcvBuf[16];
if(modem.pppConnected()) {
DBG("====> PPP is connected go for TCP Socket");
if(!tcpSock.is_connected()) {
if(tcpSock.connect("carbon14.clemounet.fr",8888) == 0){
//if(tcpSock.connect("195.154.85.42",8888) == 0){
DBG("TCP Socket got Connected");
} else {
DBG("TCP Socket could not Connected");
}
}
if(tcpSock.is_connected()) {
//if(tcpSock.connect("carbon14.clemounet.fr",8888) == 0){
DBG("TCP Socket is Connected");
if(tcpSock.send(cbuff,8)){
DBG("TCP Data Sent ... now receive");
int n = tcpSock.receive(rcvBuf, 16);
if(n) {
DBG("TCP Data Received");
DBG_MEMDUMP("TCP RCV",rcvBuf,n);
} else {
DBG("TCP Data Receive Failed");
}
} else {
DBG("TCP Failed to send data");
}
} else {
DBG("TCP Socket not connected");
}
}
}
*/
canItf.Send(1,0x666,cbuff,8);
loop++;
}
imu.Stop();
gps.Stop();
canItf.Stop();
br.Stop();
bg.Stop();
}
#endif
void ModemLuncher(void const*) {
DBG("Start");
HTTPClient http;
PyrnUSBModem modem;
PrintActiveThreads();
Thread::wait(500);
modem.connect("a2bouygtel.com","","");
int loop = 0;
while(1) {
DBG("LoopThread");
Thread::wait(1000);
if((loop%10) == 0) {
PrintActiveThreads();
DBG("Trying to fetch page...\n");
int ret = http.get("http://developer.mbed.org/media/uploads/donatien/hello.txt", dataResult, 128);
if (!ret)
{
DBG("Page fetched successfully - read %d characters\n", strlen(dataResult));
DBG("Result: %s\n", dataResult);
} else {
DBG("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
}
}
/*
if((loop%10) == 0) {
char rcvBuf[16];
if(modem.pppConnected()) {
DBG("====> PPP is connected go for TCP Socket");
if(!tcpSock.is_connected()) {
if(tcpSock.connect("carbon14.clemounet.fr",8888) == 0){
//if(tcpSock.connect("195.154.85.42",8888) == 0){
DBG("TCP Socket got Connected");
} else {
DBG("TCP Socket could not Connected");
}
}
if(tcpSock.is_connected()) {
//if(tcpSock.connect("carbon14.clemounet.fr",8888) == 0){
DBG("TCP Socket is Connected");
if(tcpSock.send(cbuff,8)){
DBG("TCP Data Sent ... now receive");
int n = tcpSock.receive(rcvBuf, 16);
if(n) {
DBG("TCP Data Received");
DBG_MEMDUMP("TCP RCV",rcvBuf,n);
} else {
DBG("TCP Data Receive Failed");
}
} else {
DBG("TCP Failed to send data");
}
} else {
DBG("TCP Socket not connected");
}
}
}
*/
loop++;
}
}
int main(void) {
set_time(0);
debug_init();
debug_set_newline("\r\n");
debug_set_speed(115200);
// Simply lunch the modem stuffs in separate thread, (not using the MyThread Stuffs)
// >>>> It allows to do other stuffs during this dead time <<<<
Thread testTask(ModemLuncher, NULL, osPriorityNormal, 1024 * 5);
//IMUSensor imu(p28,p27);
//GPSSensor gps(p13,p14,4,250);
//CANInterface canItf;
//CANSniffer canSnif(&canItf);
//PwmOut led_red(LED1);
//PwmOut led_green(LED2);
//MyBlinker br = MyBlinker(&led_red,1000);
//MyBlinker bg = MyBlinker(&led_green,2000);
//imu.Start();
//gps.Start();
//canItf.Start();
//br.Start();
//bg.Start();
//imu.Run();
//gps.Run();
//canItf.Run();
//br.Run();
//bg.Run();
// ecrire dans 5 et 6
char cbuff[8] = {'C','A','N','1','[',' ',' ',']'};
uint16_t loop = 0;
uint16_t len = 0;
while(1){
// Fill up the cbuff
cbuff[5] = 0xff & (loop>>8);
cbuff[6] = 0xff & loop;
// Print all threads
PrintActiveThreads();
Thread::wait(1000);
time_t seconds = time(NULL);
/*if((loop % 20) == 0) {
gps.Capture(dataResult,&len);
DBG("GPS[%04d] Got %03d chars",seconds,len);
}
if((loop % 30) == 0) {
imu.Capture(dataResult,&len);
DBG("IMU[%04d] Got %03d chars",seconds,len);
}*/
DBG("LoopMain");
//canItf.Send(1,0x666,cbuff,8);
Thread::wait(1000);
loop++;
}
//imu.Stop();
//gps.Stop();
//canItf.Stop();
//br.Stop();
//bg.Stop();
return 0;
}