HOme Sheriff And Lamp
Dependencies: CameraC328 HCSR04 SDFileSystem WIZnetInterface mbed
Fork of HoSAL by
rev_Camera.cpp@13:cefc034543a5, 2015-08-13 (annotated)
- Committer:
- uasonice
- Date:
- Thu Aug 13 19:35:01 2015 +0000
- Revision:
- 13:cefc034543a5
- Parent:
- 6:089da4f2fb39
update: web server image view
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
uasonice | 2:3c7526a1893a | 1 | /* |
uasonice | 2:3c7526a1893a | 2 | # coded by revival / uasonice (at) gmail.com |
uasonice | 2:3c7526a1893a | 3 | # DATE: 2015/08/09 / Sun Aug 9 23:55:31 KST 2015 |
uasonice | 2:3c7526a1893a | 4 | # |
uasonice | 2:3c7526a1893a | 5 | # DESCRIPTION: |
uasonice | 2:3c7526a1893a | 6 | # rev Camera utility |
uasonice | 2:3c7526a1893a | 7 | */ |
uasonice | 2:3c7526a1893a | 8 | |
uasonice | 2:3c7526a1893a | 9 | #include "mbed.h" |
uasonice | 2:3c7526a1893a | 10 | #include "CameraC328.h" |
uasonice | 2:3c7526a1893a | 11 | |
uasonice | 2:3c7526a1893a | 12 | #define DEBUG_TYPE 1 |
uasonice | 2:3c7526a1893a | 13 | #define P_ uart.printf |
uasonice | 2:3c7526a1893a | 14 | #include "rev_config.h" |
uasonice | 2:3c7526a1893a | 15 | |
uasonice | 2:3c7526a1893a | 16 | #include "rev_Camera.h" |
uasonice | 2:3c7526a1893a | 17 | |
uasonice | 2:3c7526a1893a | 18 | |
uasonice | 2:3c7526a1893a | 19 | #if defined(USE_CAMERA) |
uasonice | 2:3c7526a1893a | 20 | static FILE *fp_jpeg; |
uasonice | 2:3c7526a1893a | 21 | |
uasonice | 2:3c7526a1893a | 22 | //CameraC328 cam(PA_14, PA_13, CameraC328::Baud14400); |
uasonice | 2:3c7526a1893a | 23 | //CameraC328::JpegResolution camResul; |
uasonice | 2:3c7526a1893a | 24 | |
uasonice | 2:3c7526a1893a | 25 | |
uasonice | 2:3c7526a1893a | 26 | /** |
uasonice | 2:3c7526a1893a | 27 | * A callback function for jpeg images. |
uasonice | 2:3c7526a1893a | 28 | * You can block this function until saving the image datas. |
uasonice | 2:3c7526a1893a | 29 | * |
uasonice | 2:3c7526a1893a | 30 | * @param buf A pointer to the image buffer. |
uasonice | 2:3c7526a1893a | 31 | * @param siz A size of the image buffer. |
uasonice | 2:3c7526a1893a | 32 | */ |
uasonice | 2:3c7526a1893a | 33 | void cb_jpeg(char *buf, size_t szImage) { |
uasonice | 2:3c7526a1893a | 34 | for (int i = 0; i < (int)szImage; i++) { |
uasonice | 2:3c7526a1893a | 35 | fprintf(fp_jpeg, "%c", buf[i]); |
uasonice | 2:3c7526a1893a | 36 | } |
uasonice | 2:3c7526a1893a | 37 | } |
uasonice | 2:3c7526a1893a | 38 | |
uasonice | 2:3c7526a1893a | 39 | /** |
uasonice | 2:3c7526a1893a | 40 | * Synchronizing. |
uasonice | 2:3c7526a1893a | 41 | */ |
uasonice | 3:8c4e0e7c8cea | 42 | void revSync(CameraC328 *pH) { |
uasonice | 2:3c7526a1893a | 43 | CameraC328::ErrorNumber err = CameraC328::NoError; |
uasonice | 2:3c7526a1893a | 44 | |
uasonice | 6:089da4f2fb39 | 45 | if(pH == NULL) return; |
uasonice | 3:8c4e0e7c8cea | 46 | err = pH->sync(); |
uasonice | 2:3c7526a1893a | 47 | if (CameraC328::NoError == err) { |
uasonice | 2:3c7526a1893a | 48 | DM_fLN("[ OK ] : CameraC328::sync"); |
uasonice | 2:3c7526a1893a | 49 | } else { |
uasonice | 2:3c7526a1893a | 50 | DM_fLN("[FAIL] : CameraC328::sync (Error=%02X)", (int)err); |
uasonice | 2:3c7526a1893a | 51 | } |
uasonice | 2:3c7526a1893a | 52 | } |
uasonice | 2:3c7526a1893a | 53 | |
uasonice | 2:3c7526a1893a | 54 | /** |
uasonice | 2:3c7526a1893a | 55 | * jpeg snapshot picture. |
uasonice | 2:3c7526a1893a | 56 | * param strFile: "/fs/file01.jpg" |
uasonice | 2:3c7526a1893a | 57 | * param resol : CameraC328::JpegResolution640x480, CameraC328::JpegResolution320x240 |
uasonice | 2:3c7526a1893a | 58 | */ |
uasonice | 3:8c4e0e7c8cea | 59 | void revJpeg_snapshot(CameraC328 *pH, char *strFile, CameraC328::JpegResolution resol) { |
uasonice | 2:3c7526a1893a | 60 | CameraC328::ErrorNumber err = CameraC328::NoError; |
uasonice | 2:3c7526a1893a | 61 | |
uasonice | 6:089da4f2fb39 | 62 | if(pH == NULL) return; |
uasonice | 3:8c4e0e7c8cea | 63 | err = pH->init(CameraC328::Jpeg, CameraC328::RawResolution80x60, resol); |
uasonice | 2:3c7526a1893a | 64 | if (CameraC328::NoError == err) { |
uasonice | 2:3c7526a1893a | 65 | DM_fLN("[ OK ] : CameraC328::init"); |
uasonice | 2:3c7526a1893a | 66 | } else { |
uasonice | 2:3c7526a1893a | 67 | DM_fLN("[FAIL] : CameraC328::init (Error=%02X)", (int)err); |
uasonice | 2:3c7526a1893a | 68 | } |
uasonice | 2:3c7526a1893a | 69 | |
uasonice | 2:3c7526a1893a | 70 | fp_jpeg = fopen(strFile, "w"); |
uasonice | 3:8c4e0e7c8cea | 71 | err = pH->getJpegSnapshotPicture(cb_jpeg); |
uasonice | 2:3c7526a1893a | 72 | if (CameraC328::NoError == err) { |
uasonice | 2:3c7526a1893a | 73 | DM_fLN("[ OK ] : CameraC328::getJpegPreview"); |
uasonice | 2:3c7526a1893a | 74 | } else { |
uasonice | 2:3c7526a1893a | 75 | DM_fLN("[FAIL] : CameraC328::getJpegPreview (Error=%02X)", (int)err); |
uasonice | 2:3c7526a1893a | 76 | } |
uasonice | 2:3c7526a1893a | 77 | |
uasonice | 2:3c7526a1893a | 78 | fclose(fp_jpeg); |
uasonice | 2:3c7526a1893a | 79 | } |
uasonice | 2:3c7526a1893a | 80 | |
uasonice | 2:3c7526a1893a | 81 | /** |
uasonice | 2:3c7526a1893a | 82 | * jpeg preview picture. |
uasonice | 2:3c7526a1893a | 83 | * param strFile: "/fs/file01.jpg" |
uasonice | 2:3c7526a1893a | 84 | * param resol : CameraC328::JpegResolution640x480, CameraC328::JpegResolution320x240 |
uasonice | 2:3c7526a1893a | 85 | */ |
uasonice | 3:8c4e0e7c8cea | 86 | void revJpeg_preview(CameraC328 *pH, char *strFile, CameraC328::JpegResolution resol) { |
uasonice | 2:3c7526a1893a | 87 | CameraC328::ErrorNumber err = CameraC328::NoError; |
uasonice | 6:089da4f2fb39 | 88 | |
uasonice | 6:089da4f2fb39 | 89 | if(pH == NULL) return; |
uasonice | 3:8c4e0e7c8cea | 90 | err = pH->init(CameraC328::Jpeg, CameraC328::RawResolution80x60, resol); |
uasonice | 2:3c7526a1893a | 91 | if (CameraC328::NoError == err) { |
uasonice | 2:3c7526a1893a | 92 | DM_fLN("[ OK ] : CameraC328::init"); |
uasonice | 2:3c7526a1893a | 93 | } else { |
uasonice | 2:3c7526a1893a | 94 | DM_fLN("[FAIL] : CameraC328::init (Error=%02X)", (int)err); |
uasonice | 2:3c7526a1893a | 95 | } |
uasonice | 2:3c7526a1893a | 96 | |
uasonice | 2:3c7526a1893a | 97 | fp_jpeg = fopen(strFile, "w"); |
uasonice | 2:3c7526a1893a | 98 | |
uasonice | 13:cefc034543a5 | 99 | //err = pH->getJpegPreviewPicture(cb_jpeg); |
uasonice | 13:cefc034543a5 | 100 | err = pH->getJpegSnapshotPicture(cb_jpeg); |
uasonice | 2:3c7526a1893a | 101 | if (CameraC328::NoError == err) { |
uasonice | 2:3c7526a1893a | 102 | DM_fLN("[ OK ] : CameraC328::getJpegPreview"); |
uasonice | 2:3c7526a1893a | 103 | } else { |
uasonice | 2:3c7526a1893a | 104 | DM_fLN("[FAIL] : CameraC328::getJpegPreview (Error=%02X)", (int)err); |
uasonice | 2:3c7526a1893a | 105 | } |
uasonice | 2:3c7526a1893a | 106 | |
uasonice | 2:3c7526a1893a | 107 | fclose(fp_jpeg); |
uasonice | 2:3c7526a1893a | 108 | } |
uasonice | 2:3c7526a1893a | 109 | |
uasonice | 2:3c7526a1893a | 110 | #endif // defined(USE_CAMERA) |
uasonice | 2:3c7526a1893a | 111 |