manu jose
/
backfore
3. An implementation of the system as a foreground0background
main.cpp@0:a484f149592d, 2010-11-30 (annotated)
- Committer:
- manujose
- Date:
- Tue Nov 30 22:01:32 2010 +0000
- Revision:
- 0:a484f149592d
back ground and foreground the final version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
manujose | 0:a484f149592d | 1 | #include "mbed.h" |
manujose | 0:a484f149592d | 2 | |
manujose | 0:a484f149592d | 3 | #define ERROR -1 |
manujose | 0:a484f149592d | 4 | int touchSense1(void); |
manujose | 0:a484f149592d | 5 | int touchSense2(void); |
manujose | 0:a484f149592d | 6 | int getTouch(void); |
manujose | 0:a484f149592d | 7 | void hostError(void); |
manujose | 0:a484f149592d | 8 | void touchError(void); |
manujose | 0:a484f149592d | 9 | void runFunction(void); |
manujose | 0:a484f149592d | 10 | |
manujose | 0:a484f149592d | 11 | DigitalOut myled1(LED1); |
manujose | 0:a484f149592d | 12 | DigitalOut myled2(LED3); |
manujose | 0:a484f149592d | 13 | |
manujose | 0:a484f149592d | 14 | AnalogIn input1(p20); |
manujose | 0:a484f149592d | 15 | AnalogIn input2(p15); |
manujose | 0:a484f149592d | 16 | |
manujose | 0:a484f149592d | 17 | DigitalIn charger1(p19); |
manujose | 0:a484f149592d | 18 | DigitalIn charger2(p16); |
manujose | 0:a484f149592d | 19 | |
manujose | 0:a484f149592d | 20 | DigitalOut ground1(p18); |
manujose | 0:a484f149592d | 21 | DigitalOut ground2(p17); |
manujose | 0:a484f149592d | 22 | Serial pc(USBTX, USBRX); // tx, rx |
manujose | 0:a484f149592d | 23 | |
manujose | 0:a484f149592d | 24 | int gInd = 0; |
manujose | 0:a484f149592d | 25 | int main() { |
manujose | 0:a484f149592d | 26 | pc.attach(runFunction); |
manujose | 0:a484f149592d | 27 | while(1) { |
manujose | 0:a484f149592d | 28 | if(gInd == 1) |
manujose | 0:a484f149592d | 29 | { |
manujose | 0:a484f149592d | 30 | pc.printf(" Reached back the main fun\n"); |
manujose | 0:a484f149592d | 31 | gInd =0; |
manujose | 0:a484f149592d | 32 | } |
manujose | 0:a484f149592d | 33 | wait(0.2); |
manujose | 0:a484f149592d | 34 | } |
manujose | 0:a484f149592d | 35 | } |
manujose | 0:a484f149592d | 36 | |
manujose | 0:a484f149592d | 37 | void runFunction() { |
manujose | 0:a484f149592d | 38 | char A[1024],c='k'; |
manujose | 0:a484f149592d | 39 | int len, i, t_bit, h_bit; |
manujose | 0:a484f149592d | 40 | gInd = 1; |
manujose | 0:a484f149592d | 41 | int err_set ; |
manujose | 0:a484f149592d | 42 | pc.printf(" Entering the reading loop\n"); |
manujose | 0:a484f149592d | 43 | // if (pc.readable()) { |
manujose | 0:a484f149592d | 44 | i = 0; |
manujose | 0:a484f149592d | 45 | err_set = 0; |
manujose | 0:a484f149592d | 46 | while(c!='S' && pc.readable()) |
manujose | 0:a484f149592d | 47 | c = pc.getc(); |
manujose | 0:a484f149592d | 48 | |
manujose | 0:a484f149592d | 49 | while( (c != 'E') && pc.readable()) |
manujose | 0:a484f149592d | 50 | { |
manujose | 0:a484f149592d | 51 | if(c != ' ') |
manujose | 0:a484f149592d | 52 | { |
manujose | 0:a484f149592d | 53 | //if((c == '0') || (c=='1')) |
manujose | 0:a484f149592d | 54 | A[i++] = c; |
manujose | 0:a484f149592d | 55 | if((i>1) && (c!='0') &&(c!='1')) |
manujose | 0:a484f149592d | 56 | { |
manujose | 0:a484f149592d | 57 | err_set = 1; |
manujose | 0:a484f149592d | 58 | hostError(); |
manujose | 0:a484f149592d | 59 | while(pc.readable()) //buffer out rest and return |
manujose | 0:a484f149592d | 60 | c=pc.getc(); |
manujose | 0:a484f149592d | 61 | return; |
manujose | 0:a484f149592d | 62 | } |
manujose | 0:a484f149592d | 63 | |
manujose | 0:a484f149592d | 64 | } |
manujose | 0:a484f149592d | 65 | // pc.printf("READING %c \n",c); |
manujose | 0:a484f149592d | 66 | c = pc.getc(); |
manujose | 0:a484f149592d | 67 | } |
manujose | 0:a484f149592d | 68 | A[i] = c; |
manujose | 0:a484f149592d | 69 | A[i+1]='\0'; |
manujose | 0:a484f149592d | 70 | while(pc.readable()) //buffer out rest. |
manujose | 0:a484f149592d | 71 | c=pc.getc(); |
manujose | 0:a484f149592d | 72 | |
manujose | 0:a484f149592d | 73 | |
manujose | 0:a484f149592d | 74 | //pc.printf("DATA RECV : %s\n",A); |
manujose | 0:a484f149592d | 75 | len = strlen(A)-1; //to make it right offset |
manujose | 0:a484f149592d | 76 | if ((A[0]!='S') || (A[len] != 'E')) { |
manujose | 0:a484f149592d | 77 | hostError(); |
manujose | 0:a484f149592d | 78 | return; |
manujose | 0:a484f149592d | 79 | } |
manujose | 0:a484f149592d | 80 | i = 1; |
manujose | 0:a484f149592d | 81 | while (i<len) { |
manujose | 0:a484f149592d | 82 | t_bit = getTouch(); |
manujose | 0:a484f149592d | 83 | //pc.printf("\n MY TOKEN IS %c and touch is %d\n",A[i],t_bit); |
manujose | 0:a484f149592d | 84 | if (A[i] == '0') |
manujose | 0:a484f149592d | 85 | h_bit = 0; |
manujose | 0:a484f149592d | 86 | else if (A[i] == '1') |
manujose | 0:a484f149592d | 87 | h_bit = 1; |
manujose | 0:a484f149592d | 88 | |
manujose | 0:a484f149592d | 89 | if (t_bit != h_bit) { |
manujose | 0:a484f149592d | 90 | touchError(); |
manujose | 0:a484f149592d | 91 | return; |
manujose | 0:a484f149592d | 92 | } |
manujose | 0:a484f149592d | 93 | i++; |
manujose | 0:a484f149592d | 94 | } |
manujose | 0:a484f149592d | 95 | pc.printf("MATCH\n"); |
manujose | 0:a484f149592d | 96 | //} |
manujose | 0:a484f149592d | 97 | return; |
manujose | 0:a484f149592d | 98 | } |
manujose | 0:a484f149592d | 99 | |
manujose | 0:a484f149592d | 100 | int getTouch(void) { |
manujose | 0:a484f149592d | 101 | int sens; |
manujose | 0:a484f149592d | 102 | while (1) { |
manujose | 0:a484f149592d | 103 | |
manujose | 0:a484f149592d | 104 | sens = 0; |
manujose | 0:a484f149592d | 105 | if (touchSense1()) { |
manujose | 0:a484f149592d | 106 | wait_ms(5); |
manujose | 0:a484f149592d | 107 | while(touchSense1()) |
manujose | 0:a484f149592d | 108 | { |
manujose | 0:a484f149592d | 109 | // pc.printf("In touchsense1\n"); |
manujose | 0:a484f149592d | 110 | sens = 1; |
manujose | 0:a484f149592d | 111 | wait_ms(100); |
manujose | 0:a484f149592d | 112 | } |
manujose | 0:a484f149592d | 113 | if(sens) |
manujose | 0:a484f149592d | 114 | return 0; |
manujose | 0:a484f149592d | 115 | } |
manujose | 0:a484f149592d | 116 | |
manujose | 0:a484f149592d | 117 | if (touchSense2()) { |
manujose | 0:a484f149592d | 118 | wait_ms(5); |
manujose | 0:a484f149592d | 119 | while(touchSense2()) |
manujose | 0:a484f149592d | 120 | { |
manujose | 0:a484f149592d | 121 | // pc.printf("In touchsense2\n"); |
manujose | 0:a484f149592d | 122 | sens = 1; |
manujose | 0:a484f149592d | 123 | wait_ms(100); |
manujose | 0:a484f149592d | 124 | } |
manujose | 0:a484f149592d | 125 | if(sens) |
manujose | 0:a484f149592d | 126 | return 1; |
manujose | 0:a484f149592d | 127 | } |
manujose | 0:a484f149592d | 128 | } |
manujose | 0:a484f149592d | 129 | } |
manujose | 0:a484f149592d | 130 | |
manujose | 0:a484f149592d | 131 | int touchSense1(void) { |
manujose | 0:a484f149592d | 132 | float sample; |
manujose | 0:a484f149592d | 133 | ground1 = 0; |
manujose | 0:a484f149592d | 134 | charger1.mode(PullUp); |
manujose | 0:a484f149592d | 135 | charger1.mode(PullNone); |
manujose | 0:a484f149592d | 136 | sample=input1.read(); |
manujose | 0:a484f149592d | 137 | if (sample < 0.3) { |
manujose | 0:a484f149592d | 138 | return 1; |
manujose | 0:a484f149592d | 139 | } else { |
manujose | 0:a484f149592d | 140 | return 0; |
manujose | 0:a484f149592d | 141 | } |
manujose | 0:a484f149592d | 142 | } |
manujose | 0:a484f149592d | 143 | |
manujose | 0:a484f149592d | 144 | int touchSense2(void) { |
manujose | 0:a484f149592d | 145 | float sample; |
manujose | 0:a484f149592d | 146 | ground2 = 0; |
manujose | 0:a484f149592d | 147 | charger2.mode(PullUp); |
manujose | 0:a484f149592d | 148 | charger2.mode(PullNone); |
manujose | 0:a484f149592d | 149 | sample=input2.read(); |
manujose | 0:a484f149592d | 150 | if (sample < 0.3) { |
manujose | 0:a484f149592d | 151 | return 1; |
manujose | 0:a484f149592d | 152 | } else { |
manujose | 0:a484f149592d | 153 | return 0; |
manujose | 0:a484f149592d | 154 | } |
manujose | 0:a484f149592d | 155 | } |
manujose | 0:a484f149592d | 156 | |
manujose | 0:a484f149592d | 157 | void hostError() { |
manujose | 0:a484f149592d | 158 | pc.printf("HOST ERROR"); |
manujose | 0:a484f149592d | 159 | } |
manujose | 0:a484f149592d | 160 | void touchError() { |
manujose | 0:a484f149592d | 161 | pc.printf("TOUCH ERROR"); |
manujose | 0:a484f149592d | 162 | } |