TI's CC3100 websocket camera demo with Arducam mini ov5642 and freertos. Should work with other M3's. Work in progress test demo.
camera_app/camera_app.h
- Committer:
- dflet
- Date:
- 2015-09-06
- Revision:
- 0:400d8e75a8d0
File content as of revision 0:400d8e75a8d0:
//***************************************************************************** // camera_app.h // // camera application macro & API's prototypes // // Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ // // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the // distribution. // // Neither the name of Texas Instruments Incorporated nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // //***************************************************************************** #ifndef __CAMERA_APP_H__ #define __CAMERA_APP_H__ //***************************************************************************** // // If building with a C++ compiler, make all of the definitions in this header // have a C binding. // //***************************************************************************** #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define UART_COMMAND_IMG_CAPTURE ('x') #define LOWER_TO_UPPER_CASE (32) #define DISABLE (0) #define ENABLE (1) #define SL_VERSION_LENGTH (11) extern int PIXELS_IN_X_AXIS; extern int PIXELS_IN_X_AXIS; extern int FRAME_SIZE_IN_BYTES; #define NUM_OF_1KB_BUFFERS 10 #define BYTES_PER_PIXEL (2) // RGB 565 #define ONE_KB (1024) #define IMAGE_BUF_SIZE (ONE_KB * NUM_OF_1KB_BUFFERS) //#define NUM_OF_4B_CHUNKS ((IMAGE_BUF_SIZE)/(sizeof(unsigned int))) #define NUM_OF_4B_CHUNKS ((IMAGE_BUF_SIZE - ONE_KB)/(sizeof(unsigned int))) #define NUM_OF_1KB_CHUNKS (IMAGE_BUF_SIZE/ONE_KB) #define NUM_OF_4B_CHUNKS_IN_1KB (ONE_KB/(sizeof(unsigned int))) #define MAX_EMAIL_ID_LENGTH 34 #define SMTP_BUF_LEN 1024 //#define CAM_BT_CORRECT_EN 0x00001000 typedef enum opcd{ START_CAPTURE = 1, STOP_CAPTURE, IMG_FMT, IMG_SIZE, EXIT }e_opcode; typedef struct cmd_struct{ int opcode; char email_id[MAX_EMAIL_ID_LENGTH]; }s_cmd_struct; //****************************************************************************** // APIs //****************************************************************************** void getCamId(void); unsigned short StartCamera(char **WriteBuffer); int SetCameraResolution(int width, int height); void InitCameraComponents(int width, int height); static void CamControllerInit(void); static void CameraIntHandler(void); uint16_t CaptureImage(char **WriteBuffer); uint8_t read_fifo_burst(void); /****************************************************************************/ /* LOCAL FUNCTION PROTOTYPES */ /****************************************************************************/ //#ifdef ENABLE_JPEG static int CreateJpegHeader(char *header, int width, int height, int format, int restart_int, int qscale); static int DefineRestartIntervalMarker(char *pbuf, int ri); static int DefineHuffmanTableMarkerAC(char *pbuf, unsigned int *htable, int class_id); static int DefineHuffmanTableMarkerDC(char *pbuf, unsigned int *htable, int class_id); static int DefineQuantizationTableMarker (unsigned char *pbuf, int qscale, int format); static int ScanHeaderMarker(char *pbuf, int format); static int FrameHeaderMarker(char *pbuf, int width, int height, int format); static int JfifApp0Marker(char *pbuf); //#endif //***************************************************************************** // // Mark the end of the C bindings section for C++ compilers. // //***************************************************************************** #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __CAMERA_APP_H__ */ //***************************************************************************** // // Close the Doxygen group. //! @} // //*****************************************************************************