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:
Tue Sep 15 15:39:38 2015 +0000
Parent:
20:409ebd125b9c
Child:
22:f9b5e0b80bf2
Commit message:
Removed some debug. Did some more work on the MT9D111 camera, which now works in jpeg mode.

Changed in this revision

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/mt9d111/mt9d111.cpp Show annotated file Show diff for this revision Revisions of this file
utils/app_config.h Show annotated file Show diff for this revision Revisions of this file
utils/i2cconfig.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/camera_app/camera_app.cpp	Sat Sep 12 22:38:40 2015 +0000
+++ b/camera_app/camera_app.cpp	Tue Sep 15 15:39:38 2015 +0000
@@ -74,7 +74,6 @@
 // Macros
 //*****************************************************************************
 #define USER_FILE_NAME          "www/images/cc3200_camera_capture.jpg"
-//#define TOTAL_DMA_ELEMENTS      64
 #define AP_SSID_LEN_MAX         (33)
 #define ROLE_INVALID            (-5)
 //*****************************************************************************
@@ -108,8 +107,8 @@
 #ifdef ENABLE_JPEG
     char g_header[SMTP_BUF_LEN] /*= {'\0'}*/;
 #endif
-//    uint32_t g_image_buffer[NUM_OF_4B_CHUNKS];//60Kb 15360, 50Kb 12800
-    uint32_t g_image_buffer[((IMAGE_BUF_SIZE)/(sizeof(unsigned int)))];//51Kb
+    uint32_t g_image_buffer[((IMAGE_BUF_SIZE)/(sizeof(unsigned int)))];//25Kb
+    uint8_t sec_image_buffer[26 * 1024];
 };
 
 ImageBuffer g_image;
@@ -347,7 +346,9 @@
 {
 
     uint32_t g_header_length = 0;
+    uint32_t image_size = 0;
     uint32_t *pbuffer = &(g_image.g_image_buffer[0]);
+    uint8_t *sec_pbuffer = &(g_image.sec_image_buffer[0]);
 //    int32_t lRetVal= -1;
     int32_t err = 0;
 #ifdef MT9D111_CAM     
@@ -356,10 +357,11 @@
     picLoop++;    
     DMAConfig();
     
-    wait(1);
+//    wait(1);
 #ifdef MT9D111_CAM    
     /* Send cam capture request, value in frames */
     Start_still_capture(1);// Switch to context b
+    wait(1);
 #endif
     //
     // DCMI Perform Image Capture
@@ -381,7 +383,7 @@
         err = HAL_DMA_GetState(&phdma_dcmi);
         HttpDebug("\r\nDMA error! 0x%x\r\n",err);
         HttpDebug("\r\nDMA error! 0x%x\r\n",phdma_dcmi.ErrorCode);
-        HttpDebug("g_frame_size_in_bytes = 0x%x\n\r",g_frame_size_in_bytes);
+        HttpDebug("g_frame_size_in_bytes = 0x%x\r\n",g_frame_size_in_bytes);
         HttpDebug("\r\nFailed to capture data, check camera connections!\r\n");
         HAL_DMA_Abort(&phdma_dcmi);
 #ifdef MT9D111_CAM        
@@ -399,29 +401,28 @@
 #ifdef MT9D111_CAM
     memcpy(Image + g_frame_size_in_bytes, jpeg_end, 2);
     g_frame_size_in_bytes += 2;
-#endif    
+#endif
+        
     //
     // Create JPEG Header
     //
 #ifdef MT9D111_CAM    
 #ifdef ENABLE_JPEG
     memset(g_image.g_header, '\0', sizeof(g_image.g_header));
-    g_header_length = CreateJpegHeader((char *)&(g_image.g_header[0]), PIXELS_IN_X_AXIS, PIXELS_IN_Y_AXIS, 0, 0x0020, 9);
+    g_header_length = CreateJpegHeader((char *)&(g_image.g_header[0]), PIXELS_IN_X_AXIS, PIXELS_IN_Y_AXIS, 0, 0x0020, 8);
 
-    // This pushes the header to the start of the array so that the entire picture can be contiguous in memory
-    memcpy(Image + g_header_length, Image, g_frame_size_in_bytes);
-    memcpy(Image, g_image.g_header, g_header_length);
-    
-    // This pushes the header to the end of the array so that the entire picture can be contiguous in memory
-//    memcpy((Image + g_frame_size_in_bytes ), g_image.g_header, g_header_length);
-    wait_ms(100);
-    HttpDebug("Capture Image %d\n\r",picLoop);
+    // This pushes the header to the start of the array so that the entire picture can be contiguous in memory    
+    memcpy(sec_pbuffer + g_header_length, Image, g_frame_size_in_bytes);
+    memcpy(sec_pbuffer, g_image.g_header, g_header_length);
+
+    image_size = g_header_length + g_frame_size_in_bytes;  
+    HttpDebug("\r\nCapture Image %d size 0x%x\r\n",picLoop, image_size); 
 #endif//ENABLE_JPEG
-    *WriteBuffer = (char*)Image;
+    *WriteBuffer = (char*)g_image.sec_image_buffer;
     return(g_header_length += g_frame_size_in_bytes);
 #endif//MT9D111_CAM
-    HttpDebug("\r\nCapture Image %d\r\n",picLoop);    
-    *WriteBuffer = (char*)Image;
+    HttpDebug("\r\nCapture Image %d size 0x%x\r\n",picLoop, image_size);    
+    *WriteBuffer = (char*)g_image.sec_image_buffer;
 
     return(g_frame_size_in_bytes);
 }
@@ -452,7 +453,7 @@
     phdcmi.Init.PCKPolarity      = DCMI_PCKPOLARITY_RISING;//Data clocked out on rising edge 
 //    phdcmi.Init.PCKPolarity      = DCMI_PCKPOLARITY_FALLING;//Data clocked out on falling edge       
     phdcmi.Init.VSPolarity       = DCMI_VSPOLARITY_LOW;//Active high
-    phdcmi.Init.HSPolarity       = DCMI_HSPOLARITY_HIGH;//Active high    
+    phdcmi.Init.HSPolarity       = DCMI_HSPOLARITY_LOW;//Active high    
 #endif        
     phdcmi.Init.CaptureRate      = DCMI_CR_ALL_FRAME;
     phdcmi.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B;//8 bit data
--- a/camera_app/camera_app.h	Sat Sep 12 22:38:40 2015 +0000
+++ b/camera_app/camera_app.h	Tue Sep 15 15:39:38 2015 +0000
@@ -60,8 +60,8 @@
 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      51//50
+
+#define NUM_OF_1KB_BUFFERS      25
 
 
 #define BYTES_PER_PIXEL             (2)       // RGB 565 
@@ -69,7 +69,6 @@
 #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)))
--- a/camera_app/mt9d111/mt9d111.cpp	Sat Sep 12 22:38:40 2015 +0000
+++ b/camera_app/mt9d111/mt9d111.cpp	Tue Sep 15 15:39:38 2015 +0000
@@ -70,6 +70,7 @@
     {0, 0x65, 0xA000    },  // Bypass the PLL
     {1, 0xC3, 0x0501    },  // Perform MCU reset
     {0, 0x0D, 0x0021    },  // Enable soft reset
+    {100, 0x00, 0x0032  },  // Delay = 50ms
     {0, 0x0D, 0x0000    },  // Disable soft reset
     {100, 0x00, 0x01f4  },  // Delay = 500ms
 };
@@ -102,7 +103,7 @@
     {1, 0xC8, 0x0005    },  // SEQ_CMD (Refresh)
     // Set maximum integration time to get a minimum of 15 fps at 45MHz
     {1, 0xC6, 0xA20E    },  // AE_MAX_INDEX
-    {1, 0xC8, 0x0004},      // AE_MAX_INDEX
+    {1, 0xC8, 0x0004    },  // AE_MAX_INDEX
     {1, 0xC6, 0xA102    },  // SEQ_MODE
     {1, 0xC8, 0x0001    },  // SEQ_MODE
     {1, 0xC6, 0xA102    },  // SEQ_MODE
@@ -158,7 +159,7 @@
     {1, 0xC6, 0x270B    },  // MODE_CONFIG
     {1, 0xC8, 0x0030    },  // MODE_CONFIG, JPEG disabled for A and B = 0x0030
     {1, 0xC6, 0xA103    },  // SEQ_CMD
-    {1, 0xC8, 0x0005    }   // SEQ_CMD, refresh = 0x0005
+    {1, 0xC8, 0x0005    },  // SEQ_CMD, refresh = 0x0005
     {100, 0x00, 0x01f4  },  // Delay = 500ms
 };
 #else
@@ -167,8 +168,8 @@
 //    {100, 0x00, 0x0064  },  // Delay =100ms
     {0, 0x65, 0xE000    },  // Power DOWN PLL
     {100, 0x00, 0x01F4  },  // Delay =500ms
