CameraC328
Dependents: CameraC328_TestProgram CameraC328_Thresholding Camera_TestProgram_2015 Camera_TestProgram_2015 ... more
Diff: main.cpp
- 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;