-
Dependencies: EthernetInterfaceWithHostname HygroClip2-LPC mbed-rtos mbed
Fork of TCPSocket_HelloWorld by
main.cpp@19:d49dacbf64de, 2016-05-03 (annotated)
- 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?
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 | 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 | } |