#include <Arduino.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>

const int trigPin = 5;
const int echoPin = 18;

//define sound speed in cm/uS
#define SOUND_SPEED 0.034
#define CM_TO_INCH 0.393701

long duration;
float distanceCm;
float distanceInch;

WiFiMulti wifiMulti;

void setup() {
  Serial.begin(115200); // Starts the serial communication
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  for(uint8_t t = 4; t > 0; t--){
    Serial.printf("[SETUP} WAIT %d...\n" ,t);
    Serial.flush();
    delay(1000);
  }
  wifiMulti.addAP("OSU_Access", "");
}

void loop() {
  if((wifiMulti.run() == WL_CONNECTED)) {
  // Clears the trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  // Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);
  
  // Calculate the distance
  distanceCm = duration * SOUND_SPEED/2;
  
  
  // Prints the distance in the Serial Monitor
  Serial.print("Distance (cm): ");
  Serial.println(distanceCm);
  
    
    HTTPClient http;
    http.begin("https://web.engr.oregonstate.edu/~bartoloc/esp32.php");
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    String myString;
    myString= "sonar=";                                           
    myString = myString + distanceCm;
    Serial.print("POST data to send: ");
    Serial.println(myString);
    int httpCode = http.POST(myString);
    if(httpCode > 0) {
      if(httpCode == HTTP_CODE_OK){
        String payload = http.getString();
        Serial.println(payload); 
      } else{
        Serial.printf("[HTTP} GET... code: %d\n", httpCode);
      }
    }
    http.end();
  }


  
}
