Fredrik Bjørken
/
Alarmsystem-FINAL1
ok
Fork of Alarmsystem-FINAL1 by
main.cpp@2:557f07ece834, 2016-02-25 (annotated)
- Committer:
- Bjorken
- Date:
- Thu Feb 25 11:36:53 2016 +0000
- Revision:
- 2:557f07ece834
- Parent:
- 0:c9f607286335
hei;
Who changed what in which revision?
User | Revision | Line number | New 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 |