test
Dependencies: CameraC1098 FatFileSystem HeptaGPS SDHC_Lib mbed
Fork of CameraC1098_picture by
main.cpp@1:06966e960702, 2012-07-27 (annotated)
- Committer:
- sunifu
- Date:
- Fri Jul 27 14:37:21 2012 +0000
- Revision:
- 1:06966e960702
- Parent:
- 0:94c9a989767f
- Child:
- 2:179f10ab0744
v1.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sunifu | 0:94c9a989767f | 1 | #include "mbed.h" |
sunifu | 0:94c9a989767f | 2 | #include "CameraC1098.h" |
sunifu | 0:94c9a989767f | 3 | #include "SDHCFileSystem.h" |
sunifu | 0:94c9a989767f | 4 | #include "TextLCD.h" |
sunifu | 1:06966e960702 | 5 | |
sunifu | 0:94c9a989767f | 6 | /* |
sunifu | 0:94c9a989767f | 7 | * Definitions. |
sunifu | 0:94c9a989767f | 8 | */ |
sunifu | 0:94c9a989767f | 9 | #define USE_SD_CARD 1 |
sunifu | 0:94c9a989767f | 10 | |
sunifu | 0:94c9a989767f | 11 | /* |
sunifu | 0:94c9a989767f | 12 | * Variables. |
sunifu | 0:94c9a989767f | 13 | */ |
sunifu | 0:94c9a989767f | 14 | static const int CAPTURE_FRAMES = 1; |
sunifu | 0:94c9a989767f | 15 | static char buf[256+1]; |
sunifu | 0:94c9a989767f | 16 | static FILE *fp_jpeg; |
sunifu | 0:94c9a989767f | 17 | |
sunifu | 0:94c9a989767f | 18 | /* |
sunifu | 0:94c9a989767f | 19 | * Modules. |
sunifu | 0:94c9a989767f | 20 | */ |
sunifu | 0:94c9a989767f | 21 | #if USE_SD_CARD |
sunifu | 0:94c9a989767f | 22 | SDFileSystem sd(p5, p6, p7, p8, "fs"); |
sunifu | 0:94c9a989767f | 23 | #else |
sunifu | 0:94c9a989767f | 24 | LocalFileSystem fs("fs"); |
sunifu | 0:94c9a989767f | 25 | #endif |
sunifu | 0:94c9a989767f | 26 | |
sunifu | 0:94c9a989767f | 27 | TextLCD lcd(p24, p26, p27, p28, p29, p30); |
sunifu | 0:94c9a989767f | 28 | CameraC1098 camera(p9, p10); |
sunifu | 0:94c9a989767f | 29 | |
sunifu | 0:94c9a989767f | 30 | |
sunifu | 0:94c9a989767f | 31 | /** |
sunifu | 0:94c9a989767f | 32 | * A callback function for jpeg images. |
sunifu | 0:94c9a989767f | 33 | * You can block this function until saving the image datas. |
sunifu | 0:94c9a989767f | 34 | * |
sunifu | 0:94c9a989767f | 35 | * @param buf A pointer to the image buffer. |
sunifu | 0:94c9a989767f | 36 | * @param siz A size of the image buffer. |
sunifu | 0:94c9a989767f | 37 | */ |
sunifu | 0:94c9a989767f | 38 | void jpeg_callback(char *buf, size_t siz) { |
sunifu | 0:94c9a989767f | 39 | for (int i = 0; i < (int)siz; i++) { |
sunifu | 0:94c9a989767f | 40 | fprintf(fp_jpeg, "%c", buf[i]); |
sunifu | 0:94c9a989767f | 41 | } |
sunifu | 0:94c9a989767f | 42 | } |
sunifu | 0:94c9a989767f | 43 | |
sunifu | 0:94c9a989767f | 44 | /** |
sunifu | 0:94c9a989767f | 45 | * Synchronizing. |
sunifu | 0:94c9a989767f | 46 | */ |
sunifu | 0:94c9a989767f | 47 | void sync(void) { |
sunifu | 0:94c9a989767f | 48 | CameraC1098::ErrorNumber err = CameraC1098::NoError; |
sunifu | 0:94c9a989767f | 49 | |
sunifu | 0:94c9a989767f | 50 | err = camera.sync(); |
sunifu | 0:94c9a989767f | 51 | lcd.locate(0,0); |
sunifu | 0:94c9a989767f | 52 | if (CameraC1098::NoError == err) { |
sunifu | 0:94c9a989767f | 53 | printf("[ OK ] : CameraC1098::sync\r\n"); |
sunifu | 0:94c9a989767f | 54 | lcd.printf("C1098:Sync [OK] "); |
sunifu | 0:94c9a989767f | 55 | |
sunifu | 0:94c9a989767f | 56 | } else { |
sunifu | 0:94c9a989767f | 57 | printf("[FAIL] : CameraC1098::sync (Error=%02X)\r\n", (int)err); |
sunifu | 0:94c9a989767f | 58 | lcd.printf("C1098:Sync[FAIL]"); |
sunifu | 0:94c9a989767f | 59 | } |
sunifu | 0:94c9a989767f | 60 | } |
sunifu | 0:94c9a989767f | 61 | |
sunifu | 0:94c9a989767f | 62 | |
sunifu | 0:94c9a989767f | 63 | /** |
sunifu | 0:94c9a989767f | 64 | * A test function for jpeg snapshot picture. |
sunifu | 0:94c9a989767f | 65 | */ |
sunifu | 0:94c9a989767f | 66 | void test_jpeg_snapshot_picture(int j) { |
sunifu | 0:94c9a989767f | 67 | CameraC1098::ErrorNumber err = CameraC1098::NoError; |
sunifu | 0:94c9a989767f | 68 | for (int i = 0; i < CAPTURE_FRAMES; i++) { |
sunifu | 0:94c9a989767f | 69 | char fname[64]; |
sunifu | 0:94c9a989767f | 70 | snprintf(fname, sizeof(fname), "/fs/jpss%02d-%02d.jpg",i, j); |
sunifu | 0:94c9a989767f | 71 | fp_jpeg = fopen(fname, "w"); |
sunifu | 0:94c9a989767f | 72 | if ( fp_jpeg == NULL ){ |
sunifu | 0:94c9a989767f | 73 | lcd.locate(0,1); |
sunifu | 0:94c9a989767f | 74 | lcd.printf("File Open Fail "); |
sunifu | 0:94c9a989767f | 75 | exit(1); |
sunifu | 0:94c9a989767f | 76 | } |
sunifu | 0:94c9a989767f | 77 | |
sunifu | 0:94c9a989767f | 78 | err = camera.getJpegSnapshotPicture(jpeg_callback); |
sunifu | 0:94c9a989767f | 79 | lcd.locate(0,1); |
sunifu | 0:94c9a989767f | 80 | if (CameraC1098::NoError == err) { |
sunifu | 0:94c9a989767f | 81 | printf("[ OK ] : CameraC1098::getJpegSnapshotPicture\r\n"); |
sunifu | 0:94c9a989767f | 82 | lcd.printf("getJpgPict [OK] "); |
sunifu | 0:94c9a989767f | 83 | } else { |
sunifu | 0:94c9a989767f | 84 | printf("[FAIL] : CameraC1098::getJpegSnapshotPicture (Error=%02X)\r\n", (int)err); |
sunifu | 0:94c9a989767f | 85 | lcd.printf("getJpgPict[FAIL]"); |
sunifu | 0:94c9a989767f | 86 | } |
sunifu | 0:94c9a989767f | 87 | fclose(fp_jpeg); |
sunifu | 0:94c9a989767f | 88 | } |
sunifu | 0:94c9a989767f | 89 | } |
sunifu | 0:94c9a989767f | 90 | |
sunifu | 0:94c9a989767f | 91 | /** |
sunifu | 0:94c9a989767f | 92 | * A entry point. |
sunifu | 0:94c9a989767f | 93 | */ |
sunifu | 0:94c9a989767f | 94 | int main() { |
sunifu | 0:94c9a989767f | 95 | printf("\r\n"); |
sunifu | 0:94c9a989767f | 96 | printf("==========\r\n"); |
sunifu | 0:94c9a989767f | 97 | printf("CameraC1098\r\n"); |
sunifu | 0:94c9a989767f | 98 | printf("==========\r\n"); |
sunifu | 0:94c9a989767f | 99 | CameraC1098::ErrorNumber err = CameraC1098::NoError; |
sunifu | 0:94c9a989767f | 100 | err = camera.init(CameraC1098::Baud460800, CameraC1098::JpegResolution80x64); |
sunifu | 0:94c9a989767f | 101 | |
sunifu | 0:94c9a989767f | 102 | lcd.cls(); |
sunifu | 0:94c9a989767f | 103 | lcd.locate(0,0); |
sunifu | 0:94c9a989767f | 104 | if (CameraC1098::NoError == err) { |
sunifu | 0:94c9a989767f | 105 | printf("[ OK ] : CameraC1098::init\r\n"); |
sunifu | 0:94c9a989767f | 106 | lcd.printf("C1098:init [OK] "); |
sunifu | 0:94c9a989767f | 107 | } else { |
sunifu | 0:94c9a989767f | 108 | printf("[FAIL] : CameraC1098::init (Error=%02X)\r\n", (int)err); |
sunifu | 0:94c9a989767f | 109 | lcd.printf("C1098:init[FAIL]"); |
sunifu | 0:94c9a989767f | 110 | } |
sunifu | 0:94c9a989767f | 111 | sync(); |
sunifu | 0:94c9a989767f | 112 | |
sunifu | 0:94c9a989767f | 113 | test_jpeg_snapshot_picture(1); |
sunifu | 0:94c9a989767f | 114 | err = camera.init(CameraC1098::Baud460800, CameraC1098::JpegResolution160x128); |
sunifu | 0:94c9a989767f | 115 | test_jpeg_snapshot_picture(2); |
sunifu | 0:94c9a989767f | 116 | err = camera.init(CameraC1098::Baud460800, CameraC1098::JpegResolution320x240); |
sunifu | 0:94c9a989767f | 117 | test_jpeg_snapshot_picture(3); |
sunifu | 0:94c9a989767f | 118 | err = camera.init(CameraC1098::Baud460800, CameraC1098::JpegResolution640x480); |
sunifu | 0:94c9a989767f | 119 | test_jpeg_snapshot_picture(4); |
sunifu | 0:94c9a989767f | 120 | |
sunifu | 0:94c9a989767f | 121 | return 0; |
sunifu | 0:94c9a989767f | 122 | } |