#include <Wire.h>
#include <SPI.h>
#include <Adafruit_MPL3115A2.h>

// Create (instantiate) objects for the sensors 
Adafruit_MPL3115A2 mpl = Adafruit_MPL3115A2();

// Variable definitions
unsigned long lastUpdate = 0;
unsigned long interval = 2000;
bool outputIDE = true, outputCSV = false; 

// setup() definition 
void setup() {
  Serial.begin(115200);
  delay(1000);

  // I2C initilization 
  Wire.begin(); 

  //  MPL3115A2 initialization 
  if (!mpl.begin()) {
    errorScreen("MPL did not initialize");
  }

  if (outputCSV) {
    Serial.print("# temperature, pressure, altitude"); 
    Serial.println(); 
  }
}

// loop() definition 
void loop() {
  if (millis() - lastUpdate > interval) {
    lastUpdate = millis();

    float altitude = mpl.getAltitude();
    float pressure = mpl.getPressure();
    float temperature = mpl.getTemperature();

    if (outputIDE) {
      Serial.print("Temperature:");
      Serial.print(temperature);
      Serial.print(", ");
      Serial.print("Pressure:");
      Serial.print(pressure);
      Serial.print(", ");
      Serial.print("Altitude:");
      Serial.print(altitude);
      Serial.println();
    }

    if (outputCSV) {
      Serial.print(temperature);
      Serial.print(", ");
      Serial.print(pressure);
      Serial.print(", ");
      Serial.print(altitude);
      Serial.println();
    }
  }
}

// errorScreen() definition 
void errorScreen(const char *msg) {
  Serial.println(msg);
  while (1);
}


