-

Dependencies:   EthernetInterfaceWithHostname HygroClip2-LPC mbed-rtos mbed

Fork of TCPSocket_HelloWorld by mbed official

Committer:
wolfsberger
Date:
Tue May 03 08:47:35 2016 +0000
Revision:
19:d49dacbf64de
Parent:
17:85a4dfbe02cb
Child:
20:526d6c8c2c8d
Hostname can now be set

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:bb128f0e952f 1 #include "mbed.h"
wolfsberger 17:85a4dfbe02cb 2 #include "rtos.h"
donatien 0:bb128f0e952f 3 #include "EthernetInterface.h"
wolfsberger 17:85a4dfbe02cb 4 #include "HygroClip2.h"
wolfsberger 17:85a4dfbe02cb 5
wolfsberger 17:85a4dfbe02cb 6 EthernetInterface eth;
wolfsberger 17:85a4dfbe02cb 7 DigitalOut led1(LED1);
wolfsberger 17:85a4dfbe02cb 8 DigitalOut led2(LED2);
wolfsberger 17:85a4dfbe02cb 9 DigitalOut led3(LED3);
wolfsberger 17:85a4dfbe02cb 10 DigitalOut led4(LED4);
wolfsberger 17:85a4dfbe02cb 11
wolfsberger 17:85a4dfbe02cb 12 typedef struct {
wolfsberger 17:85a4dfbe02cb 13 float temperature;
wolfsberger 17:85a4dfbe02cb 14 float humidity;
wolfsberger 17:85a4dfbe02cb 15 float dewpoint;
wolfsberger 17:85a4dfbe02cb 16 } SensorData;
wolfsberger 17:85a4dfbe02cb 17
wolfsberger 17:85a4dfbe02cb 18 Mail<SensorData, 32> sensorMailBox;
wolfsberger 17:85a4dfbe02cb 19
wolfsberger 17:85a4dfbe02cb 20 void network(void const * arg)
wolfsberger 17:85a4dfbe02cb 21 {
wolfsberger 17:85a4dfbe02cb 22 while(true)
wolfsberger 17:85a4dfbe02cb 23 {
wolfsberger 17:85a4dfbe02cb 24 osEvent event = sensorMailBox.get();
wolfsberger 17:85a4dfbe02cb 25 if (event.status == osEventMail)
wolfsberger 17:85a4dfbe02cb 26 {
wolfsberger 17:85a4dfbe02cb 27 led3 = 1;
wolfsberger 17:85a4dfbe02cb 28 SensorData * data = static_cast<SensorData*>(event.value.p);
wolfsberger 17:85a4dfbe02cb 29
wolfsberger 17:85a4dfbe02cb 30 TCPSocketConnection sock;
wolfsberger 17:85a4dfbe02cb 31 int connected = sock.connect("192.168.100.100", 1337);
wolfsberger 17:85a4dfbe02cb 32 if (connected == 0)
wolfsberger 17:85a4dfbe02cb 33 {
wolfsberger 19:d49dacbf64de 34 const size_t bufferLenght = 300;
wolfsberger 19:d49dacbf64de 35 char transmissionBuffer[bufferLenght];
wolfsberger 19:d49dacbf64de 36 int lenght = snprintf(transmissionBuffer, bufferLenght, "GET /relay?temperature=%.2f&humidity=%.2f&dewpoint=%.2f&id=1 HTTP/1.0\n\n", data->temperature, data->humidity,data->dewpoint);
wolfsberger 17:85a4dfbe02cb 37 printf(transmissionBuffer);
wolfsberger 17:85a4dfbe02cb 38 sock.send_all(transmissionBuffer, lenght);
wolfsberger 17:85a4dfbe02cb 39 }
wolfsberger 17:85a4dfbe02cb 40 sock.close();
wolfsberger 17:85a4dfbe02cb 41
wolfsberger 17:85a4dfbe02cb 42 sensorMailBox.free(data);
wolfsberger 17:85a4dfbe02cb 43 led3 = 0;
wolfsberger 17:85a4dfbe02cb 44 }
wolfsberger 17:85a4dfbe02cb 45 }
wolfsberger 17:85a4dfbe02cb 46 }
donatien 0:bb128f0e952f 47
emilmont 7:65188f4a8c25 48 int main() {
wolfsberger 17:85a4dfbe02cb 49 // Start ethernet module
wolfsberger 19:d49dacbf64de 50 printf("Connecting... ");
wolfsberger 19:d49dacbf64de 51 int initOK = eth.init("GTSJan");
wolfsberger 17:85a4dfbe02cb 52 if (initOK != 0)
wolfsberger 17:85a4dfbe02cb 53 {
wolfsberger 19:d49dacbf64de 54 printf("INIT FAILED\n");
wolfsberger 19:d49dacbf64de 55 while(true);
wolfsberger 17:85a4dfbe02cb 56 }
wolfsberger 17:85a4dfbe02cb 57
donatien 0:bb128f0e952f 58
wolfsberger 17:85a4dfbe02cb 59 // Connect to network
wolfsberger 17:85a4dfbe02cb 60 int connectOK = eth.connect();
wolfsberger 17:85a4dfbe02cb 61 if (connectOK != 0)
wolfsberger 17:85a4dfbe02cb 62 {
wolfsberger 19:d49dacbf64de 63 printf("CONNECT FAILED\n");
wolfsberger 17:85a4dfbe02cb 64 while(true);
wolfsberger 17:85a4dfbe02cb 65 }
wolfsberger 17:85a4dfbe02cb 66 led1 = 1;
donatien 0:bb128f0e952f 67
wolfsberger 19:d49dacbf64de 68 printf( "Connected: \n"
wolfsberger 19:d49dacbf64de 69 "============================================================\n"
wolfsberger 19:d49dacbf64de 70 "| IP-Address: %s\n"
wolfsberger 19:d49dacbf64de 71 "| Subnet-Mask: %s\n"
wolfsberger 19:d49dacbf64de 72 "| Gateway: %s\n"
wolfsberger 19:d49dacbf64de 73 "| MAC-Address: %s\n"
wolfsberger 19:d49dacbf64de 74 "============================================================\n\n",
wolfsberger 19:d49dacbf64de 75 eth.getIPAddress(),
wolfsberger 19:d49dacbf64de 76 eth.getNetworkMask(),
wolfsberger 19:d49dacbf64de 77 eth.getGateway(),
wolfsberger 19:d49dacbf64de 78 eth.getMACAddress());
wolfsberger 19:d49dacbf64de 79
wolfsberger 17:85a4dfbe02cb 80 // Create and start ethernet task
wolfsberger 17:85a4dfbe02cb 81 Thread transmissionTask(network);
wolfsberger 17:85a4dfbe02cb 82 HygroClip2 sensor(p9,p10);
emilmont 7:65188f4a8c25 83
wolfsberger 19:d49dacbf64de 84 printf("Waiting for HygroClip2... ");
wolfsberger 17:85a4dfbe02cb 85 while(!sensor.isDataValid())
wolfsberger 17:85a4dfbe02cb 86 {
wolfsberger 17:85a4dfbe02cb 87 sensor.update();
wolfsberger 17:85a4dfbe02cb 88 Thread::wait(500);
emilmont 7:65188f4a8c25 89 }
wolfsberger 19:d49dacbf64de 90 printf("OK\n");
wolfsberger 17:85a4dfbe02cb 91 led2 = 1;
donatien 0:bb128f0e952f 92
wolfsberger 17:85a4dfbe02cb 93 while(true)
wolfsberger 17:85a4dfbe02cb 94 {
wolfsberger 17:85a4dfbe02cb 95 led4 = 1;
wolfsberger 17:85a4dfbe02cb 96 if (sensor.isDataValid())
wolfsberger 17:85a4dfbe02cb 97 {
wolfsberger 17:85a4dfbe02cb 98 SensorData * data = sensorMailBox.alloc();
wolfsberger 17:85a4dfbe02cb 99 data->temperature = sensor.getTemperature();
wolfsberger 17:85a4dfbe02cb 100 data->humidity = sensor.getHumidity();
wolfsberger 17:85a4dfbe02cb 101 data->dewpoint = sensor.getDewPoint();
wolfsberger 17:85a4dfbe02cb 102 sensorMailBox.put(data);
wolfsberger 17:85a4dfbe02cb 103 }
wolfsberger 17:85a4dfbe02cb 104 sensor.update();
wolfsberger 17:85a4dfbe02cb 105 Thread::wait(50);
wolfsberger 17:85a4dfbe02cb 106 led4 = 0;
wolfsberger 17:85a4dfbe02cb 107 Thread::wait(9950);
wolfsberger 17:85a4dfbe02cb 108 }
donatien 0:bb128f0e952f 109 }