test

Fork of CameraC1098 by Tadao Iida

Committer:
hepta2ume
Date:
Thu Aug 03 04:28:14 2017 +0000
Revision:
1:135493341acc
Parent:
0:5a6468b4164d
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sunifu 0:5a6468b4164d 1 /**
sunifu 0:5a6468b4164d 2 * C1098-SS device driver class (Version 1.0)
sunifu 0:5a6468b4164d 3 * Reference documents: C1098-SS User Manual v1.0 2012.5.6
sunifu 0:5a6468b4164d 4 *
sunifu 0:5a6468b4164d 5 * CameraC328Library
sunifu 0:5a6468b4164d 6 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
sunifu 0:5a6468b4164d 7 * http://shinta.main.jp/
sunifu 0:5a6468b4164d 8 *
sunifu 0:5a6468b4164d 9 * CameraC1098-SS Library
sunifu 0:5a6468b4164d 10 * Copyright (C) 2012 Tadao Iida
sunifu 0:5a6468b4164d 11 */
sunifu 0:5a6468b4164d 12
sunifu 0:5a6468b4164d 13 #include "mbed.h"
sunifu 0:5a6468b4164d 14 #include "SerialBuffered.h"
sunifu 0:5a6468b4164d 15
sunifu 0:5a6468b4164d 16 #ifndef _CAMERA_C1098_H_
sunifu 0:5a6468b4164d 17 #define _CAMERA_C1098_H_
sunifu 0:5a6468b4164d 18
sunifu 0:5a6468b4164d 19 /*
sunifu 0:5a6468b4164d 20 * Class: CameraC1098
sunifu 0:5a6468b4164d 21 */
sunifu 0:5a6468b4164d 22
sunifu 0:5a6468b4164d 23 class CameraC1098 {
sunifu 0:5a6468b4164d 24 public:
sunifu 0:5a6468b4164d 25
sunifu 0:5a6468b4164d 26 /**
sunifu 0:5a6468b4164d 27 * @enum JPEG resolution.
sunifu 0:5a6468b4164d 28 */
sunifu 0:5a6468b4164d 29 enum JpegResolution {
sunifu 0:5a6468b4164d 30 JpegResolution80x64 = 0x01, // unofficial
sunifu 0:5a6468b4164d 31 JpegResolution160x128 = 0x03, // unofficial
sunifu 0:5a6468b4164d 32 JpegResolution320x240 = 0x05, // QVGA
sunifu 0:5a6468b4164d 33 JpegResolution640x480 = 0x07 // VGA
sunifu 0:5a6468b4164d 34 };
sunifu 0:5a6468b4164d 35
sunifu 0:5a6468b4164d 36 /**
sunifu 0:5a6468b4164d 37 * @enum Error number.
sunifu 0:5a6468b4164d 38 */
sunifu 0:5a6468b4164d 39 enum ErrorNumber {
sunifu 0:5a6468b4164d 40 NoError = 0x00,
sunifu 0:5a6468b4164d 41 UnexpectedReply = 0x04,
sunifu 0:5a6468b4164d 42 ParameterError = 0x0b,
sunifu 0:5a6468b4164d 43 SendRegisterTimeout = 0x0c,
sunifu 0:5a6468b4164d 44 CommandIdError = 0x0d,
sunifu 0:5a6468b4164d 45 CommandHeaderError = 0xf0,
sunifu 0:5a6468b4164d 46 SetTransferPackageSizeWrong = 0x11
sunifu 0:5a6468b4164d 47 };
sunifu 0:5a6468b4164d 48
sunifu 0:5a6468b4164d 49 /**
sunifu 0:5a6468b4164d 50 * @enum Baud rate.
sunifu 0:5a6468b4164d 51 */
sunifu 0:5a6468b4164d 52 enum Baud {
sunifu 0:5a6468b4164d 53 Baud460800 = 0x02,
sunifu 0:5a6468b4164d 54 Baud230400 = 0x03,
sunifu 0:5a6468b4164d 55 Baud115200 = 0x04,
sunifu 0:5a6468b4164d 56 Baud57600 = 0x05,
sunifu 0:5a6468b4164d 57 Baud28800 = 0x06,
sunifu 0:5a6468b4164d 58 Baud14400 = 0x07 // Default.
sunifu 0:5a6468b4164d 59 };
sunifu 0:5a6468b4164d 60
sunifu 0:5a6468b4164d 61 /**
sunifu 0:5a6468b4164d 62 * @enum Reset type.
sunifu 0:5a6468b4164d 63 */
sunifu 0:5a6468b4164d 64 enum ResetType {
sunifu 0:5a6468b4164d 65 Nomal = 0x00,
sunifu 0:5a6468b4164d 66 High = 0xff
sunifu 0:5a6468b4164d 67 };
sunifu 0:5a6468b4164d 68
sunifu 0:5a6468b4164d 69 /** Constructor.
sunifu 0:5a6468b4164d 70 *
sunifu 0:5a6468b4164d 71 * @param tx A pin for transmit.
sunifu 0:5a6468b4164d 72 * @param rx A pin for receive.
sunifu 0:5a6468b4164d 73 * @param baud Baud rate. (Default is 14400.)
sunifu 0:5a6468b4164d 74 */
sunifu 0:5a6468b4164d 75 CameraC1098(PinName tx, PinName rx, int baud = 14400);
sunifu 0:5a6468b4164d 76
sunifu 0:5a6468b4164d 77 /** Destructor.
sunifu 0:5a6468b4164d 78 *
sunifu 0:5a6468b4164d 79 */
sunifu 0:5a6468b4164d 80 ~CameraC1098();
sunifu 0:5a6468b4164d 81
sunifu 0:5a6468b4164d 82 /** sync
sunifu 0:5a6468b4164d 83 * Make a sync. for baud rate.
sunifu 0:5a6468b4164d 84 */
sunifu 0:5a6468b4164d 85 ErrorNumber sync();
sunifu 0:5a6468b4164d 86
sunifu 0:5a6468b4164d 87 /** Initialize.
sunifu 0:5a6468b4164d 88 *
sunifu 0:5a6468b4164d 89 *
sunifu 0:5a6468b4164d 90 * @param baud Camera Interface Speed.
sunifu 0:5a6468b4164d 91 * @param jr JPEG resolution.
sunifu 0:5a6468b4164d 92 */
sunifu 0:5a6468b4164d 93 ErrorNumber init(Baud baud, JpegResolution jr);
sunifu 0:5a6468b4164d 94
sunifu 0:5a6468b4164d 95 /** getJpegSnapshotPicture
sunifu 0:5a6468b4164d 96 * Get JPEG snapshot picture.
sunifu 0:5a6468b4164d 97 *
sunifu 0:5a6468b4164d 98 * @param func A pointer to a callback function.
sunifu 0:5a6468b4164d 99 * You can block this function until saving the image datas.
sunifu 0:5a6468b4164d 100 * @return Status of the error.
sunifu 0:5a6468b4164d 101 */
hepta2ume 1:135493341acc 102 ErrorNumber getJpegSnapshotPicture();
sunifu 0:5a6468b4164d 103
sunifu 0:5a6468b4164d 104 /** setmbedBaud
sunifu 0:5a6468b4164d 105 * mbed Interface Speed.
sunifu 0:5a6468b4164d 106 *
sunifu 0:5a6468b4164d 107 * @param baud mbed Interface Speed.
sunifu 0:5a6468b4164d 108 */
sunifu 0:5a6468b4164d 109 void setmbedBaud(Baud baud);
hepta2ume 1:135493341acc 110 void Sync(void);
hepta2ume 1:135493341acc 111 void jpeg_snapshot(int CAPTURE_FRAMES);
hepta2ume 1:135493341acc 112 ErrorNumber sendReset(ResetType specialReset);
sunifu 0:5a6468b4164d 113
sunifu 0:5a6468b4164d 114 private:
sunifu 0:5a6468b4164d 115 SerialBuffered serial;
sunifu 0:5a6468b4164d 116 static const int COMMAND_LENGTH = 6;
sunifu 0:5a6468b4164d 117 static const int SYNCMAX = 60;
sunifu 0:5a6468b4164d 118 static const int packageSize = 256;
sunifu 0:5a6468b4164d 119 ErrorNumber sendInitial(Baud band, JpegResolution jr);
sunifu 0:5a6468b4164d 120 ErrorNumber sendGetPicture(void);
sunifu 0:5a6468b4164d 121 ErrorNumber sendSnapshot(void);
sunifu 0:5a6468b4164d 122 ErrorNumber sendSetPackageSize(uint16_t packageSize);
hepta2ume 1:135493341acc 123 //ErrorNumber sendReset(ResetType specialReset);
sunifu 0:5a6468b4164d 124 ErrorNumber recvData(uint32_t *length);
sunifu 0:5a6468b4164d 125 ErrorNumber sendSync();
sunifu 0:5a6468b4164d 126 ErrorNumber recvSync();
sunifu 0:5a6468b4164d 127 ErrorNumber sendAck(uint8_t commandId, uint16_t packageId);
sunifu 0:5a6468b4164d 128 ErrorNumber recvAckOrNck();
sunifu 0:5a6468b4164d 129
sunifu 0:5a6468b4164d 130 bool sendBytes(char *buf, size_t len, int timeout_us = 20000);
sunifu 0:5a6468b4164d 131 bool recvBytes(char *buf, size_t len, int timeout_us = 20000);
sunifu 0:5a6468b4164d 132 bool waitRecv();
sunifu 0:5a6468b4164d 133 bool waitIdle();
sunifu 0:5a6468b4164d 134 };
sunifu 0:5a6468b4164d 135
sunifu 0:5a6468b4164d 136 #endif