-

Dependencies:   EthernetInterfaceWithHostname HygroClip2-LPC mbed-rtos mbed

Fork of TCPSocket_HelloWorld by mbed official

main.cpp

Committer:
wolfsberger
Date:
2016-05-02
Revision:
17:85a4dfbe02cb
Parent:
11:59dcefdda506
Child:
19:d49dacbf64de

File content as of revision 17:85a4dfbe02cb:

#include "mbed.h"
#include "rtos.h"
#include "EthernetInterface.h"
#include "HygroClip2.h"

EthernetInterface eth;
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

typedef struct {
    float temperature;
    float humidity;
    float dewpoint;
} SensorData;

Mail<SensorData, 32> sensorMailBox;

void network(void const * arg)
{
    while(true)
    {
        osEvent event = sensorMailBox.get();
        if (event.status == osEventMail)
        {
            led3 = 1;
            SensorData * data = static_cast<SensorData*>(event.value.p);
            
            TCPSocketConnection sock;
            int connected = sock.connect("192.168.100.100", 1337);
            if (connected == 0)
            {
                char transmissionBuffer[300];
                int lenght = snprintf(transmissionBuffer, 200, "GET /relay?temperature=%.2f&humidity=%.2f&dewpoint=%.2f&id=1 HTTP/1.0\n\n", data->temperature, data->humidity,data->dewpoint);
                printf(transmissionBuffer);
                sock.send_all(transmissionBuffer, lenght);                
            }
            sock.close();
            
            sensorMailBox.free(data);
            led3 = 0;
        }        
    }
}

int main() {
    // Start ethernet module    
    int initOK = eth.init();    
    if (initOK != 0)
    {
        while(true);   
    }
    
    
    // Connect to network
    int connectOK = eth.connect();
    if (connectOK != 0)
    {
        while(true);   
    }
    led1 = 1;
    
    // Create and start ethernet task
    Thread transmissionTask(network);
    HygroClip2 sensor(p9,p10);
    
    while(!sensor.isDataValid())
    {
        sensor.update();
        Thread::wait(500);
    }
    led2 = 1;
    
    while(true)
    {
        led4 = 1;        
        if (sensor.isDataValid())
        {
            SensorData * data = sensorMailBox.alloc();
            data->temperature = sensor.getTemperature();
            data->humidity = sensor.getHumidity();
            data->dewpoint = sensor.getDewPoint();
            sensorMailBox.put(data);
        }
        sensor.update();
        Thread::wait(50);
        led4 = 0;
        Thread::wait(9950);
    }
}