diff --git a/src/main.cpp b/src/main.cpp index f05836c..158259e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,8 +1,10 @@ #include -#include +#include #include #include +#define COUNT_HTTP_METHOD 3 +#define METHOD_LENGTH 6 byte mac[] = { 0xC3, 0xF9, 0x7C, 0xB1, 0x8C, 0xF3 }; @@ -12,7 +14,9 @@ IPAddress subnet(255, 255, 128, 0); EthernetServer server(80); -ShiftRegister reg() +const byte const httpMethos[COUNT_HTTP_METHOD][METHOD_LENGTH] = { 'GET ', 'PATCH ', 'DELETE' }; + +// ShiftRegister reg() void listenForEthernetClients(void); @@ -30,49 +34,88 @@ void loop() { void listenForEthernetClients() { EthernetClient client = server.available(); - if (!client) return; Serial.println("Got a client"); - // an http request ends with a blank line - boolean currentLineIsBlank = true; - while (client.connected()) { - if (client.available()) { - char c = client.read(); + byte buffer[256]; - char buffer[7]; - client.readBytesUntil(' ', buffer, 7); - Serial.print(c); - // if you've gotten to the end of the line (received a newline - // character) and the line is blank, the http request has ended, - // so you can send a reply - if (c == '\n' && currentLineIsBlank) { - // send a standard http response header - client.println("HTTP/1.1 200 OK"); - client.println("Content-Type: text/html"); - client.println(); - // print the current readings, in HTML format: - client.print("Temperature: "); - client.print("temperature"); - client.print(" degrees C"); - client.println("
"); - client.print("Pressure: lUl"); - client.print(" Pa"); - client.println("
"); - break; - } - if (c == '\n') { - // you're starting a new line - currentLineIsBlank = true; - } - else if (c != '\r') { - // you've gotten a character on the current line - currentLineIsBlank = false; - } + uint8_t method = -1; + + uint8_t i = 0; + uint8_t countChars = client.readBytesUntil(' ', buffer, METHOD_LENGTH); + for (countChars--; countChars < METHOD_LENGTH; countChars++ ) + buffer[countChars] = ' '; + for (uint8_t i = 0; i < COUNT_HTTP_METHOD; i++) + if (memcmp(buffer, httpMethos[i], METHOD_LENGTH)) { + method = i; + break; } - } + + + + uint16_t len = client.available(); + if (len > 0) + client.read(buffer, len); + Serial.write(buffer, len); + + client.println("HTTP/1.1 200 OK"); + client.println("Content-Type: text/html"); + client.println(); + // print the current readings, in HTML format: + client.print("Temperature: "); + client.print("temperature"); + client.print(" degrees C"); + client.println("
"); + client.print("Pressure: lUl"); + client.print(" Pa"); + client.println("
"); + + client.stop(); + + + + + + + + + + // // an http request ends with a blank line + // boolean currentLineIsBlank = true; + // while (client.connected()) { + // if (client.available()) { + // char c = client.read(); + // Serial.print(c); + // // if you've gotten to the end of the line (received a newline + // // character) and the line is blank, the http request has ended, + // // so you can send a reply + // if (c == '\n' && currentLineIsBlank) { + // // send a standard http response header + // client.println("HTTP/1.1 200 OK"); + // client.println("Content-Type: text/html"); + // client.println(); + // // print the current readings, in HTML format: + // client.print("Temperature: "); + // client.print("temperature"); + // client.print(" degrees C"); + // client.println("
"); + // client.print("Pressure: lUl"); + // client.print(" Pa"); + // client.println("
"); + // break; + // } + // if (c == '\n') { + // // you're starting a new line + // currentLineIsBlank = true; + // } + // else if (c != '\r') { + // // you've gotten a character on the current line + // currentLineIsBlank = false; + // } + // } + // } // give the web browser time to receive the data Serial.println(); delay(1); - client.stop(); + // client.stop(); } \ No newline at end of file