Port of TI's CC3100 Websock camera demo. Using FreeRTOS, mbedTLS, also parts of Arducam for cams ov5642 and 0v2640. Can also use MT9D111. Work in progress. Be warned some parts maybe a bit flacky. This is for Seeed Arch max only, for an M3, see the demo for CM3 using the 0v5642 aducam mini.

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
dflet
Date:
Fri Jul 03 22:42:45 2015 +0000
Parent:
5:75fcfdb7cae7
Child:
7:a069c1750fbc
Commit message:
WIP commit 7

Changed in this revision

FreeRTOS/FreeRTOSConfig.h Show annotated file Show diff for this revision Revisions of this file
camera_app/camera_app.cpp Show annotated file Show diff for this revision Revisions of this file
camera_app/camera_app.h Show annotated file Show diff for this revision Revisions of this file
camera_app/httpserverapp/httpserverapp.cpp Show annotated file Show diff for this revision Revisions of this file
camera_app/mt9d111/mt9d111.cpp Show annotated file Show diff for this revision Revisions of this file
http/server/HttpSocket.cpp Show annotated file Show diff for this revision Revisions of this file
http/server/WebSockHandler.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/FreeRTOS/FreeRTOSConfig.h	Wed Jul 01 22:45:49 2015 +0000
+++ b/FreeRTOS/FreeRTOSConfig.h	Fri Jul 03 22:42:45 2015 +0000
@@ -86,7 +86,7 @@
 #define configCPU_CLOCK_HZ			( ( unsigned long ) SystemCoreClock )
 #define configTICK_RATE_HZ			( ( portTickType ) 1000 )
 #define configMINIMAL_STACK_SIZE	( ( unsigned short ) 130 )
-#define configTOTAL_HEAP_SIZE		( ( size_t ) (8 * 1024) )
+#define configTOTAL_HEAP_SIZE		( ( size_t ) (5 * 1024) )
 #define configMAX_TASK_NAME_LEN		( 16 )
 #define configUSE_TRACE_FACILITY	1
 #define configUSE_16_BIT_TICKS		0
--- a/camera_app/camera_app.cpp	Wed Jul 01 22:45:49 2015 +0000
+++ b/camera_app/camera_app.cpp	Fri Jul 03 22:42:45 2015 +0000
@@ -49,20 +49,18 @@
 // SimpleLink include
 #include "cc3100_simplelink.h"
 
-#include "stm32f4xx_hal_dma.h"
-#include "stm32f4xx_hal_dcmi.h"
-//#include "stm32f4xx.h"
-
+#include "oslib/osi.h"
 #include "camera_app.h"
 #include "mt9d111.h"
 #include "i2cconfig.h"
 
 #include "cli_uart.h"
 #include "Led_config.h"
+#include "HttpDebug.h"
 
 using namespace mbed_cc3100;
 
-#define ENABLE_JPEG
+//#define ENABLE_JPEG
 
 //*****************************************************************************
 // Macros
@@ -75,10 +73,6 @@
 //                      GLOBAL VARIABLES
 //*****************************************************************************
 
-using namespace mbed_cc3100;
-
-cc3100 _cc3100_Module_(NC, NC, PD_12, PD_13, PD_11, SPI(PB_5, PB_4, PB_3));//Seeed_Arch_Max  irq, nHib, cs, mosi, miso, sck
-
 unsigned int g_frame_size_in_bytes;
 unsigned int g_uiDeviceModeConfig = ROLE_AP; //default is AP mode 
 extern volatile unsigned char g_CaptureImage;
@@ -97,18 +91,19 @@
 #else
     int PIXELS_IN_X_AXIS = 240;
     int PIXELS_IN_Y_AXIS = 256;
+    int FRAME_SIZE_IN_BYTES = (240 * 256 * 2);
 #endif    
 
-#ifdef ENABLE_JPEG
+//#ifdef ENABLE_JPEG
 unsigned int g_header_length;
-#endif 
+//#endif 
 
 struct ImageBuffer
 {
-#ifdef ENABLE_JPEG
+//#ifdef ENABLE_JPEG
 	char g_header[SMTP_BUF_LEN] /*= {'\0'}*/;
-#endif
-	unsigned int g_image_buffer[NUM_OF_4B_CHUNKS];//12800
+//#endif
+	unsigned int g_image_buffer[NUM_OF_4B_CHUNKS];//60Kb 15360, 50Kb 12800
 };
 
 ImageBuffer g_image;
