/* ================================================================================ FUNCTION ================================================================================ */ static int32_t icp_hd_tup_parse_params ( const int8_t *stream, icp_hd_cfg_param_t *params ) { int8_t *my_ptr = NULL; //PANTECH_CAMERA uint8 addr = 0; //PANTECH_CAMERA uint8 data = 0; u_int16_t addr = 0; u_int16_t data = 0; int32_t cnt = 0; CAM_INFO(">>%s ()", __func__); CAM_INFO("- stream = 0x%08x, params = 0x%08x", stream, params, 0); my_ptr = strstr(stream, ICP_HD_TUP_BEGIN_MARK); if (my_ptr == NULL) { CAM_INFO("Can't find BEGIN mark! [stream = 0x%08x]", stream, 0, 0); return 0; } my_ptr = camsensor_parser_find_line(my_ptr); if (my_ptr == NULL) { CAM_INFO("Can't find BEGIN mark! [stream = 0x%08x]", stream, 0, 0); return 0; } while (TRUE) { if (strncmp(my_ptr, ICP_HD_TUP_REG_MARK, strlen(ICP_HD_TUP_REG_MARK)) == 0) { my_ptr = (int8_t *)camsensor_parser_find_addr((u_int8_t *)(&my_ptr[4]), &addr); if (my_ptr != NULL) { my_ptr = (int8_t *)camsensor_parser_find_data((u_int8_t *)my_ptr, &data); if (my_ptr != NULL) { (params+cnt)->op = CAMOP_WRITE; (params+cnt)->addr = addr; (params+cnt)->data = data; cnt++; } } } else if (strncmp(my_ptr, ICP_HD_TUP_REG_DATA_1BYTE_MARK, strlen(ICP_HD_TUP_REG_DATA_1BYTE_MARK)) == 0) { my_ptr = (int8_t *)camsensor_parser_find_addr((u_int8_t *)(&my_ptr[7]), &addr); if (my_ptr != NULL) { my_ptr = (int8_t *)camsensor_parser_find_data((u_int8_t *)my_ptr, &data); if (my_ptr != NULL) { (params+cnt)->op = CAMOP_WRITE_DATA1; (params+cnt)->addr = addr; (params+cnt)->data = data; cnt++; } } } else if (strncmp(my_ptr, ICP_HD_TUP_NOP_MARK, strlen(ICP_HD_TUP_NOP_MARK)) == 0) { (params+cnt)->op = CAMOP_NOP; (params+cnt)->addr = 0; (params+cnt)->data = 0; cnt++; } else if (strncmp(my_ptr, ICP_HD_TUP_DELAY_MARK, strlen(ICP_HD_TUP_DELAY_MARK)) == 0) { my_ptr = (int8_t *)camsensor_parser_find_data((u_int8_t *)&my_ptr[6], &data); if (my_ptr != NULL) { (params+cnt)->op = CAMOP_DELAY; (params+cnt)->addr = 0; (params+cnt)->data = data; cnt++; } } else if (strncmp(my_ptr, ICP_HD_TUP_POLL_REG_MARK, strlen(ICP_HD_TUP_POLL_REG_MARK)) == 0) { my_ptr = (int8_t *)camsensor_parser_find_addr((u_int8_t *)&my_ptr[9], &addr); if (my_ptr != NULL) { my_ptr = (int8_t *)camsensor_parser_find_data(my_ptr, &data); if (my_ptr != NULL) { (params+cnt)->op = CAMOP_POLL_REG; (params+cnt)->addr = addr; (params+cnt)->data = data; cnt++; } } } else if (strncmp(my_ptr, ICP_HD_TUP_POLL_MCU_VAR_MARK, strlen(ICP_HD_TUP_POLL_MCU_VAR_MARK)) == 0) { my_ptr = (int8_t *)camsensor_parser_find_addr((u_int8_t *)&my_ptr[13], &addr); if (my_ptr != NULL) { my_ptr = (int8_t *)camsensor_parser_find_data((u_int8_t *)my_ptr, &data); if (my_ptr != NULL) { (params+cnt)->op = CAMOP_POLL_MCU_VAR; (params+cnt)->addr = addr; (params+cnt)->data = data; cnt++; } } } else if (strncmp(my_ptr, ICP_HD_TUP_END_MARK, strlen(ICP_HD_TUP_END_MARK)) == 0) { break; } my_ptr = camsensor_parser_find_line(my_ptr); if (my_ptr == NULL) { CAM_INFO("Can't find BEGIN mark! [stream = 0x%08x]", stream, 0, 0); return 0; } } CAM_INFO("<<%s (%d)", __func__, cnt, 0); return cnt; }
/* ================================================================================ FUNCTION ================================================================================ */ static int32_t mt9p111_tup_parse_params ( const int8_t *stream, mt9p111_cfg_param_t *params ) { int8_t *my_ptr = NULL; u_int16_t addr = 0; u_int16_t data = 0; int32_t cnt = 0; CAM_INFO(">>%s ()", __func__); CAM_INFO("- stream = 0x%08x, params = 0x%08x", stream, params, 0); my_ptr = strstr(stream, MT9P111_TUP_BEGIN_MARK); if (my_ptr == NULL) { CAM_INFO("Can't find BEGIN mark! [stream = 0x%08x]", stream, 0, 0); return 0; } my_ptr = camsensor_parser_find_line(my_ptr); if (my_ptr == NULL) { CAM_INFO("Can't find BEGIN mark! [stream = 0x%08x]", stream, 0, 0); return 0; } while (TRUE) { if (strncmp(my_ptr, MT9P111_TUP_REG_MARK, strlen(MT9P111_TUP_REG_MARK)) == 0) { my_ptr = (int8_t *)camsensor_parser_find_addr((u_int8_t *)(&my_ptr[4]), &addr); if (my_ptr != NULL) { my_ptr = (int8_t *)camsensor_parser_find_data((u_int8_t *)my_ptr, &data); if (my_ptr != NULL) { (params+cnt)->op = CAMOP_WRITE; (params+cnt)->addr = addr; (params+cnt)->data = data; cnt++; } } } else if (strncmp(my_ptr, MT9P111_TUP_REG_DATA_1BYTE_MARK, strlen(MT9P111_TUP_REG_DATA_1BYTE_MARK)) == 0) { my_ptr = (int8_t *)camsensor_parser_find_addr((u_int8_t *)(&my_ptr[7]), &addr); if (my_ptr != NULL) { my_ptr = (int8_t *)camsensor_parser_find_data((u_int8_t *)my_ptr, &data); if (my_ptr != NULL) { (params+cnt)->op = CAMOP_WRITE_DATA1; (params+cnt)->addr = addr; (params+cnt)->data = data; cnt++; } } } else if (strncmp(my_ptr, MT9P111_TUP_NOP_MARK, strlen(MT9P111_TUP_NOP_MARK)) == 0) { (params+cnt)->op = CAMOP_NOP; (params+cnt)->addr = 0; (params+cnt)->data = 0; cnt++; } else if (strncmp(my_ptr, MT9P111_TUP_DELAY_MARK, strlen(MT9P111_TUP_DELAY_MARK)) == 0) { my_ptr = (int8_t *)camsensor_parser_find_data((u_int8_t *)&my_ptr[6], &data); if (my_ptr != NULL) { (params+cnt)->op = CAMOP_DELAY; (params+cnt)->addr = 0; (params+cnt)->data = data; cnt++; } } else if (strncmp(my_ptr, MT9P111_TUP_POLL_REG_MARK, strlen(MT9P111_TUP_POLL_REG_MARK)) == 0) { my_ptr = (int8_t *)camsensor_parser_find_addr((u_int8_t *)&my_ptr[9], &addr); if (my_ptr != NULL) { my_ptr = (int8_t *)camsensor_parser_find_data(my_ptr, &data); if (my_ptr != NULL) { (params+cnt)->op = CAMOP_POLL_REG; (params+cnt)->addr = addr; (params+cnt)->data = data; cnt++; } } } else if (strncmp(my_ptr, MT9P111_TUP_POLL_MCU_VAR_MARK, strlen(MT9P111_TUP_POLL_MCU_VAR_MARK)) == 0) { my_ptr = (int8_t *)camsensor_parser_find_addr((u_int8_t *)&my_ptr[13], &addr); if (my_ptr != NULL) { my_ptr = (int8_t *)camsensor_parser_find_data((u_int8_t *)my_ptr, &data); if (my_ptr != NULL) { (params+cnt)->op = CAMOP_POLL_MCU_VAR; (params+cnt)->addr = addr; (params+cnt)->data = data; cnt++; } } } else if (strncmp(my_ptr, MT9P111_TUP_REG_BURST_MARK, strlen(MT9P111_TUP_REG_BURST_MARK)) == 0) { u_int16_t temp = 0; my_ptr = (int8_t *)camsensor_parser_find_addr((u_int8_t *)&my_ptr[10], &temp); pdata_init[pdata_init_count++] = (u_int8_t)(temp >> 8); pdata_init[pdata_init_count++] = (u_int8_t)(temp & 0xFF); if (my_ptr != NULL) { do { my_ptr = (int8_t *)camsensor_parser_find_data((u_int8_t *)my_ptr, &temp); pdata_init[pdata_init_count++] = (u_int8_t)(temp >> 8); pdata_init[pdata_init_count++] = (u_int8_t)(temp & 0xFF); } while( (*(my_ptr+8) == ',') && (*(my_ptr+9) == 0x20) ); /* Comma and Space */ my_ptr = (int8_t *)camsensor_parser_find_data((u_int8_t *)my_ptr, &temp); pdata_init[pdata_init_count++] = (u_int8_t)(temp >> 8); pdata_init[pdata_init_count++] = (u_int8_t)(temp & 0xFF); pdata_init[pdata_init_count+1] = (u_int8_t)0xAB; pdata_init[pdata_init_count+2] = (u_int8_t)0xCD; if (my_ptr != NULL) { if (pdata_init_count == 18) { (params+cnt)->op = CAMOP_REG_BURST_MODE; (params+cnt)->addr = ( ((int)&pdata_init[0]) & 0x0000ffff ); (params+cnt)->data = ( ((int)&pdata_init[0]) >> 16 ); cnt++; } } } }