06.03.2018

Dependencies:   Matrix

Fork of Alarmsystem_med_matrix_log_funker_ikke by Programmeringsgruppe 1

Committer:
andreped
Date:
Tue Mar 06 14:14:42 2018 +0000
Revision:
18:d2e5d6f5faeb
Parent:
17:f046c0ca9edd
?

Who changed what in which revision?

UserRevisionLine numberNew 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 }