.

Dependencies:   BME280 BMP280 TextLCD mbed

Fork of CW_watchdog_09012018_copy by Calvin Kalintra

Committer:
FranciscoSalle
Date:
Wed Jan 10 01:27:01 2018 +0000
Revision:
6:f95438838ece
Parent:
5:8aa72ee456fc
.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ckalintra 0:7023c3f98f36 1 #include "mbed.h"
ckalintra 0:7023c3f98f36 2 #include "TextLCD.h"
ckalintra 1:dc21a6fce3af 3 #include "BME280.h"
FranciscoSalle 6:f95438838ece 4 #include "net.h"
ckalintra 3:f5fe5071416a 5 #define watchdog_time 15
ckalintra 0:7023c3f98f36 6 //DigitalOut myled(LED1);
FranciscoSalle 6:f95438838ece 7 int dislcd = 1, wdcounter = 0, watchdog = 0, netflag = 1;
ckalintra 0:7023c3f98f36 8 float T = 15;
ckalintra 5:8aa72ee456fc 9 char ch = 0;
ckalintra 0:7023c3f98f36 10 Ticker display;
ckalintra 0:7023c3f98f36 11 Ticker second_pass;
ckalintra 0:7023c3f98f36 12 InterruptIn button(USER_BUTTON);
FranciscoSalle 6:f95438838ece 13 //InterruptIn button2(PE_12);
FranciscoSalle 6:f95438838ece 14 //osThreadId mainThreadID;
ckalintra 5:8aa72ee456fc 15
ckalintra 0:7023c3f98f36 16 //NVIC_SetPriority(display, 0);
ckalintra 0:7023c3f98f36 17 //NVIC_SetPriority(second_pass, 1);
ckalintra 0:7023c3f98f36 18 //NVIC_SetPriority(button, 1);
FranciscoSalle 6:f95438838ece 19 //void network_main()
FranciscoSalle 6:f95438838ece 20 //{
FranciscoSalle 6:f95438838ece 21 // while(1)
FranciscoSalle 6:f95438838ece 22 // {
FranciscoSalle 6:f95438838ece 23 // network();
FranciscoSalle 6:f95438838ece 24 // }
FranciscoSalle 6:f95438838ece 25 //}
ckalintra 2:c696dfd53eeb 26
ckalintra 2:c696dfd53eeb 27
ckalintra 0:7023c3f98f36 28 void second_tick()
ckalintra 0:7023c3f98f36 29 {
ckalintra 0:7023c3f98f36 30 ss++;
ckalintra 3:f5fe5071416a 31 if(watchdog == 1)
ckalintra 3:f5fe5071416a 32 {
ckalintra 3:f5fe5071416a 33 wdcounter++;
ckalintra 3:f5fe5071416a 34 }
ckalintra 0:7023c3f98f36 35 time_rule();
ckalintra 0:7023c3f98f36 36 day_check();
ckalintra 0:7023c3f98f36 37 lcd.cls();
ckalintra 0:7023c3f98f36 38 if (dislcd == 1)
ckalintra 0:7023c3f98f36 39 {
ckalintra 0:7023c3f98f36 40 lcd.locate(10,0);
ckalintra 0:7023c3f98f36 41 lcd.printf("l:%1.2f", lvl);
ckalintra 0:7023c3f98f36 42 lcd.locate(0,0);
ckalintra 2:c696dfd53eeb 43 lcd.printf("p:%5.1f", pressuref);
ckalintra 5:8aa72ee456fc 44 lcd.locate(10,1);
ckalintra 5:8aa72ee456fc 45 lcd.printf("t:%3.1f", tempf);
ckalintra 2:c696dfd53eeb 46 display_time();
ckalintra 0:7023c3f98f36 47 }
ckalintra 0:7023c3f98f36 48 else if (dislcd == 0)
ckalintra 0:7023c3f98f36 49 {
ckalintra 0:7023c3f98f36 50 display_dates();
ckalintra 0:7023c3f98f36 51 display_time();
ckalintra 0:7023c3f98f36 52 }
ckalintra 3:f5fe5071416a 53 if (wdcounter >= watchdog_time)
ckalintra 3:f5fe5071416a 54 {
ckalintra 5:8aa72ee456fc 55 pc.printf("system stuck, reset\n\r");
ckalintra 3:f5fe5071416a 56 NVIC_SystemReset();
ckalintra 3:f5fe5071416a 57 }
ckalintra 0:7023c3f98f36 58 }
FranciscoSalle 6:f95438838ece 59 void watchdog_start()
ckalintra 5:8aa72ee456fc 60 {
ckalintra 5:8aa72ee456fc 61 wdcounter = 0;
ckalintra 5:8aa72ee456fc 62 watchdog = 1;
ckalintra 5:8aa72ee456fc 63 }
ckalintra 0:7023c3f98f36 64 void lcddisp()
ckalintra 0:7023c3f98f36 65 {
ckalintra 5:8aa72ee456fc 66
ckalintra 1:dc21a6fce3af 67 if (gather_data == 1)
ckalintra 1:dc21a6fce3af 68 {
ckalintra 5:8aa72ee456fc 69 redLED = 1;
ckalintra 1:dc21a6fce3af 70 display_time();
ckalintra 1:dc21a6fce3af 71 getdata();
ckalintra 1:dc21a6fce3af 72 store();
ckalintra 5:8aa72ee456fc 73 redLED = 0;
ckalintra 1:dc21a6fce3af 74 }
ckalintra 1:dc21a6fce3af 75 if (gather_data ==0)
ckalintra 1:dc21a6fce3af 76 {
ckalintra 5:8aa72ee456fc 77 redLED = 1;
ckalintra 2:c696dfd53eeb 78 wait(0.2);
ckalintra 1:dc21a6fce3af 79 }
ckalintra 5:8aa72ee456fc 80
ckalintra 0:7023c3f98f36 81 }
ckalintra 0:7023c3f98f36 82
ckalintra 0:7023c3f98f36 83 void check_display()
ckalintra 0:7023c3f98f36 84 {
ckalintra 0:7023c3f98f36 85 if(dislcd == 0)
ckalintra 0:7023c3f98f36 86 {dislcd = 1;}
ckalintra 0:7023c3f98f36 87 else
ckalintra 0:7023c3f98f36 88 {dislcd = 0;}
ckalintra 0:7023c3f98f36 89 }
FranciscoSalle 6:f95438838ece 90 void network_bit()
ckalintra 0:7023c3f98f36 91 {
FranciscoSalle 6:f95438838ece 92 network();
FranciscoSalle 6:f95438838ece 93 //osSignalSet(mainThreadID, 0x1);
FranciscoSalle 6:f95438838ece 94 }
FranciscoSalle 6:f95438838ece 95 void putty_main()
FranciscoSalle 6:f95438838ece 96 {
ckalintra 0:7023c3f98f36 97 while(1)
FranciscoSalle 6:f95438838ece 98 {
ckalintra 5:8aa72ee456fc 99 if (putty_enabled == 1)
ckalintra 5:8aa72ee456fc 100 {
FranciscoSalle 6:f95438838ece 101 //watchdog_start();
FranciscoSalle 6:f95438838ece 102
FranciscoSalle 6:f95438838ece 103 pc.printf("\n\rputty ready\n\r");
FranciscoSalle 6:f95438838ece 104 //stdio_mutex.lock();
ckalintra 5:8aa72ee456fc 105 putty_write();
FranciscoSalle 6:f95438838ece 106 //stdio_mutex.unlock();
FranciscoSalle 6:f95438838ece 107
FranciscoSalle 6:f95438838ece 108 //watchdog = 0;
ckalintra 5:8aa72ee456fc 109 }
ckalintra 5:8aa72ee456fc 110
ckalintra 5:8aa72ee456fc 111 if (putty_enabled == 0)
ckalintra 5:8aa72ee456fc 112 {
ckalintra 5:8aa72ee456fc 113 while(ch != 'p')
ckalintra 5:8aa72ee456fc 114 {
ckalintra 5:8aa72ee456fc 115 ch = 0;
ckalintra 5:8aa72ee456fc 116 yellowLED = 1;
ckalintra 5:8aa72ee456fc 117 ch = pc.getc();
ckalintra 5:8aa72ee456fc 118 }
ckalintra 5:8aa72ee456fc 119 putty_enabled = 1;
ckalintra 5:8aa72ee456fc 120 }
ckalintra 5:8aa72ee456fc 121 yellowLED = 0;
ckalintra 2:c696dfd53eeb 122 check_display();
ckalintra 2:c696dfd53eeb 123 if (interrupt == 1)
ckalintra 2:c696dfd53eeb 124 {
ckalintra 2:c696dfd53eeb 125 T = t;
ckalintra 2:c696dfd53eeb 126 display.attach(&lcddisp, T);
ckalintra 2:c696dfd53eeb 127 interrupt = 0;
ckalintra 2:c696dfd53eeb 128 }
FranciscoSalle 6:f95438838ece 129 }
FranciscoSalle 6:f95438838ece 130
FranciscoSalle 6:f95438838ece 131 }
FranciscoSalle 6:f95438838ece 132
FranciscoSalle 6:f95438838ece 133 int main()
FranciscoSalle 6:f95438838ece 134 {
FranciscoSalle 6:f95438838ece 135 //network_bit();
FranciscoSalle 6:f95438838ece 136 lcd.cls();
FranciscoSalle 6:f95438838ece 137 //getdata();
FranciscoSalle 6:f95438838ece 138 //display_date_time();
FranciscoSalle 6:f95438838ece 139 // while (pointer != 14)
FranciscoSalle 6:f95438838ece 140 // {
FranciscoSalle 6:f95438838ece 141 // select_date();
FranciscoSalle 6:f95438838ece 142 // }
FranciscoSalle 6:f95438838ece 143 //bmp.initialize();
FranciscoSalle 6:f95438838ece 144
FranciscoSalle 6:f95438838ece 145 //t1.start(network_main);
FranciscoSalle 6:f95438838ece 146 //Thread t2(osPriorityBelowNormal);
FranciscoSalle 6:f95438838ece 147 //Thread t1(osPriorityAboveNormal);
FranciscoSalle 6:f95438838ece 148 display.attach(&lcddisp, T);
FranciscoSalle 6:f95438838ece 149 second_pass.attach(&second_tick, 1.0);
FranciscoSalle 6:f95438838ece 150 //net_tick.attach(&network, 15);
FranciscoSalle 6:f95438838ece 151 button.rise(&check_display);
FranciscoSalle 6:f95438838ece 152 network();
FranciscoSalle 6:f95438838ece 153
FranciscoSalle 6:f95438838ece 154 while(1)
FranciscoSalle 6:f95438838ece 155 {
FranciscoSalle 6:f95438838ece 156 Thread t2;
FranciscoSalle 6:f95438838ece 157 Thread t1;
FranciscoSalle 6:f95438838ece 158 t1.start(network_bit);
FranciscoSalle 6:f95438838ece 159 Thread::wait(2000);
FranciscoSalle 6:f95438838ece 160 t1.terminate();
FranciscoSalle 6:f95438838ece 161 t2.start(putty_main);
FranciscoSalle 6:f95438838ece 162 Thread::wait(13000);
FranciscoSalle 6:f95438838ece 163 t2.terminate();
FranciscoSalle 6:f95438838ece 164 //check_display();
FranciscoSalle 6:f95438838ece 165 // if (putty_enabled == 1)
FranciscoSalle 6:f95438838ece 166 // {
FranciscoSalle 6:f95438838ece 167 // //watchdog_start();
FranciscoSalle 6:f95438838ece 168 // putty_write();
FranciscoSalle 6:f95438838ece 169 // //watchdog = 0;
FranciscoSalle 6:f95438838ece 170 // }
FranciscoSalle 6:f95438838ece 171 //
FranciscoSalle 6:f95438838ece 172 // if (putty_enabled == 0)
FranciscoSalle 6:f95438838ece 173 // {
FranciscoSalle 6:f95438838ece 174 // while(ch != 'p')
FranciscoSalle 6:f95438838ece 175 // {
FranciscoSalle 6:f95438838ece 176 // ch = 0;
FranciscoSalle 6:f95438838ece 177 // yellowLED = 1;
FranciscoSalle 6:f95438838ece 178 // ch = pc.getc();
FranciscoSalle 6:f95438838ece 179 // }
FranciscoSalle 6:f95438838ece 180 // putty_enabled = 1;
FranciscoSalle 6:f95438838ece 181 // }
FranciscoSalle 6:f95438838ece 182 // yellowLED = 0;
FranciscoSalle 6:f95438838ece 183 // check_display();
FranciscoSalle 6:f95438838ece 184 // if (interrupt == 1)
FranciscoSalle 6:f95438838ece 185 // {
FranciscoSalle 6:f95438838ece 186 // T = t;
FranciscoSalle 6:f95438838ece 187 // display.attach(&lcddisp, T);
FranciscoSalle 6:f95438838ece 188 // interrupt = 0;
FranciscoSalle 6:f95438838ece 189 // }
ckalintra 5:8aa72ee456fc 190 //if(sw1 == 1 && sw2 == 1)
ckalintra 5:8aa72ee456fc 191 // {
ckalintra 5:8aa72ee456fc 192 // sd();
ckalintra 5:8aa72ee456fc 193 // }
ckalintra 0:7023c3f98f36 194 }
ckalintra 0:7023c3f98f36 195 }
ckalintra 0:7023c3f98f36 196
ckalintra 0:7023c3f98f36 197
ckalintra 0:7023c3f98f36 198