The receiver's code for Home Security with RF

Dependencies:   Camera_LS_Y201 SDFileSystem Servo hmac_md5 mbed

Committer:
jsobchuk3
Date:
Mon Dec 08 22:42:21 2014 +0000
Revision:
0:bbfc7c781872
ECE 4180 Final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jsobchuk3 0:bbfc7c781872 1 #include "mbed.h"
jsobchuk3 0:bbfc7c781872 2 #include "Camera_LS_Y201.h"
jsobchuk3 0:bbfc7c781872 3 #include "SDFileSystem.h"
jsobchuk3 0:bbfc7c781872 4
jsobchuk3 0:bbfc7c781872 5 #define DEBMSG printf
jsobchuk3 0:bbfc7c781872 6 #define NEWLINE() printf("\r\n")
jsobchuk3 0:bbfc7c781872 7
jsobchuk3 0:bbfc7c781872 8 #define USE_SDCARD 1
jsobchuk3 0:bbfc7c781872 9
jsobchuk3 0:bbfc7c781872 10 #if USE_SDCARD
jsobchuk3 0:bbfc7c781872 11 #define FILENAME "/sd/IMG_%04d.jpg"
jsobchuk3 0:bbfc7c781872 12 SDFileSystem fs(p5, p6, p7, p8, "sd");
jsobchuk3 0:bbfc7c781872 13 #else
jsobchuk3 0:bbfc7c781872 14 #define FILENAME "/local/IMG_%04d.jpg"
jsobchuk3 0:bbfc7c781872 15 LocalFileSystem fs("local");
jsobchuk3 0:bbfc7c781872 16 #endif
jsobchuk3 0:bbfc7c781872 17 Camera_LS_Y201 cam1(p13, p14);
jsobchuk3 0:bbfc7c781872 18
jsobchuk3 0:bbfc7c781872 19 typedef struct work {
jsobchuk3 0:bbfc7c781872 20 FILE *fp;
jsobchuk3 0:bbfc7c781872 21 } work_t;
jsobchuk3 0:bbfc7c781872 22
jsobchuk3 0:bbfc7c781872 23 work_t work;
jsobchuk3 0:bbfc7c781872 24
jsobchuk3 0:bbfc7c781872 25 /**
jsobchuk3 0:bbfc7c781872 26 * Callback function for readJpegFileContent.
jsobchuk3 0:bbfc7c781872 27 *
jsobchuk3 0:bbfc7c781872 28 * @param buf A pointer to a buffer.
jsobchuk3 0:bbfc7c781872 29 * @param siz A size of the buffer.
jsobchuk3 0:bbfc7c781872 30 */
jsobchuk3 0:bbfc7c781872 31 void callback_func(int done, int total, uint8_t *buf, size_t siz) {
jsobchuk3 0:bbfc7c781872 32 fwrite(buf, siz, 1, work.fp);
jsobchuk3 0:bbfc7c781872 33
jsobchuk3 0:bbfc7c781872 34 static int n = 0;
jsobchuk3 0:bbfc7c781872 35 int tmp = done * 100 / total;
jsobchuk3 0:bbfc7c781872 36 if (n != tmp) {
jsobchuk3 0:bbfc7c781872 37 n = tmp;
jsobchuk3 0:bbfc7c781872 38 //DEBMSG("Writing...: %3d%%", n);
jsobchuk3 0:bbfc7c781872 39 //NEWLINE();
jsobchuk3 0:bbfc7c781872 40 }
jsobchuk3 0:bbfc7c781872 41 }
jsobchuk3 0:bbfc7c781872 42
jsobchuk3 0:bbfc7c781872 43 /**
jsobchuk3 0:bbfc7c781872 44 * Capture.
jsobchuk3 0:bbfc7c781872 45 *
jsobchuk3 0:bbfc7c781872 46 * @param cam A pointer to a camera object.
jsobchuk3 0:bbfc7c781872 47 * @param filename The file name.
jsobchuk3 0:bbfc7c781872 48 *
jsobchuk3 0:bbfc7c781872 49 * @return Return 0 if it succeed.
jsobchuk3 0:bbfc7c781872 50 */
jsobchuk3 0:bbfc7c781872 51 int capture(Camera_LS_Y201 *cam, char *filename) {
jsobchuk3 0:bbfc7c781872 52 /*
jsobchuk3 0:bbfc7c781872 53 * Take a picture.
jsobchuk3 0:bbfc7c781872 54 */
jsobchuk3 0:bbfc7c781872 55 if (cam->takePicture() != 0) {
jsobchuk3 0:bbfc7c781872 56 return -1;
jsobchuk3 0:bbfc7c781872 57 }
jsobchuk3 0:bbfc7c781872 58 DEBMSG("Captured.");
jsobchuk3 0:bbfc7c781872 59 NEWLINE();
jsobchuk3 0:bbfc7c781872 60
jsobchuk3 0:bbfc7c781872 61 /*
jsobchuk3 0:bbfc7c781872 62 * Open file.
jsobchuk3 0:bbfc7c781872 63 */
jsobchuk3 0:bbfc7c781872 64 work.fp = fopen(filename, "wb");
jsobchuk3 0:bbfc7c781872 65 if (work.fp == NULL) {
jsobchuk3 0:bbfc7c781872 66 return -2;
jsobchuk3 0:bbfc7c781872 67 }
jsobchuk3 0:bbfc7c781872 68
jsobchuk3 0:bbfc7c781872 69 /*
jsobchuk3 0:bbfc7c781872 70 * Read the content.
jsobchuk3 0:bbfc7c781872 71 */
jsobchuk3 0:bbfc7c781872 72 DEBMSG("%s", filename);
jsobchuk3 0:bbfc7c781872 73 NEWLINE();
jsobchuk3 0:bbfc7c781872 74 if (cam->readJpegFileContent(callback_func) != 0) {
jsobchuk3 0:bbfc7c781872 75 fclose(work.fp);
jsobchuk3 0:bbfc7c781872 76 return -3;
jsobchuk3 0:bbfc7c781872 77 }
jsobchuk3 0:bbfc7c781872 78 fclose(work.fp);
jsobchuk3 0:bbfc7c781872 79
jsobchuk3 0:bbfc7c781872 80 /*
jsobchuk3 0:bbfc7c781872 81 * Stop taking pictures.
jsobchuk3 0:bbfc7c781872 82 */
jsobchuk3 0:bbfc7c781872 83 cam->stopTakingPictures();
jsobchuk3 0:bbfc7c781872 84
jsobchuk3 0:bbfc7c781872 85 return 0;
jsobchuk3 0:bbfc7c781872 86 }
jsobchuk3 0:bbfc7c781872 87
jsobchuk3 0:bbfc7c781872 88 /**
jsobchuk3 0:bbfc7c781872 89 * Entry point.
jsobchuk3 0:bbfc7c781872 90 */
jsobchuk3 0:bbfc7c781872 91 int camInit(void) {
jsobchuk3 0:bbfc7c781872 92 DEBMSG("Camera module");
jsobchuk3 0:bbfc7c781872 93 NEWLINE();
jsobchuk3 0:bbfc7c781872 94 DEBMSG("Resetting...");
jsobchuk3 0:bbfc7c781872 95 NEWLINE();
jsobchuk3 0:bbfc7c781872 96 wait(1);
jsobchuk3 0:bbfc7c781872 97
jsobchuk3 0:bbfc7c781872 98 if (cam1.reset() == 0) {
jsobchuk3 0:bbfc7c781872 99 DEBMSG("Reset OK.");
jsobchuk3 0:bbfc7c781872 100 NEWLINE();
jsobchuk3 0:bbfc7c781872 101 } else {
jsobchuk3 0:bbfc7c781872 102 DEBMSG("Reset fail.");
jsobchuk3 0:bbfc7c781872 103 NEWLINE();
jsobchuk3 0:bbfc7c781872 104 error("Reset fail.");
jsobchuk3 0:bbfc7c781872 105 }
jsobchuk3 0:bbfc7c781872 106 wait(1);
jsobchuk3 0:bbfc7c781872 107 }
jsobchuk3 0:bbfc7c781872 108 int takepic(int cnt) {
jsobchuk3 0:bbfc7c781872 109 //int cnt = 0;
jsobchuk3 0:bbfc7c781872 110 //while (1) {
jsobchuk3 0:bbfc7c781872 111 char fname[64];
jsobchuk3 0:bbfc7c781872 112 snprintf(fname, sizeof(fname) - 1, FILENAME, cnt);
jsobchuk3 0:bbfc7c781872 113 int r = capture(&cam1, fname);
jsobchuk3 0:bbfc7c781872 114 if (r == 0) {
jsobchuk3 0:bbfc7c781872 115 DEBMSG("[%04d]:OK.", cnt);
jsobchuk3 0:bbfc7c781872 116 NEWLINE();
jsobchuk3 0:bbfc7c781872 117 } else {
jsobchuk3 0:bbfc7c781872 118 DEBMSG("[%04d]:NG. (code=%d)", cnt, r);
jsobchuk3 0:bbfc7c781872 119 NEWLINE();
jsobchuk3 0:bbfc7c781872 120 error("Failure.");
jsobchuk3 0:bbfc7c781872 121 }
jsobchuk3 0:bbfc7c781872 122 //cnt++;
jsobchuk3 0:bbfc7c781872 123 //}
jsobchuk3 0:bbfc7c781872 124 return 1;
jsobchuk3 0:bbfc7c781872 125 }