#include <Wire.h>
#include <Arduino.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>

WiFiMulti wifiMulti;

int16_t x,y,z; // labes x,y,and z as integers of 16 bits

int SumX, SumY, SumZ;

void setup(){
  Wire.begin(33, 32, 400000);   
  Wire.beginTransmission(0x68);
  Wire.write(0x6B); 
  Wire.write(0);    
  Wire.endTransmission(true);
  Serial.begin(115200);
  for(int t = 4; t > 0; t--){
    Serial.printf("[SETUP] WAIT %d...\n", t);
    Serial.flush();
    delay (1000);
  }
  wifiMulti.addAP("OSU_Access", "");
}

int16_t xArray[100], yArray[100], zArray[100]; 
int xavg, yavg, zavg;

void loop(){
  for (int i = 0; i < 100; i++){
    Wire.beginTransmission(0x68);
    Wire.write(0x3B);  
    Wire.endTransmission(false);
    Wire.requestFrom(0x68,6,true);
      
    x=Wire.read()<<8|Wire.read();    
    y=Wire.read()<<8|Wire.read(); 
    z=Wire.read()<<8|Wire.read(); 
     
    xArray[i] = (x)*180.0/32000;
    yArray[i] = (y)*180.0/32000;
    zArray[i] = (z)*180.0/32000;
  
    SumX = 0;
    SumY = 0;
    SumZ = 0;
  }
   for (int j = 0; j < 100; j++){
      SumX = xArray[j] + SumX;
      SumY = yArray[j] + SumY;
      SumZ = zArray[j] + SumZ;
   }
    xavg = SumX / 100;
    yavg = SumY / 100;
    zavg = SumZ / 100;

  //below will send all data to the .csv
  if((wifiMulti.run() == WL_CONNECTED)){
    HTTPClient http;
    http.begin("https://web.engr.oregonstate.edu/~stemmerj/ENGR_Final.php");
    http.addHeader("Content-Type","application/x-www-form-urlencoded");
    String myString;
    myString = "angle_x=";
    myString = myString + xavg;
    myString = myString + "&angle_y=";
    myString = myString + yavg; 
    myString = myString + "&angle_z=";
    myString = myString + zavg;
    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();
  }
  delay(1000);    
}
 