@@ -237,25 +232,6 @@
     0x7fe, 0x8fe, 0x9fe, 0xafe, 0xfff, 0xfff, 0xfff, 0xfff
 };
 #endif 
-/****************************************************************************/
-/*                      LOCAL FUNCTION PROTOTYPES                           */
-/****************************************************************************/
-static void CamControllerInit();
-static void CameraIntHandler();
-static unsigned short CaptureImage(char **WriteBuffer);
-static void DMAConfig();
-
-#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 
 
 //*****************************************************************************
 //
@@ -271,7 +247,7 @@
 
 unsigned short StartCamera(char **WriteBuffer)
 {
-	Uart_Write((uint8_t*)"StartCamera \n\r");
+//	Uart_Write((uint8_t*)"StartCamera \n\r");
 	unsigned short Writelength;
     //
     // Waits in the below loop till Capture button is pressed
@@ -294,15 +270,12 @@
 
 void InitCameraComponents(int width, int height)
 {
-    Uart_Write((uint8_t*)"InitCameraComponents \n\r");
+//    Uart_Write((uint8_t*)"InitCameraComponents \n\r");
     //
     // Initialize I2C Interface
     //   
     I2CInit();
-    //
-    // Initialize camera controller
-    //
-    CamControllerInit();
+    
     //
     // Initialize camera sensor
     //
@@ -357,55 +330,30 @@
 DMA_HandleTypeDef hdma_dcmi;
 static unsigned short CaptureImage(char** WriteBuffer)
 {
-    Uart_Write((uint8_t*)"CaptureImage \n\r");
-//    DCMI_HandleTypeDef phdcmi;
-//    DMA_HandleTypeDef hdma_dcmi;
+//    Uart_Write((uint8_t*)"CaptureImage \n\r");
+
     memset(g_image.g_image_buffer,0xF80F,sizeof(g_image.g_image_buffer));
     p_buffer = &(g_image.g_image_buffer[0]);
-
+    int32_t image_size;
     DMAConfig();
     
     //
     // Perform Image Capture 
     //
 //    Uart_Write((uint8_t*)"CaptureImage Start\n\r");
-//    printf("CaptureImage Memory Start = 0x%x\n\r",p_buffer);
-    
-    /* Enable the DCMI */
-//    __HAL_DCMI_ENABLE(&hdcmi);
-    /* Enable the DMA */
-//    __HAL_DMA_ENABLE(&hdma_dcmi);
-    
-//    HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
-//    HAL_NVIC_EnableIRQ(DCMI_IRQn);
-//    wait(1);
-//    printf("\r\nBuffer size = %d\r\n",sizeof(g_image.g_image_buffer));
-    Uart_Write((uint8_t*)"CaptureImage Start\n\r");
-    HAL_DCMI_Start_DMA(&phdcmi, DCMI_MODE_SNAPSHOT, (uint32_t)p_buffer, sizeof(g_image.g_image_buffer)); 
-    
-    /* Wait for frame */
-//    while ((DCMI->CR & DCMI_CR_CAPTURE) != 0) {
-//         GPIO_IF_LedToggle(MCU_RED_LED_GPIO);
-//    }
-//    HAL_NVIC_DisableIRQ(DCMI_IRQn);
-//    HAL_NVIC_DisableIRQ(DMA2_Stream1_IRQn);
-    
-    /* Disable the DMA */
-//    __HAL_DMA_DISABLE(&hdma_dcmi);
-    /* Disable the DCMI */
-//    __HAL_DCMI_DISABLE(&hdcmi);
-    
+//    HAL_DCMI_Start_DMA(&phdcmi, DCMI_MODE_SNAPSHOT, (uint32_t)p_buffer, sizeof(g_image.g_image_buffer)); 
+    HAL_DCMI_Start_DMA(&phdcmi, DCMI_MODE_SNAPSHOT, (uint32_t)p_buffer, FRAME_SIZE_IN_BYTES); 
     g_frame_end = 1;
     
-    Uart_Write((uint8_t*)"\n\rCaptureImage Complete\n\r");
-    /* The frame is finished, but DMA still waiting
-       for data because we set max frame size
-       so we need to abort the DMA transfer here */
-//    HAL_DMA_Abort(&hdma_dcmi);//need this???
+//    Uart_Write((uint8_t*)"\n\rCaptureImage Complete\n\r");
  
     /* Read the number of data items transferred */
-    uint16_t image_size = (FRAME_SIZE_IN_BYTES - hdma_dcmi.Instance->NDTR)*4;      
-//    printf("image_size = 0x%x\r\n",image_size);
+    image_size = (FRAME_SIZE_IN_BYTES - (hdma_dcmi.Instance->NDTR*4));
+//    p_buffer += image_size;
+//    image_size = hdma_dcmi.Instance->NDTR *4;
+//    HttpDebug("hdma_dcmi.Instance->NDTR = %i\r\n",hdma_dcmi.Instance->NDTR *4);     
+//    image_size = (sizeof(g_image.g_image_buffer) - (hdma_dcmi.Instance->NDTR * 4));
+//    HttpDebug("image_size = %i\r\n",image_size);
     g_dma_txn_done = 1;
     g_frame_size_in_bytes = image_size;
     g_total_dma_intrpts = 1;
@@ -428,13 +376,13 @@
     }
 #endif
     *WriteBuffer = &(g_image.g_header[SMTP_BUF_LEN - g_header_length]);
-
+//#endif
 	return(g_header_length + g_frame_size_in_bytes);
 }
 //*****************************************************************************
 //
 //!     DMA Config
-//!     Initialize the DMA and Setup the DMA transfer
+//!     Initialize the DMA\DCMI and Setup the DMA transfer
 //!    
 //!	\param                      None  
 //!     \return                     None                  
@@ -442,7 +390,7 @@
 //*****************************************************************************
 static void DMAConfig()
 {
-    Uart_Write((uint8_t*)"DMAConfig \n\r");
+//    Uart_Write((uint8_t*)"DMAConfig \n\r");
     
     /* Peripheral DMA init*/
     /* DMA controller clock enable */
@@ -455,18 +403,17 @@
     hdma_dcmi.Init.MemInc              = DMA_MINC_ENABLE;
     hdma_dcmi.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
     hdma_dcmi.Init.MemDataAlignment    = DMA_MDATAALIGN_BYTE;
-    hdma_dcmi.Init.Mode                = DMA_CIRCULAR;
+    hdma_dcmi.Init.Mode                = DMA_NORMAL;//DMA_CIRCULAR;
     hdma_dcmi.Init.Priority            = DMA_PRIORITY_HIGH;
-    hdma_dcmi.Init.FIFOMode            = DMA_FIFOMODE_DISABLE;
+    hdma_dcmi.Init.FIFOMode            = DMA_FIFOMODE_ENABLE;//DMA_FIFOMODE_DISABLE;
     hdma_dcmi.Init.FIFOThreshold       = DMA_FIFO_THRESHOLD_FULL;
     hdma_dcmi.Init.MemBurst            = DMA_MBURST_SINGLE;
     hdma_dcmi.Init.PeriphBurst         = DMA_PBURST_SINGLE;
-//    HAL_DMA_Init(&hdma_dcmi);
     
     __HAL_LINKDMA(&phdcmi,DMA_Handle,hdma_dcmi);
     
      /* DMA interrupt init */
-    HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 1, 0);
+    HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 5, 0);
     HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
  
     phdcmi.Instance = DCMI;
