Lab 9/10

Dependencies:   ATParser MPL3115A2 mbed

main.cpp

Committer:
m0t0
Date:
2018-04-28
Revision:
0:b8dd9a341238

File content as of revision 0:b8dd9a341238:

#include "mbed.h"
#include "MPL3115A2.h"
#include "string"
#include "ctype.h"
#include "ATParser.h"
#include "BufferedSerial.h"
#include "MyBuffer.h"
#include "TSL2561.h"
#include <cstdarg>
#include<stdio.h>
#include<math.h>

TSL2561 lightsensor(PB_7,PB_6);
DigitalOut led1(LED1);
Serial pc(SERIAL_TX, SERIAL_RX, 115200);
//Serial device(PA_9, PA_10, 115200);  // tx, rx


BufferedSerial serial = BufferedSerial(PA_9, PA_10);

DigitalOut myled(LED1);
MPL3115A2 pressure_sensor(PB_7,PB_6,0x60);

bool s = true;
char test[1];

struct dataPoints
{
   double pres;
   double temp;
 
};



double lux[50];
dataPoints data[100];



//function to join the network
int JoinNetwork(){
    
    
    pc.printf("attempting to join the network \n\r");
    serial.baud(115200);
    pc.printf("Buffered serial created \n\r");
    ATParser at = ATParser(serial, "\r\n" ,256, 8000, false);
    at.send("AT+NI=1,MTCDT-19400691");
    wait(1);
    if(at.recv("OK")){
        pc.printf("HEYO\n\r");
    } else {
        pc.printf("BOO.\n\r");
    }
    at.send("AT+NK=1,MTCDT-19400691");
    wait(1);
    if(at.recv("OK")){
        pc.printf("HEYO\n\r");
    } else {
        pc.printf("BOO.\n\r");
    }
    at.send("AT+FSB=1");
    wait(1);
    if(at.recv("OK")){
        pc.printf("HEYO\n\r");
    } else {
        pc.printf("BOO.\n\r");
    }
    at.send("AT+JOIN");
    wait(1);
    if(at.recv("OK")){
        pc.printf("HEYO\n\r");
        return 1;
    } else {
        pc.printf("BOO.\n\r");
        return 0;
    }

 }
 
 void Sdata(){
      ATParser at = ATParser(serial, "\r\n" ,256, 8000, false);
      serial.baud(115200);
      dataPoints p1 = {0,0}; 
      p1.temp = pressure_sensor.getTemperature();
      p1.pres = pressure_sensor.getPressure();
      double tempVal = p1.temp;
      double presVal = p1.pres;
      char tempStr[10];
      char presStr[10];
      sprintf(tempStr, "%f", tempVal);
      sprintf(presStr, "%f", presVal);
      at.send("AT+SEND=%0.5s,%0.5s", presStr,  tempStr);
    
     }
 
 void sendData(){
     dataPoints p1 = {0,0}; 
     int counter = 0; 
     int send = 1;
    while(1){
      ATParser at = ATParser(serial, "\r\n" ,256, 8000, false);
      serial.baud(115200);
     
     
        
/*    
    at.send("AT+NJS");
    wait(1);
    if(at.recv("1")){}
    else {
        JoinNetwork();
    }
  */      
        
        
        led1 = 1;
        double light = lightsensor.lux();
        pc.printf("light %f \n\r", light); 
        char luxStr[10];
        lux[counter] = light;
   
      pc.printf("lux val %f %d\n\r", lux[counter], counter); 
      counter++; 
    
      p1.temp = pressure_sensor.getTemperature();
      p1.pres = pressure_sensor.getPressure();
      double tempVal = p1.temp;
      double presVal = p1.pres;
      char tempStr[10];
      char presStr[10];
      sprintf(tempStr, "%f", tempVal);
      sprintf(presStr, "%f", presVal);
      at.send("AT+SEND=%0.5s,%0.5s", presStr,  tempStr);
      pc.printf("Pressure: %f hPA, temp: %f \n\r",presVal,tempVal);
      pc.printf("AT+SEND=%0.6s,%0.6s\0", presStr,  tempStr);
      wait(1);
    if(at.recv("OK")){
        pc.printf("data sent browski\n\r");
    } else { 
        pc.printf("That shit didnt send....rejoining network\n\r");
        while(!JoinNetwork());
        at.send("AT+SEND=%0.5s,%0.5s", presStr,  tempStr);
        pc.printf("sent again \n\r");
        }
        
          
         pc.printf("back to waiting \r");
      wait(3600);
  //dump light data every 24hrs    
      if(counter == 24){
       while(counter > 0){
         sprintf(luxStr, "%f", lux[counter]);
         wait(5);
        pc.printf("dumping light data: %s \n\r", luxStr);
         at.send("AT+SEND=%0.7s",  luxStr);
           if(at.recv("OK")){
        pc.printf("data sent browski\n\r");
    } else {
        pc.printf("That shit didnt send :(\n\r");
         while(!JoinNetwork());
          at.send("AT+SEND=%0.5s,%0.5s", presStr,  tempStr);
          pc.printf("sent again \n\r");
    }
         counter--;
       }
    }
  }
}
 
 
 


int main() {  

  //  serial.baud(115200);
  //  while(!JoinNetwork());
  //  pc.printf("Network Joined Successfully! \n\r");
  //  sendData();
    }
/*
    //pass through for tests and s press
    while(1 && s) {
    
        if (pc.readable()){
            test[0] = pc.getc();
            if(test[0] == 'S'){
                    pc.printf("GOT AN S");
                    Sdata();
            }
        }
    }
    sendData();
        
        if(pc.readable()) {
            serial.putc(pc.getc());
            myled = !myled;
        }
        if(serial.readable()) {
            pc.putc(serial.getc());
            myled = !myled;
        }
    }  
    */