ok

Dependencies:   mbed

Fork of Alarmsystem-FINAL1 by Brede Hesvik

Committer:
bredeh
Date:
Thu Feb 25 11:31:10 2016 +0000
Revision:
0:c9f607286335
alarmsystem;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bredeh 0:c9f607286335 1
bredeh 0:c9f607286335 2 #include "mbed.h"
bredeh 0:c9f607286335 3 #include <stdio.h>
bredeh 0:c9f607286335 4 Serial pc(USBTX,USBRX);
bredeh 0:c9f607286335 5 int valg=1;
bredeh 0:c9f607286335 6 int i,b=0,passforsok=0;
bredeh 0:c9f607286335 7 int antallbokstaver=0;
bredeh 0:c9f607286335 8 char passord[30]="NULL"; // array som vi lagrer det valgte passord
bredeh 0:c9f607286335 9 char pass[30]; // array som vi lagrer passordet vi tester mot valgte passord
bredeh 0:c9f607286335 10 void flushSerialBuffer(void);
bredeh 0:c9f607286335 11 int menyvalg,returnvalg,passriktig;
bredeh 0:c9f607286335 12 Timer t;
bredeh 0:c9f607286335 13
bredeh 0:c9f607286335 14 int main()
bredeh 0:c9f607286335 15 {
bredeh 0:c9f607286335 16 while(1) {
bredeh 0:c9f607286335 17 switch (valg) { //Vi har valgt å bruke switch cases fordi dette gjør det lettere
bredeh 0:c9f607286335 18 //å gå fram og tilbake avhengig av riktig eller galt passord.
bredeh 0:c9f607286335 19
bredeh 0:c9f607286335 20 case 1: // i case 1 er meny valgene man får, man lagrer da valget i en variabel
bredeh 0:c9f607286335 21 pc.printf("\n 1. Sett alarm paa."); // som man setter i en annen switch case.
bredeh 0:c9f607286335 22 pc.printf("\n 2. Slaa av alarm. ");
bredeh 0:c9f607286335 23 pc.printf("\n 3. Skifte passord. ");
bredeh 0:c9f607286335 24 pc.printf("\n 4. Reset system ");
bredeh 0:c9f607286335 25 pc.printf("\n 5. Status ");
bredeh 0:c9f607286335 26 pc.printf("\n skriv inn ditt valg: ");
bredeh 0:c9f607286335 27 pc.scanf("%d",&menyvalg); // menyvalg er det vi setter som valg i vår andre switch løkke til
bredeh 0:c9f607286335 28 valg=2;
bredeh 0:c9f607286335 29
bredeh 0:c9f607286335 30 break;
bredeh 0:c9f607286335 31
bredeh 0:c9f607286335 32 case 2:
bredeh 0:c9f607286335 33 while(1) {
bredeh 0:c9f607286335 34 if(!strcmp(passord,"NULL")) { // her tester vi om vi har tidligere satt et valgfritt passord
bredeh 0:c9f607286335 35 pc.printf("\n Skriv inn nytt passord: "); // hvis ikke, vil vi gå inn her og lage et nytt passord.
bredeh 0:c9f607286335 36 //fflush(stdout); // dette gjør vi fordi hadde problemer med tera term og ville resette buffer.
bredeh 0:c9f607286335 37 antallbokstaver=0;
bredeh 0:c9f607286335 38 flushSerialBuffer(); // bruker denne void for å flushe buffer fordi enter er lagret i bufferen etter menyen.
bredeh 0:c9f607286335 39 // og da gikk den inn i if passord=\r hver gang og breaket ut.
bredeh 0:c9f607286335 40 while(1) {
bredeh 0:c9f607286335 41
bredeh 0:c9f607286335 42 if(pc.readable()) {
bredeh 0:c9f607286335 43 passord[antallbokstaver]=pc.getc(); // I dette arrayet lagrer vi det valgte passordet.
bredeh 0:c9f607286335 44
bredeh 0:c9f607286335 45 if(passord[antallbokstaver]=='\r') { // \r betyr carrage return og når vi trykker enter vil denne være aktiv
bredeh 0:c9f607286335 46 passord[antallbokstaver]='\0';
bredeh 0:c9f607286335 47 break;
bredeh 0:c9f607286335 48 }
bredeh 0:c9f607286335 49 antallbokstaver++;
bredeh 0:c9f607286335 50 }
bredeh 0:c9f607286335 51 }
bredeh 0:c9f607286335 52
bredeh 0:c9f607286335 53 } else {
bredeh 0:c9f607286335 54 t.start();
bredeh 0:c9f607286335 55 b=0;
bredeh 0:c9f607286335 56 printf("\n Skriv inn passord: ");
bredeh 0:c9f607286335 57 flushSerialBuffer(); // bruker denne for å flushe input data fra tera term. Så vi
bredeh 0:c9f607286335 58 while( t < 31 && passforsok<3) { // ikke direkte hopper inn i if setningen og breaker.
bredeh 0:c9f607286335 59
bredeh 0:c9f607286335 60 if(pc.readable()) {
bredeh 0:c9f607286335 61
bredeh 0:c9f607286335 62 pass[b]=pc.getc();
bredeh 0:c9f607286335 63
bredeh 0:c9f607286335 64 if(pass[b]=='\r') {
bredeh 0:c9f607286335 65 pc.printf("\n breaker ut fra pw");
bredeh 0:c9f607286335 66 valg=3;
bredeh 0:c9f607286335 67
bredeh 0:c9f607286335 68 pass[b]='\0';
bredeh 0:c9f607286335 69 b=0;
bredeh 0:c9f607286335 70 break;
bredeh 0:c9f607286335 71
bredeh 0:c9f607286335 72 }
bredeh 0:c9f607286335 73 b++;
bredeh 0:c9f607286335 74
bredeh 0:c9f607286335 75 }
bredeh 0:c9f607286335 76
bredeh 0:c9f607286335 77 }
bredeh 0:c9f607286335 78 if(t>30) {
bredeh 0:c9f607286335 79 pc.printf("\n brukte for lang tid, alarm gatt \n");
bredeh 0:c9f607286335 80 valg=1; // setter switch case tilbake til meny.
bredeh 0:c9f607286335 81 passriktig=2; // dette returnerer vi for å signalisere at alarmen er gått.
bredeh 0:c9f607286335 82
bredeh 0:c9f607286335 83 }
bredeh 0:c9f607286335 84 }
bredeh 0:c9f607286335 85 break;
bredeh 0:c9f607286335 86 }
bredeh 0:c9f607286335 87 break;
bredeh 0:c9f607286335 88
bredeh 0:c9f607286335 89 case 3: //testing av passord
bredeh 0:c9f607286335 90 pc.printf("\n testing av passord");
bredeh 0:c9f607286335 91 if( !strcmp(passord, pass)) { // tester to array mot hverandre for å sjekke om disse er lik.
bredeh 0:c9f607286335 92 pass[0]='0';
bredeh 0:c9f607286335 93 valg=1;
bredeh 0:c9f607286335 94 t.stop();
bredeh 0:c9f607286335 95 t.reset();
bredeh 0:c9f607286335 96 pc.printf("\n passord er riktig");
bredeh 0:c9f607286335 97 passriktig=1;
bredeh 0:c9f607286335 98 passforsok=0;
bredeh 0:c9f607286335 99 } else {
bredeh 0:c9f607286335 100 pc.printf("\n passord er feil");
bredeh 0:c9f607286335 101 valg=2;
bredeh 0:c9f607286335 102 passforsok++;
bredeh 0:c9f607286335 103 if(passforsok>3) {
bredeh 0:c9f607286335 104 casenummer=6;
bredeh 0:c9f607286335 105 break;
bredeh 0:c9f607286335 106 }
bredeh 0:c9f607286335 107 break;
bredeh 0:c9f607286335 108 }
bredeh 0:c9f607286335 109 }
bredeh 0:c9f607286335 110
bredeh 0:c9f607286335 111 if(passriktig==1) {
bredeh 0:c9f607286335 112 passriktig=0;
bredeh 0:c9f607286335 113 menyvalg=casenummer;
bredeh 0:c9f607286335 114 }
bredeh 0:c9f607286335 115 }
bredeh 0:c9f607286335 116 }
bredeh 0:c9f607286335 117
bredeh 0:c9f607286335 118 int tilstand()
bredeh 0:c9f607286335 119 {
bredeh 0:c9f607286335 120 switch (casenummer) {
bredeh 0:c9f607286335 121 case 1: // alarm på
bredeh 0:c9f607286335 122 void systempaa(int aktiv);/* Komplett funksjon for systempa, inkl, loggforing og varsling av krets. */
bredeh 0:c9f607286335 123
bredeh 0:c9f607286335 124
bredeh 0:c9f607286335 125 case 2: // alarm av
bredeh 0:c9f607286335 126 void logg_system_av(float timer);
bredeh 0:c9f607286335 127 case 3: // skifting av passord
bredeh 0:c9f607286335 128 passord[30]="NULL";
bredeh 0:c9f607286335 129
bredeh 0:c9f607286335 130 case 4: // reset
bredeh 0:c9f607286335 131 void nullstilling(int servicebryter);/* Nullstiller hele systemet ved aktivering av servicebryter */
bredeh 0:c9f607286335 132
bredeh 0:c9f607286335 133 case 5:
bredeh 0:c9f607286335 134 void natid_status(void);/* Funksjon for å lese av nåværende status på valgt krets. */
bredeh 0:c9f607286335 135 case 6: // alarm gått
bredeh 0:c9f607286335 136 void logg_feilpass();
bredeh 0:c9f607286335 137 void led_status(void);
bredeh 0:c9f607286335 138
bredeh 0:c9f607286335 139 }
bredeh 0:c9f607286335 140 }
bredeh 0:c9f607286335 141 void flushSerialBuffer(void)
bredeh 0:c9f607286335 142 {
bredeh 0:c9f607286335 143 while (pc.readable()) {
bredeh 0:c9f607286335 144 (void) pc.getc();
bredeh 0:c9f607286335 145 }
bredeh 0:c9f607286335 146 return;
bredeh 0:c9f607286335 147 }
bredeh 0:c9f607286335 148