Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BME280 EthernetInterface FXOS8700Q HTTPClient-wolfSSL NTPClient NetworkAPI OAuth4Tw TSL2561_I2C eCompass_FPU_Lib mbed-rtos mbed wolfSSL
Fork of TCP_Server_Example by
EnvServer.cpp
00001 #include "EnvServer.h" 00002 #include "Sensor.h" 00003 00004 Select select; 00005 tcp::Socket server; 00006 tcp::Socket client[MAX_CLIENTS]; 00007 tcp::Socket *socket = NULL; 00008 00009 void EnvServer(void const *arg) 00010 { 00011 int result = 0; 00012 int index = 0; 00013 int num=0; 00014 char SendBuf[16]; 00015 network::Buffer buffer(256); 00016 //std::string message("Hello world!"); 00017 00018 // Configure the server socket (assume everty thing works) 00019 server.open(); 00020 server.bind(WAIT_PORT); 00021 server.listen(MAX_CLIENTS); 00022 printf("Start waiting ...\r\n"); 00023 00024 // Add sockets to the select api 00025 select.set(&server, Select::Read); 00026 for (index = 0; index < MAX_CLIENTS; index++) { 00027 select.set(&client[index], Select::Read); 00028 } 00029 00030 do { 00031 // Wait for activity 00032 result = select.wait(); 00033 if (result < -1) { 00034 printf("Failed to select\n\r"); 00035 break; 00036 } 00037 00038 // Get the first socket 00039 socket = (tcp::Socket *)select.getReadable(); 00040 00041 for (; socket != NULL; socket = (tcp::Socket *)select.getReadable()) { 00042 // Check if there was a connection request. 00043 if (socket->getHandle() == server.getHandle()) { 00044 // Find an unused client 00045 for (index = 0; index < MAX_CLIENTS; index++) { 00046 if (client[index].getStatus() == network::Socket::Closed) { 00047 break; 00048 } 00049 } 00050 00051 // Maximum connections reached 00052 if (index == MAX_CLIENTS) { 00053 printf("Maximum connections reached\n\r"); 00054 continue; 00055 } 00056 00057 // Accept the client 00058 socket->accept(client[index]); 00059 printf("Client connected %s:%d\n\r", 00060 client[index].getRemoteEndpoint().getAddress().toString().c_str(), 00061 client[index].getRemoteEndpoint().getPort()); 00062 00063 // Send a nice message to the client 00064 //client[index].write((void *)message.data(), message.size()); 00065 continue; 00066 } 00067 00068 // It was not the server socket, so it must be a client talking to us. 00069 num=socket->read(buffer); 00070 switch (num) { 00071 case 0: 00072 // Remote end disconnected 00073 printf("Client disconnected %s:%d\n\r", 00074 socket->getRemoteEndpoint().getAddress().toString().c_str(), 00075 socket->getRemoteEndpoint().getPort()); 00076 00077 // Close socket 00078 socket->close(); 00079 break; 00080 00081 case -1: 00082 printf("Error while reading data from socket\n\r"); 00083 socket->close(); 00084 break; 00085 00086 default: 00087 printf("Message from %s:%d\n\r", 00088 socket->getRemoteEndpoint().getAddress().toString().c_str(), 00089 socket->getRemoteEndpoint().getPort()); 00090 00091 //command 00092 if(strcmp((char *)buffer.data(),TEMP_CMD)==0) { 00093 printf("Temperature:\r\n"); 00094 sprintf(SendBuf,"%2.2f",pSensor->getTemperature()); 00095 } else if(strcmp((char *)buffer.data(),HUMIDITY_CMD)==0) { 00096 printf("Humidity:\r\n"); 00097 sprintf(SendBuf,"%3.2f",pSensor->getHumidity()); 00098 } else if(strcmp((char *)buffer.data(),PRESSURE_CMD)==0) { 00099 printf("Pressure:\r\n"); 00100 sprintf(SendBuf,"%4.2f",pSensor->getPressure()); 00101 } else if(strcmp((char *)buffer.data(),ILLUM_CMD)==0) { 00102 printf("Illuminance:\r\n"); 00103 sprintf(SendBuf,"%5.2f",pLumSensor->getLux()); 00104 } else { 00105 printf("Unknown command:\r\n"); 00106 sprintf(SendBuf,"NG"); 00107 } 00108 00109 socket->write((void *)SendBuf,strlen(SendBuf)); 00110 00111 printf("Command:%s Result:%s\n\r", (char *)buffer.data(),SendBuf); 00112 } 00113 } 00114 00115 } while (server.getStatus() == network::Socket::Listening); 00116 }
Generated on Sun Jul 17 2022 10:50:40 by
1.7.2
