.

Dependencies:   BME280 BMP280 TextLCD mbed

Fork of CW_watchdog_09012018_copy by Calvin Kalintra

main.cpp

Committer:
FranciscoSalle
Date:
2018-01-10
Revision:
6:f95438838ece
Parent:
5:8aa72ee456fc

File content as of revision 6:f95438838ece:

#include "mbed.h"
#include "TextLCD.h"
#include "BME280.h"
#include "net.h"
#define watchdog_time 15
//DigitalOut myled(LED1);
int dislcd = 1, wdcounter = 0, watchdog = 0, netflag = 1;
float T = 15;
char ch = 0;
Ticker display;
Ticker second_pass;
InterruptIn button(USER_BUTTON);
//InterruptIn button2(PE_12);
//osThreadId mainThreadID;

//NVIC_SetPriority(display, 0);     
//NVIC_SetPriority(second_pass, 1);
//NVIC_SetPriority(button, 1);
//void network_main()
//{
//    while(1)
//    {
//        network();
//    }
//}


void second_tick()
{
    ss++;
    if(watchdog == 1)
    {
        wdcounter++;
    }
    time_rule();   
    day_check();
    lcd.cls();
    if (dislcd == 1)
    {
        lcd.locate(10,0);
        lcd.printf("l:%1.2f", lvl);
        lcd.locate(0,0);
        lcd.printf("p:%5.1f", pressuref);
        lcd.locate(10,1);
        lcd.printf("t:%3.1f", tempf);
        display_time(); 
    }
    else if (dislcd == 0)
    {
        display_dates();
        display_time();
    }
   if (wdcounter >= watchdog_time)
   {
       pc.printf("system stuck, reset\n\r");
       NVIC_SystemReset();
   }
}
void watchdog_start()
{
    wdcounter = 0;
    watchdog = 1;
}
void lcddisp()
{ 
    
    if (gather_data == 1)
    {
        redLED = 1;
        display_time();
        getdata();
        store();
        redLED = 0;
    }
    if (gather_data ==0)
    {
        redLED = 1;
        wait(0.2);
    }
    
}

void check_display()
{ 
    if(dislcd == 0)
    {dislcd = 1;}
    else
    {dislcd = 0;}
}
void network_bit()
{
    network();
    //osSignalSet(mainThreadID, 0x1);
}
void putty_main()
{
    while(1)
    {   
        if (putty_enabled == 1)
        {
            //watchdog_start();
            
            pc.printf("\n\rputty ready\n\r");
            //stdio_mutex.lock();
            putty_write();
            //stdio_mutex.unlock();
            
            //watchdog = 0;
        }
        
        if (putty_enabled == 0)
        {
            while(ch != 'p')
            {
                ch = 0;
                yellowLED = 1;
                ch = pc.getc();
            }
            putty_enabled = 1;
        }
        yellowLED = 0;
        check_display();
        if (interrupt == 1)
        {
            T = t;
            display.attach(&lcddisp, T);
            interrupt = 0;
        }
        }
        
}

int main()
{
    //network_bit();
    lcd.cls();
    //getdata();
    //display_date_time();
//    while (pointer != 14)
//    {
//        select_date();
//    }
    //bmp.initialize();
    
    //t1.start(network_main);
    //Thread t2(osPriorityBelowNormal);
    //Thread t1(osPriorityAboveNormal);
    display.attach(&lcddisp, T);
    second_pass.attach(&second_tick, 1.0);
    //net_tick.attach(&network, 15);
    button.rise(&check_display);
    network();
    
    while(1)
    {
        Thread t2;
        Thread t1;
        t1.start(network_bit);
        Thread::wait(2000);
        t1.terminate();
        t2.start(putty_main);
        Thread::wait(13000);
        t2.terminate();
        //check_display();
//        if (putty_enabled == 1)
//        {
//            //watchdog_start();
//            putty_write();
//            //watchdog = 0;
//        }
//        
//        if (putty_enabled == 0)
//        {
//            while(ch != 'p')
//            {
//                ch = 0;
//                yellowLED = 1;
//                ch = pc.getc();
//            }
//            putty_enabled = 1;
//        }
//        yellowLED = 0;
//        check_display();
//        if (interrupt == 1)
//        {
//            T = t;
//            display.attach(&lcddisp, T);
//            interrupt = 0;
//        }
        //if(sw1 == 1 && sw2 == 1)
//        {
//            sd();
//        }
    }
}