@@ -481,10 +428,7 @@
 #else
     phdcmi.Init.JPEGMode = DCMI_JPEG_DISABLE;
 #endif
- 
-//    HAL_DCMI_Init(&phdcmi); 
     
-
   GPIO_InitTypeDef GPIO_InitStruct;
   if(phdcmi.Instance==DCMI)
   {
@@ -498,9 +442,6 @@
     PC9     ------> MCO2    
     */
        
-  /* USER CODE BEGIN DCMI_MspInit 0 */
-
-  /* USER CODE END DCMI_MspInit 0 */
     /* Peripheral clock enable */
     __DCMI_CLK_ENABLE();
   
@@ -554,7 +495,7 @@
     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
 
   /* System interrupt init*/
-    HAL_NVIC_SetPriority(DCMI_IRQn, 1, 0);
+    HAL_NVIC_SetPriority(DCMI_IRQn, 5, 0);
     HAL_NVIC_EnableIRQ(DCMI_IRQn);
 
     HAL_DMA_Init(&hdma_dcmi);
@@ -566,15 +507,13 @@
     g_frame_size_in_bytes = 0;
     g_frame_end = 0;
     g_total_dma_intrpts = 0;
-}
+}	
 
 void HAL_DCMI_MspDeInit(DCMI_HandleTypeDef* phdcmi){
 
   if(phdcmi->Instance==DCMI)
   {
-  /* USER CODE BEGIN DCMI_MspDeInit 0 */
 
-  /* USER CODE END DCMI_MspDeInit 0 */
     /* Peripheral clock disable */
     __DCMI_CLK_DISABLE();
   
@@ -608,128 +547,12 @@
     /* Peripheral interrupt DeInit*/
     HAL_NVIC_DisableIRQ(DCMI_IRQn);
 
-  /* USER CODE BEGIN DCMI_MspDeInit 1 */
-
-  /* USER CODE END DCMI_MspDeInit 1 */
   }
 
 }		
 
 //*****************************************************************************
 //
