cansat_B 2019 / JPEGCamera

Dependents:   JPEGCameraExample JPEGCameraExample camera-pic-xbee

Committer:
seijakunouenimutou
Date:
Thu Nov 14 06:51:59 2019 +0000
Revision:
2:84378dd8cc4b
Parent:
1:27417b6a951d
camera

Who changed what in which revision?

UserRevisionLine numberNew contents of line
seijakunouenimutou 2:84378dd8cc4b 1
yamaguch 0:974923b4db2d 2 /* Arduino JPEGCamera Library
yamaguch 0:974923b4db2d 3 * Copyright 2010 SparkFun Electronics
yamaguch 0:974923b4db2d 4 * Written by Ryan Owens
yamaguch 0:974923b4db2d 5 * Modified by arms22
yamaguch 0:974923b4db2d 6 * Ported to mbed by yamaguch
yamaguch 0:974923b4db2d 7 */
yamaguch 0:974923b4db2d 8
yamaguch 0:974923b4db2d 9 #ifndef JPEG_CAMERA_H
yamaguch 0:974923b4db2d 10 #define JPEG_CAMERA_H
yamaguch 0:974923b4db2d 11
yamaguch 0:974923b4db2d 12 #include "mbed.h"
yamaguch 0:974923b4db2d 13
yamaguch 1:27417b6a951d 14 /**
yamaguch 0:974923b4db2d 15 * Interface for LinkSprite JPEG Camera module LS-Y201
yamaguch 0:974923b4db2d 16 */
yamaguch 0:974923b4db2d 17 class JPEGCamera : public Serial {
yamaguch 0:974923b4db2d 18 public:
yamaguch 0:974923b4db2d 19 /***/
yamaguch 0:974923b4db2d 20 enum PictureSize {
yamaguch 0:974923b4db2d 21 SIZE160x120 = 0x22,
yamaguch 0:974923b4db2d 22 SIZE320x240 = 0x11,
yamaguch 0:974923b4db2d 23 SIZE640x480 = 0x00,
yamaguch 0:974923b4db2d 24 };
yamaguch 0:974923b4db2d 25
yamaguch 0:974923b4db2d 26 /**
yamaguch 0:974923b4db2d 27 * Create JPEG Camera
yamaguch 0:974923b4db2d 28 *
yamaguch 0:974923b4db2d 29 * @param tx tx pin
yamaguch 0:974923b4db2d 30 * @param rx rx pin
yamaguch 0:974923b4db2d 31 */
yamaguch 0:974923b4db2d 32 JPEGCamera(PinName tx, PinName rx);
yamaguch 0:974923b4db2d 33
yamaguch 0:974923b4db2d 34 /**
yamaguch 0:974923b4db2d 35 * Set picture size
yamaguch 0:974923b4db2d 36 *
yamaguch 0:974923b4db2d 37 * @param size picture size (available sizes are SIZE160x120, SIZE320x240, SIZE640x480)
yamaguch 0:974923b4db2d 38 * @param doReset flag to perform reset operation after changing size
yamaguch 0:974923b4db2d 39 *
yamaguch 0:974923b4db2d 40 * @returns true if succeeded, false otherwise
yamaguch 0:974923b4db2d 41 */
yamaguch 0:974923b4db2d 42 bool setPictureSize(JPEGCamera::PictureSize size, bool doReset = true);
yamaguch 0:974923b4db2d 43
yamaguch 0:974923b4db2d 44 /**
yamaguch 0:974923b4db2d 45 * Return whether camera is ready or not
yamaguch 0:974923b4db2d 46 *
yamaguch 0:974923b4db2d 47 * @returns true if ready, false otherwise
yamaguch 0:974923b4db2d 48 */
yamaguch 0:974923b4db2d 49 bool isReady();
yamaguch 0:974923b4db2d 50
yamaguch 0:974923b4db2d 51 /**
yamaguch 0:974923b4db2d 52 * Return whether camera is processing the taken picture or not
yamaguch 0:974923b4db2d 53 *
yamaguch 0:974923b4db2d 54 * @returns true if the camera is in processing, false otherwise
yamaguch 0:974923b4db2d 55 */
yamaguch 0:974923b4db2d 56 bool isProcessing();
yamaguch 0:974923b4db2d 57
yamaguch 0:974923b4db2d 58 /**
yamaguch 0:974923b4db2d 59 * Take a picture
yamaguch 0:974923b4db2d 60 *
yamaguch 0:974923b4db2d 61 * @param filename filename to store the picture data
yamaguch 0:974923b4db2d 62 * @returns true if succeeded, false otherwise
yamaguch 0:974923b4db2d 63 */
yamaguch 0:974923b4db2d 64 bool takePicture(char *filename);
yamaguch 0:974923b4db2d 65 /**
yamaguch 0:974923b4db2d 66 * Process picture (writing the file)
yamaguch 0:974923b4db2d 67 *
yamaguch 0:974923b4db2d 68 * @returns true if no error in processing, false otherwise
yamaguch 0:974923b4db2d 69 */
yamaguch 0:974923b4db2d 70 bool processPicture();
yamaguch 0:974923b4db2d 71
yamaguch 0:974923b4db2d 72 /**
yamaguch 0:974923b4db2d 73 * Perform reset oepration (it takes 4 seconds)
yamaguch 0:974923b4db2d 74 *
yamaguch 0:974923b4db2d 75 * @returns true if succeeded, false otherwise
yamaguch 0:974923b4db2d 76 */
yamaguch 0:974923b4db2d 77 bool reset();
yamaguch 0:974923b4db2d 78
yamaguch 0:974923b4db2d 79 /**
yamaguch 0:974923b4db2d 80 * Send a picture command to the camera module
yamaguch 0:974923b4db2d 81 *
yamaguch 0:974923b4db2d 82 * @returns true if succeeded, false otherwise
yamaguch 0:974923b4db2d 83 */
yamaguch 0:974923b4db2d 84 bool takePicture(void);
yamaguch 0:974923b4db2d 85
yamaguch 0:974923b4db2d 86 /**
yamaguch 0:974923b4db2d 87 * Send a stop pictures command to the camera module
yamaguch 0:974923b4db2d 88 *
yamaguch 0:974923b4db2d 89 * @returns true if succeeded, false otherwise
yamaguch 0:974923b4db2d 90 */
yamaguch 0:974923b4db2d 91 bool stopPictures(void);
yamaguch 0:974923b4db2d 92
yamaguch 0:974923b4db2d 93 /**
yamaguch 0:974923b4db2d 94 * Get the picture image size
yamaguch 0:974923b4db2d 95 *
yamaguch 0:974923b4db2d 96 * @returns the actual image size in bytes
yamaguch 0:974923b4db2d 97 */
yamaguch 0:974923b4db2d 98 int getImageSize();
yamaguch 0:974923b4db2d 99
yamaguch 0:974923b4db2d 100 /**
yamaguch 0:974923b4db2d 101 * Read the picture data to the buffer
yamaguch 0:974923b4db2d 102 *
yamaguch 0:974923b4db2d 103 * @param dataBuf data buffer address to store the received data
yamaguch 0:974923b4db2d 104 * @param size data size to read
yamaguch 0:974923b4db2d 105 * @param address the address of the picture data to read
yamaguch 0:974923b4db2d 106 *
yamaguch 0:974923b4db2d 107 * @returns the size of the data read
yamaguch 0:974923b4db2d 108 */
yamaguch 0:974923b4db2d 109 int readData(char *dataBuf, int size, int address);
yamaguch 0:974923b4db2d 110
yamaguch 0:974923b4db2d 111 //private:
yamaguch 0:974923b4db2d 112 Timer timer;
yamaguch 0:974923b4db2d 113 FILE *fp;
yamaguch 0:974923b4db2d 114 int imageSize;
yamaguch 0:974923b4db2d 115 int address;
yamaguch 0:974923b4db2d 116 enum State {UNKNOWN, READY, PROCESSING, ERROR = -1} state;
yamaguch 0:974923b4db2d 117
yamaguch 0:974923b4db2d 118 int sendReceive(char *buf, int sendSize, int receiveSize);
yamaguch 0:974923b4db2d 119 int receive(char *buf, int size, int timeout);
yamaguch 0:974923b4db2d 120 };
yamaguch 0:974923b4db2d 121
yamaguch 0:974923b4db2d 122 #endif