Motion Detected Pictures On a Server
Dependencies: EthernetNetIf mbed HTTPServer Camera_LS_Y201
main.cpp@0:f7337de6da7d, 2011-02-28 (annotated)
- Committer:
- Shruti
- Date:
- Mon Feb 28 20:53:01 2011 +0000
- Revision:
- 0:f7337de6da7d
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Shruti | 0:f7337de6da7d | 1 | #include "mbed.h" |
Shruti | 0:f7337de6da7d | 2 | #include "Camera_LS_Y201.h" |
Shruti | 0:f7337de6da7d | 3 | #include "EthernetNetIf.h" |
Shruti | 0:f7337de6da7d | 4 | #include "HTTPServer.h" |
Shruti | 0:f7337de6da7d | 5 | |
Shruti | 0:f7337de6da7d | 6 | Camera_LS_Y201 cam(p13, p14); |
Shruti | 0:f7337de6da7d | 7 | DigitalOut led1(LED1, "led1"); |
Shruti | 0:f7337de6da7d | 8 | DigitalOut led2(LED2, "led2"); |
Shruti | 0:f7337de6da7d | 9 | DigitalOut led3(LED3, "led3"); |
Shruti | 0:f7337de6da7d | 10 | DigitalOut led4(LED4, "led4"); |
Shruti | 0:f7337de6da7d | 11 | AnalogIn sensor(p20); /*input from analog phidget motion sensor*/ |
Shruti | 0:f7337de6da7d | 12 | |
Shruti | 0:f7337de6da7d | 13 | LocalFileSystem fs("webfs"); /*local filesystem*/ |
Shruti | 0:f7337de6da7d | 14 | |
Shruti | 0:f7337de6da7d | 15 | EthernetNetIf eth; |
Shruti | 0:f7337de6da7d | 16 | HTTPServer svr; |
Shruti | 0:f7337de6da7d | 17 | |
Shruti | 0:f7337de6da7d | 18 | FILE *fp; |
Shruti | 0:f7337de6da7d | 19 | int count =0; |
Shruti | 0:f7337de6da7d | 20 | |
Shruti | 0:f7337de6da7d | 21 | void callback_func(uint8_t *buf, size_t siz) { |
Shruti | 0:f7337de6da7d | 22 | fwrite(buf, siz, 1, fp); |
Shruti | 0:f7337de6da7d | 23 | } |
Shruti | 0:f7337de6da7d | 24 | |
Shruti | 0:f7337de6da7d | 25 | int main(void) { |
Shruti | 0:f7337de6da7d | 26 | |
Shruti | 0:f7337de6da7d | 27 | float level1 , level2 = 1.0; |
Shruti | 0:f7337de6da7d | 28 | |
Shruti | 0:f7337de6da7d | 29 | Base::add_rpc_class<DigitalOut>(); |
Shruti | 0:f7337de6da7d | 30 | |
Shruti | 0:f7337de6da7d | 31 | printf("Setting up...\n"); |
Shruti | 0:f7337de6da7d | 32 | EthernetErr ethErr = eth.setup(); |
Shruti | 0:f7337de6da7d | 33 | if (ethErr) { |
Shruti | 0:f7337de6da7d | 34 | printf("Error %d in setup.\n", ethErr); |
Shruti | 0:f7337de6da7d | 35 | return -1; |
Shruti | 0:f7337de6da7d | 36 | } |
Shruti | 0:f7337de6da7d | 37 | printf("Setup OK\n"); |
Shruti | 0:f7337de6da7d | 38 | |
Shruti | 0:f7337de6da7d | 39 | char test[64]; |
Shruti | 0:f7337de6da7d | 40 | |
Shruti | 0:f7337de6da7d | 41 | wait(1); |
Shruti | 0:f7337de6da7d | 42 | |
Shruti | 0:f7337de6da7d | 43 | printf("reset=%d\n", cam.reset()); |
Shruti | 0:f7337de6da7d | 44 | wait(1); |
Shruti | 0:f7337de6da7d | 45 | |
Shruti | 0:f7337de6da7d | 46 | #if 0 |
Shruti | 0:f7337de6da7d | 47 | printf("setImageSize=%d\n", cam.setImageSize(LS_Y201::ImageSize640x480)); |
Shruti | 0:f7337de6da7d | 48 | wait(1); |
Shruti | 0:f7337de6da7d | 49 | #endif |
Shruti | 0:f7337de6da7d | 50 | |
Shruti | 0:f7337de6da7d | 51 | |
Shruti | 0:f7337de6da7d | 52 | while (count <5) { /*loop to catch five consecutive motions in the form of pictures*/ |
Shruti | 0:f7337de6da7d | 53 | level1 = sensor.read(); |
Shruti | 0:f7337de6da7d | 54 | level2 = (level2 * .8 + level1 * .2); /* running average filter*/ |
Shruti | 0:f7337de6da7d | 55 | printf("value of sensor = %f and value of level2 is = %f \n\r", level1, level2); |
Shruti | 0:f7337de6da7d | 56 | |
Shruti | 0:f7337de6da7d | 57 | if ((level2) < 0.67) { |
Shruti | 0:f7337de6da7d | 58 | |
Shruti | 0:f7337de6da7d | 59 | printf("reset=%d\n", cam.reset()); /*reset after each picture*/ |
Shruti | 0:f7337de6da7d | 60 | wait(1); |
Shruti | 0:f7337de6da7d | 61 | |
Shruti | 0:f7337de6da7d | 62 | char format[] = "/webfs/test%d.jpg"; |
Shruti | 0:f7337de6da7d | 63 | char filename[sizeof(format)+100]; |
Shruti | 0:f7337de6da7d | 64 | sprintf(filename,format,count); |
Shruti | 0:f7337de6da7d | 65 | printf("file name is %s\n", filename); |
Shruti | 0:f7337de6da7d | 66 | fp = fopen(filename,"wb"); |
Shruti | 0:f7337de6da7d | 67 | |
Shruti | 0:f7337de6da7d | 68 | |
Shruti | 0:f7337de6da7d | 69 | |
Shruti | 0:f7337de6da7d | 70 | if (fp == NULL) { |
Shruti | 0:f7337de6da7d | 71 | error("Failure to open a destination file."); |
Shruti | 0:f7337de6da7d | 72 | } |
Shruti | 0:f7337de6da7d | 73 | wait(1); |
Shruti | 0:f7337de6da7d | 74 | |
Shruti | 0:f7337de6da7d | 75 | printf("takePicture=%d\n", cam.takePicture()); /*clicking the picture*/ |
Shruti | 0:f7337de6da7d | 76 | wait(1); |
Shruti | 0:f7337de6da7d | 77 | |
Shruti | 0:f7337de6da7d | 78 | int fs; |
Shruti | 0:f7337de6da7d | 79 | printf("readJpegFileSize=%d\n", cam.readJpegFileSize(&fs)); |
Shruti | 0:f7337de6da7d | 80 | printf("\tFile size = %d\n", fs); |
Shruti | 0:f7337de6da7d | 81 | wait(1); |
Shruti | 0:f7337de6da7d | 82 | |
Shruti | 0:f7337de6da7d | 83 | printf("readJpegFileContent=%d\n", cam.readJpegFileContent(callback_func)); |
Shruti | 0:f7337de6da7d | 84 | wait(1); |
Shruti | 0:f7337de6da7d | 85 | |
Shruti | 0:f7337de6da7d | 86 | fclose(fp); |
Shruti | 0:f7337de6da7d | 87 | |
Shruti | 0:f7337de6da7d | 88 | FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path |
Shruti | 0:f7337de6da7d | 89 | FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path |
Shruti | 0:f7337de6da7d | 90 | svr.addHandler<SimpleHandler>("/hello"); |
Shruti | 0:f7337de6da7d | 91 | svr.addHandler<RPCHandler>("/rpc"); |
Shruti | 0:f7337de6da7d | 92 | svr.addHandler<FSHandler>("/files"); |
Shruti | 0:f7337de6da7d | 93 | svr.addHandler<FSHandler>("/"); //Default handler |
Shruti | 0:f7337de6da7d | 94 | //Example : Access to mbed.htm : http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm |
Shruti | 0:f7337de6da7d | 95 | |
Shruti | 0:f7337de6da7d | 96 | svr.bind(80); |
Shruti | 0:f7337de6da7d | 97 | count++; |
Shruti | 0:f7337de6da7d | 98 | } else { |
Shruti | 0:f7337de6da7d | 99 | printf("no motion"); |
Shruti | 0:f7337de6da7d | 100 | } |
Shruti | 0:f7337de6da7d | 101 | } |
Shruti | 0:f7337de6da7d | 102 | |
Shruti | 0:f7337de6da7d | 103 | |
Shruti | 0:f7337de6da7d | 104 | printf("Listening...\n"); |
Shruti | 0:f7337de6da7d | 105 | |
Shruti | 0:f7337de6da7d | 106 | Timer tm; |
Shruti | 0:f7337de6da7d | 107 | tm.start(); |
Shruti | 0:f7337de6da7d | 108 | //Listen indefinitely |
Shruti | 0:f7337de6da7d | 109 | while (true) { |
Shruti | 0:f7337de6da7d | 110 | Net::poll(); |
Shruti | 0:f7337de6da7d | 111 | if (tm.read()>.5) { |
Shruti | 0:f7337de6da7d | 112 | led1=!led1; //Show that we are alive |
Shruti | 0:f7337de6da7d | 113 | tm.start(); |
Shruti | 0:f7337de6da7d | 114 | } |
Shruti | 0:f7337de6da7d | 115 | } |
Shruti | 0:f7337de6da7d | 116 | |
Shruti | 0:f7337de6da7d | 117 | |
Shruti | 0:f7337de6da7d | 118 | return 0; |
Shruti | 0:f7337de6da7d | 119 | } |
Shruti | 0:f7337de6da7d | 120 | |
Shruti | 0:f7337de6da7d | 121 | |
Shruti | 0:f7337de6da7d | 122 | |
Shruti | 0:f7337de6da7d | 123 | |
Shruti | 0:f7337de6da7d | 124 | |
Shruti | 0:f7337de6da7d | 125 | |
Shruti | 0:f7337de6da7d | 126 | |
Shruti | 0:f7337de6da7d | 127 | |
Shruti | 0:f7337de6da7d | 128 | |
Shruti | 0:f7337de6da7d | 129 | |
Shruti | 0:f7337de6da7d | 130 | |
Shruti | 0:f7337de6da7d | 131 | |
Shruti | 0:f7337de6da7d | 132 |