creating server

Dependencies:   EthernetNetIf HTTPServer JPEGCamera RPCInterface mbed

Fork of Gaurd_Server2 by Srinath K

Committer:
rockstar
Date:
Tue Jan 20 19:09:24 2015 +0000
Revision:
4:e35e2a5c2dc7
Parent:
2:80d46ccdc614
Used as it is in my progrm;

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(
rockstar 4:e35e2a5c2dc7 10 IpAddr(192,168,1,10), //IP Address
lotfi_baghli 0:7f9517ce9e71 11 IpAddr(255,255,255,0), //Network Mask
rockstar 4:e35e2a5c2dc7 12 IpAddr(192,168,1,1), //Gateway
rockstar 4:e35e2a5c2dc7 13 IpAddr(192,168,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");
rockstar 4:e35e2a5c2dc7 18 DigitalOut led2(LED2, "led2"); // (signalPin was replaced with led2 as led2 was not being used)
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
rockstar 4:e35e2a5c2dc7 22 DigitalOut pin12(p12); // pin for showing error with camera while taking reference image led4 is also used
SRINATHMADHU 2:80d46ccdc614 23 DigitalOut pin13(p13); // pin for showing error with camera while taking new image
rockstar 4:e35e2a5c2dc7 24
SRINATHMADHU 2:80d46ccdc614 25 DigitalOut pin3(p23); // motor pin from analogVal of sensor
rockstar 4:e35e2a5c2dc7 26 DigitalOut pin30(p30); // buzzer
SRINATHMADHU 2:80d46ccdc614 27 DigitalOut signalPin(p25);
lotfi_baghli 0:7f9517ce9e71 28
SRINATHMADHU 2:80d46ccdc614 29 Serial pc(USBTX,USBRX);
SRINATHMADHU 2:80d46ccdc614 30 Serial xbee(p28, p27); // TX, RX for Xbee
SRINATHMADHU 2:80d46ccdc614 31 JPEGCamera camera(p9, p10); // TX, RX for Camera
lotfi_baghli 0:7f9517ce9e71 32 LocalFileSystem fs("webfs");
rockstar 4:e35e2a5c2dc7 33 char discard=NULL;
rockstar 4:e35e2a5c2dc7 34
rockstar 4:e35e2a5c2dc7 35 void callback(void)
rockstar 4:e35e2a5c2dc7 36 {
rockstar 4:e35e2a5c2dc7 37 if(xbee.getc()==0x7E)
rockstar 4:e35e2a5c2dc7 38 { discard = xbee.getc();
rockstar 4:e35e2a5c2dc7 39 char leng=xbee.getc();
rockstar 4:e35e2a5c2dc7 40 for(int i=1;i<=16;i++) discard = xbee.getc();
rockstar 4:e35e2a5c2dc7 41 int high = xbee.getc();
rockstar 4:e35e2a5c2dc7 42 int low=xbee.getc();
rockstar 4:e35e2a5c2dc7 43 if(leng==0x12)
rockstar 4:e35e2a5c2dc7 44 {
rockstar 4:e35e2a5c2dc7 45 int analogVal = high*256 + low;
rockstar 4:e35e2a5c2dc7 46 pc.printf("High=%d Low=%d AnalogValue= %d\r\n",high,low,analogVal);
rockstar 4:e35e2a5c2dc7 47 char discard= xbee.getc();
rockstar 4:e35e2a5c2dc7 48 /*
rockstar 4:e35e2a5c2dc7 49 if(analogVal<600 && pin3==1)
rockstar 4:e35e2a5c2dc7 50 {
rockstar 4:e35e2a5c2dc7 51 char buff[20]={0x7E,0x00,0x10,0x17,0x01,0x00,0x13,0xA2,0x00,0x40,0xB5,0x92,0x0D,0xFF,0xFE,0x02,0x44,0x33,0x04,0x24}; //FOR SETTING PIN D3 low
rockstar 4:e35e2a5c2dc7 52 for(int i=0;i<20;i++) xbee.putc(buff[i]);
rockstar 4:e35e2a5c2dc7 53 pin3=0; // p25
rockstar 4:e35e2a5c2dc7 54 wait(0.1);
rockstar 4:e35e2a5c2dc7 55 while(xbee.readable()) char discard=xbee.getc();
rockstar 4:e35e2a5c2dc7 56 }
rockstar 4:e35e2a5c2dc7 57 if(analogVal>600 && pin3==0)
rockstar 4:e35e2a5c2dc7 58 {
rockstar 4:e35e2a5c2dc7 59 char buff[20]={0x7E,0x00,0x10,0x17,0x01,0x00,0x13,0xA2,0x00,0x40,0xB5,0x92,0x0D,0xFF,0xFE,0x02,0x44,0x33,0x05,0x23}; //FOR SETTING PIN D3 HIGH
rockstar 4:e35e2a5c2dc7 60 for(int i=0;i<20;i++) xbee.putc(buff[i]);
rockstar 4:e35e2a5c2dc7 61 pin3=1; // p25
rockstar 4:e35e2a5c2dc7 62 wait(0.1);
rockstar 4:e35e2a5c2dc7 63 while(xbee.readable()) char discard=xbee.getc();
rockstar 4:e35e2a5c2dc7 64 } */
rockstar 4:e35e2a5c2dc7 65 }
rockstar 4:e35e2a5c2dc7 66 }
rockstar 4:e35e2a5c2dc7 67 }
SRINATHMADHU 2:80d46ccdc614 68
lotfi_baghli 0:7f9517ce9e71 69 //Create a function of the required format
rockstar 4:e35e2a5c2dc7 70 //void rpcMOTOR(char * input, char * output);
lotfi_baghli 0:7f9517ce9e71 71 void rpcX10rf(char * input, char * output);
rockstar 4:e35e2a5c2dc7 72 //RPCFunction rpc_foo2(&rpcMOTOR, "rpcMOTOR");
lotfi_baghli 0:7f9517ce9e71 73 RPCFunction rpc_foo(&rpcX10rf, "rpcX10rf");
rockstar 4:e35e2a5c2dc7 74 void rpcX10rf(char * input, char * output)
rockstar 4:e35e2a5c2dc7 75 {
SRINATHMADHU 1:574f254ef68c 76 char houseCode;
SRINATHMADHU 1:574f254ef68c 77 short int numberCode, action;
SRINATHMADHU 2:80d46ccdc614 78 pc.printf("%s\r\n", input);
SRINATHMADHU 1:574f254ef68c 79 sscanf(input, " %c,%d,%d", &houseCode, &numberCode, &action);
SRINATHMADHU 2:80d46ccdc614 80 pc.printf("%c, %d,%d\r\n", houseCode, numberCode, action);
rockstar 4:e35e2a5c2dc7 81 if(numberCode==4 && action==1){led1=1;} // 5 replaced 4
rockstar 4:e35e2a5c2dc7 82 else if(numberCode==4 && action==0){led1=0;} // 5 replaced 4
rockstar 4:e35e2a5c2dc7 83 else if(numberCode==2 && action==1){led2=1;}
rockstar 4:e35e2a5c2dc7 84 else if(numberCode==2 && action==0){led2=0;}
rockstar 4:e35e2a5c2dc7 85 else if(numberCode==5 && action==1) // // 4 replaced 5
rockstar 4:e35e2a5c2dc7 86 {
rockstar 4:e35e2a5c2dc7 87
rockstar 4:e35e2a5c2dc7 88 char buff[20]={0x7E,0x00,0x10,0x17,0x01,0x00,0x13,0xA2,0x00,0x40,0xB5,0x92,0x0D,0xFF,0xFE,0x02,0x44,0x33,0x05,0x23}; //FOR SETTING PIN D3 HIGH
rockstar 4:e35e2a5c2dc7 89 for(int i=0;i<20;i++) xbee.putc(buff[i]);
rockstar 4:e35e2a5c2dc7 90 led4=1; // p25
rockstar 4:e35e2a5c2dc7 91 wait(0.1);
rockstar 4:e35e2a5c2dc7 92 while(xbee.readable()) char discard=xbee.getc();
rockstar 4:e35e2a5c2dc7 93
rockstar 4:e35e2a5c2dc7 94 }
rockstar 4:e35e2a5c2dc7 95 else if(numberCode==5 && action==0) // // 4 replaced 5
rockstar 4:e35e2a5c2dc7 96 {
rockstar 4:e35e2a5c2dc7 97
rockstar 4:e35e2a5c2dc7 98 char buff[20]={0x7E,0x00,0x10,0x17,0x01,0x00,0x13,0xA2,0x00,0x40,0xB5,0x92,0x0D,0xFF,0xFE,0x02,0x44,0x33,0x04,0x24}; //FOR SETTING PIN D3 low
rockstar 4:e35e2a5c2dc7 99 for(int i=0;i<20;i++) xbee.putc(buff[i]);
rockstar 4:e35e2a5c2dc7 100 led4=0; // p25
rockstar 4:e35e2a5c2dc7 101 wait(0.1);
rockstar 4:e35e2a5c2dc7 102 while(xbee.readable()) char discard=xbee.getc();
rockstar 4:e35e2a5c2dc7 103
rockstar 4:e35e2a5c2dc7 104 }
rockstar 4:e35e2a5c2dc7 105
rockstar 4:e35e2a5c2dc7 106
rockstar 4:e35e2a5c2dc7 107
rockstar 4:e35e2a5c2dc7 108 }
SRINATHMADHU 2:80d46ccdc614 109
rockstar 4:e35e2a5c2dc7 110
rockstar 4:e35e2a5c2dc7 111 void takeImgRef(void);
rockstar 4:e35e2a5c2dc7 112 void takeNewImage(float x);
rockstar 4:e35e2a5c2dc7 113 void doreset(void);
rockstar 4:e35e2a5c2dc7 114 int Count;
rockstar 4:e35e2a5c2dc7 115 int devicesAction(int Count);
SRINATHMADHU 2:80d46ccdc614 116
SRINATHMADHU 2:80d46ccdc614 117 int main()
SRINATHMADHU 2:80d46ccdc614 118 {
rockstar 4:e35e2a5c2dc7 119 Count=0;
SRINATHMADHU 2:80d46ccdc614 120 Timer tm;
SRINATHMADHU 2:80d46ccdc614 121 pc.baud(9600);
SRINATHMADHU 2:80d46ccdc614 122 xbee.baud(9600);
rockstar 4:e35e2a5c2dc7 123
rockstar 4:e35e2a5c2dc7 124 led2=0; // signalPin was here
rockstar 4:e35e2a5c2dc7 125 signalPin=0; /// changed here
lotfi_baghli 0:7f9517ce9e71 126 Base::add_rpc_class<DigitalOut>();
lotfi_baghli 0:7f9517ce9e71 127 EthernetErr ethErr = eth.setup();
lotfi_baghli 0:7f9517ce9e71 128 if (ethErr) {
SRINATHMADHU 2:80d46ccdc614 129 pc.printf("Error %d in setup.\n", ethErr);
lotfi_baghli 0:7f9517ce9e71 130 return -1;
lotfi_baghli 0:7f9517ce9e71 131 }
SRINATHMADHU 2:80d46ccdc614 132 pc.printf("\r\nSetup OK\r\n");
lotfi_baghli 0:7f9517ce9e71 133
lotfi_baghli 0:7f9517ce9e71 134 FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path
lotfi_baghli 0:7f9517ce9e71 135 FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path
lotfi_baghli 0:7f9517ce9e71 136
lotfi_baghli 0:7f9517ce9e71 137 //svr.addHandler<SimpleHandler>("/hello");
lotfi_baghli 0:7f9517ce9e71 138 svr.addHandler<RPCHandler>("/rpc");
lotfi_baghli 0:7f9517ce9e71 139 svr.addHandler<FSHandler>("/files");
lotfi_baghli 0:7f9517ce9e71 140 svr.addHandler<FSHandler>("/"); //Default handler
lotfi_baghli 0:7f9517ce9e71 141 //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 142 svr.bind(80);
SRINATHMADHU 2:80d46ccdc614 143
SRINATHMADHU 2:80d46ccdc614 144 printf("Server Start and Setting Camera\r\n");
SRINATHMADHU 2:80d46ccdc614 145
SRINATHMADHU 2:80d46ccdc614 146 // camera.reset();
SRINATHMADHU 2:80d46ccdc614 147 // pc.printf("Setting SIZE 320X240");
rockstar 4:e35e2a5c2dc7 148 camera.setPictureSize(JPEGCamera::SIZE320x240);
SRINATHMADHU 2:80d46ccdc614 149 // pc.printf("\nSetting SIZE 320X240 done and Taking reference image\n");
rockstar 4:e35e2a5c2dc7 150 pin12=1;
rockstar 4:e35e2a5c2dc7 151 takeImgRef();
rockstar 4:e35e2a5c2dc7 152 // xbee.attach(&callback);
lotfi_baghli 0:7f9517ce9e71 153 tm.start();
SRINATHMADHU 2:80d46ccdc614 154 // wt.start();
SRINATHMADHU 2:80d46ccdc614 155 while(pc.readable()==0)
rockstar 4:e35e2a5c2dc7 156 { Net::poll();
SRINATHMADHU 2:80d46ccdc614 157 if (tm.read()>.5)
rockstar 4:e35e2a5c2dc7 158 { //led1=!led1; //Show that we are alive
SRINATHMADHU 2:80d46ccdc614 159 tm.reset();
SRINATHMADHU 2:80d46ccdc614 160 }
rockstar 4:e35e2a5c2dc7 161 takeNewImage(tm.read());
rockstar 4:e35e2a5c2dc7 162
rockstar 4:e35e2a5c2dc7 163 // if(pin11==1) doreset();
rockstar 4:e35e2a5c2dc7 164 // if(pin12==1) takeImgRef();
SRINATHMADHU 2:80d46ccdc614 165
rockstar 4:e35e2a5c2dc7 166 if(xbee.readable()) callback();
rockstar 4:e35e2a5c2dc7 167
rockstar 4:e35e2a5c2dc7 168 if (led1==1 && Count==0) //
rockstar 4:e35e2a5c2dc7 169 { pc.printf("Making High");
rockstar 4:e35e2a5c2dc7 170 char buff[20]={0x7E,0x00,0x10,0x17,0x01,0x00,0x13,0xA2,0x00,0x40,0xB5,0x92,0x0D,0xFF,0xFE,0x02,0x44,0x32,0x05,0x24}; //FOR SETTING PIN D2 HIGH
rockstar 4:e35e2a5c2dc7 171
rockstar 4:e35e2a5c2dc7 172 for(int i=0;i<=19;i++) xbee.putc(buff[i]);
rockstar 4:e35e2a5c2dc7 173
rockstar 4:e35e2a5c2dc7 174 wait(0.1);
rockstar 4:e35e2a5c2dc7 175 while(xbee.readable()) {char discard=xbee.getc();Count=1; }
rockstar 4:e35e2a5c2dc7 176
rockstar 4:e35e2a5c2dc7 177 }
rockstar 4:e35e2a5c2dc7 178 if (led1==0 && Count==1) // && Count==1
rockstar 4:e35e2a5c2dc7 179 { pc.printf("Making low");
rockstar 4:e35e2a5c2dc7 180
rockstar 4:e35e2a5c2dc7 181 char buff[20]={0x7E,0x00,0x10,0x17,0x01,0x00,0x13,0xA2,0x00,0x40,0xB5,0x92,0x0D,0xFF,0xFE,0x02,0x44,0x32,0x04,0x25}; //FOR SETTING PIN D2 LOW
rockstar 4:e35e2a5c2dc7 182 for(int i=0;i<=19;i++) xbee.putc(buff[i]);
rockstar 4:e35e2a5c2dc7 183 wait(0.1);
rockstar 4:e35e2a5c2dc7 184 while(xbee.readable()){ char discard=xbee.getc();Count=0;}
rockstar 4:e35e2a5c2dc7 185 }
SRINATHMADHU 2:80d46ccdc614 186 }
SRINATHMADHU 2:80d46ccdc614 187 }
SRINATHMADHU 2:80d46ccdc614 188
rockstar 4:e35e2a5c2dc7 189 void takeNewImage(float x)
rockstar 4:e35e2a5c2dc7 190 { if(signalPin==0 && led2==0) // change was here for led2
rockstar 4:e35e2a5c2dc7 191 {
rockstar 4:e35e2a5c2dc7 192 remove("/webfs/PICT.jpg");
rockstar 4:e35e2a5c2dc7 193 pc.printf("Capturing new image Picture\r\n");
SRINATHMADHU 2:80d46ccdc614 194 // camera.reset();
SRINATHMADHU 2:80d46ccdc614 195 if (camera.isReady())
SRINATHMADHU 2:80d46ccdc614 196 { char filename[32];
SRINATHMADHU 2:80d46ccdc614 197 sprintf(filename, "/webfs/PICT.jpg");
SRINATHMADHU 2:80d46ccdc614 198 pc.printf("Picture: %s \r\n", filename);
SRINATHMADHU 2:80d46ccdc614 199 if (camera.takePicture(filename))
rockstar 4:e35e2a5c2dc7 200 { while (camera.isProcessing()) camera.processPicture();
rockstar 4:e35e2a5c2dc7 201 led4=0;
rockstar 4:e35e2a5c2dc7 202 // led2=1; //change was here
rockstar 4:e35e2a5c2dc7 203 signalPin=1;
rockstar 4:e35e2a5c2dc7 204
rockstar 4:e35e2a5c2dc7 205 } else {pc.printf("take picture failed\n"); led4=1; camera.reset();} // pin13=1;}
rockstar 4:e35e2a5c2dc7 206 }else {pc.printf("camera is not ready\n");led4=1; camera.reset();} // pin13=1;}
rockstar 4:e35e2a5c2dc7 207
rockstar 4:e35e2a5c2dc7 208
SRINATHMADHU 2:80d46ccdc614 209 pc.printf("Took PICT\r\n");
rockstar 4:e35e2a5c2dc7 210 } else { pc.printf("waiting for processing \r\n");
rockstar 4:e35e2a5c2dc7 211 if (x > .2) {led3=!led3;} //Show that waiting for response
SRINATHMADHU 2:80d46ccdc614 212
SRINATHMADHU 2:80d46ccdc614 213 }
SRINATHMADHU 2:80d46ccdc614 214 }
SRINATHMADHU 2:80d46ccdc614 215
SRINATHMADHU 2:80d46ccdc614 216
SRINATHMADHU 2:80d46ccdc614 217
rockstar 4:e35e2a5c2dc7 218 void doreset(void)
SRINATHMADHU 2:80d46ccdc614 219 {
rockstar 4:e35e2a5c2dc7 220 camera.reset();
rockstar 4:e35e2a5c2dc7 221 if(!(camera.isReady()))
rockstar 4:e35e2a5c2dc7 222 doreset();
rockstar 4:e35e2a5c2dc7 223 pin11=0;
SRINATHMADHU 2:80d46ccdc614 224 }
SRINATHMADHU 2:80d46ccdc614 225
SRINATHMADHU 2:80d46ccdc614 226
SRINATHMADHU 2:80d46ccdc614 227
rockstar 4:e35e2a5c2dc7 228 void takeImgRef(void)
SRINATHMADHU 2:80d46ccdc614 229 {
rockstar 4:e35e2a5c2dc7 230 //camera.reset();
SRINATHMADHU 2:80d46ccdc614 231 if (camera.isReady())
SRINATHMADHU 2:80d46ccdc614 232 {
SRINATHMADHU 2:80d46ccdc614 233 char filename[32];
SRINATHMADHU 2:80d46ccdc614 234 sprintf(filename, "/webfs/IMG_REF.jpg");
SRINATHMADHU 2:80d46ccdc614 235 pc.printf("Picture: %s \r\n", filename);
SRINATHMADHU 2:80d46ccdc614 236 if (camera.takePicture(filename))
rockstar 4:e35e2a5c2dc7 237 {while (camera.isProcessing()) camera.processPicture();
rockstar 4:e35e2a5c2dc7 238 pin12=0;
rockstar 4:e35e2a5c2dc7 239 led4=0;
rockstar 4:e35e2a5c2dc7 240 } else {pc.printf("take picture failed\n"); led4=1; camera.reset();}
rockstar 4:e35e2a5c2dc7 241 } else {pc.printf("camera is not ready\n"); led4=1; camera.reset();}
rockstar 4:e35e2a5c2dc7 242
SRINATHMADHU 2:80d46ccdc614 243 pc.printf("Took IMG_REF \r\n");
SRINATHMADHU 2:80d46ccdc614 244
SRINATHMADHU 2:80d46ccdc614 245 }