-//!     Camera Controller Initialisation 
-//!    
-//!	\param                      None  
-//!     \return                     None
-//!                               
-//
-//*****************************************************************************
-
-static void CamControllerInit()
-{
-	  Uart_Write((uint8_t*)"CamControllerInit \n\r");
-//    MAP_PRCMPeripheralClkEnable(PRCM_CAMERA, PRCM_RUN_MODE_CLK);
-//    MAP_PRCMPeripheralReset(PRCM_CAMERA);
-
-#ifndef ENABLE_JPEG
-    // Configure Camera clock
-    // CamClkIn = ((240)/((1+1)+(1+1))) = 60 MHz
-//    PRCMCameraFreqSet(4, 2);
-#else
-//    PRCMCameraFreqSet(2,1);
-#endif 
-
-//    MAP_CameraReset(CAMERA_BASE);
-
-#ifndef ENABLE_JPEG
-//    MAP_CameraParamsConfig(CAMERA_BASE, CAM_HS_POL_HI, CAM_VS_POL_HI,
-//                       CAM_ORDERCAM_SWAP|CAM_NOBT_SYNCHRO);
-#else
-//    MAP_CameraParamsConfig(CAMERA_BASE, CAM_HS_POL_HI,CAM_VS_POL_HI,
-//                       CAM_NOBT_SYNCHRO|CAM_IF_SYNCHRO|CAM_BT_CORRECT_EN);
-#endif 
-
-//    MAP_CameraIntRegister(CAMERA_BASE, CameraIntHandler);
-
-#ifndef ENABLE_JPEG
-//    MAP_CameraXClkConfig(CAMERA_BASE, 60000000,3750000);
-#else
-//    MAP_CameraXClkConfig(CAMERA_BASE, 120000000,24000000);
-#endif 
-
-//    MAP_CameraThresholdSet(CAMERA_BASE, 8);
-//    MAP_CameraIntEnable(CAMERA_BASE, CAM_INT_FE);
-//    MAP_CameraDMAEnable(CAMERA_BASE);
-
-}
-
-
-//*****************************************************************************
-//
-//!     Camera Interrupt Handler
-//!    
-//!	\param                      None  
-//!     \return                     None                              
-//
-//*****************************************************************************
-static void CameraIntHandler()
-{
-	Uart_Write((uint8_t*)"CameraIntHandler \n\r");
-
-	//MAP_CameraIntClear(CAMERA_BASE, CAM_INT_FE);
- //   if(g_total_dma_intrpts > 1 && MAP_CameraIntStatus(CAMERA_BASE) & CAM_INT_FE)
-//    {
-//        MAP_CameraIntClear(CAMERA_BASE, CAM_INT_FE);
-//        g_frame_end = 1;
-//        MAP_CameraCaptureStop(CAMERA_BASE, true);
-//    }
-
-//    if(CameraIntStatus(CAMERA_BASE)& CAM_INT_DMA)
-//    {
-        // Camera DMA Done clear
-//        CameraIntClear(CAMERA_BASE,CAM_INT_DMA);
-
-//        g_total_dma_intrpts++;
-
-//        g_frame_size_in_bytes += (TOTAL_DMA_ELEMENTS*sizeof(unsigned long));
-//        if(g_frame_size_in_bytes < FRAME_SIZE_IN_BYTES && g_frame_size_in_bytes < IMAGE_BUF_SIZE)
-//        {
-//            if(g_dma_txn_done == 0)
-//            {
-//                UDMASetupTransfer(UDMA_CH22_CAMERA,UDMA_MODE_PINGPONG,TOTAL_DMA_ELEMENTS,UDMA_SIZE_32,
-//                                 UDMA_ARB_8,(void *)CAM_BUFFER_ADDR, UDMA_SRC_INC_32,
-//                                 (void *)p_buffer, UDMA_DST_INC_32);
-//                p_buffer += TOTAL_DMA_ELEMENTS;
-//                g_dma_txn_done = 1;
-//            }
-//            else
-//            {
-//                UDMASetupTransfer(UDMA_CH22_CAMERA|UDMA_ALT_SELECT,UDMA_MODE_PINGPONG,TOTAL_DMA_ELEMENTS,
-//                                 UDMA_SIZE_32, UDMA_ARB_8,(void *)CAM_BUFFER_ADDR,
-//                                 UDMA_SRC_INC_32, (void *)p_buffer, UDMA_DST_INC_32);
-//                p_buffer += TOTAL_DMA_ELEMENTS;
-//                g_dma_txn_done = 0;
-//            }
-//        }
-//        else
-//        {
-            // Disable DMA
-//            wait_us(25); 
-//            MAP_UtilsDelay(20000);
-//            MAP_uDMAChannelDisable(UDMA_CH22_CAMERA);
-//			CameraIntDisable(CAMERA_BASE,CAM_INT_DMA);
-//            g_frame_end = 1;
-//        }
-//    }
-
-
-  /* Insert 100ms delay: wait 100ms */
-//  wait_ms(100); 
-
-}
-
-//*****************************************************************************
-//
 //!     JfifApp0Marker 
 //!    
 //!	\param                      Pointer to the output buffer  
