ok

Dependencies:   mbed

Fork of Alarmsystem-FINAL1 by Brede Hesvik

main.cpp

Committer:
bredeh
Date:
2016-02-25
Revision:
0:c9f607286335

File content as of revision 0:c9f607286335:


#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;
}