Added fxns
Dependencies: EthernetNetIf HTTPServer JPEGCamera RPCInterface mbed
Fork of Gaurd_Server by
main.cpp@3:67dfd8ad0a79, 2014-12-27 (annotated)
- Committer:
- SRINATHMADHU
- Date:
- Sat Dec 27 23:50:46 2014 +0000
- Revision:
- 3:67dfd8ad0a79
- Parent:
- 2:80d46ccdc614
Added fxn
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lotfi_baghli | 0:7f9517ce9e71 | 1 | #include "mbed.h" |
lotfi_baghli | 0:7f9517ce9e71 | 2 | #include "EthernetNetIf.h" |
lotfi_baghli | 0:7f9517ce9e71 | 3 | #include "HTTPServer.h" |
lotfi_baghli | 0:7f9517ce9e71 | 4 | #include "RPCFunction.h" |
SRINATHMADHU | 2:80d46ccdc614 | 5 | #include "JPEGCamera.h" |
SRINATHMADHU | 2:80d46ccdc614 | 6 | //#include "rtos.h" |
SRINATHMADHU | 2:80d46ccdc614 | 7 | |
SRINATHMADHU | 2:80d46ccdc614 | 8 | |
lotfi_baghli | 0:7f9517ce9e71 | 9 | EthernetNetIf eth( |
SRINATHMADHU | 1:574f254ef68c | 10 | IpAddr(172,16,20,20), //IP Address |
lotfi_baghli | 0:7f9517ce9e71 | 11 | IpAddr(255,255,255,0), //Network Mask |
SRINATHMADHU | 1:574f254ef68c | 12 | IpAddr(172,16,20,1), //Gateway |
SRINATHMADHU | 1:574f254ef68c | 13 | IpAddr(172,16,1,1) |
lotfi_baghli | 0:7f9517ce9e71 | 14 | ); |
lotfi_baghli | 0:7f9517ce9e71 | 15 | HTTPServer svr; |
lotfi_baghli | 0:7f9517ce9e71 | 16 | |
lotfi_baghli | 0:7f9517ce9e71 | 17 | DigitalOut led1(LED1, "led1"); |
lotfi_baghli | 0:7f9517ce9e71 | 18 | DigitalOut led2(LED2, "led2"); |
lotfi_baghli | 0:7f9517ce9e71 | 19 | DigitalOut led3(LED3, "led3"); |
lotfi_baghli | 0:7f9517ce9e71 | 20 | DigitalOut led4(LED4, "led4"); |
SRINATHMADHU | 2:80d46ccdc614 | 21 | DigitalOut pin11(p11); // pin for resetting |
SRINATHMADHU | 2:80d46ccdc614 | 22 | DigitalOut pin12(p12); // pin for showing error with camera while taking reference image |
SRINATHMADHU | 2:80d46ccdc614 | 23 | DigitalOut pin13(p13); // pin for showing error with camera while taking new image |
SRINATHMADHU | 2:80d46ccdc614 | 24 | DigitalOut pin1(p21); |
SRINATHMADHU | 2:80d46ccdc614 | 25 | DigitalOut pin2(p22); |
SRINATHMADHU | 2:80d46ccdc614 | 26 | DigitalOut pin3(p23); // motor pin from analogVal of sensor |
SRINATHMADHU | 2:80d46ccdc614 | 27 | DigitalOut pin4(p24); // buzzer |
SRINATHMADHU | 2:80d46ccdc614 | 28 | DigitalOut signalPin(p25); |
lotfi_baghli | 0:7f9517ce9e71 | 29 | |
SRINATHMADHU | 2:80d46ccdc614 | 30 | Serial pc(USBTX,USBRX); |
SRINATHMADHU | 2:80d46ccdc614 | 31 | Serial xbee(p28, p27); // TX, RX for Xbee |
SRINATHMADHU | 2:80d46ccdc614 | 32 | JPEGCamera camera(p9, p10); // TX, RX for Camera |
lotfi_baghli | 0:7f9517ce9e71 | 33 | LocalFileSystem fs("webfs"); |
SRINATHMADHU | 2:80d46ccdc614 | 34 | |
lotfi_baghli | 0:7f9517ce9e71 | 35 | //Create a function of the required format |
lotfi_baghli | 0:7f9517ce9e71 | 36 | void rpcX10rf(char * input, char * output); |
lotfi_baghli | 0:7f9517ce9e71 | 37 | RPCFunction rpc_foo(&rpcX10rf, "rpcX10rf"); |
lotfi_baghli | 0:7f9517ce9e71 | 38 | void rpcX10rf(char * input, char * output) { |
SRINATHMADHU | 1:574f254ef68c | 39 | char houseCode; |
SRINATHMADHU | 1:574f254ef68c | 40 | short int numberCode, action; |
SRINATHMADHU | 2:80d46ccdc614 | 41 | pc.printf("%s\r\n", input); |
SRINATHMADHU | 1:574f254ef68c | 42 | sscanf(input, " %c,%d,%d", &houseCode, &numberCode, &action); |
SRINATHMADHU | 2:80d46ccdc614 | 43 | pc.printf("%c, %d,%d\r\n", houseCode, numberCode, action); |
SRINATHMADHU | 1:574f254ef68c | 44 | if(numberCode==1 && action==1){pin1=1;led2=1;} |
SRINATHMADHU | 1:574f254ef68c | 45 | else if(numberCode==1 && action==0){pin1=0;led2=0;} |
SRINATHMADHU | 1:574f254ef68c | 46 | else if(numberCode==2 && action==1){pin2=1;led3=1;} |
SRINATHMADHU | 1:574f254ef68c | 47 | else if(numberCode==2 && action==0){pin2=0;led3=0;} |
SRINATHMADHU | 1:574f254ef68c | 48 | else if(numberCode==3 && action==1){pin3=1;led4=1;} |
SRINATHMADHU | 1:574f254ef68c | 49 | else {pin3=0;led4=0;} |
SRINATHMADHU | 1:574f254ef68c | 50 | } |
SRINATHMADHU | 2:80d46ccdc614 | 51 | |
SRINATHMADHU | 2:80d46ccdc614 | 52 | void callback() { |
SRINATHMADHU | 2:80d46ccdc614 | 53 | // Note: read every byte from the serial to clear the RX interrupt |
SRINATHMADHU | 2:80d46ccdc614 | 54 | char discard; |
SRINATHMADHU | 2:80d46ccdc614 | 55 | if(xbee.getc()==0x7E) |
SRINATHMADHU | 2:80d46ccdc614 | 56 | for(int i=1;i<19;i++) discard = xbee.getc(); |
SRINATHMADHU | 2:80d46ccdc614 | 57 | int high = xbee.getc(); |
SRINATHMADHU | 2:80d46ccdc614 | 58 | int low=xbee.getc(); |
SRINATHMADHU | 2:80d46ccdc614 | 59 | int analogVal= high*256 + low; |
SRINATHMADHU | 2:80d46ccdc614 | 60 | pc.printf("High=%d Low=%d AnalogValue= %d\r\n",high,low,analogVal); |
SRINATHMADHU | 2:80d46ccdc614 | 61 | while(xbee.readable()) discard=xbee.getc(); |
SRINATHMADHU | 2:80d46ccdc614 | 62 | if(analogVal<300) |
SRINATHMADHU | 2:80d46ccdc614 | 63 | pin3=1; // p25 |
SRINATHMADHU | 2:80d46ccdc614 | 64 | else pin3=0; |
SRINATHMADHU | 2:80d46ccdc614 | 65 | |
SRINATHMADHU | 2:80d46ccdc614 | 66 | } |
SRINATHMADHU | 2:80d46ccdc614 | 67 | void doReset_ImgRef(void); |
SRINATHMADHU | 2:80d46ccdc614 | 68 | void takeNewImage(void); |
SRINATHMADHU | 2:80d46ccdc614 | 69 | void checkReset(void); |
SRINATHMADHU | 2:80d46ccdc614 | 70 | |
SRINATHMADHU | 2:80d46ccdc614 | 71 | int main() |
SRINATHMADHU | 2:80d46ccdc614 | 72 | { |
SRINATHMADHU | 2:80d46ccdc614 | 73 | Timer tm; |
SRINATHMADHU | 2:80d46ccdc614 | 74 | pc.baud(9600); |
SRINATHMADHU | 2:80d46ccdc614 | 75 | xbee.baud(9600); |
SRINATHMADHU | 2:80d46ccdc614 | 76 | xbee.attach(&callback); |
SRINATHMADHU | 2:80d46ccdc614 | 77 | signalPin=0; |
SRINATHMADHU | 2:80d46ccdc614 | 78 | |
lotfi_baghli | 0:7f9517ce9e71 | 79 | Base::add_rpc_class<DigitalOut>(); |
lotfi_baghli | 0:7f9517ce9e71 | 80 | EthernetErr ethErr = eth.setup(); |
lotfi_baghli | 0:7f9517ce9e71 | 81 | if (ethErr) { |
SRINATHMADHU | 2:80d46ccdc614 | 82 | pc.printf("Error %d in setup.\n", ethErr); |
lotfi_baghli | 0:7f9517ce9e71 | 83 | return -1; |
lotfi_baghli | 0:7f9517ce9e71 | 84 | } |
SRINATHMADHU | 2:80d46ccdc614 | 85 | pc.printf("\r\nSetup OK\r\n"); |
lotfi_baghli | 0:7f9517ce9e71 | 86 | |
lotfi_baghli | 0:7f9517ce9e71 | 87 | FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path |
lotfi_baghli | 0:7f9517ce9e71 | 88 | FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path |
lotfi_baghli | 0:7f9517ce9e71 | 89 | |
lotfi_baghli | 0:7f9517ce9e71 | 90 | //svr.addHandler<SimpleHandler>("/hello"); |
lotfi_baghli | 0:7f9517ce9e71 | 91 | svr.addHandler<RPCHandler>("/rpc"); |
lotfi_baghli | 0:7f9517ce9e71 | 92 | svr.addHandler<FSHandler>("/files"); |
lotfi_baghli | 0:7f9517ce9e71 | 93 | svr.addHandler<FSHandler>("/"); //Default handler |
lotfi_baghli | 0:7f9517ce9e71 | 94 | //Example : Access to mbed.htm : http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm |
lotfi_baghli | 0:7f9517ce9e71 | 95 | svr.bind(80); |
SRINATHMADHU | 2:80d46ccdc614 | 96 | |
SRINATHMADHU | 2:80d46ccdc614 | 97 | printf("Server Start and Setting Camera\r\n"); |
SRINATHMADHU | 2:80d46ccdc614 | 98 | |
SRINATHMADHU | 2:80d46ccdc614 | 99 | // camera.reset(); |
SRINATHMADHU | 2:80d46ccdc614 | 100 | // pc.printf("Setting SIZE 320X240"); |
SRINATHMADHU | 2:80d46ccdc614 | 101 | camera.setPictureSize(JPEGCamera::SIZE160x120); |
SRINATHMADHU | 2:80d46ccdc614 | 102 | // pc.printf("\nSetting SIZE 320X240 done and Taking reference image\n"); |
lotfi_baghli | 0:7f9517ce9e71 | 103 | |
SRINATHMADHU | 2:80d46ccdc614 | 104 | doReset_ImgRef(); |
lotfi_baghli | 0:7f9517ce9e71 | 105 | |
lotfi_baghli | 0:7f9517ce9e71 | 106 | tm.start(); |
SRINATHMADHU | 2:80d46ccdc614 | 107 | // wt.start(); |
SRINATHMADHU | 2:80d46ccdc614 | 108 | while(pc.readable()==0) |
SRINATHMADHU | 2:80d46ccdc614 | 109 | { Net::poll(); |
SRINATHMADHU | 2:80d46ccdc614 | 110 | if (tm.read()>.5) |
SRINATHMADHU | 2:80d46ccdc614 | 111 | { led1=!led1; //Show that we are alive |
SRINATHMADHU | 2:80d46ccdc614 | 112 | tm.reset(); |
SRINATHMADHU | 2:80d46ccdc614 | 113 | } |
SRINATHMADHU | 2:80d46ccdc614 | 114 | takeNewImage(); |
SRINATHMADHU | 2:80d46ccdc614 | 115 | checkReset(); |
SRINATHMADHU | 2:80d46ccdc614 | 116 | |
SRINATHMADHU | 2:80d46ccdc614 | 117 | } |
SRINATHMADHU | 2:80d46ccdc614 | 118 | } |
SRINATHMADHU | 2:80d46ccdc614 | 119 | |
SRINATHMADHU | 2:80d46ccdc614 | 120 | void takeNewImage(void) |
SRINATHMADHU | 2:80d46ccdc614 | 121 | { Timer wt; |
SRINATHMADHU | 2:80d46ccdc614 | 122 | wt.start(); |
SRINATHMADHU | 2:80d46ccdc614 | 123 | if(signalPin==0) |
SRINATHMADHU | 2:80d46ccdc614 | 124 | { pc.printf("Capturing new image Picture\r\n"); |
SRINATHMADHU | 2:80d46ccdc614 | 125 | // camera.reset(); |
SRINATHMADHU | 2:80d46ccdc614 | 126 | if (camera.isReady()) |
SRINATHMADHU | 2:80d46ccdc614 | 127 | { char filename[32]; |
SRINATHMADHU | 2:80d46ccdc614 | 128 | sprintf(filename, "/webfs/PICT.jpg"); |
SRINATHMADHU | 2:80d46ccdc614 | 129 | pc.printf("Picture: %s \r\n", filename); |
SRINATHMADHU | 2:80d46ccdc614 | 130 | if (camera.takePicture(filename)) |
SRINATHMADHU | 2:80d46ccdc614 | 131 | { while (camera.isProcessing()) camera.processPicture(); |
SRINATHMADHU | 2:80d46ccdc614 | 132 | } else {pc.printf("take picture failed\n"); led4=1;} // pin13=1;} |
SRINATHMADHU | 2:80d46ccdc614 | 133 | }else {pc.printf("camera is not ready\n");led4=1;} // pin13=1;} |
SRINATHMADHU | 2:80d46ccdc614 | 134 | led4=0; // pin13=0; |
SRINATHMADHU | 2:80d46ccdc614 | 135 | pc.printf("Took PICT\r\n"); |
SRINATHMADHU | 2:80d46ccdc614 | 136 | signalPin=1; |
SRINATHMADHU | 2:80d46ccdc614 | 137 | } else {pc.printf("waiting for processing \r\n"); |
SRINATHMADHU | 2:80d46ccdc614 | 138 | if (wt.read() > .5) {led3=!led3; wt.reset();} //Show that waiting for response |
SRINATHMADHU | 2:80d46ccdc614 | 139 | |
SRINATHMADHU | 2:80d46ccdc614 | 140 | } |
SRINATHMADHU | 2:80d46ccdc614 | 141 | } |
SRINATHMADHU | 2:80d46ccdc614 | 142 | |
SRINATHMADHU | 2:80d46ccdc614 | 143 | |
SRINATHMADHU | 2:80d46ccdc614 | 144 | |
SRINATHMADHU | 2:80d46ccdc614 | 145 | void checkReset(void) |
SRINATHMADHU | 2:80d46ccdc614 | 146 | { |
SRINATHMADHU | 2:80d46ccdc614 | 147 | if(pin11==1) {doReset_ImgRef();} |
SRINATHMADHU | 2:80d46ccdc614 | 148 | if(pin12==1) checkReset(); |
SRINATHMADHU | 2:80d46ccdc614 | 149 | else pin11=0; |
SRINATHMADHU | 2:80d46ccdc614 | 150 | } |
SRINATHMADHU | 2:80d46ccdc614 | 151 | |
SRINATHMADHU | 2:80d46ccdc614 | 152 | |
SRINATHMADHU | 2:80d46ccdc614 | 153 | |
SRINATHMADHU | 2:80d46ccdc614 | 154 | void doReset_ImgRef(void) |
SRINATHMADHU | 2:80d46ccdc614 | 155 | { |
SRINATHMADHU | 2:80d46ccdc614 | 156 | camera.reset(); |
SRINATHMADHU | 2:80d46ccdc614 | 157 | if (camera.isReady()) |
SRINATHMADHU | 2:80d46ccdc614 | 158 | { |
SRINATHMADHU | 2:80d46ccdc614 | 159 | char filename[32]; |
SRINATHMADHU | 2:80d46ccdc614 | 160 | sprintf(filename, "/webfs/IMG_REF.jpg"); |
SRINATHMADHU | 2:80d46ccdc614 | 161 | pc.printf("Picture: %s \r\n", filename); |
SRINATHMADHU | 2:80d46ccdc614 | 162 | if (camera.takePicture(filename)) |
SRINATHMADHU | 2:80d46ccdc614 | 163 | {while (camera.isProcessing()) camera.processPicture(); |
SRINATHMADHU | 2:80d46ccdc614 | 164 | } else {pc.printf("take picture failed\n"); pin12=1;} |
SRINATHMADHU | 2:80d46ccdc614 | 165 | } else {pc.printf("camera is not ready\n"); pin12=1;} |
SRINATHMADHU | 2:80d46ccdc614 | 166 | pin12=0; |
SRINATHMADHU | 2:80d46ccdc614 | 167 | pc.printf("Took IMG_REF \r\n"); |
SRINATHMADHU | 2:80d46ccdc614 | 168 | |
SRINATHMADHU | 2:80d46ccdc614 | 169 | } |
SRINATHMADHU | 2:80d46ccdc614 | 170 | |
SRINATHMADHU | 2:80d46ccdc614 | 171 | |
SRINATHMADHU | 2:80d46ccdc614 | 172 | |
SRINATHMADHU | 2:80d46ccdc614 | 173 | |
SRINATHMADHU | 2:80d46ccdc614 | 174 | |
SRINATHMADHU | 2:80d46ccdc614 | 175 |