
#include <SPI.h>
#include <SD.h>


#include "stdio.h"

//librerias propias--------------------
#include "utiles.h"

#include "Sim808Manager.h"


unsigned long milliseconds=100;

//inicializacion sensores

Sim808Manager sim808;



unsigned long timer=millis();
unsigned long incremento=5000;//5 seg
char strFecha[24];
int veces=0;
void setup() {
  // initialize both serial ports:
  //Serial1.begin(19200);
  //SIM808.begin(19200);
  
  initCOM();
  
  //inicia modulo sim808---------------
  Serial2.begin(9600);
  
  if(sim808.inicia(&Serial2, 48))
  {
    /*
    printCOM("envia sms hola");
    
    if(!sim808.EnviaSMS("+34690744597", "hola"))
            printCOM("Error al enviar sms data");
       */     
    printCOM("Modulo sim iniciado...");

      printCOM("GPS iniciado...");
      DataGPSSimManager* coor=sim808.GetGPSValid();
      
      printCOM("Datos gps validos...");
      //envia mensaje inicial------------------------------
      enviaData(false);
  }
  else
  {
    printCOM("Fallo al iniciar SIM808");
  }
  

  printCOM("...FIN INICIALIZACIONES");
}

void loop() {
  if(!isTime(&timer,incremento))
   {
      delay(100);
      return;
   }
   veces++;
   bool envia=veces>10;
   if(veces>10)
    veces=0;
   enviaData(false);

}


  void enviaData(bool envia)
  {
     DataGPSSimManager* coor=sim808.GetGPS();
      
     //envia mensaje inicial------------------------------
      char buff[160];
      char strlat[16];
      char strlon[16];
      char strfecha[24];
      char stralt[16];
      char strpres[16];
      char strtem[16];
      char strtemInt[16];
      char strhdop[16];
      char strvdop[16];
      char precision[12];
      dtostrf(coor->lat, 4, 6, strlat);
      dtostrf(coor->lon, 4, 6, strlon);
      dtostrf(coor->altitude, 6, 1, stralt);
      dtostrf(coor->hdop, 2, 2, strhdop);
      dtostrf(coor->vdop, 2, 2, strvdop);
      sprintf(buff,"APPData;%s;%s;%s;%s;   Prec=%s;  HDOP=%s; VDOP=%s ",coor->getFecha(strfecha), strlat, strlon, stralt,  coor->getPrecision(precision), strhdop, strvdop  );
      printCOM(buff);
      if(!envia)
        return;
      if(!sim808.EnviaSMS("+34690744597", buff))
            printCOM("Error al enviar sms data");
  }

/*
 * Para log en puerto COM en modo DEBUG
 */
void initCOM()
{   
  Serial.begin(9600);
  Serial.println("Iniciando");
}
