CameraC328
Dependents: CameraC328_TestProgram CameraC328_Thresholding Camera_TestProgram_2015 Camera_TestProgram_2015 ... more
CameraC328.h@3:6d3150d4396a, 2010-06-29 (annotated)
- Committer:
- shintamainjp
- Date:
- Tue Jun 29 11:45:53 2010 +0000
- Revision:
- 3:6d3150d4396a
- Parent:
- 2:6a72fcad5c0a
- Child:
- 4:ad06342d4b84
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shintamainjp | 3:6d3150d4396a | 1 | /** |
shintamainjp | 3:6d3150d4396a | 2 | * C328-7640 device driver class |
shintamainjp | 3:6d3150d4396a | 3 | * Reference documents: C328-7640 User Manual v3.0 2004.8.19 |
shintamainjp | 3:6d3150d4396a | 4 | * |
shintamainjp | 3:6d3150d4396a | 5 | * Version 0.0.1 |
shintamainjp | 3:6d3150d4396a | 6 | * |
shintamainjp | 3:6d3150d4396a | 7 | * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems) |
shintamainjp | 3:6d3150d4396a | 8 | * shinta.main.jp@gmail.com |
shintamainjp | 3:6d3150d4396a | 9 | * http://shinta.main.jp/ |
shintamainjp | 3:6d3150d4396a | 10 | */ |
shintamainjp | 3:6d3150d4396a | 11 | |
shintamainjp | 0:7e51c3176eb7 | 12 | #include "mbed.h" |
shintamainjp | 0:7e51c3176eb7 | 13 | |
shintamainjp | 0:7e51c3176eb7 | 14 | class CameraC328 { |
shintamainjp | 0:7e51c3176eb7 | 15 | public: |
shintamainjp | 0:7e51c3176eb7 | 16 | |
shintamainjp | 0:7e51c3176eb7 | 17 | enum ColorType { |
shintamainjp | 0:7e51c3176eb7 | 18 | GrayScale2bit = 0x01, // 2bit for Y only |
shintamainjp | 0:7e51c3176eb7 | 19 | GrayScale4bit = 0x02, // 4bit for Y only |
shintamainjp | 0:7e51c3176eb7 | 20 | GrayScale8bit = 0x03, // 8bit for Y only |
shintamainjp | 0:7e51c3176eb7 | 21 | Color12bit = 0x05, // 444 (RGB) |
shintamainjp | 0:7e51c3176eb7 | 22 | Color16bit = 0x06, // 565 (RGB) |
shintamainjp | 0:7e51c3176eb7 | 23 | Jpeg = 0x07 |
shintamainjp | 0:7e51c3176eb7 | 24 | }; |
shintamainjp | 0:7e51c3176eb7 | 25 | |
shintamainjp | 0:7e51c3176eb7 | 26 | enum RawResolution { |
shintamainjp | 0:7e51c3176eb7 | 27 | RawResolution80x60 = 0x01, |
shintamainjp | 0:7e51c3176eb7 | 28 | RawResolution160x120 = 0x03 |
shintamainjp | 0:7e51c3176eb7 | 29 | }; |
shintamainjp | 0:7e51c3176eb7 | 30 | |
shintamainjp | 0:7e51c3176eb7 | 31 | enum JpegResolution { |
shintamainjp | 0:7e51c3176eb7 | 32 | JpegResolution80x64 = 0x01, |
shintamainjp | 0:7e51c3176eb7 | 33 | JpegResolution160x128 = 0x03, |
shintamainjp | 0:7e51c3176eb7 | 34 | JpegResolution320x240 = 0x05, |
shintamainjp | 0:7e51c3176eb7 | 35 | JpegResolution640x480 = 0x07 |
shintamainjp | 0:7e51c3176eb7 | 36 | }; |
shintamainjp | 0:7e51c3176eb7 | 37 | |
shintamainjp | 0:7e51c3176eb7 | 38 | enum ErrorNumber { |
shintamainjp | 0:7e51c3176eb7 | 39 | NoError = 0x00, |
shintamainjp | 0:7e51c3176eb7 | 40 | PictureTypeError = 0x01, |
shintamainjp | 0:7e51c3176eb7 | 41 | PictureUpScale = 0x02, |
shintamainjp | 0:7e51c3176eb7 | 42 | PictureScaleError = 0x03, |
shintamainjp | 0:7e51c3176eb7 | 43 | UnexpectedReply = 0x04, |
shintamainjp | 0:7e51c3176eb7 | 44 | SendPictureTimeout = 0x05, |
shintamainjp | 0:7e51c3176eb7 | 45 | UnexpectedCommand = 0x06, |
shintamainjp | 0:7e51c3176eb7 | 46 | SramJpegTypeError = 0x07, |
shintamainjp | 0:7e51c3176eb7 | 47 | SramJpegSizeError = 0x08, |
shintamainjp | 0:7e51c3176eb7 | 48 | PictureFormatError = 0x09, |
shintamainjp | 0:7e51c3176eb7 | 49 | PictureSizeError = 0x0a, |
shintamainjp | 0:7e51c3176eb7 | 50 | ParameterError = 0x0b, |
shintamainjp | 0:7e51c3176eb7 | 51 | SendRegisterTimeout = 0x0c, |
shintamainjp | 0:7e51c3176eb7 | 52 | CommandIdError = 0x0d, |
shintamainjp | 0:7e51c3176eb7 | 53 | PictureNotReady = 0x0f, |
shintamainjp | 0:7e51c3176eb7 | 54 | TransferPackageNumberError = 0x10, |
shintamainjp | 0:7e51c3176eb7 | 55 | SetTransferPackageSizeWrong = 0x11, |
shintamainjp | 0:7e51c3176eb7 | 56 | CommandHeaderError = 0xf0, |
shintamainjp | 0:7e51c3176eb7 | 57 | CommandLengthError = 0xf1, |
shintamainjp | 0:7e51c3176eb7 | 58 | SendPictureError = 0xf5, |
shintamainjp | 0:7e51c3176eb7 | 59 | SendCommandError = 0xff |
shintamainjp | 0:7e51c3176eb7 | 60 | }; |
shintamainjp | 0:7e51c3176eb7 | 61 | |
shintamainjp | 0:7e51c3176eb7 | 62 | enum PictureType { |
shintamainjp | 0:7e51c3176eb7 | 63 | SnapshotPicture = 0x01, |
shintamainjp | 0:7e51c3176eb7 | 64 | PreviewPicture = 0x02, |
shintamainjp | 0:7e51c3176eb7 | 65 | JpegPreviewPicture = 0x05 |
shintamainjp | 0:7e51c3176eb7 | 66 | }; |
shintamainjp | 0:7e51c3176eb7 | 67 | |
shintamainjp | 3:6d3150d4396a | 68 | enum SnapshotType { |
shintamainjp | 3:6d3150d4396a | 69 | CompressedPicture = 0x00, |
shintamainjp | 3:6d3150d4396a | 70 | UncompressedPicture = 0x01 |
shintamainjp | 3:6d3150d4396a | 71 | }; |
shintamainjp | 3:6d3150d4396a | 72 | |
shintamainjp | 3:6d3150d4396a | 73 | enum Baud { |
shintamainjp | 3:6d3150d4396a | 74 | Baud7200 = 7200, |
shintamainjp | 3:6d3150d4396a | 75 | Baud9600 = 9600, |
shintamainjp | 3:6d3150d4396a | 76 | Baud14400 = 14400, |
shintamainjp | 3:6d3150d4396a | 77 | Baud19200 = 19200, // Default. |
shintamainjp | 3:6d3150d4396a | 78 | Baud28800 = 28800, |
shintamainjp | 3:6d3150d4396a | 79 | Baud38400 = 38400, |
shintamainjp | 3:6d3150d4396a | 80 | Baud57600 = 57600, |
shintamainjp | 3:6d3150d4396a | 81 | Baud115200 = 115200 |
shintamainjp | 3:6d3150d4396a | 82 | }; |
shintamainjp | 3:6d3150d4396a | 83 | |
shintamainjp | 3:6d3150d4396a | 84 | enum ResetType { |
shintamainjp | 3:6d3150d4396a | 85 | ResetWholeSystem = 0x00, |
shintamainjp | 3:6d3150d4396a | 86 | ResetStateMachines = 0x01 |
shintamainjp | 3:6d3150d4396a | 87 | }; |
shintamainjp | 3:6d3150d4396a | 88 | |
shintamainjp | 3:6d3150d4396a | 89 | enum DataType { |
shintamainjp | 3:6d3150d4396a | 90 | DataTypeSnapshotPicture = 0x01, |
shintamainjp | 3:6d3150d4396a | 91 | DataTypePreviewPicture = 0x02, |
shintamainjp | 3:6d3150d4396a | 92 | DataTypeJpegPreviewPicture = 0x05 |
shintamainjp | 3:6d3150d4396a | 93 | }; |
shintamainjp | 3:6d3150d4396a | 94 | |
shintamainjp | 3:6d3150d4396a | 95 | CameraC328(PinName tx, PinName rx, Baud baud = Baud19200); |
shintamainjp | 3:6d3150d4396a | 96 | |
shintamainjp | 3:6d3150d4396a | 97 | ~CameraC328(); |
shintamainjp | 3:6d3150d4396a | 98 | |
shintamainjp | 0:7e51c3176eb7 | 99 | ErrorNumber sync(); |
shintamainjp | 0:7e51c3176eb7 | 100 | ErrorNumber init(ColorType ct, RawResolution rr, JpegResolution jr); |
shintamainjp | 3:6d3150d4396a | 101 | ErrorNumber getUncompressedSnapshotPicture(void(*func)(size_t done, size_t total, char c)); |
shintamainjp | 3:6d3150d4396a | 102 | ErrorNumber getUncompressedPreviewPicture(void(*func)(size_t done, size_t total, char c)); |
shintamainjp | 0:7e51c3176eb7 | 103 | |
shintamainjp | 0:7e51c3176eb7 | 104 | private: |
shintamainjp | 0:7e51c3176eb7 | 105 | Serial serial; |
shintamainjp | 0:7e51c3176eb7 | 106 | static const int COMMAND_LENGTH = 6; |
shintamainjp | 0:7e51c3176eb7 | 107 | static const int SYNCMAX = 60; |
shintamainjp | 0:7e51c3176eb7 | 108 | |
shintamainjp | 3:6d3150d4396a | 109 | ErrorNumber sendInitial(ColorType ct, RawResolution rr, JpegResolution jr); |
shintamainjp | 3:6d3150d4396a | 110 | ErrorNumber sendGetPicture(PictureType pt); |
shintamainjp | 3:6d3150d4396a | 111 | ErrorNumber sendSnapshot(SnapshotType st, uint16_t skipFrames); |
shintamainjp | 3:6d3150d4396a | 112 | ErrorNumber sendSetPackageSize(uint16_t packageSize); |
shintamainjp | 3:6d3150d4396a | 113 | ErrorNumber sendSetBaudrate(Baud baud); |
shintamainjp | 3:6d3150d4396a | 114 | ErrorNumber sendReset(ResetType rt, bool specialReset); |
shintamainjp | 3:6d3150d4396a | 115 | ErrorNumber sendPowerOff(); |
shintamainjp | 3:6d3150d4396a | 116 | ErrorNumber recvData(DataType *dt, uint32_t *length); |
shintamainjp | 3:6d3150d4396a | 117 | ErrorNumber sendSync(); |
shintamainjp | 3:6d3150d4396a | 118 | ErrorNumber recvSync(); |
shintamainjp | 3:6d3150d4396a | 119 | ErrorNumber sendAck(uint8_t commandId, uint16_t packageId); |
shintamainjp | 3:6d3150d4396a | 120 | ErrorNumber recvAckOrNck(); |
shintamainjp | 0:7e51c3176eb7 | 121 | |
shintamainjp | 3:6d3150d4396a | 122 | bool sendBytes(char *buf, size_t len, int timeout_us = 5000); |
shintamainjp | 3:6d3150d4396a | 123 | bool recvBytes(char *buf, size_t len, int timeout_us = 5000); |
shintamainjp | 3:6d3150d4396a | 124 | bool waitRecv(); |
shintamainjp | 0:7e51c3176eb7 | 125 | }; |