Program test for Coragem

Dependencies:   SX1272 SPI_MX25R

main.cpp

Committer:
marcoantonioara
Date:
2019-11-13
Revision:
4:05d5aa4d3f2d
Parent:
3:cbe3f441353e

File content as of revision 4:05d5aa4d3f2d:

#include "mbed.h"

///////////////////////////////////////
// Defines
///////////////////////////////////////
//#define BMX160
//#define BME280
//#define SI1133
#define LORA_SX1272
//#define MEM_MX25R
#define GPS_ZOE


///////////////////////////////////////
// Globals variables
///////////////////////////////////////

DigitalOut led1(P1_13);
DigitalOut led2(P1_14);
DigitalIn button1(P1_11);
DigitalIn button2(P1_12);
DigitalIn button3(P0_30);
EventQueue queue;



 //============= internet of turtles =============
Timer time_breathing;
Timer time_diving;
bool beathing = false;
float last_breathing_time = 0.0;
float last_diving_time = 0.0;

char float_breathing_time[10];
char float_diving_time[10];

//Timer seconds;
#ifdef  BMX160
    #include "bmx160.txt"
#endif
    
#ifdef  BME280  
    #include "bme280.txt"
#endif

#ifdef  LORA_SX1272
    #include "lora.txt"
#endif

#ifdef  GPS_ZOE
    #include "gps.txt"
#endif

#ifdef  MEM_MX25R
    #include "memory.txt"
    SPI_MX25R mem(P0_17, P0_20, P0_22, P0_24);
#endif

#ifdef  SI1133
    #include "Si1133.h"
    Si1133 si1133(P0_13, P0_15);
#endif


void coragem_sleep (){
    
    #ifdef  BMX160
        bmx_sleep ();
    #endif
    
    #ifdef  BME280  
        bme_sleep ();
    #endif
    
    #ifdef  LORA_SX1272
        lora_sleep();
    #endif
    
    #ifdef  SI1133     
        si1133.wait_until_sleep();//ligth sensor sleep
    #endif
    
    #ifdef  MEM_MX25R
        mem.deepPowerdown();//memory sleep
    #endif


}

void coragem_wake(){
    
    #ifdef  BMX160
        bmx_wake();
    #endif
    
    #ifdef  BME280  
        bme_wake();
    #endif
    
    
    #ifdef  LORA_SX1272
        lora_wake();
    #endif
    
    
    
    #ifdef  SI1133   
        si1133.wake();//ligth sensor wake up
    #endif
    
    //memory wake
    #ifdef  MEM_MX25R
        mem.m_cs = CS_LOW ;
        wait_ms(0.1);
        mem.m_cs = CS_HIGH ;
    #endif

}

int main(void) {
    
///////////////////////////////////////
// Configuraion
///////////////////////////////////////
    printf("------Coragem all sensor-------------\n---------Configuration initied----------");
    //led1=1;//on leds
    led2=1;
    
    #ifdef  BMX160//bmx160 configuration
        bmx_config();
    #endif
    
    #ifdef  BME280 //sensor bme280 
        BME_ADDR = 0;
        bme_init();
    #endif
    

    #ifdef  LORA_SX1272
        //configura sx1272 
        Thread eventThread;
        eventThread.start(callback(&queue, &EventQueue::dispatch_forever)); 
        dio0.rise(queue.event(&lora_print_packet)); //configure interrupt rotine ro recieve packet
        lora_setup();
        sx1272.writeRegister(REG_OP_MODE,133); //leitura continua
    #endif

       
    //gps configuration
    #ifdef  GPS_ZOE
        gps_config();
    #endif
    
    
    
    
    //wait_ms(2100);
    
    //led1=0;//off leds
    led2=0;
    printf("------Configuration finished------------\n");
    
    
///////////////////////////////////////
// Main Loop
///////////////////////////////////////
    uint8_t packet[]={0,1,2,3};
    while (1) { 
    
        //TEST all sensors
        #ifdef  BMX160
            bmx_read();
        #endif
            
        #ifdef  BME280  
            printf("Temp %2.2f degC, Press %04.2f hPa, Hum %2.2f %%\n", getTemperature(), getPressure(), getHumidity());
        #endif

        #ifdef  LORA_SX1272
            lora_send_packet (packet,sizeof(packet));
        #endif
        
        #ifdef  SI1133  
            if (si1133.open()) printf("Lux = %.3f UV index = %.3f\n", (float)si1133.get_light_level(), (float)si1133.get_uv_index());
        #endif
        
        #ifdef  MEM_MX25R
            memory_test();
        #endif
        
        #ifdef  GPS_ZOE
            //gps_print_local();
            send_nav_pvt();
        #endif
        
        
        wait(1);

        
    }
    
}