Henry Herman
/
touchy_fg_bg
None
handler.cpp@0:6ae7b9747a06, 2010-12-01 (annotated)
- Committer:
- henryeherman
- Date:
- Wed Dec 01 03:28:28 2010 +0000
- Revision:
- 0:6ae7b9747a06
A
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
henryeherman | 0:6ae7b9747a06 | 1 | #include "handler.h" |
henryeherman | 0:6ae7b9747a06 | 2 | #include "com.h" |
henryeherman | 0:6ae7b9747a06 | 3 | |
henryeherman | 0:6ae7b9747a06 | 4 | |
henryeherman | 0:6ae7b9747a06 | 5 | |
henryeherman | 0:6ae7b9747a06 | 6 | Handler::Handler(char *nm) { |
henryeherman | 0:6ae7b9747a06 | 7 | name = nm; |
henryeherman | 0:6ae7b9747a06 | 8 | init(); |
henryeherman | 0:6ae7b9747a06 | 9 | stringState=NOTREADY; |
henryeherman | 0:6ae7b9747a06 | 10 | } |
henryeherman | 0:6ae7b9747a06 | 11 | |
henryeherman | 0:6ae7b9747a06 | 12 | |
henryeherman | 0:6ae7b9747a06 | 13 | void Handler::init() { |
henryeherman | 0:6ae7b9747a06 | 14 | #ifdef DEBUGHAND |
henryeherman | 0:6ae7b9747a06 | 15 | com.printf("INIT HANDLER\r\n"); |
henryeherman | 0:6ae7b9747a06 | 16 | #endif |
henryeherman | 0:6ae7b9747a06 | 17 | state = WAITINGON_S; |
henryeherman | 0:6ae7b9747a06 | 18 | resetMatch(); |
henryeherman | 0:6ae7b9747a06 | 19 | } |
henryeherman | 0:6ae7b9747a06 | 20 | |
henryeherman | 0:6ae7b9747a06 | 21 | void Handler::resetMatch() { |
henryeherman | 0:6ae7b9747a06 | 22 | #ifdef DEBUGHAND |
henryeherman | 0:6ae7b9747a06 | 23 | com.printf("RESET MATCH STRING\r\n"); |
henryeherman | 0:6ae7b9747a06 | 24 | #endif |
henryeherman | 0:6ae7b9747a06 | 25 | matchString[0]='\0'; |
henryeherman | 0:6ae7b9747a06 | 26 | pmatchString = matchString; |
henryeherman | 0:6ae7b9747a06 | 27 | } |
henryeherman | 0:6ae7b9747a06 | 28 | |
henryeherman | 0:6ae7b9747a06 | 29 | |
henryeherman | 0:6ae7b9747a06 | 30 | void Handler::run() { |
henryeherman | 0:6ae7b9747a06 | 31 | int c; |
henryeherman | 0:6ae7b9747a06 | 32 | if (!com.readable()) { |
henryeherman | 0:6ae7b9747a06 | 33 | return; |
henryeherman | 0:6ae7b9747a06 | 34 | } |
henryeherman | 0:6ae7b9747a06 | 35 | c = com.getc(); |
henryeherman | 0:6ae7b9747a06 | 36 | |
henryeherman | 0:6ae7b9747a06 | 37 | #ifdef DEBUGHAND |
henryeherman | 0:6ae7b9747a06 | 38 | com.printf("READ CHAR, %c\r\n", c); |
henryeherman | 0:6ae7b9747a06 | 39 | #endif |
henryeherman | 0:6ae7b9747a06 | 40 | |
henryeherman | 0:6ae7b9747a06 | 41 | switch (state) { |
henryeherman | 0:6ae7b9747a06 | 42 | case WAITINGON_S: |
henryeherman | 0:6ae7b9747a06 | 43 | recievedStart(c); |
henryeherman | 0:6ae7b9747a06 | 44 | break; |
henryeherman | 0:6ae7b9747a06 | 45 | case RECIEVING_MATCH: |
henryeherman | 0:6ae7b9747a06 | 46 | processChar(c); |
henryeherman | 0:6ae7b9747a06 | 47 | break; |
henryeherman | 0:6ae7b9747a06 | 48 | default: |
henryeherman | 0:6ae7b9747a06 | 49 | //should not get here |
henryeherman | 0:6ae7b9747a06 | 50 | hostError(); |
henryeherman | 0:6ae7b9747a06 | 51 | break; |
henryeherman | 0:6ae7b9747a06 | 52 | |
henryeherman | 0:6ae7b9747a06 | 53 | } |
henryeherman | 0:6ae7b9747a06 | 54 | } |
henryeherman | 0:6ae7b9747a06 | 55 | |
henryeherman | 0:6ae7b9747a06 | 56 | void Handler::processChar(char c) { |
henryeherman | 0:6ae7b9747a06 | 57 | switch (c) { |
henryeherman | 0:6ae7b9747a06 | 58 | case ONECHR: |
henryeherman | 0:6ae7b9747a06 | 59 | case ZEROCHR: |
henryeherman | 0:6ae7b9747a06 | 60 | recieveMatchString(c); |
henryeherman | 0:6ae7b9747a06 | 61 | #ifdef DEBUGHAND |
henryeherman | 0:6ae7b9747a06 | 62 | com.printf("REC 1 or 0\r\n"); |
henryeherman | 0:6ae7b9747a06 | 63 | #endif |
henryeherman | 0:6ae7b9747a06 | 64 | break; |
henryeherman | 0:6ae7b9747a06 | 65 | case '\r': |
henryeherman | 0:6ae7b9747a06 | 66 | case ' ': |
henryeherman | 0:6ae7b9747a06 | 67 | case '\n': |
henryeherman | 0:6ae7b9747a06 | 68 | //do nothing |
henryeherman | 0:6ae7b9747a06 | 69 | break; |
henryeherman | 0:6ae7b9747a06 | 70 | case ENDCHAR: |
henryeherman | 0:6ae7b9747a06 | 71 | #ifdef DEBUGHAND |
henryeherman | 0:6ae7b9747a06 | 72 | com.printf("REC E\r\n"); |
henryeherman | 0:6ae7b9747a06 | 73 | #endif |
henryeherman | 0:6ae7b9747a06 | 74 | matchStringRecieved(); |
henryeherman | 0:6ae7b9747a06 | 75 | break; |
henryeherman | 0:6ae7b9747a06 | 76 | default: |
henryeherman | 0:6ae7b9747a06 | 77 | hostError(); |
henryeherman | 0:6ae7b9747a06 | 78 | } |
henryeherman | 0:6ae7b9747a06 | 79 | } |
henryeherman | 0:6ae7b9747a06 | 80 | |
henryeherman | 0:6ae7b9747a06 | 81 | |
henryeherman | 0:6ae7b9747a06 | 82 | void Handler::hostError() { |
henryeherman | 0:6ae7b9747a06 | 83 | com.printf(HOSTERROR); |
henryeherman | 0:6ae7b9747a06 | 84 | init(); |
henryeherman | 0:6ae7b9747a06 | 85 | } |
henryeherman | 0:6ae7b9747a06 | 86 | |
henryeherman | 0:6ae7b9747a06 | 87 | void Handler::recieveMatchString(char c) { |
henryeherman | 0:6ae7b9747a06 | 88 | *pmatchString = c; |
henryeherman | 0:6ae7b9747a06 | 89 | pmatchString++; |
henryeherman | 0:6ae7b9747a06 | 90 | } |
henryeherman | 0:6ae7b9747a06 | 91 | |
henryeherman | 0:6ae7b9747a06 | 92 | void Handler::recievedStart(char c) { |
henryeherman | 0:6ae7b9747a06 | 93 | if (c==STARTCHAR) { |
henryeherman | 0:6ae7b9747a06 | 94 | #ifdef DEBUGHAND |
henryeherman | 0:6ae7b9747a06 | 95 | com.printf("REC S\r\n"); |
henryeherman | 0:6ae7b9747a06 | 96 | #endif |
henryeherman | 0:6ae7b9747a06 | 97 | state = RECIEVING_MATCH; |
henryeherman | 0:6ae7b9747a06 | 98 | stringState = NOTREADY; |
henryeherman | 0:6ae7b9747a06 | 99 | resetMatch(); |
henryeherman | 0:6ae7b9747a06 | 100 | } |
henryeherman | 0:6ae7b9747a06 | 101 | } |
henryeherman | 0:6ae7b9747a06 | 102 | |
henryeherman | 0:6ae7b9747a06 | 103 | void Handler::matchStringRecieved() { |
henryeherman | 0:6ae7b9747a06 | 104 | #ifdef DEBUGHAND |
henryeherman | 0:6ae7b9747a06 | 105 | com.printf("COMPLETE\r\n"); |
henryeherman | 0:6ae7b9747a06 | 106 | #endif |
henryeherman | 0:6ae7b9747a06 | 107 | *pmatchString=NULL; |
henryeherman | 0:6ae7b9747a06 | 108 | strcpy(completeMatchString, matchString); |
henryeherman | 0:6ae7b9747a06 | 109 | com.printf("ARMED-%s\r\n",matchString); |
henryeherman | 0:6ae7b9747a06 | 110 | init(); |
henryeherman | 0:6ae7b9747a06 | 111 | stringState=READY; |
henryeherman | 0:6ae7b9747a06 | 112 | } |
henryeherman | 0:6ae7b9747a06 | 113 | |
henryeherman | 0:6ae7b9747a06 | 114 | |
henryeherman | 0:6ae7b9747a06 | 115 | |
henryeherman | 0:6ae7b9747a06 | 116 | bool Handler::isReady() { |
henryeherman | 0:6ae7b9747a06 | 117 | if (stringState==READY) { |
henryeherman | 0:6ae7b9747a06 | 118 | return true; |
henryeherman | 0:6ae7b9747a06 | 119 | } else { |
henryeherman | 0:6ae7b9747a06 | 120 | return false; |
henryeherman | 0:6ae7b9747a06 | 121 | } |
henryeherman | 0:6ae7b9747a06 | 122 | } |
henryeherman | 0:6ae7b9747a06 | 123 | |
henryeherman | 0:6ae7b9747a06 | 124 | char *Handler::getMatchString() { |
henryeherman | 0:6ae7b9747a06 | 125 | return completeMatchString; |
henryeherman | 0:6ae7b9747a06 | 126 | } |