Fredrik Bjørken / Mbed 2 deprecated Alarmsystem-FINAL1

Dependencies:   mbed

Fork of Alarmsystem-FINAL1 by Brede Hesvik

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 
00002 #include "mbed.h"
00003 #include <stdio.h>
00004 Serial pc(USBTX,USBRX);
00005 int valg=1;
00006 int i,b=0,passforsok=0;
00007 int antallbokstaver=0;
00008 char passord[30]="NULL";    // array som vi lagrer det valgte passord
00009 char pass[30];              // array som vi lagrer passordet vi tester mot valgte passord
00010 void flushSerialBuffer(void);
00011 int menyvalg,returnvalg,passriktig;
00012 Timer t;
00013 
00014 int main()
00015 {
00016     while(1) {
00017         switch (valg) {                                         //Vi har valgt å bruke switch cases fordi dette gjør det lettere
00018                 //å gå fram og tilbake avhengig av riktig eller galt passord.
00019 
00020             case 1:                                             // i case 1 er meny valgene man får, man lagrer da valget i en variabel
00021                 pc.printf("\n 1. Sett alarm paa.");             // som man setter i en annen switch case.
00022                 pc.printf("\n 2. Slaa av alarm.   ");
00023                 pc.printf("\n 3. Skifte passord.  ");
00024                 pc.printf("\n 4. Reset system  ");
00025                 pc.printf("\n 5. Status ");
00026                 pc.printf("\n skriv inn ditt valg: ");
00027                 pc.scanf("%d",&menyvalg);                       // menyvalg er det vi setter som valg i vår andre switch løkke til
00028                 valg=2;
00029 
00030                 break;
00031 
00032             case 2:
00033                 while(1) {
00034                     if(!strcmp(passord,"NULL")) {                       // her tester vi om vi har tidligere satt et valgfritt passord
00035                         pc.printf("\n Skriv inn nytt passord: ");       // hvis ikke, vil vi gå inn her og lage et nytt passord.
00036                         //fflush(stdout);                               // dette gjør vi fordi hadde problemer med tera term og ville resette buffer.
00037                         antallbokstaver=0;
00038                         flushSerialBuffer();                            // bruker denne void for å flushe buffer fordi enter er lagret i bufferen etter menyen.
00039                         // og da gikk den inn i if passord=\r hver gang og breaket ut.
00040                         while(1) {
00041 
00042                             if(pc.readable()) {
00043                                 passord[antallbokstaver]=pc.getc();     // I dette arrayet lagrer vi det valgte passordet.
00044 
00045                                 if(passord[antallbokstaver]=='\r') {   // \r betyr carrage return og når vi trykker enter vil denne være aktiv
00046                                     passord[antallbokstaver]='\0';
00047                                     break;
00048                                 }
00049                                 antallbokstaver++;
00050                             }
00051                         }
00052 
00053                     } else {
00054                         t.start();
00055                         b=0;
00056                         printf("\n Skriv inn passord: ");
00057                         flushSerialBuffer();                        // bruker denne for å flushe input data fra tera term. Så vi
00058                         while( t < 31 && passforsok<3) {            // ikke direkte hopper inn i if setningen og breaker.
00059 
00060                             if(pc.readable()) {
00061 
00062                                 pass[b]=pc.getc();
00063 
00064                                 if(pass[b]=='\r') {
00065                                     pc.printf("\n breaker ut fra pw");
00066                                     valg=3;
00067 
00068                                     pass[b]='\0';
00069                                     b=0;
00070                                     break;
00071 
00072                                 }
00073                                 b++;
00074 
00075                             }
00076 
00077                         }
00078                         if(t>30) {
00079                             pc.printf("\n brukte for lang tid, alarm gatt \n");
00080                             valg=1;         // setter switch case tilbake til meny.
00081                             passriktig=2;   // dette returnerer vi for å signalisere at alarmen er gått.
00082 
00083                         }
00084                     }
00085                     break;
00086                 }
00087                 break;
00088 
00089             case 3: //testing av passord
00090                 pc.printf("\n testing av passord");
00091                 if( !strcmp(passord, pass)) {               // tester to array mot hverandre for å sjekke om disse er lik.
00092                     pass[0]='0';
00093                     valg=1;
00094                     t.stop();
00095                     t.reset();
00096                     pc.printf("\n passord er riktig");
00097                     passriktig=1;
00098                     passforsok=0;
00099                 } else {
00100                     pc.printf("\n passord er feil");
00101                     valg=2;
00102                     passforsok++;
00103                     if(passforsok>3) {
00104                         casenummer=6;
00105                         break;
00106                     }
00107                     break;
00108                 }
00109         }
00110 
00111         if(passriktig==1) {
00112             passriktig=0;
00113             menyvalg=casenummer;
00114         }
00115     }
00116 }
00117 
00118 int tilstand()
00119 {
00120     switch (casenummer) {
00121         case 1:   // alarm på
00122             void systempaa(int aktiv);/* Komplett funksjon for systempa, inkl, loggforing og varsling av krets. */
00123             
00124             
00125         case 2:  // alarm av
00126             void logg_system_av(float timer);
00127         case 3:  // skifting av passord
00128             passord[30]="NULL";
00129             
00130         case 4:  // reset
00131             void nullstilling(int servicebryter);/* Nullstiller hele systemet ved aktivering av servicebryter */
00132             
00133         case 5:
00134             void natid_status(void);/* Funksjon for å lese av nåværende status på valgt krets. */
00135         case 6:  // alarm gått
00136             void logg_feilpass();
00137             void led_status(void);
00138 
00139     }
00140 }
00141 void flushSerialBuffer(void)
00142 {
00143     while (pc.readable()) {
00144         (void) pc.getc();
00145     }
00146     return;
00147 }
00148