-//    {0,  0x66,  0x3003  },  // M = 48 N = 3 PLL  fIN = 8MHz fOUT = 24MHz
-    {0,  0x66,  0x7801  },  // M = 120 N = 1 PLL  fIN = 8MHz fOUT = 60MHz
+    {0,  0x66,  0x3003  },  // M = 48 N = 3 PLL  fIN = 8MHz fOUT = 24MHz
+//    {0,  0x66,  0x7801  },  // M = 120 N = 1 PLL  fIN = 8MHz fOUT = 60MHz
     {0,  0x67,  0x0501  },  // P = 1
     {0, 0x65,   0xA000  },  // Disable PLL
     {100, 0x00, 0x01F4  },  // Delay =500ms
@@ -177,20 +178,9 @@
 };
 
 static  const s_RegList capture_cmds_list[]= {
-//    {0, 0x65, 0xA000    },  // Disable PLL
-//    {100, 0x00, 0x0064  },  // Delay =500ms
-//    {0, 0x65, 0xE000    },  // Power DOWN PLL
-//    {100, 0x00, 0x0064  },  // Delay =500ms
-//    {0,  0x66,  0x3003  },  // M = 48 N = 3 PLL  fIN = 8MHz fOUT = 24MHz
-//    {0,  0x67,  0x0201  },  // P = 1
-//    {0, 0x65,   0xA000  },  // Disable PLL
-//    {100, 0x00, 0x0064  },  // Delay =500ms
-//    {0,  0x65,  0x2000  },  // Enable PLL
-//    {100, 0x00, 0x01F4  },  // Delay =500ms
+
     {0, 0x20, 0x0000    },  // READ_MODE_B (Image flip settings)
-//    {100, 0x00, 0x01F4  },  // Delay =500ms
-//    {100, 0x00, 0x01F4  },  // Delay =500ms
-//    {100, 0x00, 0x01F4  },  // Delay =500ms
+    {100, 0x00, 0x00FA  },  // Delay =250ms
     {1, 0xC6, 0xA102    },  // SEQ_MODE
     {1, 0xC8, 0x0001    },  // SEQ_MODE
     {1, 0xC6, 0xA102    },  // SEQ_MODE
@@ -206,10 +196,10 @@
     {1,  0xC6, 0xA906   },  // Format YCbCr422
     {1,  0xC8, 0x0000   },
     {1,  0xC6, 0xA90A   },  // Set the qscale1
-    {1,  0xC8, 0x0089   },
+    {1,  0xC8, 0x0088   },
     {1,  0xC6, 0x2908   },  // Set the restartInt
     {1,  0xC8, 0x0020   },
-//    {100, 0x00, 0x01F4  },  // Delay =500ms
+    {100, 0x00, 0x00FA  },  // Delay =250ms
     {1, 0xC6, 0x2707    },  // MODE_OUTPUT_WIDTH_B
 #ifdef XGA_FRAME
     {1, 0xC8, 1024      },
@@ -218,7 +208,7 @@
     {1, 0xC8, 640       },
 #endif    
 #ifdef QVGA_FRAME
-    {1, 0xC8, 240       },
+    {1, 0xC8, 320       },
 #endif
     {1, 0xC6, 0x2709    },  // MODE_OUTPUT_HEIGHT_B
 #ifdef XGA_FRAME
@@ -228,61 +218,22 @@
     {1, 0xC8, 480       },
 #endif    
 #ifdef QVGA_FRAME
-    {1, 0xC8, 320       },
+    {1, 0xC8, 240       },
 #endif
     {1, 0xC6, 0x2735    },  // MODE_CROP_X0_B
-    {1, 0xC8, 0x0000    },
+    {1, 0xC8, 640    },
     {1, 0xC6, 0x2737    },  // MODE_CROP_X1_B
     {1, 0xC8, 1600      },
     {1, 0xC6, 0x2739    },  // MODE_CROP_Y0_B
-    {1, 0xC8, 0x0000    },
+    {1, 0xC8, 480    },
     {1, 0xC6, 0x273B    },  // MODE_CROP_Y1_B
     {1, 0xC8, 1200      },
-//    {1, 0xC6, 0xA103    }, //SEQ_CMD
-//    {1, 0xC8, 0x0005    }, //SEQ_CMD, refresh
-//    {1, 0xC6, 0xA103    },  // SEQ_CMD, Do capture
-//    {1, 0xC8, 0x0002    },
-//    {100, 0x00, 0x01f4  },  // Delay = 500ms
+    {1, 0xC6, 0xA103    }, //SEQ_CMD
+    {1, 0xC8, 0x0005    }, //SEQ_CMD, refresh
+    {100, 0x00, 0x00FA  },  // Delay = 250ms
 //    {111, 0xC8,0x0002   }, //Wait for sequencer change
 };
 
