Andreas Pedersen
/
Alarmsystem_som_faen_ikke_funkerrrrr
06.03.2018
Fork of Alarmsystem_med_matrix_log_funker_ikke by
main.cpp@18:d2e5d6f5faeb, 2018-03-06 (annotated)
- Committer:
- andreped
- Date:
- Tue Mar 06 14:14:42 2018 +0000
- Revision:
- 18:d2e5d6f5faeb
- Parent:
- 17:f046c0ca9edd
?
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
andreped | 0:33bf28fd1ac6 | 1 | #include "mbed.h" |
andreped | 12:0193024eab13 | 2 | #include "rtos.h" |
andreped | 15:272fb4e610dc | 3 | #include <string> |
andreped | 16:3d2e29aa5df5 | 4 | #include <stdio.h> |
andreped | 18:d2e5d6f5faeb | 5 | //#include <vector> |
andreped | 18:d2e5d6f5faeb | 6 | //#include "Matrix.h" |
andreped | 12:0193024eab13 | 7 | |
Banyrud | 13:0622c228b67d | 8 | /////DEFINISJONER///// |
andreped | 6:a3b97bf7902b | 9 | #define Inn 4 |
Banyrud | 13:0622c228b67d | 10 | Serial pc(USBTX, USBRX); |
andreped | 16:3d2e29aa5df5 | 11 | LocalFileSystem local("local"); |
andreped | 10:f0a6d74095d4 | 12 | |
Banyrud | 13:0622c228b67d | 13 | /////INNGANGER///// |
andreped | 0:33bf28fd1ac6 | 14 | DigitalIn Servicebryter(p20); |
andreped | 12:0193024eab13 | 15 | AnalogIn _Sone1(p15); |
andreped | 12:0193024eab13 | 16 | AnalogIn _Sone2(p16); |
andreped | 12:0193024eab13 | 17 | AnalogIn _Sone3(p17); |
andreped | 12:0193024eab13 | 18 | AnalogIn _Sone4(p19); |
Banyrud | 13:0622c228b67d | 19 | |
Banyrud | 13:0622c228b67d | 20 | /////UTGANGER///// |
Banyrud | 13:0622c228b67d | 21 | DigitalOut Driftslys(LED1); |
Banyrud | 13:0622c228b67d | 22 | BusOut AlarmUtganger1(p21, p22, p23, p24); //1 - Dør 1 Sone 1, 2 - Dør 1 Sone 2, 4 - Dør 1 Sone 3, 8 - Dør 1 Sone 4 |
Banyrud | 13:0622c228b67d | 23 | BusOut AlarmUtganger2(p25, p26, p27, p28); //1 - Dør 2 Sone 1, 2 - Dør 2 Sone 2, 4 - Dør 2 Sone 3, 8 - Dør 2 Sone 4 |
Banyrud | 13:0622c228b67d | 24 | |
Banyrud | 13:0622c228b67d | 25 | /////VARIABLER///// |
andreped | 12:0193024eab13 | 26 | float Soner[Inn]; |
andreped | 12:0193024eab13 | 27 | int tilstand = 0; |
andreped | 18:d2e5d6f5faeb | 28 | volatile int buffer; |
andreped | 12:0193024eab13 | 29 | volatile bool running = true; |
andreped | 15:272fb4e610dc | 30 | volatile bool admin = false; |
andreped | 17:f046c0ca9edd | 31 | volatile int y1 = AlarmUtganger1; |
andreped | 17:f046c0ca9edd | 32 | volatile int y2 = AlarmUtganger2; |
andreped | 18:d2e5d6f5faeb | 33 | volatile int sone; |
Banyrud | 14:8e7aaf0cf5d7 | 34 | string password = ("admin"); |
andreped | 16:3d2e29aa5df5 | 35 | Timer t; |
andreped | 18:d2e5d6f5faeb | 36 | //enum {tilstand1, tilstand2, tilstand3, normaldrift} state; |
andreped | 18:d2e5d6f5faeb | 37 | //Matrix tilstander(4, 4); |
andreped | 18:d2e5d6f5faeb | 38 | //Matrix buffer_tilstander(4, 4); |
andreped | 1:6917ec4f5e6d | 39 | |
Banyrud | 13:0622c228b67d | 40 | /////FUNKSJON DEKLARASJONER///// |
Banyrud | 13:0622c228b67d | 41 | void Alarmf(); |
andreped | 18:d2e5d6f5faeb | 42 | //void TilstandSjekk(); |
andreped | 18:d2e5d6f5faeb | 43 | //int log_to_file(); |
andreped | 15:272fb4e610dc | 44 | Thread Alarm; |
andreped | 18:d2e5d6f5faeb | 45 | //Thread Tilstandsjekk; |
andreped | 18:d2e5d6f5faeb | 46 | //Thread Log; |
andreped | 15:272fb4e610dc | 47 | void admin_access_granted(); |
andreped | 15:272fb4e610dc | 48 | void sone_monitor(); |
andreped | 15:272fb4e610dc | 49 | void password_check(); |
andreped | 16:3d2e29aa5df5 | 50 | void read_keyinput(); |
andreped | 16:3d2e29aa5df5 | 51 | void request_status(); |
andreped | 16:3d2e29aa5df5 | 52 | void request_status_sone_dor(int sone, int dor); |
andreped | 18:d2e5d6f5faeb | 53 | int TilstandSjekk(int, int); |
andreped | 16:3d2e29aa5df5 | 54 | extern "C" void mbed_reset(); |
andreped | 12:0193024eab13 | 55 | |
Banyrud | 13:0622c228b67d | 56 | /////MAIN///// |
andreped | 1:6917ec4f5e6d | 57 | int main() |
andreped | 1:6917ec4f5e6d | 58 | { |
andreped | 16:3d2e29aa5df5 | 59 | t.start(); |
andreped | 15:272fb4e610dc | 60 | while(1) { |
andreped | 18:d2e5d6f5faeb | 61 | if(admin == false) { //Hvis passordet ikke er skrevet inn starter en funksjon "password_check" |
andreped | 15:272fb4e610dc | 62 | password_check(); |
andreped | 15:272fb4e610dc | 63 | } |
andreped | 18:d2e5d6f5faeb | 64 | if(Servicebryter == 1) { //Hvis du trykker på servicebryteren, starter man innelåst modus i 15 sek der alarmer slår seg av. |
andreped | 16:3d2e29aa5df5 | 65 | AlarmUtganger1 = 0; |
andreped | 16:3d2e29aa5df5 | 66 | AlarmUtganger2 = 0; |
andreped | 16:3d2e29aa5df5 | 67 | running = false; |
andreped | 16:3d2e29aa5df5 | 68 | pc.printf("NB! Alle alarmer er i innelast modus i 15 sek!! \n"); |
andreped | 16:3d2e29aa5df5 | 69 | wait(10); |
andreped | 16:3d2e29aa5df5 | 70 | pc.printf("NB! Alarmer gar pa om 5 sek! \n"); |
andreped | 16:3d2e29aa5df5 | 71 | wait(5); |
andreped | 16:3d2e29aa5df5 | 72 | } |
andreped | 18:d2e5d6f5faeb | 73 | while((admin) && (Servicebryter == 0)) { //Hvis man har skrevet inn admin passord og servicebryteren ikke er trykket på, kjører alle funksjonene i en løkke. |
andreped | 18:d2e5d6f5faeb | 74 | //if((y1 != AlarmUtganger1) || (y2 != AlarmUtganger2)) log_to_file(); |
andreped | 18:d2e5d6f5faeb | 75 | //y1 = AlarmUtganger1; |
andreped | 18:d2e5d6f5faeb | 76 | //y2 = AlarmUtganger2; |
andreped | 18:d2e5d6f5faeb | 77 | Alarm.start(Alarmf); //dette starter funksjonen Alarmf i en tråd, dvs at denne går kontinuerlig og ikke stopper opp programmet. |
andreped | 18:d2e5d6f5faeb | 78 | //Log.start(log_to_file); |
andreped | 18:d2e5d6f5faeb | 79 | //Tilstandsjekk.start(TilstandSjekk); |
andreped | 15:272fb4e610dc | 80 | sone_monitor(); |
Banyrud | 14:8e7aaf0cf5d7 | 81 | read_keyinput(); |
andreped | 16:3d2e29aa5df5 | 82 | } |
andreped | 16:3d2e29aa5df5 | 83 | } |
andreped | 15:272fb4e610dc | 84 | } |
Banyrud | 14:8e7aaf0cf5d7 | 85 | |
Banyrud | 13:0622c228b67d | 86 | /////FUNKSJONER///// |
Banyrud | 14:8e7aaf0cf5d7 | 87 | void Alarmf(void) |
Banyrud | 14:8e7aaf0cf5d7 | 88 | { |
andreped | 15:272fb4e610dc | 89 | while(1) { |
andreped | 18:d2e5d6f5faeb | 90 | if(running == true) { //Running er en global variabel som blir satt til false ved tilstand Normaldrift eller ved servicebryter lagt inn. |
andreped | 15:272fb4e610dc | 91 | Driftslys = !Driftslys; |
andreped | 18:d2e5d6f5faeb | 92 | Thread::wait(50); //Som vanlig wait funksjon, bare litt annerledes kode i thread library OS5. |
andreped | 18:d2e5d6f5faeb | 93 | } else { //Hvis vi er i normaldrift driftlyset lyse kontinuerlig. |
andreped | 15:272fb4e610dc | 94 | Driftslys = 1; |
andreped | 15:272fb4e610dc | 95 | } |
andreped | 15:272fb4e610dc | 96 | } |
Banyrud | 13:0622c228b67d | 97 | } |
Banyrud | 13:0622c228b67d | 98 | |
andreped | 18:d2e5d6f5faeb | 99 | void sone_monitor() |
andreped | 18:d2e5d6f5faeb | 100 | { |
andreped | 18:d2e5d6f5faeb | 101 | //Først legger vi de forskjellige sonene inn i en tabell. |
andreped | 18:d2e5d6f5faeb | 102 | Soner[0] = _Sone1; |
andreped | 18:d2e5d6f5faeb | 103 | Soner[1] = _Sone2; |
andreped | 18:d2e5d6f5faeb | 104 | Soner[2] = _Sone3; |
andreped | 18:d2e5d6f5faeb | 105 | Soner[3] = _Sone4; |
andreped | 18:d2e5d6f5faeb | 106 | int tilstander[Inn]; |
andreped | 18:d2e5d6f5faeb | 107 | for(int i = 0; i < Inn; i++) { //Dette sjekker en og en sone og setter de inn i riktige tilstander. |
andreped | 18:d2e5d6f5faeb | 108 | if((Soner[i] > 0.6 )&&( Soner[i] < 0.7)) { //Tilstand1, Dør 1 åpen |
andreped | 18:d2e5d6f5faeb | 109 | //pc.printf("Vi er i Tilstand1\n"); |
andreped | 18:d2e5d6f5faeb | 110 | //state = tilstand1; |
andreped | 18:d2e5d6f5faeb | 111 | //tilstander(1, i) = 1; |
andreped | 18:d2e5d6f5faeb | 112 | tilstand = 1; |
andreped | 18:d2e5d6f5faeb | 113 | if(tilstander[i] != 1)TilstandSjekk(i, tilstand); |
andreped | 18:d2e5d6f5faeb | 114 | tilstander[i] = 1; |
andreped | 18:d2e5d6f5faeb | 115 | } |
andreped | 18:d2e5d6f5faeb | 116 | if((Soner[i] > 0.35 )&&( Soner[i] < 0.45)) { //Normaldrift |
andreped | 18:d2e5d6f5faeb | 117 | //state = normaldrift; |
andreped | 18:d2e5d6f5faeb | 118 | tilstand = 0; |
andreped | 18:d2e5d6f5faeb | 119 | if(tilstander[i] != 0)TilstandSjekk(i, tilstand); |
andreped | 18:d2e5d6f5faeb | 120 | tilstander[i] = 0; |
andreped | 18:d2e5d6f5faeb | 121 | } |
andreped | 18:d2e5d6f5faeb | 122 | if((Soner[i] > 0.46 )&&( Soner[i] < 0.55)) { //Tilstand2, Dør 2 åpen |
andreped | 18:d2e5d6f5faeb | 123 | //state = tilstand2; |
andreped | 18:d2e5d6f5faeb | 124 | //tilstander(2, i) = 1; |
andreped | 18:d2e5d6f5faeb | 125 | tilstand = 2; |
andreped | 18:d2e5d6f5faeb | 126 | if(tilstander[i] != 2)TilstandSjekk(i, tilstand); |
andreped | 18:d2e5d6f5faeb | 127 | tilstander[i] = 2; |
andreped | 18:d2e5d6f5faeb | 128 | } |
andreped | 18:d2e5d6f5faeb | 129 | if((Soner[i] > 0.9) &&( Soner[i] < 1)) { //Tilstand 3, Begge dører er åpen |
andreped | 18:d2e5d6f5faeb | 130 | //state = tilstand3; |
andreped | 18:d2e5d6f5faeb | 131 | //tilstander(3, i) = 1; |
andreped | 18:d2e5d6f5faeb | 132 | tilstand = 3; |
andreped | 18:d2e5d6f5faeb | 133 | if(tilstander[i] != 3)TilstandSjekk(i, tilstand); |
andreped | 18:d2e5d6f5faeb | 134 | tilstander[i] = 3; |
andreped | 18:d2e5d6f5faeb | 135 | } |
andreped | 18:d2e5d6f5faeb | 136 | } |
andreped | 18:d2e5d6f5faeb | 137 | } |
andreped | 18:d2e5d6f5faeb | 138 | |
andreped | 18:d2e5d6f5faeb | 139 | /*void TilstandSjekk(void) |
andreped | 18:d2e5d6f5faeb | 140 | { |
andreped | 18:d2e5d6f5faeb | 141 | while(1) { |
andreped | 18:d2e5d6f5faeb | 142 | int Y = 1; |
andreped | 18:d2e5d6f5faeb | 143 | int n = 2; |
andreped | 18:d2e5d6f5faeb | 144 | for(int k=0; k>=sone; k++) Y = k * n; |
andreped | 18:d2e5d6f5faeb | 145 | switch(state) { |
andreped | 18:d2e5d6f5faeb | 146 | case normaldrift: |
andreped | 18:d2e5d6f5faeb | 147 | pc.printf("Vi er i case 0"); |
andreped | 18:d2e5d6f5faeb | 148 | running = false; |
andreped | 18:d2e5d6f5faeb | 149 | if((y1 != AlarmUtganger1) && (y2 != AlarmUtganger2)) { |
andreped | 18:d2e5d6f5faeb | 150 | AlarmUtganger1 =- Y; |
andreped | 18:d2e5d6f5faeb | 151 | AlarmUtganger2 =- Y; |
andreped | 18:d2e5d6f5faeb | 152 | } |
andreped | 18:d2e5d6f5faeb | 153 | y1 = AlarmUtganger1; |
andreped | 18:d2e5d6f5faeb | 154 | y2 = AlarmUtganger2; |
andreped | 18:d2e5d6f5faeb | 155 | buffer = 0; |
andreped | 18:d2e5d6f5faeb | 156 | break; |
andreped | 18:d2e5d6f5faeb | 157 | case tilstand1: |
andreped | 18:d2e5d6f5faeb | 158 | pc.printf("Vi er i case 1 \n"); |
andreped | 18:d2e5d6f5faeb | 159 | running = true; |
andreped | 18:d2e5d6f5faeb | 160 | if(y1 != AlarmUtganger1) AlarmUtganger1 =+ Y; |
andreped | 18:d2e5d6f5faeb | 161 | if(buffer == ( 2 || 3)) AlarmUtganger2 =- Y; |
andreped | 18:d2e5d6f5faeb | 162 | y1 = AlarmUtganger1; |
andreped | 18:d2e5d6f5faeb | 163 | buffer = 1; |
andreped | 18:d2e5d6f5faeb | 164 | break; |
andreped | 18:d2e5d6f5faeb | 165 | case tilstand2: |
andreped | 18:d2e5d6f5faeb | 166 | pc.printf("Vi er i case 2 \n"); |
andreped | 18:d2e5d6f5faeb | 167 | running = true; |
andreped | 18:d2e5d6f5faeb | 168 | if(y2 != AlarmUtganger2) AlarmUtganger2 =+ Y; |
andreped | 18:d2e5d6f5faeb | 169 | if(buffer == ( 1 || 3 )) AlarmUtganger1 =- Y; |
andreped | 18:d2e5d6f5faeb | 170 | y2 = AlarmUtganger2; |
andreped | 18:d2e5d6f5faeb | 171 | buffer = 2; |
andreped | 18:d2e5d6f5faeb | 172 | break; |
andreped | 18:d2e5d6f5faeb | 173 | case tilstand3: |
andreped | 18:d2e5d6f5faeb | 174 | pc.printf("Vi er i case 3 \n"); |
andreped | 18:d2e5d6f5faeb | 175 | running = true; |
andreped | 18:d2e5d6f5faeb | 176 | if((y1 != AlarmUtganger1) && (y2 != AlarmUtganger2)) { |
andreped | 18:d2e5d6f5faeb | 177 | AlarmUtganger1 =+ Y; |
andreped | 18:d2e5d6f5faeb | 178 | AlarmUtganger2 =+ Y; |
andreped | 18:d2e5d6f5faeb | 179 | } |
andreped | 18:d2e5d6f5faeb | 180 | y1 = AlarmUtganger1; |
andreped | 18:d2e5d6f5faeb | 181 | y2 = AlarmUtganger2; |
andreped | 18:d2e5d6f5faeb | 182 | buffer = 3; |
andreped | 18:d2e5d6f5faeb | 183 | break; |
andreped | 18:d2e5d6f5faeb | 184 | } |
andreped | 18:d2e5d6f5faeb | 185 | Thread:wait(1000); |
andreped | 18:d2e5d6f5faeb | 186 | } |
andreped | 18:d2e5d6f5faeb | 187 | }*/ |
andreped | 18:d2e5d6f5faeb | 188 | |
andreped | 11:dad1798ed88f | 189 | int TilstandSjekk(int i, int tilstand) |
andreped | 11:dad1798ed88f | 190 | { |
andreped | 18:d2e5d6f5faeb | 191 | //tilstander.add(i, tilstand, 1); |
andreped | 11:dad1798ed88f | 192 | if(tilstand == 0) { |
andreped | 18:d2e5d6f5faeb | 193 | wait(0.5); |
andreped | 18:d2e5d6f5faeb | 194 | pc.printf("Vi er i normaldrift i sone %d \n", i); |
andreped | 15:272fb4e610dc | 195 | running = false; |
andreped | 16:3d2e29aa5df5 | 196 | double n = 2; |
andreped | 11:dad1798ed88f | 197 | double Y = 1; |
andreped | 11:dad1798ed88f | 198 | for(int k=1; k<=i; k++) Y = Y*n; |
andreped | 12:0193024eab13 | 199 | if ( Y == AlarmUtganger1) AlarmUtganger1 = AlarmUtganger1 - Y; |
andreped | 12:0193024eab13 | 200 | if ( Y == AlarmUtganger2) AlarmUtganger2 = AlarmUtganger2 - Y; |
andreped | 11:dad1798ed88f | 201 | } |
andreped | 11:dad1798ed88f | 202 | if(tilstand == 1) { //Hvis dør 1 er åpen... |
andreped | 18:d2e5d6f5faeb | 203 | wait(0.5); |
andreped | 18:d2e5d6f5faeb | 204 | pc.printf("Vi er i tilstand 1 i sone %d \n", i); |
andreped | 15:272fb4e610dc | 205 | running = true; |
andreped | 16:3d2e29aa5df5 | 206 | double n = 2; |
andreped | 11:dad1798ed88f | 207 | double Y = 1; |
andreped | 11:dad1798ed88f | 208 | for(int k=1; k<=i; k++) Y = Y*n; |
andreped | 11:dad1798ed88f | 209 | if( Y == AlarmUtganger2 ) AlarmUtganger2 = AlarmUtganger2 - Y; |
andreped | 18:d2e5d6f5faeb | 210 | if( Y != AlarmUtganger1) AlarmUtganger1 = Y + AlarmUtganger1; //Sjekk om denne verdien har blitt sjekket før, hvis ikke starter alarm på neste dør. |
andreped | 11:dad1798ed88f | 211 | } |
andreped | 11:dad1798ed88f | 212 | if(tilstand == 2) { //Hvis dør 2 er åpen... |
andreped | 18:d2e5d6f5faeb | 213 | wait(0.5); |
andreped | 18:d2e5d6f5faeb | 214 | pc.printf("Vi er i tilstand 2 i sone %d \n", i); |
andreped | 15:272fb4e610dc | 215 | running = true; |
andreped | 16:3d2e29aa5df5 | 216 | double n = 2; |
andreped | 11:dad1798ed88f | 217 | double Y = 1; |
andreped | 11:dad1798ed88f | 218 | for(int k=1; k<=i; k++) Y = Y*n; |
andreped | 11:dad1798ed88f | 219 | if( Y == AlarmUtganger1 ) AlarmUtganger1 = AlarmUtganger1 - Y; |
andreped | 11:dad1798ed88f | 220 | if( Y!=AlarmUtganger2) AlarmUtganger2 = Y + AlarmUtganger2; //Sjekk om denne verdien har blitt sjekket før, hvis ikke starter alarm på neste dør. |
andreped | 11:dad1798ed88f | 221 | } |
andreped | 11:dad1798ed88f | 222 | if(tilstand == 3) { //Hvis begge dører er åpne |
andreped | 18:d2e5d6f5faeb | 223 | wait(0.5); |
andreped | 18:d2e5d6f5faeb | 224 | pc.printf("Vi er i tilstand 3 i sone %d \n", i); |
andreped | 15:272fb4e610dc | 225 | running = true; |
andreped | 11:dad1798ed88f | 226 | double n = 2; // We want 2^i |
andreped | 11:dad1798ed88f | 227 | double Y = 1; |
andreped | 11:dad1798ed88f | 228 | for(int k=1; k<=i; k++) Y = Y*n; |
andreped | 11:dad1798ed88f | 229 | if( Y!=AlarmUtganger1 ) AlarmUtganger1 = Y + AlarmUtganger1; |
andreped | 11:dad1798ed88f | 230 | if( Y!=AlarmUtganger2 ) AlarmUtganger2 = Y + AlarmUtganger2; |
andreped | 11:dad1798ed88f | 231 | } |
andreped | 11:dad1798ed88f | 232 | return 0; |
andreped | 10:f0a6d74095d4 | 233 | } |
andreped | 16:3d2e29aa5df5 | 234 | |
andreped | 18:d2e5d6f5faeb | 235 | /*int log_to_file() |
andreped | 16:3d2e29aa5df5 | 236 | { |
andreped | 18:d2e5d6f5faeb | 237 | //while(tilstander != buffer_tilstander) { |
andreped | 18:d2e5d6f5faeb | 238 | // wait(5.0); |
andreped | 16:3d2e29aa5df5 | 239 | |
andreped | 18:d2e5d6f5faeb | 240 | FILE *fp = fopen("/local/LOG.txt", "w" ); |
andreped | 18:d2e5d6f5faeb | 241 | for(int i = 0; i < 4; i++) { |
andreped | 18:d2e5d6f5faeb | 242 | int n = 2; |
andreped | 18:d2e5d6f5faeb | 243 | int a1 = n * i; |
andreped | 18:d2e5d6f5faeb | 244 | int a2 = n * i; |
andreped | 18:d2e5d6f5faeb | 245 | if( (a1 == AlarmUtganger1) && (a2 != AlarmUtganger2) ) { |
andreped | 18:d2e5d6f5faeb | 246 | fprintf(fp,"Sone %d, dor 1 er aapen \n", i); |
andreped | 18:d2e5d6f5faeb | 247 | fprintf(fp,"Tid:%f siden start \n",t.read()); |
andreped | 18:d2e5d6f5faeb | 248 | } |
andreped | 18:d2e5d6f5faeb | 249 | |
andreped | 18:d2e5d6f5faeb | 250 | if( (a2 == AlarmUtganger2) && (a1 != AlarmUtganger1) ) { |
andreped | 18:d2e5d6f5faeb | 251 | fprintf(fp,"Sone %d, dor 2 er lukket \n", i); |
andreped | 18:d2e5d6f5faeb | 252 | fprintf(fp,"Tid:%f siden start \n",t.read()); |
andreped | 18:d2e5d6f5faeb | 253 | } |
andreped | 18:d2e5d6f5faeb | 254 | if ( (a1 == AlarmUtganger1) && (a2 == AlarmUtganger2) ) { |
andreped | 18:d2e5d6f5faeb | 255 | fprintf(fp,"Sone %d dor 1 og 2 er lukket \n",i); |
andreped | 18:d2e5d6f5faeb | 256 | fprintf(fp,"Tid:%f siden start \n",t.read()); |
andreped | 17:f046c0ca9edd | 257 | } |
andreped | 16:3d2e29aa5df5 | 258 | } |
andreped | 18:d2e5d6f5faeb | 259 | return 0; |
andreped | 18:d2e5d6f5faeb | 260 | }*/ |
andreped | 16:3d2e29aa5df5 | 261 | |
andreped | 15:272fb4e610dc | 262 | void admin_access_granted() |
andreped | 15:272fb4e610dc | 263 | { |
andreped | 15:272fb4e610dc | 264 | admin = true; |
andreped | 15:272fb4e610dc | 265 | pc.printf("Admin access granted\n");//info |
andreped | 15:272fb4e610dc | 266 | pc.printf("Folgende kommandoer kan brukes: \n");// liste over funksjoner tilgjenglig. |
andreped | 15:272fb4e610dc | 267 | pc.printf("Status sone og dor(sone forst, dor etter) Kommando: 1,2 \n");// funksjon 1 - request spesific status |
andreped | 15:272fb4e610dc | 268 | pc.printf("Status alle soner og dorer. Kommando: Status \n");// funksjon 1 - request status all |
andreped | 15:272fb4e610dc | 269 | pc.printf("Reset hele systemet. Kommando: 'Reset' \n");// funksjon 4 - request log all |
andreped | 15:272fb4e610dc | 270 | } |
andreped | 16:3d2e29aa5df5 | 271 | |
andreped | 15:272fb4e610dc | 272 | void password_check() |
Banyrud | 14:8e7aaf0cf5d7 | 273 | { |
andreped | 15:272fb4e610dc | 274 | if(pc.readable() == 1) { |
andreped | 15:272fb4e610dc | 275 | pc.printf("Write password: "); |
andreped | 15:272fb4e610dc | 276 | string b; |
andreped | 15:272fb4e610dc | 277 | char s; |
andreped | 15:272fb4e610dc | 278 | for(int i = 0; i < 5; i++) { |
andreped | 15:272fb4e610dc | 279 | s = pc.getc(); |
andreped | 15:272fb4e610dc | 280 | pc.printf("%c", s); |
andreped | 15:272fb4e610dc | 281 | b += s; |
andreped | 15:272fb4e610dc | 282 | if(b == password) { |
andreped | 15:272fb4e610dc | 283 | admin_access_granted(); |
andreped | 15:272fb4e610dc | 284 | } |
andreped | 15:272fb4e610dc | 285 | } |
andreped | 15:272fb4e610dc | 286 | } |
Banyrud | 14:8e7aaf0cf5d7 | 287 | } |
Banyrud | 14:8e7aaf0cf5d7 | 288 | |
andreped | 16:3d2e29aa5df5 | 289 | void read_keyinput() |
andreped | 1:6917ec4f5e6d | 290 | { |
andreped | 15:272fb4e610dc | 291 | if(pc.readable() == 1) { |
andreped | 16:3d2e29aa5df5 | 292 | pc.printf("\nDu skriver: "); |
andreped | 15:272fb4e610dc | 293 | string read; |
andreped | 15:272fb4e610dc | 294 | char c; |
andreped | 16:3d2e29aa5df5 | 295 | for(int i = 0; i < 6; i++) { |
andreped | 15:272fb4e610dc | 296 | c = pc.getc(); |
andreped | 16:3d2e29aa5df5 | 297 | pc.printf("%c ", c); |
andreped | 15:272fb4e610dc | 298 | read += c; |
andreped | 16:3d2e29aa5df5 | 299 | if( read == ("1, 1")) request_status_sone_dor(1, 1); |
andreped | 16:3d2e29aa5df5 | 300 | if( read == ("1, 2")) request_status_sone_dor(1, 2); |
andreped | 16:3d2e29aa5df5 | 301 | if( read == ("2, 1")) request_status_sone_dor(2, 1); |
andreped | 16:3d2e29aa5df5 | 302 | if( read == ("2, 2")) request_status_sone_dor(2, 2); |
andreped | 16:3d2e29aa5df5 | 303 | if( read == ("3, 1")) request_status_sone_dor(3, 1); |
andreped | 16:3d2e29aa5df5 | 304 | if( read == ("3, 2")) request_status_sone_dor(3, 2); |
andreped | 16:3d2e29aa5df5 | 305 | if( read == ("4, 1")) request_status_sone_dor(4, 1); |
andreped | 16:3d2e29aa5df5 | 306 | if( read == ("4, 2")) request_status_sone_dor(4, 2); |
andreped | 16:3d2e29aa5df5 | 307 | if( read == ("Status")) request_status(); |
andreped | 18:d2e5d6f5faeb | 308 | //if( read == ("Stop")) |
andreped | 18:d2e5d6f5faeb | 309 | if( read == ("Reset")) mbed_reset(); |
andreped | 15:272fb4e610dc | 310 | } |
andreped | 15:272fb4e610dc | 311 | } |
andreped | 15:272fb4e610dc | 312 | } |
andreped | 15:272fb4e610dc | 313 | |
andreped | 16:3d2e29aa5df5 | 314 | |
andreped | 15:272fb4e610dc | 315 | void request_status_sone_dor(int sone, int dor) |
andreped | 15:272fb4e610dc | 316 | { |
andreped | 16:3d2e29aa5df5 | 317 | int n = 2; |
andreped | 16:3d2e29aa5df5 | 318 | for(int i = 0; i <= 16;) { |
andreped | 16:3d2e29aa5df5 | 319 | if(i == 0) i = 1; |
andreped | 16:3d2e29aa5df5 | 320 | else i = i * n; |
andreped | 16:3d2e29aa5df5 | 321 | if(sone == i) { |
andreped | 16:3d2e29aa5df5 | 322 | if(dor == 1) { |
andreped | 16:3d2e29aa5df5 | 323 | if(AlarmUtganger1 == sone) pc.printf("Dor: %d i sone: %d er apnet \n", dor, sone); |
andreped | 16:3d2e29aa5df5 | 324 | else pc.printf("Dor: %d i sone: %d er lukket \n", dor, sone); |
andreped | 16:3d2e29aa5df5 | 325 | } |
andreped | 16:3d2e29aa5df5 | 326 | if(dor == 2) { |
andreped | 16:3d2e29aa5df5 | 327 | if(AlarmUtganger2 == sone) pc.printf("Dor: %d i sone: %d er apnet \n", dor, sone); |
andreped | 16:3d2e29aa5df5 | 328 | else pc.printf("Dor: %d i sone: %d er lukket \n", dor, sone); |
andreped | 16:3d2e29aa5df5 | 329 | } |
andreped | 16:3d2e29aa5df5 | 330 | } |
andreped | 15:272fb4e610dc | 331 | } |
andreped | 15:272fb4e610dc | 332 | } |
andreped | 15:272fb4e610dc | 333 | |
andreped | 16:3d2e29aa5df5 | 334 | void request_status() |
andreped | 16:3d2e29aa5df5 | 335 | { |
andreped | 16:3d2e29aa5df5 | 336 | int sone = 0; |
andreped | 16:3d2e29aa5df5 | 337 | int n = 2; |
andreped | 18:d2e5d6f5faeb | 338 | for(int i = 0; i < 8;) { |
andreped | 18:d2e5d6f5faeb | 339 | sone = sone + 1; |
andreped | 16:3d2e29aa5df5 | 340 | if(i == 0) i = 1; |
andreped | 16:3d2e29aa5df5 | 341 | else i = i*n; |
andreped | 16:3d2e29aa5df5 | 342 | if(AlarmUtganger1 == i) pc.printf("Dor: 1 i Sone: %d er apent \n", sone); |
andreped | 18:d2e5d6f5faeb | 343 | else pc.printf("Dor: 1 i Sone: %d er lukket \n", sone); |
andreped | 16:3d2e29aa5df5 | 344 | if(AlarmUtganger2 == i) pc.printf("Dor: 2 i Sone: %d er apent \n", sone); |
andreped | 18:d2e5d6f5faeb | 345 | else pc.printf("Dor: 2 i Sone: %d er lukket \n", sone); |
andreped | 16:3d2e29aa5df5 | 346 | } |
andreped | 16:3d2e29aa5df5 | 347 | } |