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