-/*
-static const s_RegList capture_cmds_list[]= {
-//    {0, 0x65, 0xA000    },  // Disable PLL
-//    {0, 0x65, 0xE000    },  // Power DOWN PLL
-//    {100, 0x00, 0x01F4  },  // Delay =500ms
-//    {0,  0x66,  0x500B  },
-//    {0,  0x67,  0x0500  },
-//    {0, 0x65,   0xA000  },  // Disable PLL
-//    {100, 0x00, 0x01F4  },  // Delay =500ms
-//    {0,  0x65,  0x2000  },  // Enable PLL
-//    {100, 0x00, 0x01F4  },  // Delay =500ms
-    {0, 0x20, 0x0000    },  // READ_MODE_B (Image flip settings)
-//    {100, 0x00, 0x01F4  },  // Delay =500ms
-//    {100, 0x00, 0x01F4  },  // Delay =500ms
-//    {100, 0x00, 0x01F4  },  // Delay =500ms
-    {1, 0xC6, 0xA102    },  // SEQ_MODE
-    {1, 0xC8, 0x0001    },  // SEQ_MODE
-    {1, 0xC6, 0xA102    },  // SEQ_MODE
-    {1, 0xC8, 0x0005    },  // SEQ_MODE
-    {1,  0xC6, 0xA120   },  // Enable Capture video
-    {1,  0xC8, 0x0002   },
-    {1,  0xC6, 0x270B   },  // Mode config, disable JPEG bypass
-    {1,  0xC8, 0x0000   },
-    {1,  0xC6, 0x2702   },  // FIFO_config0b, no spoof, adaptive clock
-    {1,  0xC8, 0x001E   },
-    {1,  0xC6, 0xA907   },  // JPEG mode config, video
-    {1,  0xC8, 0x0035   },
-    {1,  0xC6, 0xA906   },  // Format YCbCr422
-    {1,  0xC8, 0x0000   },
-    {1,  0xC6, 0xA90A   },  // Set the qscale1
-    {1,  0xC8, 0x0089   },
-    {1,  0xC6, 0x2908   },  // Set the restartInt
-    {1,  0xC8, 0x0020   },
-    {100, 0x00, 0x01f4  },  // Delay = 500ms
-};
-*/
-
 static const s_RegList bypass_pll_list[]= {
     {0, 0x65, 0xA000   },  // Disable PLL
     {100, 0x00, 0x01F4 }, // Delay =500ms
@@ -398,555 +349,10 @@
     {2, 0xAD, 0x0000        }, // GLOBAL_OFFSET_FXY_FUNCTION
     {2, 0xAE, 0x0000        }, // K_FACTOR_IN_K_FX_FY
     {1, 0x08, 0x01FC        }, // COLOR_PIPELINE_CONTROL
-    {100, 0x00, 0x0064      }, // Delay =100ms
+    {100, 0x00, 0x00C8      }, // Delay =200ms
     {1, 0xBE, 0x0004        }, // YUV_YCBCR_CONTROL
-/**/    {0, 0x65, 0xA000        }, // PLL CLOCK_ENABLING
-/**/    {100, 0x00, 0x0064      }, // Delay =100ms
-/*    {1, 0xC6, 0x104C        }, // MCU_ADDRESS
-    {1, 0xC8, 0x0000        }, // MCU_DATA_0
-    {1, 0xC6, 0x0400        }, // MCU_ADDRESS
-    {1, 0xC8, 0x3736        }, // MCU_DATA_0
-    {1, 0xC9, 0x3C3C        }, // MCU_DATA_1
-    {1, 0xCA, 0x3C3C        }, // MCU_DATA_2
-    {1, 0xCB, 0x30EC        }, // MCU_DATA_3
-    {1, 0xCC, 0x08BD        }, // MCU_DATA_4
-    {1, 0xCD, 0xA1B6        }, // MCU_DATA_5
-    {1, 0xCE, 0xD6A9        }, // MCU_DATA_6
-    {1, 0xCF, 0xF102        }, // MCU_DATA_7
-    {1, 0xC6, 0x0410        }, // MCU_ADDRESS
-    {1, 0xC8, 0xBD22        }, // MCU_DATA_0
-    {1, 0xC9, 0x6DF6        }, // MCU_DATA_1
-    {1, 0xCA, 0x02BE        }, // MCU_DATA_2
-    {1, 0xCB, 0x4F30        }, // MCU_DATA_3
-    {1, 0xCC, 0xED06        }, // MCU_DATA_4
-    {1, 0xCD, 0xF602        }, // MCU_DATA_5
-    {1, 0xCE, 0xC1ED        }, // MCU_DATA_6
-    {1, 0xCF, 0x04EC        }, // MCU_DATA_7
-    {1, 0xC6, 0x0420        }, // MCU_ADDRESS
-    {1, 0xC8, 0x06A3        }, // MCU_DATA_0
-    {1, 0xC9, 0x04ED        }, // MCU_DATA_1
-    {1, 0xCA, 0x02D6        }, // MCU_DATA_2
-    {1, 0xCB, 0xA94F        }, // MCU_DATA_3
-    {1, 0xCC, 0xED00        }, // MCU_DATA_4
-    {1, 0xCD, 0xF602        }, // MCU_DATA_5
-    {1, 0xCE, 0xBDBD        }, // MCU_DATA_6
-    {1, 0xCF, 0xD268        }, // MCU_DATA_7
-    {1, 0xC6, 0x0430        }, // MCU_ADDRESS
-    {1, 0xC8, 0xF602        }, // MCU_DATA_0
-    {1, 0xC9, 0xBE30        }, // MCU_DATA_1
-    {1, 0xCA, 0xE003        }, // MCU_DATA_2
-    {1, 0xCB, 0xF702        }, // MCU_DATA_3
-    {1, 0xCC, 0xC7F6        }, // MCU_DATA_4
-    {1, 0xCD, 0x02BF        }, // MCU_DATA_5
-    {1, 0xCE, 0x4FED        }, // MCU_DATA_6
-    {1, 0xCF, 0x06F6        }, // MCU_DATA_7
-    {1, 0xC6, 0x0440        }, // MCU_ADDRESS
-    {1, 0xC8, 0x02C2        }, // MCU_DATA_0
-    {1, 0xC9, 0xED04        }, // MCU_DATA_1
-    {1, 0xCA, 0xEC06        }, // MCU_DATA_2
-    {1, 0xCB, 0xA304        }, // MCU_DATA_3
-    {1, 0xCC, 0xED02        }, // MCU_DATA_4
-    {1, 0xCD, 0xD6A9        }, // MCU_DATA_5
-    {1, 0xCE, 0x4FED        }, // MCU_DATA_6
-    {1, 0xCF, 0x00F6        }, // MCU_DATA_7
-    {1, 0xC6, 0x0450        }, // MCU_ADDRESS
-    {1, 0xC8, 0x02BD        }, // MCU_DATA_0
-    {1, 0xC9, 0xBDD2        }, // MCU_DATA_1
-    {1, 0xCA, 0x68F6        }, // MCU_DATA_2
-    {1, 0xCB, 0x02BF        }, // MCU_DATA_3
-    {1, 0xCC, 0x30E0        }, // MCU_DATA_4
-    {1, 0xCD, 0x03F7        }, // MCU_DATA_5
-    {1, 0xCE, 0x02C8        }, // MCU_DATA_6
-    {1, 0xCF, 0xF602        }, // MCU_DATA_7
-    {1, 0xC6, 0x0460        }, // MCU_ADDRESS
-    {1, 0xC8, 0xC04F        }, // MCU_DATA_0
-    {1, 0xC9, 0xED06        }, // MCU_DATA_1
-    {1, 0xCA, 0xF602        }, // MCU_DATA_2
-    {1, 0xCB, 0xC3ED        }, // MCU_DATA_3
-    {1, 0xCC, 0x04EC        }, // MCU_DATA_4
-    {1, 0xCD, 0x06A3        }, // MCU_DATA_5
-    {1, 0xCE, 0x04ED        }, // MCU_DATA_6
-    {1, 0xCF, 0x02D6        }, // MCU_DATA_7
-    {1, 0xC6, 0x0470        }, // MCU_ADDRESS
-    {1, 0xC8, 0xA94F        }, // MCU_DATA_0
-    {1, 0xC9, 0xED00        }, // MCU_DATA_1
-    {1, 0xCA, 0xF602        }, // MCU_DATA_2
-    {1, 0xCB, 0xBDBD        }, // MCU_DATA_3
-    {1, 0xCC, 0xD268        }, // MCU_DATA_4
-    {1, 0xCD, 0xF602        }, // MCU_DATA_5
-    {1, 0xCE, 0xC07E        }, // MCU_DATA_6
-    {1, 0xCF, 0x050B        }, // MCU_DATA_7
-    {1, 0xC6, 0x0480        }, // MCU_ADDRESS
-    {1, 0xC8, 0xF602        }, // MCU_DATA_0
-    {1, 0xC9, 0xC44F        }, // MCU_DATA_1
-    {1, 0xCA, 0x30ED        }, // MCU_DATA_2
-    {1, 0xCB, 0x06F6        }, // MCU_DATA_3
-    {1, 0xCC, 0x02C1        }, // MCU_DATA_4
-    {1, 0xCD, 0xED04        }, // MCU_DATA_5
-    {1, 0xCE, 0xEC06        }, // MCU_DATA_6
-    {1, 0xCF, 0xA304        }, // MCU_DATA_7
-    {1, 0xC6, 0x0490        }, // MCU_ADDRESS
-    {1, 0xC8, 0xED02        }, // MCU_DATA_0
-    {1, 0xC9, 0xD6A8        }, // MCU_DATA_1
-    {1, 0xCA, 0x4FED        }, // MCU_DATA_2
-    {1, 0xCB, 0x06D6        }, // MCU_DATA_3
-    {1, 0xCC, 0xA9ED        }, // MCU_DATA_4
-    {1, 0xCD, 0x04EC        }, // MCU_DATA_5
-    {1, 0xCE, 0x06A3        }, // MCU_DATA_6
-    {1, 0xCF, 0x04ED        }, // MCU_DATA_7
-    {1, 0xC6, 0x04A0        }, // MCU_ADDRESS
-    {1, 0xC8, 0x00F6        }, // MCU_DATA_0
-    {1, 0xC9, 0x02BD        }, // MCU_DATA_1
-    {1, 0xCA, 0x4FBD        }, // MCU_DATA_2
-    {1, 0xCB, 0xD268        }, // MCU_DATA_3
-    {1, 0xCC, 0xF602        }, // MCU_DATA_4
-    {1, 0xCD, 0xC430        }, // MCU_DATA_5
-    {1, 0xCE, 0xE003        }, // MCU_DATA_6
-    {1, 0xCF, 0xF702        }, // MCU_DATA_7
-    {1, 0xC6, 0x04B0        }, // MCU_ADDRESS
-    {1, 0xC8, 0xC7F6        }, // MCU_DATA_0
-    {1, 0xC9, 0x02C5        }, // MCU_DATA_1
-    {1, 0xCA, 0x4FED        }, // MCU_DATA_2
-    {1, 0xCB, 0x06F6        }, // MCU_DATA_3
-    {1, 0xCC, 0x02C2        }, // MCU_DATA_4
-    {1, 0xCD, 0xED04        }, // MCU_DATA_5
-    {1, 0xCE, 0xEC06        }, // MCU_DATA_6
-    {1, 0xCF, 0xA304        }, // MCU_DATA_7
-    {1, 0xC6, 0x04C0        }, // MCU_ADDRESS
-    {1, 0xC8, 0xED02        }, // MCU_DATA_0
-    {1, 0xC9, 0xD6A8        }, // MCU_DATA_1
-    {1, 0xCA, 0x4FED        }, // MCU_DATA_2
-    {1, 0xCB, 0x06D6        }, // MCU_DATA_3
-    {1, 0xCC, 0xA9ED        }, // MCU_DATA_4
-    {1, 0xCD, 0x04EC        }, // MCU_DATA_5
-    {1, 0xCE, 0x06A3        }, // MCU_DATA_6
-    {1, 0xCF, 0x04ED        }, // MCU_DATA_7
-    {1, 0xC6, 0x04D0        }, // MCU_ADDRESS
-    {1, 0xC8, 0x00F6        }, // MCU_DATA_0
-    {1, 0xC9, 0x02BD        }, // MCU_DATA_1
-    {1, 0xCA, 0x4FBD        }, // MCU_DATA_2
-    {1, 0xCB, 0xD268        }, // MCU_DATA_3
-    {1, 0xCC, 0xF602        }, // MCU_DATA_4
-    {1, 0xCD, 0xC530        }, // MCU_DATA_5
-    {1, 0xCE, 0xE003        }, // MCU_DATA_6
-    {1, 0xCF, 0xF702        }, // MCU_DATA_7
-    {1, 0xC6, 0x04E0        }, // MCU_ADDRESS
-    {1, 0xC8, 0xC8F6        }, // MCU_DATA_0
-    {1, 0xC9, 0x02C6        }, // MCU_DATA_1
-    {1, 0xCA, 0x4FED        }, // MCU_DATA_2
-    {1, 0xCB, 0x06F6        }, // MCU_DATA_3
-    {1, 0xCC, 0x02C3        }, // MCU_DATA_4
-    {1, 0xCD, 0xED04        }, // MCU_DATA_5
-    {1, 0xCE, 0xEC06        }, // MCU_DATA_6
-    {1, 0xCF, 0xA304        }, // MCU_DATA_7
-    {1, 0xC6, 0x04F0        }, // MCU_ADDRESS
-    {1, 0xC8, 0xED02        }, // MCU_DATA_0
-    {1, 0xC9, 0xD6A8        }, // MCU_DATA_1
-    {1, 0xCA, 0x4FED        }, // MCU_DATA_2
-    {1, 0xCB, 0x06D6        }, // MCU_DATA_3
-    {1, 0xCC, 0xA9ED        }, // MCU_DATA_4
-    {1, 0xCD, 0x04EC        }, // MCU_DATA_5
-    {1, 0xCE, 0x06A3        }, // MCU_DATA_6
-    {1, 0xCF, 0x04ED        }, // MCU_DATA_7
-    {1, 0xC6, 0x0500        }, // MCU_ADDRESS
-    {1, 0xC8, 0x00F6        }, // MCU_DATA_0
-    {1, 0xC9, 0x02BD        }, // MCU_DATA_1
-    {1, 0xCA, 0x4FBD        }, // MCU_DATA_2
-    {1, 0xCB, 0xD268        }, // MCU_DATA_3
-    {1, 0xCC, 0xF602        }, // MCU_DATA_4
-    {1, 0xCD, 0xC630        }, // MCU_DATA_5
-    {1, 0xCE, 0xE003        }, // MCU_DATA_6
-    {1, 0xCF, 0xF702        }, // MCU_DATA_7
-    {1, 0xC6, 0x0510        }, // MCU_ADDRESS
-    {1, 0xC8, 0xC9EE        }, // MCU_DATA_0
-    {1, 0xC9, 0x08EC        }, // MCU_DATA_1
-    {1, 0xCA, 0x0030        }, // MCU_DATA_2
-    {1, 0xCB, 0xED02        }, // MCU_DATA_3
-    {1, 0xCC, 0xF602        }, // MCU_DATA_4
-    {1, 0xCD, 0xC74F        }, // MCU_DATA_5
-    {1, 0xCE, 0xED00        }, // MCU_DATA_6
-    {1, 0xCF, 0xCC00        }, // MCU_DATA_7
-    {1, 0xC6, 0x0520        }, // MCU_ADDRESS
-    {1, 0xC8, 0x80BD        }, // MCU_DATA_0
-    {1, 0xC9, 0xD268        }, // MCU_DATA_1
-    {1, 0xCA, 0x301A        }, // MCU_DATA_2
-    {1, 0xCB, 0xEE08        }, // MCU_DATA_3
-    {1, 0xCC, 0xEC02        }, // MCU_DATA_4
-    {1, 0xCD, 0x18ED        }, // MCU_DATA_5
-    {1, 0xCE, 0x00EE        }, // MCU_DATA_6
-    {1, 0xCF, 0x08EC        }, // MCU_DATA_7
-    {1, 0xC6, 0x0530        }, // MCU_ADDRESS
-    {1, 0xC8, 0x0230        }, // MCU_DATA_0
-    {1, 0xC9, 0xED02        }, // MCU_DATA_1
-    {1, 0xCA, 0xF602        }, // MCU_DATA_2
-    {1, 0xCB, 0xC84F        }, // MCU_DATA_3
-    {1, 0xCC, 0xED00        }, // MCU_DATA_4
-    {1, 0xCD, 0xCC00        }, // MCU_DATA_5
-    {1, 0xCE, 0x80BD        }, // MCU_DATA_6
-    {1, 0xCF, 0xD268        }, // MCU_DATA_7
-    {1, 0xC6, 0x0540        }, // MCU_ADDRESS
-    {1, 0xC8, 0x301A        }, // MCU_DATA_0
-    {1, 0xC9, 0xEE08        }, // MCU_DATA_1
-    {1, 0xCA, 0xEC02        }, // MCU_DATA_2
-    {1, 0xCB, 0x18ED        }, // MCU_DATA_3
-    {1, 0xCC, 0x02EE        }, // MCU_DATA_4
-    {1, 0xCD, 0x08EC        }, // MCU_DATA_5
-    {1, 0xCE, 0x0430        }, // MCU_DATA_6
-    {1, 0xCF, 0xED02        }, // MCU_DATA_7
-    {1, 0xC6, 0x0550        }, // MCU_ADDRESS
-    {1, 0xC8, 0xF602        }, // MCU_DATA_0
-    {1, 0xC9, 0xC94F        }, // MCU_DATA_1
-    {1, 0xCA, 0xED00        }, // MCU_DATA_2
-    {1, 0xCB, 0xCC00        }, // MCU_DATA_3
-    {1, 0xCC, 0x80BD        }, // MCU_DATA_4
-    {1, 0xCD, 0xD268        }, // MCU_DATA_5
-    {1, 0xCE, 0x301A        }, // MCU_DATA_6
-    {1, 0xCF, 0xEE08        }, // MCU_DATA_7
-    {1, 0xC6, 0x0560        }, // MCU_ADDRESS
-    {1, 0xC8, 0xEC02        }, // MCU_DATA_0
-    {1, 0xC9, 0x18ED        }, // MCU_DATA_1
-    {1, 0xCA, 0x0430        }, // MCU_DATA_2
-    {1, 0xCB, 0xC60A        }, // MCU_DATA_3
-    {1, 0xCC, 0x3A35        }, // MCU_DATA_4
-    {1, 0xCD, 0x3930        }, // MCU_DATA_5
-    {1, 0xCE, 0x8FC3        }, // MCU_DATA_6
-    {1, 0xCF, 0xFFE5        }, // MCU_DATA_7
-    {1, 0xC6, 0x0570        }, // MCU_ADDRESS
-    {1, 0xC8, 0x8F35        }, // MCU_DATA_0
-    {1, 0xC9, 0x6F1A        }, // MCU_DATA_1
-    {1, 0xCA, 0xDC8C        }, // MCU_DATA_2
-    {1, 0xCB, 0x2C02        }, // MCU_DATA_3
-    {1, 0xCC, 0x6C1A        }, // MCU_DATA_4
-    {1, 0xCD, 0xDC8E        }, // MCU_DATA_5
-    {1, 0xCE, 0x2C06        }, // MCU_DATA_6
-    {1, 0xCF, 0xE61A        }, // MCU_DATA_7
-    {1, 0xC6, 0x0580        }, // MCU_ADDRESS
-    {1, 0xC8, 0xCB02        }, // MCU_DATA_0
-    {1, 0xC9, 0xE71A        }, // MCU_DATA_1
-    {1, 0xCA, 0xDC90        }, // MCU_DATA_2
-    {1, 0xCB, 0x2C06        }, // MCU_DATA_3
-    {1, 0xCC, 0xE61A        }, // MCU_DATA_4
-    {1, 0xCD, 0xCB04        }, // MCU_DATA_5
-    {1, 0xCE, 0xE71A        }, // MCU_DATA_6
-    {1, 0xCF, 0xDC94        }, // MCU_DATA_7
-    {1, 0xC6, 0x0590        }, // MCU_ADDRESS
-    {1, 0xC8, 0x2C06        }, // MCU_DATA_0
-    {1, 0xC9, 0xE61A        }, // MCU_DATA_1
-    {1, 0xCA, 0xCB08        }, // MCU_DATA_2
-    {1, 0xCB, 0xE71A        }, // MCU_DATA_3
-    {1, 0xCC, 0xDC96        }, // MCU_DATA_4
-    {1, 0xCD, 0x2C06        }, // MCU_DATA_5
-    {1, 0xCE, 0xE61A        }, // MCU_DATA_6
-    {1, 0xCF, 0xCB10        }, // MCU_DATA_7
-    {1, 0xC6, 0x05A0        }, // MCU_ADDRESS
-    {1, 0xC8, 0xE71A        }, // MCU_DATA_0
-    {1, 0xC9, 0xDC98        }, // MCU_DATA_1
-    {1, 0xCA, 0x2C06        }, // MCU_DATA_2
-    {1, 0xCB, 0xE61A        }, // MCU_DATA_3
-    {1, 0xCC, 0xCB20        }, // MCU_DATA_4
-    {1, 0xCD, 0xE71A        }, // MCU_DATA_5
-    {1, 0xCE, 0x5F4F        }, // MCU_DATA_6
-    {1, 0xCF, 0xED0D        }, // MCU_DATA_7
-    {1, 0xC6, 0x05B0        }, // MCU_ADDRESS
-    {1, 0xC8, 0xED0B        }, // MCU_DATA_0
-    {1, 0xC9, 0xC608        }, // MCU_DATA_1
-    {1, 0xCA, 0xE709        }, // MCU_DATA_2
-    {1, 0xCB, 0x4FE6        }, // MCU_DATA_3
-    {1, 0xCC, 0x092A        }, // MCU_DATA_4
-    {1, 0xCD, 0x0143        }, // MCU_DATA_5
-    {1, 0xCE, 0x058F        }, // MCU_DATA_6
-    {1, 0xCF, 0xEC8A        }, // MCU_DATA_7
-    {1, 0xC6, 0x05C0        }, // MCU_ADDRESS
-    {1, 0xC8, 0x30ED        }, // MCU_DATA_0
-    {1, 0xC9, 0x0F2C        }, // MCU_DATA_1
-    {1, 0xCA, 0x065F        }, // MCU_DATA_2
-    {1, 0xCB, 0x4FA3        }, // MCU_DATA_3
-    {1, 0xCC, 0x0FED        }, // MCU_DATA_4
-    {1, 0xCD, 0x0FC6        }, // MCU_DATA_5
-    {1, 0xCE, 0x04E7        }, // MCU_DATA_6
-    {1, 0xCF, 0x0A20        }, // MCU_DATA_7
-    {1, 0xC6, 0x05D0        }, // MCU_ADDRESS
-    {1, 0xC8, 0x07EC        }, // MCU_DATA_0
-    {1, 0xC9, 0x0F04        }, // MCU_DATA_1
-    {1, 0xCA, 0xED0F        }, // MCU_DATA_2
-    {1, 0xCB, 0x6A0A        }, // MCU_DATA_3
-    {1, 0xCC, 0x6D0F        }, // MCU_DATA_4
-    {1, 0xCD, 0x2704        }, // MCU_DATA_5
-    {1, 0xCE, 0x6D0A        }, // MCU_DATA_6
-    {1, 0xCF, 0x26F1        }, // MCU_DATA_7
-    {1, 0xC6, 0x05E0        }, // MCU_ADDRESS
-    {1, 0xC8, 0x4FE6        }, // MCU_DATA_0
-    {1, 0xC9, 0x092A        }, // MCU_DATA_1
-    {1, 0xCA, 0x0143        }, // MCU_DATA_2
-    {1, 0xCB, 0xED06        }, // MCU_DATA_3
-    {1, 0xCC, 0x8FC3        }, // MCU_DATA_4
-    {1, 0xCD, 0x0011        }, // MCU_DATA_5
-    {1, 0xCE, 0x30E3        }, // MCU_DATA_6
-    {1, 0xCF, 0x0618        }, // MCU_DATA_7
-    {1, 0xC6, 0x05F0        }, // MCU_ADDRESS
-    {1, 0xC8, 0x8FE6        }, // MCU_DATA_0
-    {1, 0xC9, 0x1018        }, // MCU_DATA_1
-    {1, 0xCA, 0xE700        }, // MCU_DATA_2
-    {1, 0xCB, 0xE609        }, // MCU_DATA_3
-    {1, 0xCC, 0xC104        }, // MCU_DATA_4
-    {1, 0xCD, 0x2F10        }, // MCU_DATA_5
-    {1, 0xCE, 0xEC0B        }, // MCU_DATA_6
-    {1, 0xCF, 0x0505        }, // MCU_DATA_7
-    {1, 0xC6, 0x0600        }, // MCU_ADDRESS
-    {1, 0xC8, 0x05ED        }, // MCU_DATA_0
-    {1, 0xC9, 0x0BE6        }, // MCU_DATA_1
-    {1, 0xCA, 0x0A4F        }, // MCU_DATA_2
-    {1, 0xCB, 0xE30B        }, // MCU_DATA_3
-    {1, 0xCC, 0xED0B        }, // MCU_DATA_4
-    {1, 0xCD, 0x200E        }, // MCU_DATA_5
-    {1, 0xCE, 0xEC0D        }, // MCU_DATA_6
-    {1, 0xCF, 0x0505        }, // MCU_DATA_7
-    {1, 0xC6, 0x0610        }, // MCU_ADDRESS
-    {1, 0xC8, 0x05ED        }, // MCU_DATA_0
-    {1, 0xC9, 0x0DE6        }, // MCU_DATA_1
-    {1, 0xCA, 0x0A4F        }, // MCU_DATA_2
-    {1, 0xCB, 0xE30D        }, // MCU_DATA_3
-    {1, 0xCC, 0xED0D        }, // MCU_DATA_4
-    {1, 0xCD, 0x6A09        }, // MCU_DATA_5
-    {1, 0xCE, 0x6D09        }, // MCU_DATA_6
-    {1, 0xCF, 0x2C96        }, // MCU_DATA_7
-    {1, 0xC6, 0x0620        }, // MCU_ADDRESS
-    {1, 0xC8, 0xCC01        }, // MCU_DATA_0
-    {1, 0xC9, 0x60ED        }, // MCU_DATA_1
-    {1, 0xCA, 0x00EC        }, // MCU_DATA_2
-    {1, 0xCB, 0x0DBD        }, // MCU_DATA_3
-    {1, 0xCC, 0xD350        }, // MCU_DATA_4
-    {1, 0xCD, 0xCC01        }, // MCU_DATA_5
-    {1, 0xCE, 0x6130        }, // MCU_DATA_6
-    {1, 0xCF, 0xED00        }, // MCU_DATA_7
-    {1, 0xC6, 0x0630        }, // MCU_ADDRESS
-    {1, 0xC8, 0xEC0B        }, // MCU_DATA_0
-    {1, 0xC9, 0xBDD3        }, // MCU_DATA_1
-    {1, 0xCA, 0x5030        }, // MCU_DATA_2
-    {1, 0xCB, 0xE612        }, // MCU_DATA_3
-    {1, 0xCC, 0x4F17        }, // MCU_DATA_4
-    {1, 0xCD, 0x5FED        }, // MCU_DATA_5
-    {1, 0xCE, 0x0FE6        }, // MCU_DATA_6
-    {1, 0xCF, 0x114F        }, // MCU_DATA_7
-    {1, 0xC6, 0x0640        }, // MCU_ADDRESS
-    {1, 0xC8, 0xE30F        }, // MCU_DATA_0
-    {1, 0xC9, 0xED0F        }, // MCU_DATA_1
-    {1, 0xCA, 0xCC01        }, // MCU_DATA_2
-    {1, 0xCB, 0x62ED        }, // MCU_DATA_3
-    {1, 0xCC, 0x00EC        }, // MCU_DATA_4
-    {1, 0xCD, 0x0FBD        }, // MCU_DATA_5
-    {1, 0xCE, 0xD350        }, // MCU_DATA_6
-    {1, 0xCF, 0x30E6        }, // MCU_DATA_7
-    {1, 0xC6, 0x0650        }, // MCU_ADDRESS
-    {1, 0xC8, 0x144F        }, // MCU_DATA_0
-    {1, 0xC9, 0x175F        }, // MCU_DATA_1
-    {1, 0xCA, 0xED0F        }, // MCU_DATA_2
-    {1, 0xCB, 0xE613        }, // MCU_DATA_3
-    {1, 0xCC, 0x4FE3        }, // MCU_DATA_4
-    {1, 0xCD, 0x0FED        }, // MCU_DATA_5
-    {1, 0xCE, 0x0FCC        }, // MCU_DATA_6
-    {1, 0xCF, 0x0163        }, // MCU_DATA_7
-    {1, 0xC6, 0x0660        }, // MCU_ADDRESS
-    {1, 0xC8, 0xED00        }, // MCU_DATA_0
-    {1, 0xC9, 0xEC0F        }, // MCU_DATA_1
-    {1, 0xCA, 0xBDD3        }, // MCU_DATA_2
-    {1, 0xCB, 0x5030        }, // MCU_DATA_3
-    {1, 0xCC, 0xE616        }, // MCU_DATA_4
-    {1, 0xCD, 0x4F17        }, // MCU_DATA_5
-    {1, 0xCE, 0x5FED        }, // MCU_DATA_6
-    {1, 0xCF, 0x0FE6        }, // MCU_DATA_7
-    {1, 0xC6, 0x0670        }, // MCU_ADDRESS
-    {1, 0xC8, 0x154F        }, // MCU_DATA_0
-    {1, 0xC9, 0xE30F        }, // MCU_DATA_1
-    {1, 0xCA, 0xED0F        }, // MCU_DATA_2
-    {1, 0xCB, 0xCC01        }, // MCU_DATA_3
-    {1, 0xCC, 0x64ED        }, // MCU_DATA_4
-    {1, 0xCD, 0x00EC        }, // MCU_DATA_5
-    {1, 0xCE, 0x0FBD        }, // MCU_DATA_6
-    {1, 0xCF, 0xD350        }, // MCU_DATA_7
-    {1, 0xC6, 0x0680        }, // MCU_ADDRESS
-    {1, 0xC8, 0x30E6        }, // MCU_DATA_0
-    {1, 0xC9, 0x184F        }, // MCU_DATA_1
-    {1, 0xCA, 0x175F        }, // MCU_DATA_2
-    {1, 0xCB, 0xED0F        }, // MCU_DATA_3
-    {1, 0xCC, 0xE617        }, // MCU_DATA_4
-    {1, 0xCD, 0x4FE3        }, // MCU_DATA_5
-    {1, 0xCE, 0x0FED        }, // MCU_DATA_6
-    {1, 0xCF, 0x0FCC        }, // MCU_DATA_7
-    {1, 0xC6, 0x0690        }, // MCU_ADDRESS
-    {1, 0xC8, 0x0165        }, // MCU_DATA_0
-    {1, 0xC9, 0xED00        }, // MCU_DATA_1
-    {1, 0xCA, 0xEC0F        }, // MCU_DATA_2
-    {1, 0xCB, 0xBDD3        }, // MCU_DATA_3
-    {1, 0xCC, 0x5030        }, // MCU_DATA_4
-    {1, 0xCD, 0xE61A        }, // MCU_DATA_5
-    {1, 0xCE, 0x4F17        }, // MCU_DATA_6
-    {1, 0xCF, 0x5FED        }, // MCU_DATA_7
-    {1, 0xC6, 0x06A0        }, // MCU_ADDRESS
-    {1, 0xC8, 0x0FE6        }, // MCU_DATA_0
-    {1, 0xC9, 0x194F        }, // MCU_DATA_1
-    {1, 0xCA, 0xE30F        }, // MCU_DATA_2
-    {1, 0xCB, 0xED0F        }, // MCU_DATA_3
-    {1, 0xCC, 0xCC01        }, // MCU_DATA_4
-    {1, 0xCD, 0x66ED        }, // MCU_DATA_5
-    {1, 0xCE, 0x00EC        }, // MCU_DATA_6
-    {1, 0xCF, 0x0FBD        }, // MCU_DATA_7
-    {1, 0xC6, 0x06B0        }, // MCU_ADDRESS
-    {1, 0xC8, 0xD350        }, // MCU_DATA_0
-    {1, 0xC9, 0x13AB        }, // MCU_DATA_1
-    {1, 0xCA, 0x0406        }, // MCU_DATA_2
-    {1, 0xCB, 0xCC7F        }, // MCU_DATA_3
-    {1, 0xCC, 0x8030        }, // MCU_DATA_4
-    {1, 0xCD, 0x207A        }, // MCU_DATA_5
-    {1, 0xCE, 0xDC9C        }, // MCU_DATA_6
-    {1, 0xCF, 0x30ED        }, // MCU_DATA_7
-    {1, 0xC6, 0x06C0        }, // MCU_ADDRESS
-    {1, 0xC8, 0x02D6        }, // MCU_DATA_0
-    {1, 0xC9, 0xA44F        }, // MCU_DATA_1
-    {1, 0xCA, 0xED00        }, // MCU_DATA_2
-    {1, 0xCB, 0xCC00        }, // MCU_DATA_3
-    {1, 0xCC, 0x80BD        }, // MCU_DATA_4
-    {1, 0xCD, 0xD268        }, // MCU_DATA_5
-    {1, 0xCE, 0x30E6        }, // MCU_DATA_6
-    {1, 0xCF, 0x03E7        }, // MCU_DATA_7
-    {1, 0xC6, 0x06D0        }, // MCU_ADDRESS
-    {1, 0xC8, 0x11DC        }, // MCU_DATA_0
-    {1, 0xC9, 0x9EED        }, // MCU_DATA_1
-    {1, 0xCA, 0x02D6        }, // MCU_DATA_2
-    {1, 0xCB, 0xA64F        }, // MCU_DATA_3
-    {1, 0xCC, 0xED00        }, // MCU_DATA_4
-    {1, 0xCD, 0xCC00        }, // MCU_DATA_5
-    {1, 0xCE, 0x80BD        }, // MCU_DATA_6
-    {1, 0xCF, 0xD268        }, // MCU_DATA_7
-    {1, 0xC6, 0x06E0        }, // MCU_ADDRESS
-    {1, 0xC8, 0x30E6        }, // MCU_DATA_0
-    {1, 0xC9, 0x03E7        }, // MCU_DATA_1
-    {1, 0xCA, 0x12E6        }, // MCU_DATA_2
-    {1, 0xCB, 0x11A6        }, // MCU_DATA_3
-    {1, 0xCC, 0x123D        }, // MCU_DATA_4
-    {1, 0xCD, 0xED0F        }, // MCU_DATA_5
-    {1, 0xCE, 0x6F0A        }, // MCU_DATA_6
-    {1, 0xCF, 0x2007        }, // MCU_DATA_7
-    {1, 0xC6, 0x06F0        }, // MCU_ADDRESS
-    {1, 0xC8, 0xEC0F        }, // MCU_DATA_0
-    {1, 0xC9, 0x04ED        }, // MCU_DATA_1
-    {1, 0xCA, 0x0F6C        }, // MCU_DATA_2
-    {1, 0xCB, 0x0AEC        }, // MCU_DATA_3
-    {1, 0xCC, 0x0F1A        }, // MCU_DATA_4
-    {1, 0xCD, 0x8300        }, // MCU_DATA_5
-    {1, 0xCE, 0x2024        }, // MCU_DATA_6
-    {1, 0xCF, 0xF183        }, // MCU_DATA_7
-    {1, 0xC6, 0x0700        }, // MCU_ADDRESS
-    {1, 0xC8, 0x0010        }, // MCU_DATA_0
-    {1, 0xC9, 0xED0F        }, // MCU_DATA_1
-    {1, 0xCA, 0xC3E8        }, // MCU_DATA_2
-    {1, 0xCB, 0xFB8F        }, // MCU_DATA_3
-    {1, 0xCC, 0xE600        }, // MCU_DATA_4
-    {1, 0xCD, 0x30E7        }, // MCU_DATA_5
-    {1, 0xCE, 0x08E6        }, // MCU_DATA_6
-    {1, 0xCF, 0x0A86        }, // MCU_DATA_7
-    {1, 0xC6, 0x0710        }, // MCU_ADDRESS
-    {1, 0xC8, 0x203D        }, // MCU_DATA_0
-    {1, 0xC9, 0xEB08        }, // MCU_DATA_1
-    {1, 0xCA, 0xC040        }, // MCU_DATA_2
-    {1, 0xCB, 0xE708        }, // MCU_DATA_3
-    {1, 0xCC, 0xD6BA        }, // MCU_DATA_4
-    {1, 0xCD, 0x4FED        }, // MCU_DATA_5
-    {1, 0xCE, 0x06E6        }, // MCU_DATA_6
-    {1, 0xCF, 0x08ED        }, // MCU_DATA_7
-    {1, 0xC6, 0x0720        }, // MCU_ADDRESS
-    {1, 0xC8, 0x04E3        }, // MCU_DATA_0
-    {1, 0xC9, 0x06ED        }, // MCU_DATA_1
-    {1, 0xCA, 0x0F17        }, // MCU_DATA_2
-    {1, 0xCB, 0x5FED        }, // MCU_DATA_3
-    {1, 0xCC, 0x0FD6        }, // MCU_DATA_4
-    {1, 0xCD, 0xB94F        }, // MCU_DATA_5
-    {1, 0xCE, 0xED06        }, // MCU_DATA_6
-    {1, 0xCF, 0xE608        }, // MCU_DATA_7
-    {1, 0xC6, 0x0730        }, // MCU_ADDRESS
-    {1, 0xC8, 0xED04        }, // MCU_DATA_0
-    {1, 0xC9, 0xE306        }, // MCU_DATA_1
-    {1, 0xCA, 0xE30F        }, // MCU_DATA_2
-    {1, 0xCB, 0xED0F        }, // MCU_DATA_3
-    {1, 0xCC, 0xCC01        }, // MCU_DATA_4
-    {1, 0xCD, 0x52ED        }, // MCU_DATA_5
-    {1, 0xCE, 0x00EC        }, // MCU_DATA_6
-    {1, 0xCF, 0x0FBD        }, // MCU_DATA_7
-    {1, 0xC6, 0x0740        }, // MCU_ADDRESS
-    {1, 0xC8, 0xD350        }, // MCU_DATA_0
-    {1, 0xC9, 0x30C6        }, // MCU_DATA_1
-    {1, 0xCA, 0x1B3A        }, // MCU_DATA_2
-    {1, 0xCB, 0x3539        }, // MCU_DATA_3
-    {1, 0xCC, 0x3C3C        }, // MCU_DATA_4
-    {1, 0xCD, 0x34C6        }, // MCU_DATA_5
-    {1, 0xCE, 0x18F7        }, // MCU_DATA_6
-    {1, 0xCF, 0x02BD        }, // MCU_DATA_7
-    {1, 0xC6, 0x0750        }, // MCU_ADDRESS
-    {1, 0xC8, 0xC6B4        }, // MCU_DATA_0
-    {1, 0xC9, 0xF702        }, // MCU_DATA_1
-    {1, 0xCA, 0xBEC6        }, // MCU_DATA_2
-    {1, 0xCB, 0x96F7        }, // MCU_DATA_3
-    {1, 0xCC, 0x02BF        }, // MCU_DATA_4
-    {1, 0xCD, 0xC680        }, // MCU_DATA_5
-    {1, 0xCE, 0xF702        }, // MCU_DATA_6
-    {1, 0xCF, 0xC0F7        }, // MCU_DATA_7
-    {1, 0xC6, 0x0760        }, // MCU_ADDRESS
-    {1, 0xC8, 0x02C1        }, // MCU_DATA_0
-    {1, 0xC9, 0xF702        }, // MCU_DATA_1
-    {1, 0xCA, 0xC2F7        }, // MCU_DATA_2
-    {1, 0xCB, 0x02C3        }, // MCU_DATA_3
-    {1, 0xCC, 0xF702        }, // MCU_DATA_4
-    {1, 0xCD, 0xC4F7        }, // MCU_DATA_5
-    {1, 0xCE, 0x02C5        }, // MCU_DATA_6
-    {1, 0xCF, 0xF702        }, // MCU_DATA_7
-    {1, 0xC6, 0x0770        }, // MCU_ADDRESS
-    {1, 0xC8, 0xC6CC        }, // MCU_DATA_0
-    {1, 0xC9, 0x02AB        }, // MCU_DATA_1
-    {1, 0xCA, 0x30ED        }, // MCU_DATA_2
-    {1, 0xCB, 0x02FE        }, // MCU_DATA_3
-    {1, 0xCC, 0x1050        }, // MCU_DATA_4
-    {1, 0xCD, 0xEC06        }, // MCU_DATA_5
-    {1, 0xCE, 0xFD02        }, // MCU_DATA_6
-    {1, 0xCF, 0xA7FE        }, // MCU_DATA_7
-    {1, 0xC6, 0x0780        }, // MCU_ADDRESS
-    {1, 0xC8, 0x02A7        }, // MCU_DATA_0
-    {1, 0xC9, 0xEC00        }, // MCU_DATA_1
-    {1, 0xCA, 0xFD02        }, // MCU_DATA_2
-    {1, 0xCB, 0xA930        }, // MCU_DATA_3
-    {1, 0xCC, 0x6F04        }, // MCU_DATA_4
-    {1, 0xCD, 0xE604        }, // MCU_DATA_5
-    {1, 0xCE, 0x4F05        }, // MCU_DATA_6
-    {1, 0xCF, 0xF302        }, // MCU_DATA_7
-    {1, 0xC6, 0x0790        }, // MCU_ADDRESS
-    {1, 0xC8, 0xA98F        }, // MCU_DATA_0
-    {1, 0xC9, 0xEC00        }, // MCU_DATA_1
-    {1, 0xCA, 0x30ED        }, // MCU_DATA_2
-    {1, 0xCB, 0x00E6        }, // MCU_DATA_3
-    {1, 0xCC, 0x044F        }, // MCU_DATA_4
-    {1, 0xCD, 0x05E3        }, // MCU_DATA_5
-    {1, 0xCE, 0x0218        }, // MCU_DATA_6
-    {1, 0xCF, 0x8FEC        }, // MCU_DATA_7
-    {1, 0xC6, 0x07A0        }, // MCU_ADDRESS
-    {1, 0xC8, 0x0018        }, // MCU_DATA_0
-    {1, 0xC9, 0xED00        }, // MCU_DATA_1
-    {1, 0xCA, 0x6C04        }, // MCU_DATA_2
-    {1, 0xCB, 0xE604        }, // MCU_DATA_3
-    {1, 0xCC, 0xC109        }, // MCU_DATA_4
-    {1, 0xCD, 0x25DE        }, // MCU_DATA_5
-    {1, 0xCE, 0xEE02        }, // MCU_DATA_6
-    {1, 0xCF, 0xCC05        }, // MCU_DATA_7
-    {1, 0xC6, 0x07B0        }, // MCU_ADDRESS
-    {1, 0xC8, 0x6BED        }, // MCU_DATA_0
-    {1, 0xC9, 0x0830        }, // MCU_DATA_1
-    {1, 0xCA, 0xEE02        }, // MCU_DATA_2
-    {1, 0xCB, 0xCC04        }, // MCU_DATA_3
-    {1, 0xCC, 0x00ED        }, // MCU_DATA_4
-    {1, 0xCD, 0x0ECC        }, // MCU_DATA_5
-    {1, 0xCE, 0x02AB        }, // MCU_DATA_6
-    {1, 0xCF, 0xDD58        }, // MCU_DATA_7
-    {1, 0xC6, 0x07C0        }, // MCU_ADDRESS
-    {1, 0xC8, 0x3838        }, // MCU_DATA_0
-    {1, 0xC9, 0x3139        }, // MCU_DATA_1   */
+    {0, 0x65, 0xA000        }, // PLL CLOCK_ENABLING
+    {100, 0x00, 0x00C8      }, // Delay =200ms
     {1, 0xC6, 0x2003        }, //MON_ARG1
     {1, 0xC8, 0x0748        }, //MON_ARG1
     {1, 0xC6, 0xA002        }, //MON_CMD
@@ -956,7 +362,7 @@
     {1, 0xC8, 0x00E2        }, //AWB_TG_MIN0
     {1, 0x1F, 0x0018        }, // RESERVED_SOC1_1F
     {1, 0x51, 0x7F40        }, // RESERVED_SOC1_51
-    {100, 0x00, 0x01F4       }, //Delay = 1000ms
+    {100, 0x00, 0x01F4       }, //Delay = 500ms
     {0, 0x33, 0x0343        }, // RESERVED_CORE_33
     {0, 0x38, 0x0868        }, // RESERVED_CORE_38
     {1, 0xC6, 0xA10F        }, //SEQ_RESET_LEVEL_TH
@@ -1050,94 +456,7 @@
     {100, 0x00, 0x01f4      }, // Delay =500ms
 
 };
