Added fxns

Dependencies:   EthernetNetIf HTTPServer JPEGCamera RPCInterface mbed

Dependents:   Guard_server2

Fork of Gaurd_Server by Srinath K

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?

UserRevisionLine numberNew 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