コード例 #1
0
/*
================================================================================
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;
}
コード例 #2
0
/*
================================================================================
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++;
					}
				}
			}
        }