Dependencies:   mbed

Committer:
mitesh2patel
Date:
Tue Dec 14 13:27:41 2010 +0000
Revision:
1:78aaadfd1ece
Parent:
0:162e214baa3d

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mitesh2patel 0:162e214baa3d 1 /**
mitesh2patel 0:162e214baa3d 2 * Test program.
mitesh2patel 0:162e214baa3d 3 *
mitesh2patel 0:162e214baa3d 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
mitesh2patel 0:162e214baa3d 5 * http://shinta.main.jp/
mitesh2patel 0:162e214baa3d 6 */
mitesh2patel 0:162e214baa3d 7
mitesh2patel 0:162e214baa3d 8 #include "mbed.h"
mitesh2patel 0:162e214baa3d 9 #include "CameraC328.h"
mitesh2patel 0:162e214baa3d 10
mitesh2patel 0:162e214baa3d 11 DigitalIn pir(p6);
mitesh2patel 0:162e214baa3d 12 DigitalOut led(LED1);
mitesh2patel 0:162e214baa3d 13
mitesh2patel 0:162e214baa3d 14 //InterruptIn PIR(p6);
mitesh2patel 0:162e214baa3d 15
mitesh2patel 0:162e214baa3d 16 LocalFileSystem fs ("fs");
mitesh2patel 0:162e214baa3d 17
mitesh2patel 0:162e214baa3d 18 CameraC328 camera(p9, p10, CameraC328::Baud115200);
mitesh2patel 0:162e214baa3d 19 const int IMG_X = 80;
mitesh2patel 0:162e214baa3d 20 const int IMG_Y = 60;
mitesh2patel 0:162e214baa3d 21 char buf[IMG_X * IMG_Y * 2];
mitesh2patel 0:162e214baa3d 22 FILE *fp_jpeg;
mitesh2patel 0:162e214baa3d 23
mitesh2patel 0:162e214baa3d 24 void uncompressed_callback(size_t done, size_t total, char c) {
mitesh2patel 0:162e214baa3d 25 buf[done - 1] = c;
mitesh2patel 0:162e214baa3d 26 }
mitesh2patel 0:162e214baa3d 27
mitesh2patel 0:162e214baa3d 28 void jpeg_callback(char *buf, size_t siz) {
mitesh2patel 0:162e214baa3d 29 for (int i = 0; i < (int)siz; i++) {
mitesh2patel 0:162e214baa3d 30 fprintf(fp_jpeg, "%c", buf[i]);
mitesh2patel 0:162e214baa3d 31 }
mitesh2patel 0:162e214baa3d 32 }
mitesh2patel 0:162e214baa3d 33 void sync(void) {
mitesh2patel 0:162e214baa3d 34 CameraC328::ErrorNumber err = CameraC328::NoError;
mitesh2patel 0:162e214baa3d 35
mitesh2patel 0:162e214baa3d 36 err = camera.sync();
mitesh2patel 0:162e214baa3d 37 if (CameraC328::NoError == err) {
mitesh2patel 0:162e214baa3d 38 printf("[ OK ] : CameraC328::sync\n");
mitesh2patel 0:162e214baa3d 39 } else {
mitesh2patel 0:162e214baa3d 40 printf("[FAIL] : CameraC328::sync (Error=%02X)\n", (int)err);
mitesh2patel 0:162e214baa3d 41
mitesh2patel 0:162e214baa3d 42 }
mitesh2patel 0:162e214baa3d 43 }
mitesh2patel 0:162e214baa3d 44
mitesh2patel 0:162e214baa3d 45 void test_uncompressed_snapshot_picture(void) {
mitesh2patel 0:162e214baa3d 46 CameraC328::ErrorNumber err = CameraC328::NoError;
mitesh2patel 0:162e214baa3d 47
mitesh2patel 0:162e214baa3d 48 err = camera.init(CameraC328::Color16bit, CameraC328::RawResolution80x60, CameraC328::JpegResolution160x128);
mitesh2patel 0:162e214baa3d 49 if (CameraC328::NoError == err) {
mitesh2patel 0:162e214baa3d 50 printf("[ OK ] : CameraC328::init\n");
mitesh2patel 0:162e214baa3d 51 } else {
mitesh2patel 0:162e214baa3d 52 printf("[FAIL] : CameraC328::init (Error=%02X)\n", (int)err);
mitesh2patel 0:162e214baa3d 53 }
mitesh2patel 0:162e214baa3d 54
mitesh2patel 0:162e214baa3d 55 for (int i = 0; i < 1; i++) {
mitesh2patel 0:162e214baa3d 56 err = camera.getUncompressedSnapshotPicture(uncompressed_callback);
mitesh2patel 0:162e214baa3d 57 if (CameraC328::NoError == err) {
mitesh2patel 0:162e214baa3d 58 printf("[ OK ] : CameraC328::getUncompressedSnapshotPicture\n");
mitesh2patel 0:162e214baa3d 59 } else {
mitesh2patel 0:162e214baa3d 60 printf("[FAIL] : CameraC328::getUncompressedSnapshotPicture (Error=%02X)\n", (int)err);
mitesh2patel 0:162e214baa3d 61 }
mitesh2patel 0:162e214baa3d 62
mitesh2patel 0:162e214baa3d 63 char fname[64];
mitesh2patel 0:162e214baa3d 64 snprintf(fname, sizeof(fname), "/fs/ucss%04d.ppm", i);
mitesh2patel 0:162e214baa3d 65 FILE *fp = fopen(fname, "w");
mitesh2patel 0:162e214baa3d 66 fprintf(fp, "P3\n");
mitesh2patel 0:162e214baa3d 67 fprintf(fp, "%d %d\n", IMG_X, IMG_Y);
mitesh2patel 0:162e214baa3d 68 fprintf(fp, "%d\n", 255);
mitesh2patel 0:162e214baa3d 69 for (int y = 0; y < IMG_Y; y++) {
mitesh2patel 0:162e214baa3d 70 for (int x = 0; x < IMG_X; x++) {
mitesh2patel 0:162e214baa3d 71 int adrofs = y * (IMG_X * 2) + (x * 2);
mitesh2patel 0:162e214baa3d 72 uint16_t dat = (buf[adrofs + 0] << 8) | (buf[adrofs + 1] << 0);
mitesh2patel 0:162e214baa3d 73 uint8_t r = ((dat >> 11) & 0x1f) << 3;
mitesh2patel 0:162e214baa3d 74 uint8_t g = ((dat >> 5) & 0x3f) << 2;
mitesh2patel 0:162e214baa3d 75 uint8_t b = ((dat >> 0) & 0x1f) << 3;
mitesh2patel 0:162e214baa3d 76 fprintf(fp,"%d %d %d\n", r, g, b);
mitesh2patel 0:162e214baa3d 77 }
mitesh2patel 0:162e214baa3d 78 }
mitesh2patel 0:162e214baa3d 79 fclose(fp);
mitesh2patel 0:162e214baa3d 80 }
mitesh2patel 0:162e214baa3d 81 }
mitesh2patel 0:162e214baa3d 82
mitesh2patel 0:162e214baa3d 83 void test_uncompressed_preview_picture(void) {
mitesh2patel 0:162e214baa3d 84 CameraC328::ErrorNumber err = CameraC328::NoError;
mitesh2patel 0:162e214baa3d 85
mitesh2patel 0:162e214baa3d 86 err = camera.init(CameraC328::Color16bit, CameraC328::RawResolution80x60, CameraC328::JpegResolution160x128);
mitesh2patel 0:162e214baa3d 87 if (CameraC328::NoError == err) {
mitesh2patel 0:162e214baa3d 88 printf("[ OK ] : CameraC328::init\n");
mitesh2patel 0:162e214baa3d 89 } else {
mitesh2patel 0:162e214baa3d 90 printf("[FAIL] : CameraC328::init (Error=%02X)\n", (int)err);
mitesh2patel 0:162e214baa3d 91 }
mitesh2patel 0:162e214baa3d 92
mitesh2patel 0:162e214baa3d 93 for (int i = 0; i < 1; i++) {
mitesh2patel 0:162e214baa3d 94 err = camera.getUncompressedPreviewPicture(uncompressed_callback);
mitesh2patel 0:162e214baa3d 95 if (CameraC328::NoError == err) {
mitesh2patel 0:162e214baa3d 96 printf("[ OK ] : CameraC328::getUncompressedPreviewPicture\n");
mitesh2patel 0:162e214baa3d 97 } else {
mitesh2patel 0:162e214baa3d 98 printf("[FAIL] : CameraC328::getUncompressedPreviewPicture (Error=%02X)\n", (int)err);
mitesh2patel 0:162e214baa3d 99 }
mitesh2patel 0:162e214baa3d 100
mitesh2patel 0:162e214baa3d 101 char fname[64];
mitesh2patel 0:162e214baa3d 102 snprintf(fname, sizeof(fname), "/fs/ucpv%04d.ppm", i);
mitesh2patel 0:162e214baa3d 103 FILE *fp = fopen(fname, "w");
mitesh2patel 0:162e214baa3d 104 fprintf(fp, "P3\n");
mitesh2patel 0:162e214baa3d 105 fprintf(fp, "%d %d\n", IMG_X, IMG_Y);
mitesh2patel 0:162e214baa3d 106 fprintf(fp, "%d\n", 255);
mitesh2patel 0:162e214baa3d 107 for (int y = 0; y < IMG_Y; y++) {
mitesh2patel 0:162e214baa3d 108 for (int x = 0; x < IMG_X; x++) {
mitesh2patel 0:162e214baa3d 109 int adrofs = y * (IMG_X * 2) + (x * 2);
mitesh2patel 0:162e214baa3d 110 uint16_t dat = (buf[adrofs + 0] << 8) | (buf[adrofs + 1] << 0);
mitesh2patel 0:162e214baa3d 111 uint8_t r = ((dat >> 11) & 0x1f) << 3;
mitesh2patel 0:162e214baa3d 112 uint8_t g = ((dat >> 5) & 0x3f) << 2;
mitesh2patel 0:162e214baa3d 113 uint8_t b = ((dat >> 0) & 0x1f) << 3;
mitesh2patel 0:162e214baa3d 114 fprintf(fp,"%d %d %d\n", r, g, b);
mitesh2patel 0:162e214baa3d 115 }
mitesh2patel 0:162e214baa3d 116 }
mitesh2patel 0:162e214baa3d 117 fclose(fp);
mitesh2patel 0:162e214baa3d 118 }
mitesh2patel 0:162e214baa3d 119 }
mitesh2patel 0:162e214baa3d 120
mitesh2patel 0:162e214baa3d 121 void test_jpeg_snapshot_picture(void) {
mitesh2patel 0:162e214baa3d 122 CameraC328::ErrorNumber err = CameraC328::NoError;
mitesh2patel 0:162e214baa3d 123
mitesh2patel 0:162e214baa3d 124 err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution160x120, CameraC328::JpegResolution640x480);
mitesh2patel 0:162e214baa3d 125 if (CameraC328::NoError == err) {
mitesh2patel 0:162e214baa3d 126 printf("[ OK ] : CameraC328::init\n");
mitesh2patel 0:162e214baa3d 127 } else {
mitesh2patel 0:162e214baa3d 128 printf("[FAIL] : CameraC328::init (Error=%02X)\n", (int)err);
mitesh2patel 0:162e214baa3d 129 }
mitesh2patel 0:162e214baa3d 130
mitesh2patel 0:162e214baa3d 131 for (int i = 0; i < 1; i++) {
mitesh2patel 0:162e214baa3d 132 char fname[64];
mitesh2patel 0:162e214baa3d 133 snprintf(fname, sizeof(fname), "/fs/jpss%04d.jpg", i);
mitesh2patel 0:162e214baa3d 134 fp_jpeg = fopen(fname, "w");
mitesh2patel 0:162e214baa3d 135
mitesh2patel 0:162e214baa3d 136 err = camera.getJpegSnapshotPicture(jpeg_callback);
mitesh2patel 0:162e214baa3d 137 if (CameraC328::NoError == err) {
mitesh2patel 0:162e214baa3d 138 printf("[ OK ] : CameraC328::getJpegSnapshotPicture\n");
mitesh2patel 0:162e214baa3d 139 } else {
mitesh2patel 0:162e214baa3d 140 printf("[FAIL] : CameraC328::getJpegSnapshotPicture (Error=%02X)\n", (int)err);
mitesh2patel 0:162e214baa3d 141 }
mitesh2patel 0:162e214baa3d 142
mitesh2patel 0:162e214baa3d 143 fclose(fp_jpeg);
mitesh2patel 0:162e214baa3d 144 }
mitesh2patel 0:162e214baa3d 145 }
mitesh2patel 0:162e214baa3d 146
mitesh2patel 0:162e214baa3d 147 void test_jpeg_preview_picture(void) {
mitesh2patel 0:162e214baa3d 148 // sync();
mitesh2patel 0:162e214baa3d 149 CameraC328::ErrorNumber err = CameraC328::NoError;
mitesh2patel 0:162e214baa3d 150
mitesh2patel 0:162e214baa3d 151 err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution160x120, CameraC328::JpegResolution640x480);
mitesh2patel 0:162e214baa3d 152 if (CameraC328::NoError == err) {
mitesh2patel 0:162e214baa3d 153 printf("[ OK ] : CameraC328::init\n");
mitesh2patel 0:162e214baa3d 154 } else {
mitesh2patel 0:162e214baa3d 155 printf("[FAIL] : CameraC328::init (Error=%02X)\n", (int)err);
mitesh2patel 0:162e214baa3d 156 }
mitesh2patel 0:162e214baa3d 157
mitesh2patel 0:162e214baa3d 158 for (int i = 0; i < 1; i++) {
mitesh2patel 0:162e214baa3d 159 char fname[64];
mitesh2patel 0:162e214baa3d 160 snprintf(fname, sizeof(fname), "/fs/jppv%04d.jpg", i);
mitesh2patel 0:162e214baa3d 161 fp_jpeg = fopen(fname, "w");
mitesh2patel 0:162e214baa3d 162
mitesh2patel 0:162e214baa3d 163
mitesh2patel 0:162e214baa3d 164 err = camera.getJpegPreviewPicture(jpeg_callback);
mitesh2patel 0:162e214baa3d 165 if (CameraC328::NoError == err) {
mitesh2patel 0:162e214baa3d 166 printf("[ OK ] : CameraC328::getJpegPreviewPicture\n");
mitesh2patel 0:162e214baa3d 167 } else {
mitesh2patel 0:162e214baa3d 168 printf("[FAIL] : CameraC328::getJpegPreviewPicture (Error=%02X)\n", (int)err);
mitesh2patel 0:162e214baa3d 169 }
mitesh2patel 0:162e214baa3d 170
mitesh2patel 0:162e214baa3d 171
mitesh2patel 0:162e214baa3d 172
mitesh2patel 0:162e214baa3d 173
mitesh2patel 0:162e214baa3d 174 fclose(fp_jpeg);
mitesh2patel 0:162e214baa3d 175
mitesh2patel 0:162e214baa3d 176 FILE *fp = fopen("/fs/pic.htm", "w"); // Open local filename
mitesh2patel 0:162e214baa3d 177 fprintf(fp, "<title> cam test page </title>\n");
mitesh2patel 0:162e214baa3d 178 fprintf(fp, "<body> cam test page ");
mitesh2patel 0:162e214baa3d 179 fprintf(fp,"<div id='my_area' align='center'>");
mitesh2patel 1:78aaadfd1ece 180 fprintf(fp, "<IMG SRC='JPPV0000.jpg'>");
mitesh2patel 0:162e214baa3d 181 fprintf(fp, " </body>\n");
mitesh2patel 0:162e214baa3d 182 fprintf(fp, "</a>");
mitesh2patel 0:162e214baa3d 183 fclose(fp);
mitesh2patel 0:162e214baa3d 184
mitesh2patel 0:162e214baa3d 185 }
mitesh2patel 0:162e214baa3d 186 }
mitesh2patel 0:162e214baa3d 187
mitesh2patel 0:162e214baa3d 188 /*void INTR_handler() {
mitesh2patel 0:162e214baa3d 189 sync();
mitesh2patel 0:162e214baa3d 190
mitesh2patel 0:162e214baa3d 191 test_jpeg_preview_picture();
mitesh2patel 0:162e214baa3d 192 }*/
mitesh2patel 0:162e214baa3d 193
mitesh2patel 0:162e214baa3d 194 int main() {
mitesh2patel 0:162e214baa3d 195
mitesh2patel 0:162e214baa3d 196 printf("CameraC328\n");
mitesh2patel 0:162e214baa3d 197
mitesh2patel 0:162e214baa3d 198
mitesh2patel 0:162e214baa3d 199 //PIR.rise(&INTR_handler);
mitesh2patel 0:162e214baa3d 200
mitesh2patel 0:162e214baa3d 201 sync();
mitesh2patel 0:162e214baa3d 202
mitesh2patel 0:162e214baa3d 203 while(1){
mitesh2patel 0:162e214baa3d 204 //printf("CameraC328\n\r");
mitesh2patel 0:162e214baa3d 205 // sync();
mitesh2patel 0:162e214baa3d 206
mitesh2patel 0:162e214baa3d 207 // test_jpeg_preview_picture();
mitesh2patel 0:162e214baa3d 208 // test_uncompressed_preview_picture();
mitesh2patel 0:162e214baa3d 209 // test_uncompressed_snapshot_picture();
mitesh2patel 0:162e214baa3d 210 //test_jpeg_snapshot_picture();
mitesh2patel 0:162e214baa3d 211 if(pir==1){
mitesh2patel 0:162e214baa3d 212 printf("somebody detected\n");
mitesh2patel 0:162e214baa3d 213
mitesh2patel 0:162e214baa3d 214 sync();
mitesh2patel 0:162e214baa3d 215 test_jpeg_preview_picture();
mitesh2patel 0:162e214baa3d 216
mitesh2patel 0:162e214baa3d 217
mitesh2patel 0:162e214baa3d 218
mitesh2patel 0:162e214baa3d 219
mitesh2patel 0:162e214baa3d 220 }
mitesh2patel 0:162e214baa3d 221 led=!led;
mitesh2patel 0:162e214baa3d 222 wait(0.5);
mitesh2patel 0:162e214baa3d 223
mitesh2patel 0:162e214baa3d 224 }
mitesh2patel 0:162e214baa3d 225
mitesh2patel 0:162e214baa3d 226
mitesh2patel 0:162e214baa3d 227 return 0;
mitesh2patel 0:162e214baa3d 228 }