ok

Dependencies:   mbed

Fork of Alarmsystem-FINAL1 by Brede Hesvik

Revision:
0:c9f607286335
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Feb 25 11:31:10 2016 +0000
@@ -0,0 +1,148 @@
+
+#include "mbed.h"
+#include <stdio.h>
+Serial pc(USBTX,USBRX);
+int valg=1;
+int i,b=0,passforsok=0;
+int antallbokstaver=0;
+char passord[30]="NULL";    // array som vi lagrer det valgte passord
+char pass[30];              // array som vi lagrer passordet vi tester mot valgte passord
+void flushSerialBuffer(void);
+int menyvalg,returnvalg,passriktig;
+Timer t;
+
+int main()
+{
+    while(1) {
+        switch (valg) {                                         //Vi har valgt å bruke switch cases fordi dette gjør det lettere
+                //å gå fram og tilbake avhengig av riktig eller galt passord.
+
+            case 1:                                             // i case 1 er meny valgene man får, man lagrer da valget i en variabel
+                pc.printf("\n 1. Sett alarm paa.");             // som man setter i en annen switch case.
+                pc.printf("\n 2. Slaa av alarm.   ");
+                pc.printf("\n 3. Skifte passord.  ");
+                pc.printf("\n 4. Reset system  ");
+                pc.printf("\n 5. Status ");
+                pc.printf("\n skriv inn ditt valg: ");
+                pc.scanf("%d",&menyvalg);                       // menyvalg er det vi setter som valg i vår andre switch løkke til
+                valg=2;
+
+                break;
+
+            case 2:
+                while(1) {
+                    if(!strcmp(passord,"NULL")) {                       // her tester vi om vi har tidligere satt et valgfritt passord
+                        pc.printf("\n Skriv inn nytt passord: ");       // hvis ikke, vil vi gå inn her og lage et nytt passord.
+                        //fflush(stdout);                               // dette gjør vi fordi hadde problemer med tera term og ville resette buffer.
+                        antallbokstaver=0;
+                        flushSerialBuffer();                            // bruker denne void for å flushe buffer fordi enter er lagret i bufferen etter menyen.
+                        // og da gikk den inn i if passord=\r hver gang og breaket ut.
+                        while(1) {
+
+                            if(pc.readable()) {
+                                passord[antallbokstaver]=pc.getc();     // I dette arrayet lagrer vi det valgte passordet.
+
+                                if(passord[antallbokstaver]=='\r') {   // \r betyr carrage return og når vi trykker enter vil denne være aktiv
+                                    passord[antallbokstaver]='\0';
+                                    break;
+                                }
+                                antallbokstaver++;
+                            }
+                        }
+
+                    } else {
+                        t.start();
+                        b=0;
+                        printf("\n Skriv inn passord: ");
+                        flushSerialBuffer();                        // bruker denne for å flushe input data fra tera term. Så vi
+                        while( t < 31 && passforsok<3) {            // ikke direkte hopper inn i if setningen og breaker.
+
+                            if(pc.readable()) {
+
+                                pass[b]=pc.getc();
+
+                                if(pass[b]=='\r') {
+                                    pc.printf("\n breaker ut fra pw");
+                                    valg=3;
+
+                                    pass[b]='\0';
+                                    b=0;
+                                    break;
+
+                                }
+                                b++;
+
+                            }
+
+                        }
+                        if(t>30) {
+                            pc.printf("\n brukte for lang tid, alarm gatt \n");
+                            valg=1;         // setter switch case tilbake til meny.
+                            passriktig=2;   // dette returnerer vi for å signalisere at alarmen er gått.
+
+                        }
+                    }
+                    break;
+                }
+                break;
+
+            case 3: //testing av passord
+                pc.printf("\n testing av passord");
+                if( !strcmp(passord, pass)) {               // tester to array mot hverandre for å sjekke om disse er lik.
+                    pass[0]='0';
+                    valg=1;
+                    t.stop();
+                    t.reset();
+                    pc.printf("\n passord er riktig");
+                    passriktig=1;
+                    passforsok=0;
+                } else {
+                    pc.printf("\n passord er feil");
+                    valg=2;
+                    passforsok++;
+                    if(passforsok>3) {
+                        casenummer=6;
+                        break;
+                    }
+                    break;
+                }
+        }
+
+        if(passriktig==1) {
+            passriktig=0;
+            menyvalg=casenummer;
+        }
+    }
+}
+
+int tilstand()
+{
+    switch (casenummer) {
+        case 1:   // alarm på
+            void systempaa(int aktiv);/* Komplett funksjon for systempa, inkl, loggforing og varsling av krets. */
+            
+            
+        case 2:  // alarm av
+            void logg_system_av(float timer);
+        case 3:  // skifting av passord
+            passord[30]="NULL";
+            
+        case 4:  // reset
+            void nullstilling(int servicebryter);/* Nullstiller hele systemet ved aktivering av servicebryter */
+            
+        case 5:
+            void natid_status(void);/* Funksjon for å lese av nåværende status på valgt krets. */
+        case 6:  // alarm gått
+            void logg_feilpass();
+            void led_status(void);
+
+    }
+}
+void flushSerialBuffer(void)
+{
+    while (pc.readable()) {
+        (void) pc.getc();
+    }
+    return;
+}
+