.
Dependencies: BME280 BMP280 TextLCD mbed
Fork of CW_watchdog_09012018_copy by
main.cpp@6:f95438838ece, 2018-01-10 (annotated)
- Committer:
- FranciscoSalle
- Date:
- Wed Jan 10 01:27:01 2018 +0000
- Revision:
- 6:f95438838ece
- Parent:
- 5:8aa72ee456fc
.;
Who changed what in which revision?
User | Revision | Line number | New 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 |