-/*
-static  const s_RegList init_cmds_list[]= {
-//    {100,0x00,0x01F4    },
-    {0, 0x33, 0x0343    }, // RESERVED_CORE_33
-    {1, 0xC6, 0xA115    }, // SEQ_LLMODE
-    {1, 0xC8, 0x0020    }, // SEQ_LLMODE
-    {0, 0x38, 0x0866    }, // RESERVED_CORE_38
-    {100, 0x00, 0x0064  },  // Delay = 100ms
-    {2, 0x80, 0x0168    }, // LENS_CORRECTION_CONTROL
-    {2, 0x81, 0x6432    }, // ZONE_BOUNDS_X1_X2
-    {2, 0x82, 0x3296    }, // ZONE_BOUNDS_X0_X3
-    {2, 0x83, 0x9664    }, // ZONE_BOUNDS_X4_X5
-    {2, 0x84, 0x5028    }, // ZONE_BOUNDS_Y1_Y2
-    {2, 0x85, 0x2878    }, // ZONE_BOUNDS_Y0_Y3
-    {2, 0x86, 0x7850    }, // ZONE_BOUNDS_Y4_Y5
-    {2, 0x87, 0x0000    }, // CENTER_OFFSET
-    {2, 0x88, 0x0152    }, // FX_RED
-    {2, 0x89, 0x015C    }, // FX_GREEN
-    {2, 0x8A, 0x00F4    }, // FX_BLUE
-    {2, 0x8B, 0x0108    }, // FY_RED
-    {2, 0x8C, 0x00FA    }, // FY_GREEN
-    {2, 0x8D, 0x00CF    }, // FY_BLUE
-    {2, 0x8E, 0x09AD    }, // DF_DX_RED
-    {2, 0x8F, 0x091E    }, // DF_DX_GREEN
-    {2, 0x90, 0x0B3F    }, // DF_DX_BLUE
-    {2, 0x91, 0x0C85    }, // DF_DY_RED
-    {2, 0x92, 0x0CFF    }, // DF_DY_GREEN
-    {2, 0x93, 0x0D86    }, // DF_DY_BLUE
-    {2, 0x94, 0x163A    }, // SECOND_DERIV_ZONE_0_RED
-    {2, 0x95, 0x0E47    }, // SECOND_DERIV_ZONE_0_GREEN
-    {2, 0x96, 0x103C    }, // SECOND_DERIV_ZONE_0_BLUE
-    {2, 0x97, 0x1D35    }, // SECOND_DERIV_ZONE_1_RED
-    {2, 0x98, 0x173E    }, // SECOND_DERIV_ZONE_1_GREEN
-    {2, 0x99, 0x1119    }, // SECOND_DERIV_ZONE_1_BLUE
-    {2, 0x9A, 0x1663    }, // SECOND_DERIV_ZONE_2_RED
-    {2, 0x9B, 0x1569    }, // SECOND_DERIV_ZONE_2_GREEN
-    {2, 0x9C, 0x104C    }, // SECOND_DERIV_ZONE_2_BLUE
-    {2, 0x9D, 0x1015    }, // SECOND_DERIV_ZONE_3_RED
-    {2, 0x9E, 0x1010    }, // SECOND_DERIV_ZONE_3_GREEN
-    {2, 0x9F, 0x0B0A    }, // SECOND_DERIV_ZONE_3_BLUE
-    {2, 0xA0, 0x0D53    }, // SECOND_DERIV_ZONE_4_RED
-    {2, 0xA1, 0x0D51    }, // SECOND_DERIV_ZONE_4_GREEN
-    {2, 0xA2, 0x0A44    }, // SECOND_DERIV_ZONE_4_BLUE
-    {2, 0xA3, 0x1545    }, // SECOND_DERIV_ZONE_5_RED
-    {2, 0xA4, 0x1643    }, // SECOND_DERIV_ZONE_5_GREEN
-    {2, 0xA5, 0x1231    }, // SECOND_DERIV_ZONE_5_BLUE
-    {2, 0xA6, 0x0047    }, // SECOND_DERIV_ZONE_6_RED
-    {2, 0xA7, 0x035C    }, // SECOND_DERIV_ZONE_6_GREEN
-    {2, 0xA8, 0xFE30    }, // SECOND_DERIV_ZONE_6_BLUE
-    {2, 0xA9, 0x4625    }, // SECOND_DERIV_ZONE_7_RED
-    {2, 0xAA, 0x47F3    }, // SECOND_DERIV_ZONE_7_GREEN
-    {2, 0xAB, 0x5859    }, // SECOND_DERIV_ZONE_7_BLUE
-    {2, 0xAC, 0x0000    }, // X2_FACTORS
-    {2, 0xAD, 0x0000    }, // GLOBAL_OFFSET_FXY_FUNCTION
-    {2, 0xAE, 0x0000    }, // K_FACTOR_IN_K_FX_FY
-    {1, 0x08, 0x01FC    }, // COLOR_PIPELINE_CONTROL
-    {1, 0xC6, 0x2003    }, // MON_ARG1
-    {1, 0xC8, 0x0748    }, // MON_ARG1
-    {1, 0xC6, 0xA002    }, // MON_CMD
-    {1, 0xC8, 0x0001    }, // MON_CMD
-    {100, 0x00, 0x01f4  },  // Delay = 500ms
-    {111, 0xC8,0x0000   },
-    {1, 0xC6, 0xA361    }, // AWB_TG_MIN0
-    {1, 0xC8, 0x00E2    }, // AWB_TG_MIN0
-    {1, 0x1F, 0x0018    }, // RESERVED_SOC1_1F
-    {1, 0x51, 0x7F40    }, // RESERVED_SOC1_51
-    {100, 0x00, 0x03e8  },  // Delay = 1000ms
-    {0, 0x33, 0x0343    }, // RESERVED_CORE_33
-    {0, 0x38, 0x0868    }, // RESERVED_CORE_38
-    {1, 0xC6, 0xA10F    }, // SEQ_RESET_LEVEL_TH
-    {1, 0xC8, 0x0042    }, // SEQ_RESET_LEVEL_TH
-    {1, 0x1F, 0x0020    }, // RESERVED_SOC1_1F
-    {1, 0xC6, 0xAB04    }, // HG_MAX_DLEVEL
-    {1, 0xC8, 0x0008    }, // HG_MAX_DLEVEL
-    {1, 0xC6, 0xA103    }, // SEQ_CMD
-    {1, 0xC8, 0x0005    }, // SEQ_CMD
-    {1, 0xC6, 0xA104    }, // SEQ_CMD
-    {100, 0x00, 0x03e8  },  // Delay = 1000ms
-    {111, 0xC8,0x0003   },
-    {1, 0x08, 0x01FC    }, // COLOR_PIPELINE_CONTROL
-    {1, 0x08, 0x01EC    }, // COLOR_PIPELINE_CONTROL
-    {1, 0x08, 0x01FC    }, // COLOR_PIPELINE_CONTROL
-    {1, 0x36, 0x0F08    }, // APERTURE_PARAMETERS
-    {1, 0xC6, 0xA103    }, // SEQ_CMD
-    {1, 0xC8, 0x0005    }, // SEQ_CMD
-    {100, 0x00, 0x01f4  },  // Delay = 500ms
-};
-*/
+
 void getCamId()
 {
 
@@ -1150,7 +469,7 @@
     int lRetVal = -1;
 
     lRetVal = RegLstWrite((s_RegList *)soft_reset_cmd_list, sizeof(soft_reset_cmd_list)/sizeof(s_RegList));
-    wait(1);
+    wait_ms(1);
     I2CBufferWrite(CAM_I2C_SLAVE_WRITE,ucBuffer,1,I2C_SEND_STOP);
     I2CBufferRead(CAM_I2C_SLAVE_READ,ucBuffer,2,I2C_SEND_STOP);
 
@@ -1230,18 +549,6 @@
     lRetVal = RegLstWrite((s_RegList *)capture_cmds_list,
                           sizeof(capture_cmds_list)/sizeof(s_RegList));
     ASSERT_ON_ERROR(lRetVal);
-
-//    resolution_cmds_list[INDEX_SIZE_WIDTH].usValue = width;
-//    resolution_cmds_list[INDEX_SIZE_HEIGHT].usValue = height;
-//    lRetVal = RegLstWrite((s_RegList *)resolution_cmds_list,
-//                        sizeof(resolution_cmds_list)/sizeof(s_RegList));
-//    ASSERT_ON_ERROR(lRetVal);
-
-//    CameraSensorResolution(width, height);
-
-//    lRetVal = RegLstWrite((s_RegList *)start_jpeg_capture_cmd_list,
-//                        sizeof(start_jpeg_capture_cmd_list)/sizeof(s_RegList));
-//    ASSERT_ON_ERROR(lRetVal);
 #endif
     return 0;
 }
