CameraC328

Dependents:   CameraC328_TestProgram CameraC328_Thresholding Camera_TestProgram_2015 Camera_TestProgram_2015 ... more

Revision:
4:ad06342d4b84
Parent:
3:6d3150d4396a
Child:
6:4749dd1acdd1
--- a/main.cpp	Tue Jun 29 11:45:53 2010 +0000
+++ b/main.cpp	Tue Jun 29 22:55:35 2010 +0000
@@ -1,11 +1,8 @@
 /**
- * C328-7640 device driver test program
+ * C328-7640 device driver class (Version 0.0.2)
  * Reference documents: C328-7640 User Manual v3.0 2004.8.19
  *
- * Version 0.0.1
- *
  * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
- * shinta.main.jp@gmail.com
  * http://shinta.main.jp/
  */
 
@@ -20,11 +17,18 @@
 const int IMG_X = 80;
 const int IMG_Y = 60;
 char buf[IMG_X * IMG_Y * 2];
+FILE *fp_jpeg;
 
-void cbfunc(size_t done, size_t total, char c) {
+void uncompressed_callback(size_t done, size_t total, char c) {
     buf[done - 1] = c;
 }
 
+void jpeg_callback(char *buf, size_t siz) {
+    for (int i = 0; i < (int)siz; i++) {
+        fprintf(fp_jpeg, "%c", buf[i]); 
+    }
+}
+
 void sync(void) {
     CameraC328::ErrorNumber err = CameraC328::NoError;
 
@@ -47,7 +51,7 @@
     }
 
     for (int i = 0; i < 10; i++) {
-        err = camera.getUncompressedSnapshotPicture(cbfunc);
+        err = camera.getUncompressedSnapshotPicture(uncompressed_callback);
         if (CameraC328::NoError == err) {
             serial.printf("[ OK ] : CameraC328::getUncompressedSnapshotPicture\n");
         } else {
@@ -85,7 +89,7 @@
     }
 
     for (int i = 0; i < 10; i++) {
-        err = camera.getUncompressedPreviewPicture(cbfunc);
+        err = camera.getUncompressedPreviewPicture(uncompressed_callback);
         if (CameraC328::NoError == err) {
             serial.printf("[ OK ] : CameraC328::getUncompressedPreviewPicture\n");
         } else {
@@ -112,6 +116,58 @@
     }
 }
 
+void test_jpeg_snapshot_picture(void) {
+    CameraC328::ErrorNumber err = CameraC328::NoError;
+
+    err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution640x480);
+    if (CameraC328::NoError == err) {
+        serial.printf("[ OK ] : CameraC328::init\n");
+    } else {
+        serial.printf("[FAIL] : CameraC328::init (Error=%02X)\n", (int)err);
+    }
+        
+    for (int i = 0; i < 10; i++) {
+        char fname[64];
+        snprintf(fname, sizeof(fname), "/fs/jpss%04d.jpg", i);
+        fp_jpeg = fopen(fname, "w");
+        
+        err = camera.getJpegSnapshotPicture(jpeg_callback);
+        if (CameraC328::NoError == err) {
+            serial.printf("[ OK ] : CameraC328::getJpegSnapshotPicture\n");
+        } else {
+            serial.printf("[FAIL] : CameraC328::getJpegSnapshotPicture (Error=%02X)\n", (int)err);
+        }
+
+        fclose(fp_jpeg);
+    }
+}
+
+void test_jpeg_preview_picture(void) {
+    CameraC328::ErrorNumber err = CameraC328::NoError;
+
+    err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution640x480);
+    if (CameraC328::NoError == err) {
+        serial.printf("[ OK ] : CameraC328::init\n");
+    } else {
+        serial.printf("[FAIL] : CameraC328::init (Error=%02X)\n", (int)err);
+    }
+        
+    for (int i = 0; i < 10; i++) {
+        char fname[64];
+        snprintf(fname, sizeof(fname), "/fs/jppv%04d.jpg", i);
+        fp_jpeg = fopen(fname, "w");
+
+        err = camera.getJpegPreviewPicture(jpeg_callback);
+        if (CameraC328::NoError == err) {
+            serial.printf("[ OK ] : CameraC328::getJpegPreviewPicture\n");
+        } else {
+            serial.printf("[FAIL] : CameraC328::getJpegPreviewPicture (Error=%02X)\n", (int)err);
+        }
+
+        fclose(fp_jpeg);
+    }
+}
+
 int main() {
     serial.baud(19200);
     serial.printf("\n");
@@ -120,8 +176,12 @@
     serial.printf("==========\n");
     
     sync();
+    #if 0
     test_uncompressed_snapshot_picture();
     test_uncompressed_preview_picture();
+    #endif
+    test_jpeg_preview_picture();
+    test_jpeg_snapshot_picture();
 
     while (1) {
         myled1 = 1;