(/°o°)/
Dependencies: mbed
main.cpp@0:87788df2ae50, 2016-06-20 (annotated)
- Committer:
- Deixi
- Date:
- Mon Jun 20 19:48:12 2016 +0000
- Revision:
- 0:87788df2ae50
(/?o?)/ Aber ist jetzt nicht gerade ein Meisterwerk
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Deixi | 0:87788df2ae50 | 1 | #include "mbed.h" |
Deixi | 0:87788df2ae50 | 2 | |
Deixi | 0:87788df2ae50 | 3 | PwmOut red(p36); |
Deixi | 0:87788df2ae50 | 4 | PwmOut green(p5); |
Deixi | 0:87788df2ae50 | 5 | PwmOut blue(p34); |
Deixi | 0:87788df2ae50 | 6 | DigitalOut led[] = {(LED1),(LED2),(LED3),(LED4),(P1_0),(P1_1),(P1_3),(P1_4),(P1_6),(P1_7),(P1_12),(P1_13)}; |
Deixi | 0:87788df2ae50 | 7 | DigitalIn sw1(P0_10); |
Deixi | 0:87788df2ae50 | 8 | DigitalIn sw3(P0_15); |
Deixi | 0:87788df2ae50 | 9 | DigitalIn sw4(P1_16); |
Deixi | 0:87788df2ae50 | 10 | |
Deixi | 0:87788df2ae50 | 11 | Serial pc(USBTX, USBRX); |
Deixi | 0:87788df2ae50 | 12 | Timer timer; |
Deixi | 0:87788df2ae50 | 13 | Ticker tick1; |
Deixi | 0:87788df2ae50 | 14 | Ticker tick2; |
Deixi | 0:87788df2ae50 | 15 | Ticker tick3; |
Deixi | 0:87788df2ae50 | 16 | Ticker tick4; |
Deixi | 0:87788df2ae50 | 17 | |
Deixi | 0:87788df2ae50 | 18 | |
Deixi | 0:87788df2ae50 | 19 | const uint8_t STRMAX = 20; |
Deixi | 0:87788df2ae50 | 20 | const char EOT = '.'; |
Deixi | 0:87788df2ae50 | 21 | const char CRLF = '\n'; |
Deixi | 0:87788df2ae50 | 22 | |
Deixi | 0:87788df2ae50 | 23 | //States |
Deixi | 0:87788df2ae50 | 24 | const int ST_Start = 1; |
Deixi | 0:87788df2ae50 | 25 | const int ST_Aut = 2; |
Deixi | 0:87788df2ae50 | 26 | const int ST_Eing = 3; |
Deixi | 0:87788df2ae50 | 27 | const int ST_Out = 4; |
Deixi | 0:87788df2ae50 | 28 | const int ST_Fail = 5; |
Deixi | 0:87788df2ae50 | 29 | const int ST_Erf = 6; |
Deixi | 0:87788df2ae50 | 30 | ////----------------------------------Ticker Class--------------------------------- |
Deixi | 0:87788df2ae50 | 31 | class Blinker { |
Deixi | 0:87788df2ae50 | 32 | public: |
Deixi | 0:87788df2ae50 | 33 | Blinker(PinName pin) : _pin(pin) { |
Deixi | 0:87788df2ae50 | 34 | _pin = 0; |
Deixi | 0:87788df2ae50 | 35 | } |
Deixi | 0:87788df2ae50 | 36 | void blink() { |
Deixi | 0:87788df2ae50 | 37 | _pin = !_pin; |
Deixi | 0:87788df2ae50 | 38 | } |
Deixi | 0:87788df2ae50 | 39 | private: |
Deixi | 0:87788df2ae50 | 40 | DigitalOut _pin; |
Deixi | 0:87788df2ae50 | 41 | }; |
Deixi | 0:87788df2ae50 | 42 | Blinker t1(LED1); |
Deixi | 0:87788df2ae50 | 43 | Blinker t2(LED2); |
Deixi | 0:87788df2ae50 | 44 | Blinker t3(LED3); |
Deixi | 0:87788df2ae50 | 45 | Blinker t4(LED4); |
Deixi | 0:87788df2ae50 | 46 | //-------------------------------------Event Class -------------------------------------------- |
Deixi | 0:87788df2ae50 | 47 | class SwEvent { |
Deixi | 0:87788df2ae50 | 48 | InterruptIn _isr; |
Deixi | 0:87788df2ae50 | 49 | bool _pressed; |
Deixi | 0:87788df2ae50 | 50 | void _RisingISR(); |
Deixi | 0:87788df2ae50 | 51 | |
Deixi | 0:87788df2ae50 | 52 | public: |
Deixi | 0:87788df2ae50 | 53 | SwEvent(PinName pin) : _isr(pin) { |
Deixi | 0:87788df2ae50 | 54 | _pressed = false; |
Deixi | 0:87788df2ae50 | 55 | } |
Deixi | 0:87788df2ae50 | 56 | int CheckFlag(); // das muss im do-Zweig (while(true) Schleife) ständig abgefragt werden |
Deixi | 0:87788df2ae50 | 57 | void InitIsr(); |
Deixi | 0:87788df2ae50 | 58 | }; |
Deixi | 0:87788df2ae50 | 59 | |
Deixi | 0:87788df2ae50 | 60 | int SwEvent::CheckFlag() { |
Deixi | 0:87788df2ae50 | 61 | if( _pressed ) { |
Deixi | 0:87788df2ae50 | 62 | _pressed = false; |
Deixi | 0:87788df2ae50 | 63 | return 1; |
Deixi | 0:87788df2ae50 | 64 | } |
Deixi | 0:87788df2ae50 | 65 | return 0; |
Deixi | 0:87788df2ae50 | 66 | } |
Deixi | 0:87788df2ae50 | 67 | |
Deixi | 0:87788df2ae50 | 68 | void SwEvent::InitIsr() { |
Deixi | 0:87788df2ae50 | 69 | _isr.rise(this, &SwEvent::_RisingISR); |
Deixi | 0:87788df2ae50 | 70 | } |
Deixi | 0:87788df2ae50 | 71 | |
Deixi | 0:87788df2ae50 | 72 | void SwEvent::_RisingISR() { |
Deixi | 0:87788df2ae50 | 73 | if( _isr.read() ) |
Deixi | 0:87788df2ae50 | 74 | _pressed = true; |
Deixi | 0:87788df2ae50 | 75 | } |
Deixi | 0:87788df2ae50 | 76 | |
Deixi | 0:87788df2ae50 | 77 | SwEvent sw2(P0_23); |
Deixi | 0:87788df2ae50 | 78 | int state; |
Deixi | 0:87788df2ae50 | 79 | // ---------------- Serial RS232 Event Class -------------------------- |
Deixi | 0:87788df2ae50 | 80 | class SerialEvent { |
Deixi | 0:87788df2ae50 | 81 | Serial _pc; |
Deixi | 0:87788df2ae50 | 82 | void _risingISR(); |
Deixi | 0:87788df2ae50 | 83 | char _str[STRMAX]; |
Deixi | 0:87788df2ae50 | 84 | volatile bool _strOkFlag; |
Deixi | 0:87788df2ae50 | 85 | int _index; |
Deixi | 0:87788df2ae50 | 86 | |
Deixi | 0:87788df2ae50 | 87 | |
Deixi | 0:87788df2ae50 | 88 | public: |
Deixi | 0:87788df2ae50 | 89 | SerialEvent(PinName tx, PinName rx) : _pc(tx, rx) { // create the Serial on the pin specified to SwEvent |
Deixi | 0:87788df2ae50 | 90 | _pc.attach(this, &SerialEvent::pc_recv); // attach DataReceive-function of this SerialEvent instance |
Deixi | 0:87788df2ae50 | 91 | _strOkFlag = false; |
Deixi | 0:87788df2ae50 | 92 | _index=0; |
Deixi | 0:87788df2ae50 | 93 | |
Deixi | 0:87788df2ae50 | 94 | } |
Deixi | 0:87788df2ae50 | 95 | void pc_recv(); |
Deixi | 0:87788df2ae50 | 96 | void getString(char st[]); |
Deixi | 0:87788df2ae50 | 97 | int checkFlag(); // must in do-condition (while(true)-loop) continuously interrogated |
Deixi | 0:87788df2ae50 | 98 | }; |
Deixi | 0:87788df2ae50 | 99 | SerialEvent se(USBTX, USBRX); |
Deixi | 0:87788df2ae50 | 100 | // ---------------- Serial Event Class Methodes -------------------------- |
Deixi | 0:87788df2ae50 | 101 | void SerialEvent::getString(char st[]) { |
Deixi | 0:87788df2ae50 | 102 | for( int i=0; i <= _index; i++) |
Deixi | 0:87788df2ae50 | 103 | st[i] = _str[i]; |
Deixi | 0:87788df2ae50 | 104 | _index=0; |
Deixi | 0:87788df2ae50 | 105 | } |
Deixi | 0:87788df2ae50 | 106 | |
Deixi | 0:87788df2ae50 | 107 | void SerialEvent::pc_recv() { |
Deixi | 0:87788df2ae50 | 108 | char c; |
Deixi | 0:87788df2ae50 | 109 | while(_pc.readable()){ |
Deixi | 0:87788df2ae50 | 110 | c = _pc.getc(); |
Deixi | 0:87788df2ae50 | 111 | if((c != CRLF) && (_index < STRMAX)) { |
Deixi | 0:87788df2ae50 | 112 | _str[_index++] = c; |
Deixi | 0:87788df2ae50 | 113 | } |
Deixi | 0:87788df2ae50 | 114 | } |
Deixi | 0:87788df2ae50 | 115 | if(( c == EOT)) { // end: . string not empty |
Deixi | 0:87788df2ae50 | 116 | if(_index >= 1) { |
Deixi | 0:87788df2ae50 | 117 | _strOkFlag = true; |
Deixi | 0:87788df2ae50 | 118 | _str[--_index] = 0; |
Deixi | 0:87788df2ae50 | 119 | } |
Deixi | 0:87788df2ae50 | 120 | } |
Deixi | 0:87788df2ae50 | 121 | } |
Deixi | 0:87788df2ae50 | 122 | |
Deixi | 0:87788df2ae50 | 123 | int SerialEvent::checkFlag() { |
Deixi | 0:87788df2ae50 | 124 | if( _strOkFlag ) { |
Deixi | 0:87788df2ae50 | 125 | _strOkFlag = false; |
Deixi | 0:87788df2ae50 | 126 | return 1; |
Deixi | 0:87788df2ae50 | 127 | } |
Deixi | 0:87788df2ae50 | 128 | return 0; |
Deixi | 0:87788df2ae50 | 129 | } |
Deixi | 0:87788df2ae50 | 130 | //-----------------------------------Zufall-------------------------------------------- |
Deixi | 0:87788df2ae50 | 131 | void gen_random(char *s, const int len) { |
Deixi | 0:87788df2ae50 | 132 | static const char alphanum[] = |
Deixi | 0:87788df2ae50 | 133 | "0123456789" |
Deixi | 0:87788df2ae50 | 134 | "ABCDEFGHIJKLMNOPQRSTUVWXYZ" |
Deixi | 0:87788df2ae50 | 135 | "abcdefghijklmnopqrstuvwxyz"; |
Deixi | 0:87788df2ae50 | 136 | |
Deixi | 0:87788df2ae50 | 137 | for (int i = 0; i < len; ++i) { |
Deixi | 0:87788df2ae50 | 138 | s[i] = alphanum[rand() % (sizeof(alphanum) - 1)]; |
Deixi | 0:87788df2ae50 | 139 | } |
Deixi | 0:87788df2ae50 | 140 | |
Deixi | 0:87788df2ae50 | 141 | s[len] = 0; |
Deixi | 0:87788df2ae50 | 142 | } |
Deixi | 0:87788df2ae50 | 143 | //-----------------------------------STM class------------------------------------------ |
Deixi | 0:87788df2ae50 | 144 | |
Deixi | 0:87788df2ae50 | 145 | class STM { |
Deixi | 0:87788df2ae50 | 146 | public: |
Deixi | 0:87788df2ae50 | 147 | int fails; |
Deixi | 0:87788df2ae50 | 148 | STM() {state = ST_Start; |
Deixi | 0:87788df2ae50 | 149 | fails=0;} |
Deixi | 0:87788df2ae50 | 150 | void start(); |
Deixi | 0:87788df2ae50 | 151 | void auforderung(); |
Deixi | 0:87788df2ae50 | 152 | void eingabe(); |
Deixi | 0:87788df2ae50 | 153 | void timeout(); |
Deixi | 0:87788df2ae50 | 154 | void fail(); |
Deixi | 0:87788df2ae50 | 155 | void erfolg(); |
Deixi | 0:87788df2ae50 | 156 | |
Deixi | 0:87788df2ae50 | 157 | }; |
Deixi | 0:87788df2ae50 | 158 | void STM::start() |
Deixi | 0:87788df2ae50 | 159 | { |
Deixi | 0:87788df2ae50 | 160 | //entry |
Deixi | 0:87788df2ae50 | 161 | //do |
Deixi | 0:87788df2ae50 | 162 | tick1.detach(); |
Deixi | 0:87788df2ae50 | 163 | tick2.detach(); |
Deixi | 0:87788df2ae50 | 164 | tick3.detach(); |
Deixi | 0:87788df2ae50 | 165 | tick4.detach(); |
Deixi | 0:87788df2ae50 | 166 | led[0]=0; |
Deixi | 0:87788df2ae50 | 167 | led[1]=0; |
Deixi | 0:87788df2ae50 | 168 | led[2]=0; |
Deixi | 0:87788df2ae50 | 169 | led[3]=0; |
Deixi | 0:87788df2ae50 | 170 | tick1.attach(&t1, &Blinker::blink, 1.0); |
Deixi | 0:87788df2ae50 | 171 | pc.printf("Das ist ein Begruesungstext -Hallo-\n"); |
Deixi | 0:87788df2ae50 | 172 | pc.printf("Bitte Taste 2 druecken um zu Authentifizieren\n"); |
Deixi | 0:87788df2ae50 | 173 | //exit |
Deixi | 0:87788df2ae50 | 174 | state = ST_Aut; |
Deixi | 0:87788df2ae50 | 175 | } |
Deixi | 0:87788df2ae50 | 176 | void STM::auforderung() |
Deixi | 0:87788df2ae50 | 177 | { |
Deixi | 0:87788df2ae50 | 178 | //entry |
Deixi | 0:87788df2ae50 | 179 | while(true){ |
Deixi | 0:87788df2ae50 | 180 | led[7] = 1; |
Deixi | 0:87788df2ae50 | 181 | if(sw2.CheckFlag()){ |
Deixi | 0:87788df2ae50 | 182 | led[7]=0; |
Deixi | 0:87788df2ae50 | 183 | tick1.detach(); |
Deixi | 0:87788df2ae50 | 184 | tick2.detach(); |
Deixi | 0:87788df2ae50 | 185 | tick3.detach(); |
Deixi | 0:87788df2ae50 | 186 | tick4.detach(); |
Deixi | 0:87788df2ae50 | 187 | led[0]=0; |
Deixi | 0:87788df2ae50 | 188 | led[1]=0; |
Deixi | 0:87788df2ae50 | 189 | led[2]=0; |
Deixi | 0:87788df2ae50 | 190 | led[3]=0; |
Deixi | 0:87788df2ae50 | 191 | tick2.attach(&t2, &Blinker::blink, 0.2); |
Deixi | 0:87788df2ae50 | 192 | state = ST_Eing; |
Deixi | 0:87788df2ae50 | 193 | return; |
Deixi | 0:87788df2ae50 | 194 | } |
Deixi | 0:87788df2ae50 | 195 | } |
Deixi | 0:87788df2ae50 | 196 | //do |
Deixi | 0:87788df2ae50 | 197 | //exit |
Deixi | 0:87788df2ae50 | 198 | } |
Deixi | 0:87788df2ae50 | 199 | void STM::eingabe() |
Deixi | 0:87788df2ae50 | 200 | { |
Deixi | 0:87788df2ae50 | 201 | //entry |
Deixi | 0:87788df2ae50 | 202 | char ghash[27]; |
Deixi | 0:87788df2ae50 | 203 | char ehash[27]; |
Deixi | 0:87788df2ae50 | 204 | bool equal=false; |
Deixi | 0:87788df2ae50 | 205 | //do |
Deixi | 0:87788df2ae50 | 206 | pc.printf("Geben sie diesen Hash ein\n"); |
Deixi | 0:87788df2ae50 | 207 | gen_random(ghash, 5); |
Deixi | 0:87788df2ae50 | 208 | pc.printf("%s\n",ghash); |
Deixi | 0:87788df2ae50 | 209 | timer.start(); |
Deixi | 0:87788df2ae50 | 210 | while(true){ |
Deixi | 0:87788df2ae50 | 211 | if(se.checkFlag()){ |
Deixi | 0:87788df2ae50 | 212 | se.getString(ehash); |
Deixi | 0:87788df2ae50 | 213 | //pc.printf("%s\n",ehash); |
Deixi | 0:87788df2ae50 | 214 | equal = !strcmp(ehash,ghash); |
Deixi | 0:87788df2ae50 | 215 | if(fails==3){ |
Deixi | 0:87788df2ae50 | 216 | state= ST_Out; |
Deixi | 0:87788df2ae50 | 217 | return; |
Deixi | 0:87788df2ae50 | 218 | } |
Deixi | 0:87788df2ae50 | 219 | if (equal){ |
Deixi | 0:87788df2ae50 | 220 | state= ST_Erf; |
Deixi | 0:87788df2ae50 | 221 | return; |
Deixi | 0:87788df2ae50 | 222 | } |
Deixi | 0:87788df2ae50 | 223 | else{ |
Deixi | 0:87788df2ae50 | 224 | state= ST_Fail; |
Deixi | 0:87788df2ae50 | 225 | return; |
Deixi | 0:87788df2ae50 | 226 | } |
Deixi | 0:87788df2ae50 | 227 | } |
Deixi | 0:87788df2ae50 | 228 | } |
Deixi | 0:87788df2ae50 | 229 | //exit |
Deixi | 0:87788df2ae50 | 230 | } |
Deixi | 0:87788df2ae50 | 231 | void STM::timeout() |
Deixi | 0:87788df2ae50 | 232 | { |
Deixi | 0:87788df2ae50 | 233 | //entry |
Deixi | 0:87788df2ae50 | 234 | tick1.detach(); |
Deixi | 0:87788df2ae50 | 235 | tick2.detach(); |
Deixi | 0:87788df2ae50 | 236 | tick3.detach(); |
Deixi | 0:87788df2ae50 | 237 | tick4.detach(); |
Deixi | 0:87788df2ae50 | 238 | led[0]=0; |
Deixi | 0:87788df2ae50 | 239 | led[1]=0; |
Deixi | 0:87788df2ae50 | 240 | led[2]=0; |
Deixi | 0:87788df2ae50 | 241 | led[3]=0; |
Deixi | 0:87788df2ae50 | 242 | fails=0; |
Deixi | 0:87788df2ae50 | 243 | //do |
Deixi | 0:87788df2ae50 | 244 | timer.stop(); |
Deixi | 0:87788df2ae50 | 245 | pc.printf("Nach %f sind die versucheabgelaufen\n", timer.read()); |
Deixi | 0:87788df2ae50 | 246 | tick1.attach(&t1, &Blinker::blink, 0.2); |
Deixi | 0:87788df2ae50 | 247 | tick2.attach(&t2, &Blinker::blink, 0.2); |
Deixi | 0:87788df2ae50 | 248 | tick3.attach(&t3, &Blinker::blink, 0.2); |
Deixi | 0:87788df2ae50 | 249 | tick4.attach(&t4, &Blinker::blink, 0.2); |
Deixi | 0:87788df2ae50 | 250 | //exit |
Deixi | 0:87788df2ae50 | 251 | state =ST_Aut; |
Deixi | 0:87788df2ae50 | 252 | pc.printf("Bitte Taste 2 druecken um zu Authentifizieren\n"); |
Deixi | 0:87788df2ae50 | 253 | } |
Deixi | 0:87788df2ae50 | 254 | void STM::fail() |
Deixi | 0:87788df2ae50 | 255 | { |
Deixi | 0:87788df2ae50 | 256 | //entry |
Deixi | 0:87788df2ae50 | 257 | tick1.detach(); |
Deixi | 0:87788df2ae50 | 258 | tick2.detach(); |
Deixi | 0:87788df2ae50 | 259 | tick3.detach(); |
Deixi | 0:87788df2ae50 | 260 | tick4.detach(); |
Deixi | 0:87788df2ae50 | 261 | led[0]=0; |
Deixi | 0:87788df2ae50 | 262 | led[1]=0; |
Deixi | 0:87788df2ae50 | 263 | led[2]=0; |
Deixi | 0:87788df2ae50 | 264 | led[3]=0; |
Deixi | 0:87788df2ae50 | 265 | //do |
Deixi | 0:87788df2ae50 | 266 | tick1.attach(&t1, &Blinker::blink, 0.1); |
Deixi | 0:87788df2ae50 | 267 | tick2.attach(&t2, &Blinker::blink, 0.1); |
Deixi | 0:87788df2ae50 | 268 | tick3.attach(&t3, &Blinker::blink, 0.1); |
Deixi | 0:87788df2ae50 | 269 | tick4.attach(&t4, &Blinker::blink, 0.1); |
Deixi | 0:87788df2ae50 | 270 | fails+=1; |
Deixi | 0:87788df2ae50 | 271 | //exit |
Deixi | 0:87788df2ae50 | 272 | state = ST_Eing; |
Deixi | 0:87788df2ae50 | 273 | } |
Deixi | 0:87788df2ae50 | 274 | void STM::erfolg() |
Deixi | 0:87788df2ae50 | 275 | { |
Deixi | 0:87788df2ae50 | 276 | //entry |
Deixi | 0:87788df2ae50 | 277 | tick1.detach(); |
Deixi | 0:87788df2ae50 | 278 | tick2.detach(); |
Deixi | 0:87788df2ae50 | 279 | tick3.detach(); |
Deixi | 0:87788df2ae50 | 280 | tick4.detach(); |
Deixi | 0:87788df2ae50 | 281 | led[0]=0; |
Deixi | 0:87788df2ae50 | 282 | led[1]=0; |
Deixi | 0:87788df2ae50 | 283 | led[2]=0; |
Deixi | 0:87788df2ae50 | 284 | led[3]=0; |
Deixi | 0:87788df2ae50 | 285 | char text[27]; |
Deixi | 0:87788df2ae50 | 286 | int Nr=0; |
Deixi | 0:87788df2ae50 | 287 | int length=0; |
Deixi | 0:87788df2ae50 | 288 | char nix; |
Deixi | 0:87788df2ae50 | 289 | fails = 0; |
Deixi | 0:87788df2ae50 | 290 | //do |
Deixi | 0:87788df2ae50 | 291 | timer.stop(); |
Deixi | 0:87788df2ae50 | 292 | pc.printf("Nach %fs wurde eien erfolgreiche Enigabe volzogen\n", timer.read()); |
Deixi | 0:87788df2ae50 | 293 | led[0]=1; |
Deixi | 0:87788df2ae50 | 294 | led[1]=1; |
Deixi | 0:87788df2ae50 | 295 | led[2]=1; |
Deixi | 0:87788df2ae50 | 296 | led[3]=1; |
Deixi | 0:87788df2ae50 | 297 | timer.reset(); |
Deixi | 0:87788df2ae50 | 298 | while(true){ |
Deixi | 0:87788df2ae50 | 299 | if(se.checkFlag()){ |
Deixi | 0:87788df2ae50 | 300 | se.getString(text); |
Deixi | 0:87788df2ae50 | 301 | if(!strcmp(text,"")) |
Deixi | 0:87788df2ae50 | 302 | { |
Deixi | 0:87788df2ae50 | 303 | state = ST_Aut; |
Deixi | 0:87788df2ae50 | 304 | led[0]=0; |
Deixi | 0:87788df2ae50 | 305 | led[1]=0; |
Deixi | 0:87788df2ae50 | 306 | led[2]=0; |
Deixi | 0:87788df2ae50 | 307 | led[3]=0; |
Deixi | 0:87788df2ae50 | 308 | return; |
Deixi | 0:87788df2ae50 | 309 | } |
Deixi | 0:87788df2ae50 | 310 | Nr+=1; |
Deixi | 0:87788df2ae50 | 311 | length=strlen(text); |
Deixi | 0:87788df2ae50 | 312 | pc.printf("%i:%i>%s\n",Nr, length, text); |
Deixi | 0:87788df2ae50 | 313 | length=0; |
Deixi | 0:87788df2ae50 | 314 | } |
Deixi | 0:87788df2ae50 | 315 | } |
Deixi | 0:87788df2ae50 | 316 | |
Deixi | 0:87788df2ae50 | 317 | //exit |
Deixi | 0:87788df2ae50 | 318 | } |
Deixi | 0:87788df2ae50 | 319 | //---------------------------------------Hauptprogramm----------------------------- |
Deixi | 0:87788df2ae50 | 320 | |
Deixi | 0:87788df2ae50 | 321 | STM stm; |
Deixi | 0:87788df2ae50 | 322 | |
Deixi | 0:87788df2ae50 | 323 | void stateMachine(){ |
Deixi | 0:87788df2ae50 | 324 | switch(state) |
Deixi | 0:87788df2ae50 | 325 | { |
Deixi | 0:87788df2ae50 | 326 | case ST_Start: stm.start(); |
Deixi | 0:87788df2ae50 | 327 | break; |
Deixi | 0:87788df2ae50 | 328 | case ST_Aut: stm.auforderung(); |
Deixi | 0:87788df2ae50 | 329 | break; |
Deixi | 0:87788df2ae50 | 330 | case ST_Eing: stm.eingabe(); |
Deixi | 0:87788df2ae50 | 331 | break; |
Deixi | 0:87788df2ae50 | 332 | case ST_Out: stm.timeout(); |
Deixi | 0:87788df2ae50 | 333 | break; |
Deixi | 0:87788df2ae50 | 334 | case ST_Fail: stm.fail(); |
Deixi | 0:87788df2ae50 | 335 | break; |
Deixi | 0:87788df2ae50 | 336 | case ST_Erf: stm.erfolg(); |
Deixi | 0:87788df2ae50 | 337 | break; |
Deixi | 0:87788df2ae50 | 338 | } |
Deixi | 0:87788df2ae50 | 339 | } |
Deixi | 0:87788df2ae50 | 340 | |
Deixi | 0:87788df2ae50 | 341 | int main() { |
Deixi | 0:87788df2ae50 | 342 | sw2.InitIsr(); |
Deixi | 0:87788df2ae50 | 343 | while(1) { |
Deixi | 0:87788df2ae50 | 344 | stateMachine(); |
Deixi | 0:87788df2ae50 | 345 | } |
Deixi | 0:87788df2ae50 | 346 | } |