⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dc1394_vendor_pixelink.c

📁 This library provides functionality to control any camera that conforms to the 1394-Based Digital C
💻 C
📖 第 1 页 / 共 2 页
字号:
dc1394error_tdc1394_pxl_get_gpo_param_min_max(dc1394camera_t *camera, uint_t gpio_id,	quadlet_t *p1_val, quadlet_t *p2_val, quadlet_t *p3_val,	quadlet_t *p1_min, quadlet_t *p2_min, quadlet_t *p3_min,	quadlet_t *p1_max, quadlet_t *p2_max, quadlet_t *p3_max) {  dc1394error_t err;  dc1394_pxl_gpio_info_t gpio_info;  err = dc1394_pxl_get_gpio_inq(camera, &gpio_info);  if (err == DC1394_FAILURE) {	return DC1394_FAILURE;  }    if (!(gpio_info.presence && gpio_id < gpio_info.number)) {	return DC1394_FAILURE;  }  quadlet_t gpio_parm1_abs, gpio_parm2_abs, gpio_parm3_abs;  GetCameraAdvControlRegister(camera, PxL_ACR_GPIO_PARM1_ABS, &gpio_parm1_abs);  GetCameraAdvControlRegister(camera, PxL_ACR_GPIO_PARM2_ABS, &gpio_parm2_abs);  GetCameraAdvControlRegister(camera, PxL_ACR_GPIO_PARM3_ABS, &gpio_parm3_abs);  quadlet_t gpio_parm1_add, gpio_parm2_add, gpio_parm3_add;  gpio_parm1_add = 4*gpio_parm1_abs + gpio_id*0x0c + 0x08;  gpio_parm2_add = 4*gpio_parm2_abs + gpio_id*0x0c + 0x08;  gpio_parm3_add = 4*gpio_parm3_abs + gpio_id*0x0c + 0x08;  GetCameraROMValue(camera, (octlet_t)(gpio_parm1_add), p1_val);  GetCameraROMValue(camera, (octlet_t)(gpio_parm2_add), p2_val);  GetCameraROMValue(camera, (octlet_t)(gpio_parm3_add), p3_val);#ifdef PIXELINK_DEBUG_DISPLAY  printf("  0x%08x : r 0x%08x < GPIO_PARM1_VALUE\n", gpio_parm1_add, *p1_val);  printf("  0x%08x : r 0x%08x < GPIO_PARM2_VALUE\n", gpio_parm2_add, *p2_val);  printf("  0x%08x : r 0x%08x < GPIO_PARM3_VALUE\n", gpio_parm3_add, *p3_val);#endif  gpio_parm1_add = 4*gpio_parm1_abs+ gpio_id*0x0c + 0x00;  gpio_parm2_add = 4*gpio_parm2_abs+ gpio_id*0x0c + 0x00;  gpio_parm3_add = 4*gpio_parm3_abs+ gpio_id*0x0c + 0x00;  GetCameraROMValue(camera, (octlet_t)(gpio_parm1_add), p1_min);  GetCameraROMValue(camera, (octlet_t)(gpio_parm2_add), p2_min);  GetCameraROMValue(camera, (octlet_t)(gpio_parm3_add), p3_min);#ifdef PIXELINK_DEBUG_DISPLAY  printf("  0x%08x : r 0x%08x < GPIO_PARM1_MIN\n", gpio_parm1_add, *p1_min);  printf("  0x%08x : r 0x%08x < GPIO_PARM2_MIN\n", gpio_parm2_add, *p2_min);  printf("  0x%08x : r 0x%08x < GPIO_PARM3_MIN\n", gpio_parm3_add, *p3_min);#endif  gpio_parm1_add = 4*gpio_parm1_abs+ gpio_id*0x0c + 0x04;  gpio_parm2_add = 4*gpio_parm2_abs+ gpio_id*0x0c + 0x04;  gpio_parm3_add = 4*gpio_parm3_abs+ gpio_id*0x0c + 0x04;  GetCameraROMValue(camera, (octlet_t)(gpio_parm1_add), p1_max);  GetCameraROMValue(camera, (octlet_t)(gpio_parm2_add), p2_max);  GetCameraROMValue(camera, (octlet_t)(gpio_parm3_add), p3_max);#ifdef PIXELINK_DEBUG_DISPLAY  printf("  0x%08x : r 0x%08x < GPIO_PARM1_MAX\n", gpio_parm1_add, *p1_max);  printf("  0x%08x : r 0x%08x < GPIO_PARM2_MAX\n", gpio_parm2_add, *p2_max);  printf("  0x%08x : r 0x%08x < GPIO_PARM3_MAX\n", gpio_parm3_add, *p3_max);#endif  return DC1394_SUCCESS;}/****************************************************************************** * Function to set the GPO parameters P1, P2, P3 * Internal Function. *  */dc1394error_tdc1394_pxl_set_gpo_param(dc1394camera_t *camera, uint_t gpio_id, 	quadlet_t p1_val, quadlet_t p2_val, quadlet_t p3_val) {  dc1394error_t err;  dc1394_pxl_gpio_info_t gpio_info;  err = dc1394_pxl_get_gpio_inq(camera, &gpio_info);  if (err == DC1394_FAILURE) {	return DC1394_FAILURE;  }  quadlet_t gpio_parm1_abs, gpio_parm2_abs, gpio_parm3_abs;  GetCameraAdvControlRegister(camera, PxL_ACR_GPIO_PARM1_ABS, &gpio_parm1_abs);  GetCameraAdvControlRegister(camera, PxL_ACR_GPIO_PARM2_ABS, &gpio_parm2_abs);  GetCameraAdvControlRegister(camera, PxL_ACR_GPIO_PARM3_ABS, &gpio_parm3_abs);  quadlet_t gpio_parm1_add, gpio_parm2_add, gpio_parm3_add;  gpio_parm1_add = 4*gpio_parm1_abs+ gpio_id*0x0c + 0x08;  gpio_parm2_add = 4*gpio_parm2_abs+ gpio_id*0x0c + 0x08;  gpio_parm3_add = 4*gpio_parm3_abs+ gpio_id*0x0c + 0x08;  SetCameraROMValue(camera, (octlet_t)(gpio_parm1_add), p1_val);  SetCameraROMValue(camera, (octlet_t)(gpio_parm2_add), p2_val);  SetCameraROMValue(camera, (octlet_t)(gpio_parm3_add), p3_val);#ifdef PIXELINK_DEBUG_DISPLAY  printf("  0x%08x : w 0x%08x < GPIO_PARM1_VALUE\n", gpio_parm1_add, p1_val);  printf("  0x%08x : w 0x%08x < GPIO_PARM2_VALUE\n", gpio_parm2_add, p2_val);  printf("  0x%08x : w 0x%08x < GPIO_PARM3_VALUE\n", gpio_parm3_add, p3_val);#endif  return DC1394_SUCCESS;}/****************************************************************************** * Function to read GPIO config. Internal function? */dc1394error_tdc1394_pxl_get_gpo_config(dc1394camera_t *camera, uint_t gpio_id, 		quadlet_t *gpio_cfg) {  dc1394error_t err;  if (camera == NULL)	return DC1394_FAILURE;  quadlet_t gpio_cfg_add = PxL_ACR_GPIO_0_CFG + gpio_id*4;  err = GetCameraAdvControlRegister(camera, (octlet_t) gpio_cfg_add, gpio_cfg);#ifdef PIXELINK_DEBUG_DISPLAY   printf("  0x%08x : r 0x%08x < GPO_0_CFG\n", gpio_cfg_add, *gpio_cfg);#endif  return err;}/****************************************************************************** * Function to set GPIO config. Internal function? */dc1394error_tdc1394_pxl_set_gpo_config(dc1394camera_t *camera, uint_t gpio_id, quadlet_t gpio_cfg) {    dc1394error_t err;  if (camera == NULL)	return DC1394_FAILURE;  quadlet_t gpio_cfg_add = PxL_ACR_GPIO_0_CFG + gpio_id*4;  err = SetCameraAdvControlRegister(camera, (octlet_t) gpio_cfg_add, gpio_cfg);#ifdef PIXELINK_DEBUG_DISPLAY  printf("  0x%08x : w 0x%08x < GPO_0_CFG\n", gpio_cfg_add, gpio_cfg);#endif  return err;}/******************************************************************************  * Function to print list of camera features. * It can be used to test many functions in this file. */dc1394error_tdc1394_pxl_print_camera_info(dc1394camera_t *camera) {  dc1394_pxl_camera_info_t camera_info;  dc1394_pxl_get_camera_info(camera, &camera_info);  printf("Camera information.\n");  printf("  %-16s: %08x\n", "FPGA Version", camera_info.fpga_version);  printf("  %-16s: %08x\n", "FW Version", camera_info.fw_version);  printf("  %-16s: %s\n", "Serial Number", camera_info.serial_number);  printf("  %-16s: %s\n", "Description", camera_info.description);  dc1394_pxl_adv_feature_info_t adv_info;  dc1394_pxl_get_adv_feature_info(camera, &adv_info);  printf("Advanced Feature Information.\n");  printf("  %-16s: %s\n", "Name", adv_info.name);  printf("\n");  return DC1394_SUCCESS;}/******************************************************************************  * Function to activate GPIO mode with the parameters */dc1394error_tdc1394_pxl_set_gpio_mode_param(dc1394camera_t *camera, uint_t gpio_id, 	dc1394pxl_gpio_polarity_t gpio_polarity, dc1394pxl_gpio_mode_t gpio_mode, 	double f1_val, double f2_val, double f3_val) {  dc1394error_t err;  dc1394_pxl_gpio_info_t gpio_info;  err = dc1394_pxl_get_gpio_inq(camera, &gpio_info);  if (err == DC1394_FAILURE) {	return DC1394_FAILURE;  }  if (err == DC1394_FAILURE) {	fprintf(stderr, "error reading gpio inq register\n");	return DC1394_FAILURE;  }  /* compose the cfg_register value */  quadlet_t gpio_cfg = PxL_GPO_CFG_ENABLE;  /* check if mode is valid */  switch (gpio_mode) {	case DC1394_PxL_GPIO_MODE_STROBE: 	  gpio_cfg = gpio_cfg | PxL_GPO_CFG_MODE_STROBE;	  if (gpio_info.mode_strobe == DC1394_FALSE) err = DC1394_FAILURE;	  break;	case DC1394_PxL_GPIO_MODE_NORMAL: 	  gpio_cfg = gpio_cfg | PxL_GPO_CFG_MODE_NORMAL;	  if (gpio_info.mode_normal == DC1394_FALSE) err = DC1394_FAILURE;	  break;	case DC1394_PxL_GPIO_MODE_PULSE: 	  gpio_cfg = gpio_cfg | PxL_GPO_CFG_MODE_PULSE;	  if (gpio_info.mode_pulse == DC1394_FALSE) err = DC1394_FAILURE;	  break;	case DC1394_PxL_GPIO_MODE_BUSY: 	  gpio_cfg = gpio_cfg | PxL_GPO_CFG_MODE_BUSY;	  if (gpio_info.mode_busy == DC1394_FALSE) err = DC1394_FAILURE;	  break;	case DC1394_PxL_GPIO_MODE_FLASH: 	  gpio_cfg = gpio_cfg | PxL_GPO_CFG_MODE_FLASH;	  if (gpio_info.mode_flash == DC1394_FALSE) err = DC1394_FAILURE;	  break;	default:	  err = DC1394_FAILURE;  }  if (err == DC1394_FAILURE) {	fprintf(stderr, "error with gpio mode setting\n");	return DC1394_FAILURE;  }  /* check if polarity is valid */  switch (gpio_mode) {	case DC1394_PxL_GPIO_POLARITY_NONE: 	  /* No change in the mode, use whatever is available */	  break;	case DC1394_PxL_GPIO_POLARITY_HIGH: 	  gpio_cfg = gpio_cfg | PxL_GPO_CFG_POLARITY_HIGH;	  if (gpio_info.polarity == DC1394_FALSE) err = DC1394_FAILURE;	  break;	case DC1394_PxL_GPIO_POLARITY_LOW: 	  gpio_cfg = gpio_cfg | PxL_GPO_CFG_POLARITY_LOW;	  if (gpio_info.polarity == DC1394_FALSE) err = DC1394_FAILURE;	  break;	default:	  err = DC1394_FAILURE;  }  if (err == DC1394_FAILURE) {	fprintf(stderr, "error with gpio polarity setting\n");	return DC1394_FAILURE;  }  /* Set the GPIO_CFG parameter */  dc1394_pxl_set_gpo_config(camera, gpio_id, gpio_cfg);  /* Check the minimum and maximum values */  quadlet_t p1_val, p2_val, p3_val;  quadlet_t p1_min, p2_min, p3_min, p1_max, p2_max, p3_max;   double f1_min, f2_min, f3_min, f1_max, f2_max, f3_max;   dc1394_pxl_get_gpo_param_min_max(camera, gpio_id, &p1_val, &p2_val, &p3_val, 	  &p1_min, &p2_min, &p3_min, &p1_max, &p2_max, &p3_max);  dc1394_pxl_convert_quadlet_to_float32(p1_min, &f1_min);  dc1394_pxl_convert_quadlet_to_float32(p2_min, &f2_min);  dc1394_pxl_convert_quadlet_to_float32(p3_min, &f3_min);  dc1394_pxl_convert_quadlet_to_float32(p1_max, &f1_max);  dc1394_pxl_convert_quadlet_to_float32(p2_max, &f2_max);  dc1394_pxl_convert_quadlet_to_float32(p3_max, &f3_max);    if ((f1_val < f1_min)| (f1_val > f1_max)) {	fprintf(stderr, "\nWARNING: parameter1 out of bounds! corrected.\n");  }  if ((f2_val < f2_min)| (f2_val > f2_max)) {	fprintf(stderr, "\nWARNING: parameter2 out of bounds! corrected.\n");  }  if ((f3_val < f3_min)| (f3_val > f3_max)) {	fprintf(stderr, "\nWARNING: parameter3 out of bounds! corrected.\n");  }  f1_val = (f1_val < f1_min)? f1_min: ((f1_val > f1_max)? f1_max: f1_val);  f2_val = (f2_val < f2_min)? f2_min: ((f2_val > f2_max)? f2_max: f2_val);  f3_val = (f3_val < f3_min)? f3_min: ((f3_val > f3_max)? f3_max: f3_val);  dc1394_pxl_convert_float32_to_quadlet(f1_val, &p1_val);  dc1394_pxl_convert_float32_to_quadlet(f2_val, &p2_val);  dc1394_pxl_convert_float32_to_quadlet(f3_val, &p3_val);  dc1394_pxl_set_gpo_param(camera, gpio_id, p1_val, p2_val, p3_val);   return DC1394_SUCCESS;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -