manu jose
/
backfore
3. An implementation of the system as a foreground0background
Revision 0:a484f149592d, committed 2010-11-30
- Comitter:
- manujose
- Date:
- Tue Nov 30 22:01:32 2010 +0000
- Commit message:
- back ground and foreground the final version
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r a484f149592d main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Nov 30 22:01:32 2010 +0000 @@ -0,0 +1,162 @@ +#include "mbed.h" + +#define ERROR -1 +int touchSense1(void); +int touchSense2(void); +int getTouch(void); +void hostError(void); +void touchError(void); +void runFunction(void); + +DigitalOut myled1(LED1); +DigitalOut myled2(LED3); + +AnalogIn input1(p20); +AnalogIn input2(p15); + +DigitalIn charger1(p19); +DigitalIn charger2(p16); + +DigitalOut ground1(p18); +DigitalOut ground2(p17); +Serial pc(USBTX, USBRX); // tx, rx + +int gInd = 0; +int main() { + pc.attach(runFunction); + while(1) { + if(gInd == 1) + { + pc.printf(" Reached back the main fun\n"); + gInd =0; + } + wait(0.2); + } +} + +void runFunction() { + char A[1024],c='k'; + int len, i, t_bit, h_bit; + gInd = 1; + int err_set ; + pc.printf(" Entering the reading loop\n"); + // if (pc.readable()) { + i = 0; + err_set = 0; + while(c!='S' && pc.readable()) + c = pc.getc(); + + while( (c != 'E') && pc.readable()) + { + if(c != ' ') + { + //if((c == '0') || (c=='1')) + A[i++] = c; + if((i>1) && (c!='0') &&(c!='1')) + { + err_set = 1; + hostError(); + while(pc.readable()) //buffer out rest and return + c=pc.getc(); + return; + } + + } + // pc.printf("READING %c \n",c); + c = pc.getc(); + } + A[i] = c; + A[i+1]='\0'; + while(pc.readable()) //buffer out rest. + c=pc.getc(); + + + //pc.printf("DATA RECV : %s\n",A); + len = strlen(A)-1; //to make it right offset + if ((A[0]!='S') || (A[len] != 'E')) { + hostError(); + return; + } + i = 1; + while (i<len) { + t_bit = getTouch(); + //pc.printf("\n MY TOKEN IS %c and touch is %d\n",A[i],t_bit); + if (A[i] == '0') + h_bit = 0; + else if (A[i] == '1') + h_bit = 1; + + if (t_bit != h_bit) { + touchError(); + return; + } + i++; + } + pc.printf("MATCH\n"); + //} + return; +} + +int getTouch(void) { + int sens; + while (1) { + + sens = 0; + if (touchSense1()) { + wait_ms(5); + while(touchSense1()) + { + // pc.printf("In touchsense1\n"); + sens = 1; + wait_ms(100); + } + if(sens) + return 0; + } + + if (touchSense2()) { + wait_ms(5); + while(touchSense2()) + { + // pc.printf("In touchsense2\n"); + sens = 1; + wait_ms(100); + } + if(sens) + return 1; + } + } +} + +int touchSense1(void) { + float sample; + ground1 = 0; + charger1.mode(PullUp); + charger1.mode(PullNone); + sample=input1.read(); + if (sample < 0.3) { + return 1; + } else { + return 0; + } +} + +int touchSense2(void) { + float sample; + ground2 = 0; + charger2.mode(PullUp); + charger2.mode(PullNone); + sample=input2.read(); + if (sample < 0.3) { + return 1; + } else { + return 0; + } +} + +void hostError() { + pc.printf("HOST ERROR"); +} +void touchError() { + pc.printf("TOUCH ERROR"); +} \ No newline at end of file
diff -r 000000000000 -r a484f149592d mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Nov 30 22:01:32 2010 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/e2ac27c8e93e