-
Dependencies: EthernetInterfaceWithHostname HygroClip2-LPC mbed-rtos mbed
Fork of TCPSocket_HelloWorld by
main.cpp@17:85a4dfbe02cb, 2016-05-02 (annotated)
- Committer:
- wolfsberger
- Date:
- Mon May 02 14:09:38 2016 +0000
- Revision:
- 17:85a4dfbe02cb
- Parent:
- 11:59dcefdda506
- Child:
- 19:d49dacbf64de
-
Who changed what in which revision?
User | Revision | Line number | New 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 | 17:85a4dfbe02cb | 34 | char transmissionBuffer[300]; |
wolfsberger | 17:85a4dfbe02cb | 35 | 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); |
wolfsberger | 17:85a4dfbe02cb | 36 | printf(transmissionBuffer); |
wolfsberger | 17:85a4dfbe02cb | 37 | sock.send_all(transmissionBuffer, lenght); |
wolfsberger | 17:85a4dfbe02cb | 38 | } |
wolfsberger | 17:85a4dfbe02cb | 39 | sock.close(); |
wolfsberger | 17:85a4dfbe02cb | 40 | |
wolfsberger | 17:85a4dfbe02cb | 41 | sensorMailBox.free(data); |
wolfsberger | 17:85a4dfbe02cb | 42 | led3 = 0; |
wolfsberger | 17:85a4dfbe02cb | 43 | } |
wolfsberger | 17:85a4dfbe02cb | 44 | } |
wolfsberger | 17:85a4dfbe02cb | 45 | } |
donatien | 0:bb128f0e952f | 46 | |
emilmont | 7:65188f4a8c25 | 47 | int main() { |
wolfsberger | 17:85a4dfbe02cb | 48 | // Start ethernet module |
wolfsberger | 17:85a4dfbe02cb | 49 | int initOK = eth.init(); |
wolfsberger | 17:85a4dfbe02cb | 50 | if (initOK != 0) |
wolfsberger | 17:85a4dfbe02cb | 51 | { |
wolfsberger | 17:85a4dfbe02cb | 52 | while(true); |
wolfsberger | 17:85a4dfbe02cb | 53 | } |
wolfsberger | 17:85a4dfbe02cb | 54 | |
donatien | 0:bb128f0e952f | 55 | |
wolfsberger | 17:85a4dfbe02cb | 56 | // Connect to network |
wolfsberger | 17:85a4dfbe02cb | 57 | int connectOK = eth.connect(); |
wolfsberger | 17:85a4dfbe02cb | 58 | if (connectOK != 0) |
wolfsberger | 17:85a4dfbe02cb | 59 | { |
wolfsberger | 17:85a4dfbe02cb | 60 | while(true); |
wolfsberger | 17:85a4dfbe02cb | 61 | } |
wolfsberger | 17:85a4dfbe02cb | 62 | led1 = 1; |
donatien | 0:bb128f0e952f | 63 | |
wolfsberger | 17:85a4dfbe02cb | 64 | // Create and start ethernet task |
wolfsberger | 17:85a4dfbe02cb | 65 | Thread transmissionTask(network); |
wolfsberger | 17:85a4dfbe02cb | 66 | HygroClip2 sensor(p9,p10); |
emilmont | 7:65188f4a8c25 | 67 | |
wolfsberger | 17:85a4dfbe02cb | 68 | while(!sensor.isDataValid()) |
wolfsberger | 17:85a4dfbe02cb | 69 | { |
wolfsberger | 17:85a4dfbe02cb | 70 | sensor.update(); |
wolfsberger | 17:85a4dfbe02cb | 71 | Thread::wait(500); |
emilmont | 7:65188f4a8c25 | 72 | } |
wolfsberger | 17:85a4dfbe02cb | 73 | led2 = 1; |
donatien | 0:bb128f0e952f | 74 | |
wolfsberger | 17:85a4dfbe02cb | 75 | while(true) |
wolfsberger | 17:85a4dfbe02cb | 76 | { |
wolfsberger | 17:85a4dfbe02cb | 77 | led4 = 1; |
wolfsberger | 17:85a4dfbe02cb | 78 | if (sensor.isDataValid()) |
wolfsberger | 17:85a4dfbe02cb | 79 | { |
wolfsberger | 17:85a4dfbe02cb | 80 | SensorData * data = sensorMailBox.alloc(); |
wolfsberger | 17:85a4dfbe02cb | 81 | data->temperature = sensor.getTemperature(); |
wolfsberger | 17:85a4dfbe02cb | 82 | data->humidity = sensor.getHumidity(); |
wolfsberger | 17:85a4dfbe02cb | 83 | data->dewpoint = sensor.getDewPoint(); |
wolfsberger | 17:85a4dfbe02cb | 84 | sensorMailBox.put(data); |
wolfsberger | 17:85a4dfbe02cb | 85 | } |
wolfsberger | 17:85a4dfbe02cb | 86 | sensor.update(); |
wolfsberger | 17:85a4dfbe02cb | 87 | Thread::wait(50); |
wolfsberger | 17:85a4dfbe02cb | 88 | led4 = 0; |
wolfsberger | 17:85a4dfbe02cb | 89 | Thread::wait(9950); |
wolfsberger | 17:85a4dfbe02cb | 90 | } |
donatien | 0:bb128f0e952f | 91 | } |