@@ -740,6 +563,7 @@
 #ifdef ENABLE_JPEG
 static int JfifApp0Marker(char *pbuf)
 {
+    Uart_Write((uint8_t*)"JfifApp0Marker \n\r");
     *pbuf++= 0xFF;                  // APP0 marker 
     *pbuf++= 0xE0;
     *pbuf++= 0x00;                  // length 
@@ -776,6 +600,7 @@
 //*****************************************************************************
 static int FrameHeaderMarker(char *pbuf, int width, int height, int format)
 {
+    Uart_Write((uint8_t*)"FrameHeaderMarker \n\r");
     int length;
     if (format == FORMAT_MONOCHROME)
         length = 11;
@@ -892,6 +717,7 @@
 //*****************************************************************************
 static int DefineQuantizationTableMarker (unsigned char *pbuf, int qscale, int format)
 {
+    Uart_Write((uint8_t*)"DefineQuantizationTableMarker \n\r");
     int i, length, temp;
     unsigned char newtbl[64];           // temporary array to store scaled zigzagged quant entries 
 
@@ -959,6 +785,7 @@
 //*****************************************************************************
 static int DefineHuffmanTableMarkerDC(char *pbuf, unsigned int *htable, int class_id)
 {
+    Uart_Write((uint8_t*)"DefineHuffmanTableMarkerDC \n\r");
     int i, l, count;
     int length;
     char *plength;
@@ -1018,6 +845,7 @@
 //*****************************************************************************
 static int DefineHuffmanTableMarkerAC(char *pbuf, unsigned int *htable, int class_id)
 {
+    Uart_Write((uint8_t*)"DefineHuffmanTableMarkerAC \n\r");
     int i, l, a, b, count;
     char *plength;
     int length;
@@ -1101,6 +929,7 @@
 //*****************************************************************************
 static int DefineRestartIntervalMarker(char *pbuf, int ri)
 {
+    Uart_Write((uint8_t*)"DefineRestartIntervalMarker \n\r");
     *pbuf++= 0xFF;                  // define restart interval marker 
     *pbuf++= 0xDD;
     *pbuf++= 0x00;                  // length 
@@ -1180,7 +1009,7 @@
 
     return length;
 }
-#endif 
+#endif// jpeg defined 
 
 
 
--- a/camera_app/camera_app.h	Wed Jul 01 22:45:49 2015 +0000
+++ b/camera_app/camera_app.h	Fri Jul 03 22:42:45 2015 +0000
@@ -60,7 +60,7 @@
 extern int PIXELS_IN_X_AXIS; 
 extern int PIXELS_IN_X_AXIS;
 extern int FRAME_SIZE_IN_BYTES;
-#define NUM_OF_1KB_BUFFERS      50
+#define NUM_OF_1KB_BUFFERS      50//50
 
 
 #define BYTES_PER_PIXEL             (2)       // RGB 565 
@@ -98,6 +98,26 @@
 int SetCameraResolution(int width, int height);
 void InitCameraComponents(int width, int height);
 
+static void CamControllerInit(void);
+static void CameraIntHandler(void);
+static unsigned short CaptureImage(char **WriteBuffer);
+static void DMAConfig(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.
--- a/camera_app/httpserverapp/httpserverapp.cpp	Wed Jul 01 22:45:49 2015 +0000
+++ b/camera_app/httpserverapp/httpserverapp.cpp	Fri Jul 03 22:42:45 2015 +0000
@@ -97,9 +97,12 @@
 {
 	UINT8 Opcode = 0x02;
 	struct HttpBlob Write;
-
+#ifdef ENABLE_JPEG
 	InitCameraComponents(640, 480);
-
+#else
+    InitCameraComponents(240, 256);
+#endif    
+    
 	while(1)
 	{
 		if(g_close == 0)
@@ -108,7 +111,7 @@
             HttpDebug("Data Len = 0x%x \n\r",Write.uLength);
 			if(!sl_WebSocketSend(g_uConnection, Write, Opcode))
 			{
-				Uart_Write((uint8_t*)"sl_WebSocketSend fsiled.\n\r");
+				Uart_Write((uint8_t*)"sl_WebSocketSend failed.\n\r");
 				while(1);
 			}
 		}
--- a/camera_app/mt9d111/mt9d111.cpp	Wed Jul 01 22:45:49 2015 +0000
+++ b/camera_app/mt9d111/mt9d111.cpp	Fri Jul 03 22:42:45 2015 +0000
@@ -302,7 +302,7 @@
 
 int CameraSensorInit()
 {
-    Uart_Write((uint8_t*)"CameraSensorInit \n\r");
+//    Uart_Write((uint8_t*)"CameraSensorInit \n\r");
     int lRetVal = -1;
     
     lRetVal = RegLstWrite((s_RegList *)init_cmds_list, \
@@ -340,7 +340,7 @@
 //*****************************************************************************
 int StartSensorInJpegMode(int width, int height)
 {
-    Uart_Write((uint8_t*)"\n\rStartSensorInJpegMode \n\r");
+//    Uart_Write((uint8_t*)"\n\rStartSensorInJpegMode \n\r");
 #ifdef ENABLE_JPEG
     int lRetVal = -1;
 
--- a/http/server/HttpSocket.cpp	Wed Jul 01 22:45:49 2015 +0000
+++ b/http/server/HttpSocket.cpp	Fri Jul 03 22:42:45 2015 +0000
@@ -216,6 +216,7 @@
 
 int ClientSocketSend(long socket, char * buffer, unsigned int len)
 {
+  HttpDebug("\r\n ClientSocketSend\n\r");
   int send_len = 0, Ittr = 0;
 
   do
--- a/http/server/WebSockHandler.cpp	Wed Jul 01 22:45:49 2015 +0000
+++ b/http/server/WebSockHandler.cpp	Fri Jul 03 22:42:45 2015 +0000
@@ -297,7 +297,7 @@
 	char *pucPayLoadData = (char *)PayLoad.pData;
 
 	usNextBlock = 0;
-
+    
 	if(Opcode != 0x02)
 		usTotalLength = strlen(pucPayLoadData);
 	else
--- a/main.cpp	Wed Jul 01 22:45:49 2015 +0000
+++ b/main.cpp	Fri Jul 03 22:42:45 2015 +0000
@@ -135,9 +135,11 @@
   /* RCC_MCODIV_5 33.6MHz mco output on pin PC_9 (cam xclk) */
   /* RCC_MCODIV_4 42MHz mco output on pin PC_9 (cam xclk) */
   /* RCC_MCODIV_3 56MHz mco output on pin PC_9 (cam xclk) */
-//  HAL_RCC_MCOConfig(RCC_MCO2, RCC_MCO2SOURCE_SYSCLK, RCC_MCODIV_4);
+//  HAL_RCC_MCOConfig(RCC_MCO2, RCC_MCO2SOURCE_SYSCLK, RCC_MCODIV_3);
 
-  /* RCC_MCODIV_1 8MHz mco output on pin PC_9 (cam xclk) */  
+  /* RCC_MCODIV_1 8MHz mco output on pin PC_9 (cam xclk) */ 
+  /* RCC_MCODIV_2 4MHz mco output on pin PC_9 (cam xclk) */ 
+  /* RCC_MCODIV_4 2MHz mco output on pin PC_9 (cam xclk) */  
   HAL_RCC_MCOConfig(RCC_MCO2, RCC_MCO2SOURCE_HSE, RCC_MCODIV_4);
 
   //Used for ov7670 test