=== modified file 'libunicap/cpi/euvccam/euvccam_devspec.c' --- libunicap/cpi/euvccam/euvccam_devspec.c 2011-07-24 07:31:50 +0000 +++ libunicap/cpi/euvccam/euvccam_devspec.c 2012-09-12 17:56:16 +0000 @@ -266,6 +266,154 @@ enumerate_func: NULL, }, }; +static euvccam_property_t properties_8201_mono[] = +{ + { + { + identifier: "Shutter", + category: "Exposure", + unit: "s", + relations: NULL, + relations_count: 0, + {value: 0}, + {range: { min: 0.0001, max: 0.25 } }, + stepping: 0.0001, + type: UNICAP_PROPERTY_TYPE_RANGE, + flags: UNICAP_FLAGS_MANUAL, + flags_mask: UNICAP_FLAGS_MANUAL | UNICAP_FLAGS_AUTO, + property_data: NULL, + property_data_size: 0, + }, + + get_func: euvccam_device_get_exposure, + set_func: euvccam_device_set_exposure, + enumerate_func: NULL, + }, + { + { + identifier: "Gain", + category: "Exposure", + unit: "", + relations: NULL, + relations_count: 0, + {value: 0}, + {range: { min: 16, max: 63 } }, + stepping: 1.0, + type: UNICAP_PROPERTY_TYPE_RANGE, + flags: UNICAP_FLAGS_MANUAL, + flags_mask: UNICAP_FLAGS_MANUAL | UNICAP_FLAGS_AUTO, + property_data: NULL, + property_data_size: 0, + }, + + get_func: euvccam_device_get_gain, + set_func: euvccam_device_set_gain, + enumerate_func: NULL, + }, + { + { + identifier: "Frame Rate", + category: "Video", + unit: "", + relations: NULL, + relations_count: 0, + {value: 0}, + {range: { min: 0, max: 0 } }, + stepping: 1.0, + type: UNICAP_PROPERTY_TYPE_VALUE_LIST, + flags: UNICAP_FLAGS_MANUAL, + flags_mask: UNICAP_FLAGS_MANUAL, + property_data: NULL, + property_data_size: 0, + }, + + get_func: euvccam_device_get_frame_rate, + set_func: euvccam_device_set_frame_rate, + enumerate_func: euvccam_device_enumerate_frame_rate, + }, + { + { + identifier: N_("trigger"), + category: N_("device"), + unit: "", + relations: NULL, + relations_count: 0, + {menu_item: TRIGGER_FREE_RUNNING}, + {menu: { menu_items: trigger_menu, + menu_item_count: sizeof( trigger_menu ) / sizeof( char * ) } }, + stepping: 0.0, + type: UNICAP_PROPERTY_TYPE_MENU, + flags: UNICAP_FLAGS_MANUAL, + flags_mask: UNICAP_FLAGS_MANUAL, + property_data: NULL, + property_data_size: 0 + }, + + get_func: euvccam_device_get_trigger, + set_func: euvccam_device_set_trigger, + enumerate_func: euvccam_device_enumerate_trigger, + }, + { + { + identifier: N_("software trigger"), + category: N_("device"), + unit: "", + relations: NULL, + relations_count: 0, + stepping: 0.0, + type: UNICAP_PROPERTY_TYPE_FLAGS, + flags: UNICAP_FLAGS_ONE_PUSH | UNICAP_FLAGS_MANUAL, + flags_mask: UNICAP_FLAGS_ONE_PUSH | UNICAP_FLAGS_MANUAL, + property_data: NULL, + property_data_size: 0 + }, + + get_func: euvccam_device_get_software_trigger, + set_func: euvccam_device_set_software_trigger, + enumerate_func: euvccam_device_enumerate_software_trigger, + }, +#if 0 + { + { + identifier: N_("reset sensor"), + category: N_("device"), + unit: "", + relations: NULL, + relations_count: 0, + stepping: 0.0, + type: UNICAP_PROPERTY_TYPE_FLAGS, + flags: UNICAP_FLAGS_ONE_PUSH | UNICAP_FLAGS_MANUAL, + flags_mask: UNICAP_FLAGS_ONE_PUSH | UNICAP_FLAGS_MANUAL, + property_data: NULL, + property_data_size: 0 + }, + + get_func: euvccam_device_get_reset_mt9v024, + set_func: euvccam_device_set_reset_mt9v024, + }, +#endif + { + { + identifier: "IIC Command", + category: "Device", + unit: "", + relations: NULL, + relations_count: 0, + {value: 0}, + {range: { min: 5, max: 120 } }, + stepping: 1.0, + type: UNICAP_PROPERTY_TYPE_DATA, + flags: UNICAP_FLAGS_MANUAL, + flags_mask: UNICAP_FLAGS_MANUAL, + property_data: NULL, + property_data_size: 0, + }, + + get_func: euvccam_device_read_iic, + set_func: euvccam_device_write_iic, + enumerate_func: NULL, + }, +}; static euvccam_property_t properties_8206[] = { @@ -1166,6 +1314,89 @@ }; +static double format_8201_mono_framerates[] = { 76, 60, 30, 25, 15, 7.5, 5}; +static int format_8201_mono_framerate_map[] = { 6, 5, 0, 1, 2, 3, 4}; + +static struct euvccam_video_format_description formats_8201_mono[] = +{ + { + 1, + 3, + { identifier: "Y800 320x240", + size: {0,0,320,240}, + min_size: { 0,0,320,240 }, + max_size: { 0,0,320,240 }, + h_stepping: 0, + v_stepping: 0, + sizes: NULL, + size_count: 0, + bpp: 8, + buffer_size: 320 * 240, + fourcc: FOURCC( 'Y', '8', '0', '0' ), + flags: 0, + buffer_types: UNICAP_BUFFER_TYPE_SYSTEM | UNICAP_BUFFER_TYPE_USER, + system_buffer_count: EUVCCAM_SYSTEM_BUFFER_COUNT, + buffer_type: 0 + }, + N_ELEMENTS( format_8201_mono_framerates ), + format_8201_mono_framerates, + format_8201_mono_framerate_map, + 320 * 240, + NULL, + EUVCCAM_FORMAT_IS_PARTIAL_SCAN, + }, + { + 1, + 2, + { identifier: "Y800 640x480", + size: {0,0,640,480}, + min_size: { 0,0,640,480 }, + max_size: { 0,0,640,480 }, + h_stepping: 0, + v_stepping: 0, + sizes: NULL, + size_count: 0, + bpp: 8, + buffer_size: 640 * 480, + fourcc: FOURCC( 'Y', '8', '0', '0' ), + flags: 0, + buffer_types: UNICAP_BUFFER_TYPE_SYSTEM | UNICAP_BUFFER_TYPE_USER, + system_buffer_count: EUVCCAM_SYSTEM_BUFFER_COUNT, + buffer_type: 0 + }, + N_ELEMENTS( format_8201_mono_framerates ), + format_8201_mono_framerates, + format_8201_mono_framerate_map, + 640 * 480, + NULL, + }, + { + 1, + 1, + { identifier: "Y800 744x480", + size: {0,0,744,480}, + min_size: { 0,0,744,480 }, + max_size: { 0,0,744,480 }, + h_stepping: 0, + v_stepping: 0, + sizes: NULL, + size_count: 0, + bpp: 8, + buffer_size: 744 * 480, + fourcc: FOURCC( 'Y', '8', '0', '0' ), + flags: 0, + buffer_types: UNICAP_BUFFER_TYPE_SYSTEM | UNICAP_BUFFER_TYPE_USER, + system_buffer_count: EUVCCAM_SYSTEM_BUFFER_COUNT, + buffer_type: 0 + }, + N_ELEMENTS( format_8201_mono_framerates ), + format_8201_mono_framerates, + format_8201_mono_framerate_map, + 744 * 480, + NULL, + }, +}; + static double format_8202_framerates[] = { 87, 60, 30, 25, 15, 7.5, 5}; static int format_8202_framerate_map[] = { 7, 6, 0, 1, 2, 3, 4}; @@ -2147,14 +2378,23 @@ struct euvccam_devspec euvccam_devspec[] = { + /*{*/ + /*0x8201,*/ + /*0, */ + /*0,*/ + /*N_ELEMENTS( formats_8201 ),*/ + /*formats_8201,*/ + /*N_ELEMENTS( properties_8201 ),*/ + /*properties_8201,*/ + /*},*/ { 0x8201, 0, 0, - N_ELEMENTS( formats_8201 ), - formats_8201, - N_ELEMENTS( properties_8201 ), - properties_8201, + N_ELEMENTS( formats_8201_mono ), + formats_8201_mono, + N_ELEMENTS( properties_8201_mono ), + properties_8202_mono, }, { 0x8202,