@@ -1322,7 +629,7 @@
 //*****************************************************************************
 static int RegLstWrite(s_RegList *pRegLst, unsigned int ulNofItems)
 {
-//    Uart_Write((uint8_t*)"\n\rRegLstWrite \n\r");
+
     unsigned int       ulNdx;
     unsigned short      usTemp;
     unsigned char       i;
@@ -1459,7 +766,6 @@
     int err = 1;
     
 //    HttpDebug("Context B comamnd sequence ...");
-//    err = StartCaptureCmd();
     err = RegLstWrite((s_RegList *)context_b_list, sizeof(context_b_list)/sizeof(s_RegList));
     if (err){
         return err;
@@ -1479,7 +785,6 @@
     int err = 1;
     
 //    HttpDebug("Context A comamnd sequence ...");
-//    err = StopCaptureCmd();
     
     err = RegLstWrite((s_RegList *)context_a_list, sizeof(context_a_list)/sizeof(s_RegList));
     if (err){
--- a/utils/app_config.h	Sat Sep 12 22:38:40 2015 +0000
+++ b/utils/app_config.h	Tue Sep 15 15:39:38 2015 +0000
@@ -14,9 +14,9 @@
 #endif
 
 #define ENABLE_JPEG
-//#define MT9D111_CAM
+#define MT9D111_CAM
 //#define OV5642_CAM
-#define OV2640_CAM
+//#define OV2640_CAM
 
 //#define XGA_FRAME
 //#define VGA_FRAME
--- a/utils/i2cconfig.cpp	Sat Sep 12 22:38:40 2015 +0000
+++ b/utils/i2cconfig.cpp	Tue Sep 15 15:39:38 2015 +0000
@@ -120,7 +120,7 @@
 //       RTOS_MUTEX_RELEASE(&g_i2cLock);
        return -1;
     }
-//    wait_ms(1);
+    wait_ms(1);
 //    RTOS_MUTEX_RELEASE(&g_i2cLock);   
     return 0;
 }
@@ -170,7 +170,7 @@
 //    	RTOS_MUTEX_RELEASE(&g_i2cLock);
     	return -1;   	
     }
-//    wait_ms(1);
+    wait_ms(1);
 //    RTOS_MUTEX_RELEASE(&g_i2cLock);		
     return 0;
 }