-
Dependencies: EthernetInterfaceWithHostname HygroClip2-LPC mbed-rtos mbed
Fork of TCPSocket_HelloWorld by
main.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 #include "EthernetInterface.h" 00004 #include "HygroClip2.h" 00005 00006 EthernetInterface eth; 00007 DigitalOut led1(LED1); 00008 DigitalOut led2(LED2); 00009 DigitalOut led3(LED3); 00010 DigitalOut led4(LED4); 00011 00012 typedef struct { 00013 float temperature; 00014 float humidity; 00015 float dewpoint; 00016 } SensorData; 00017 00018 Mail<SensorData, 32> sensorMailBox; 00019 00020 void network(void const * arg) 00021 { 00022 while(true) 00023 { 00024 osEvent event = sensorMailBox.get(); 00025 if (event.status == osEventMail) 00026 { 00027 led3 = 1; 00028 SensorData * data = static_cast<SensorData*>(event.value.p); 00029 00030 TCPSocketConnection sock; 00031 int connected = sock.connect("192.168.100.100", 1337); 00032 if (connected == 0) 00033 { 00034 const size_t bufferLenght = 300; 00035 char transmissionBuffer[bufferLenght]; 00036 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); 00037 printf(transmissionBuffer); 00038 sock.send_all(transmissionBuffer, lenght); 00039 wait(0.2f); // To avoid a pipeline rupture 00040 } 00041 else 00042 { 00043 printf("Failed to connect\n"); 00044 } 00045 sock.close(); 00046 00047 sensorMailBox.free(data); 00048 led3 = 0; 00049 } 00050 } 00051 } 00052 00053 int main() { 00054 // Start ethernet module 00055 printf("Connecting... "); 00056 int initOK = eth.init("GTSJan"); 00057 if (initOK != 0) 00058 { 00059 printf("INIT FAILED\n"); 00060 while(true); 00061 } 00062 00063 00064 // Connect to network 00065 int connectOK = eth.connect(); 00066 if (connectOK != 0) 00067 { 00068 printf("CONNECT FAILED\n"); 00069 while(true); 00070 } 00071 led1 = 1; 00072 00073 printf( "Connected: \n" 00074 "============================================================\n" 00075 "| IP-Address: %s\n" 00076 "| Subnet-Mask: %s\n" 00077 "| Gateway: %s\n" 00078 "| MAC-Address: %s\n" 00079 "============================================================\n\n", 00080 eth.getIPAddress(), 00081 eth.getNetworkMask(), 00082 eth.getGateway(), 00083 eth.getMACAddress()); 00084 00085 // Create and start ethernet task 00086 Thread transmissionTask(network); 00087 HygroClip2 sensor(p9,p10); 00088 00089 printf("Waiting for HygroClip2... "); 00090 while(!sensor.isDataValid()) 00091 { 00092 sensor.update(); 00093 Thread::wait(500); 00094 } 00095 printf("OK\n"); 00096 led2 = 1; 00097 00098 while(true) 00099 { 00100 led4 = 1; 00101 if (sensor.isDataValid()) 00102 { 00103 SensorData * data = sensorMailBox.alloc(1000); 00104 if (data != NULL) 00105 { 00106 data->temperature = sensor.getTemperature(); 00107 data->humidity = sensor.getHumidity(); 00108 data->dewpoint = sensor.getDewPoint(); 00109 sensorMailBox.put(data); 00110 } 00111 else 00112 { 00113 printf("Mail is full"); 00114 } 00115 } 00116 sensor.update(); 00117 Thread::wait(50); 00118 led4 = 0; 00119 Thread::wait(19950); 00120 } 00121 }
Generated on Wed Jul 20 2022 05:35:35 by 1.7.2