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

📄 dc1394_control.c

📁 This library provides functionality to control any camera that conforms to the 1394-Based Digital C
💻 C
📖 第 1 页 / 共 5 页
字号:
}dc1394error_tdc1394_feature_temperature_get_value(dc1394camera_t *camera, uint_t *target_temperature, uint_t *temperature){  quadlet_t value;  dc1394error_t err= GetCameraControlRegister(camera, REG_CAMERA_TEMPERATURE, &value);  DC1394_ERR_RTN(err, "Could not get temperature");  *target_temperature= (uint_t)((value >> 12) & 0xFFF);  *temperature= (uint_t)(value & 0xFFFUL);  return err;}dc1394error_tdc1394_feature_temperature_set_value(dc1394camera_t *camera, uint_t target_temperature){  dc1394error_t err;  quadlet_t curval;    err=GetCameraControlRegister(camera, REG_CAMERA_TEMPERATURE, &curval);  DC1394_ERR_RTN(err, "Could not get temperature");    curval= (curval & 0xFF000FFFUL) | ((target_temperature & 0xFFFUL) << 12);  err= SetCameraControlRegister(camera, REG_CAMERA_TEMPERATURE, curval);  DC1394_ERR_RTN(err, "Could not set temperature");  return err;}dc1394error_tdc1394_feature_whiteshading_get_value(dc1394camera_t *camera, uint_t *r_value, uint_t *g_value, uint_t *b_value){  quadlet_t value;  dc1394error_t err= GetCameraControlRegister(camera, REG_CAMERA_WHITE_SHADING, &value);  DC1394_ERR_RTN(err, "Could not get white shading");    *r_value= (uint_t)((value & 0xFF0000UL) >> 16);  *g_value= (uint_t)((value & 0xFF00UL) >> 8);  *b_value= (uint_t)(value & 0xFFUL);  return err;}dc1394error_tdc1394_feature_whiteshading_set_value(dc1394camera_t *camera, uint_t r_value, uint_t g_value, uint_t b_value){  quadlet_t curval;    dc1394error_t err=GetCameraControlRegister(camera, REG_CAMERA_WHITE_SHADING, &curval);  DC1394_ERR_RTN(err, "Could not get white shading");    curval= (curval & 0xFF000000UL) | ( ((r_value & 0xFFUL) << 16) |				      ((g_value & 0xFFUL) << 8) |				      (b_value & 0xFFUL) );  err=SetCameraControlRegister(camera, REG_CAMERA_WHITE_SHADING, curval);  DC1394_ERR_RTN(err, "Could not set white shading");  return err;}dc1394error_tdc1394_external_trigger_get_mode(dc1394camera_t *camera, dc1394trigger_mode_t *mode){  quadlet_t value;  dc1394error_t err= GetCameraControlRegister(camera, REG_CAMERA_TRIGGER_MODE, &value);  DC1394_ERR_RTN(err, "Could not get trigger mode");    *mode= (uint_t)( ((value >> 16) & 0xFUL) );  if ((*mode)>5)    (*mode)-=8;  (*mode)+= DC1394_TRIGGER_MODE_MIN;  return err;}dc1394error_tdc1394_external_trigger_set_mode(dc1394camera_t *camera, dc1394trigger_mode_t mode){  dc1394error_t err;  quadlet_t curval;    if ( (mode < DC1394_TRIGGER_MODE_MIN) || (mode > DC1394_TRIGGER_MODE_MAX) ) {    return DC1394_INVALID_TRIGGER_MODE;  }    err=GetCameraControlRegister(camera, REG_CAMERA_TRIGGER_MODE, &curval);  DC1394_ERR_RTN(err, "Could not get trigger mode");    mode-= DC1394_TRIGGER_MODE_MIN;  if (mode>5)    mode+=8;  curval= (curval & 0xFFF0FFFFUL) | ((mode & 0xFUL) << 16);  err=SetCameraControlRegister(camera, REG_CAMERA_TRIGGER_MODE, curval);  DC1394_ERR_RTN(err, "Could not set trigger mode");  return err;}dc1394error_tdc1394_external_trigger_get_supported_sources(dc1394camera_t *camera, dc1394trigger_sources_t *sources){  quadlet_t value;  dc1394error_t err;  octlet_t offset;  int i;  FEATURE_TO_INQUIRY_OFFSET(DC1394_FEATURE_TRIGGER, offset);  err=GetCameraControlRegister(camera, offset, &value);  DC1394_ERR_RTN(err,"Could not query supported trigger sources");  sources->num=0;  value=( (value & (0xF << 23)) >>23 );  for (i=DC1394_TRIGGER_SOURCE_MIN;i<=DC1394_TRIGGER_SOURCE_MAX;i++) {    if (value & (0x1 << (i-DC1394_TRIGGER_SOURCE_MIN))){       sources->sources[sources->num]=i;      sources->num++;    }  }  return err;}dc1394error_tdc1394_external_trigger_get_source(dc1394camera_t *camera, dc1394trigger_source_t *source){  quadlet_t value;  dc1394error_t err= GetCameraControlRegister(camera, REG_CAMERA_TRIGGER_MODE, &value);  DC1394_ERR_RTN(err, "Could not get trigger source");    *source= (uint_t)( ((value >> 21) & 0x8UL) );  (*source)+= DC1394_TRIGGER_SOURCE_MIN;  return err;}dc1394error_tdc1394_external_trigger_set_source(dc1394camera_t *camera, dc1394trigger_source_t source){  dc1394error_t err;  quadlet_t curval;    if ( (source < DC1394_TRIGGER_SOURCE_MIN) || (source > DC1394_TRIGGER_SOURCE_MAX) ) {    return DC1394_INVALID_TRIGGER_SOURCE;  }    err=GetCameraControlRegister(camera, REG_CAMERA_TRIGGER_MODE, &curval);  DC1394_ERR_RTN(err, "Could not get trigger source");    source-= DC1394_TRIGGER_MODE_MIN;  curval= (curval & 0xFF1FFFFFUL) | ((source & 0x8UL) << 21);  err=SetCameraControlRegister(camera, REG_CAMERA_TRIGGER_MODE, curval);  DC1394_ERR_RTN(err, "Could not set trigger source");  return err;}dc1394error_tdc1394_feature_get_value(dc1394camera_t *camera, dc1394feature_t feature, uint_t *value){  quadlet_t quadval;  octlet_t offset;  dc1394error_t err;  if ((feature==DC1394_FEATURE_WHITE_BALANCE)||      (feature==DC1394_FEATURE_WHITE_SHADING)||      (feature==DC1394_FEATURE_TEMPERATURE)) {    err=DC1394_INVALID_FEATURE;    DC1394_ERR_RTN(err, "You should use the specific functions to read from multiple-value features");  }  FEATURE_TO_VALUE_OFFSET(feature, offset);    err=GetCameraControlRegister(camera, offset, &quadval);  DC1394_ERR_RTN(err, "Could not get feature %d value",feature);  *value= (uint_t)(quadval & 0xFFFUL);    return err;}dc1394error_tdc1394_feature_set_value(dc1394camera_t *camera, dc1394feature_t feature, uint_t value){  quadlet_t quadval;  octlet_t offset;  dc1394error_t err;    if ((feature==DC1394_FEATURE_WHITE_BALANCE)||      (feature==DC1394_FEATURE_WHITE_SHADING)||      (feature==DC1394_FEATURE_TEMPERATURE)) {    err=DC1394_INVALID_FEATURE;    DC1394_ERR_RTN(err, "You should use the specific functions to write from multiple-value features");  }  FEATURE_TO_VALUE_OFFSET(feature, offset);    err=GetCameraControlRegister(camera, offset, &quadval);  DC1394_ERR_RTN(err, "Could not get feature %d value",feature);    err=SetCameraControlRegister(camera, offset, (quadval & 0xFFFFF000UL) | (value & 0xFFFUL));  DC1394_ERR_RTN(err, "Could not set feature %d value",feature);  return err;}dc1394error_tdc1394_feature_is_present(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value){  dc1394error_t err;  octlet_t offset;  quadlet_t quadval;    *value=DC1394_FALSE;    // check feature presence in 0x404 and 0x408  if ( (feature > DC1394_FEATURE_MAX) || (feature < DC1394_FEATURE_MIN) ) {    return DC1394_INVALID_FEATURE;  }    if (feature < DC1394_FEATURE_ZOOM) {    offset= REG_CAMERA_FEATURE_HI_INQ;  }  else {    offset= REG_CAMERA_FEATURE_LO_INQ;  }  err=GetCameraControlRegister(camera, offset, &quadval);  DC1394_ERR_RTN(err, "Could not get register for feature %d",feature);    if (IsFeatureBitSet(quadval, feature)!=DC1394_TRUE) {    *value=DC1394_FALSE;    return DC1394_SUCCESS;  }    FEATURE_TO_INQUIRY_OFFSET(feature, offset);    err=GetCameraControlRegister(camera, offset, &quadval);  DC1394_ERR_RTN(err, "Could not get register for feature %d",feature);    if (quadval & 0x80000000UL) {    *value= DC1394_TRUE;  }  else {    *value= DC1394_FALSE;  }    return err;}dc1394error_tdc1394_feature_has_one_push_auto(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value){  dc1394error_t err;  octlet_t offset;  quadlet_t quadval;    FEATURE_TO_INQUIRY_OFFSET(feature, offset);    err=GetCameraControlRegister(camera, offset, &quadval);  DC1394_ERR_RTN(err, "Could not get one-push capability for feature %d",feature);    if (quadval & 0x10000000UL) {    *value= DC1394_TRUE;  }  else {    *value= DC1394_FALSE;  }    return err;}dc1394error_tdc1394_feature_is_readable(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value){  dc1394error_t err;  octlet_t offset;  quadlet_t quadval;    FEATURE_TO_INQUIRY_OFFSET(feature, offset);    err=GetCameraControlRegister(camera, offset, &quadval);  DC1394_ERR_RTN(err, "Could not get read-out capability for feature %d",feature);    if (quadval & 0x08000000UL) {    *value= DC1394_TRUE;  }  else {    *value= DC1394_FALSE;  }    return err;}dc1394error_tdc1394_feature_is_switchable(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value){  dc1394error_t err;  octlet_t offset;  quadlet_t quadval;    FEATURE_TO_INQUIRY_OFFSET(feature, offset);    err=GetCameraControlRegister(camera, offset, &quadval);  DC1394_ERR_RTN(err, "Could not get power capability for feature %d",feature);    if (quadval & 0x04000000UL) {    *value= DC1394_TRUE;  }  else {    *value= DC1394_FALSE;  }    return err;}dc1394error_tdc1394_feature_get_power(dc1394camera_t *camera, dc1394feature_t feature, dc1394switch_t *value){  dc1394error_t err;  octlet_t offset;  quadlet_t quadval;    FEATURE_TO_VALUE_OFFSET(feature, offset);    err=GetCameraControlRegister(camera, offset, &quadval);  DC1394_ERR_RTN(err, "Could not get feature %d status",feature);    if (quadval & 0x02000000UL) {    *value= DC1394_TRUE;  }  else {    *value= DC1394_FALSE;  }    return err;}dc1394error_tdc1394_feature_set_power(dc1394camera_t *camera, dc1394feature_t feature, dc1394switch_t value){  dc1394error_t err;  octlet_t offset;  quadlet_t curval;  FEATURE_TO_VALUE_OFFSET(feature, offset);    err=GetCameraControlRegister(camera, offset, &curval);  DC1394_ERR_RTN(err, "Could not get feature %d register",feature);    if (value && !(curval & 0x02000000UL)) {        curval|= 0x02000000UL;    err=SetCameraControlRegister(camera, offset, curval);    DC1394_ERR_RTN(err, "Could not set feature %d power",feature);  }  else if (!value && (curval & 0x02000000UL)) {    curval&= 0xFDFFFFFFUL;    err=SetCameraControlRegister(camera, offset, curval);    DC1394_ERR_RTN(err, "Could not set feature %d power",feature);  }    return err;}dc1394error_tdc1394_feature_has_auto_mode(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value){  dc1394error_t err;  octlet_t offset;  quadlet_t quadval;    if (feature == DC1394_FEATURE_TRIGGER) {    return DC1394_INVALID_FEATURE;  }    FEATURE_TO_INQUIRY_OFFSET(feature, offset);    err=GetCameraControlRegister(camera, offset, &quadval);  DC1394_ERR_RTN(err, "Could not get automode capability for feature %d",feature);    if (quadval & 0x02000000UL) {    *value= DC1394_TRUE;  }  else {    *value= DC1394_FALSE;  }    return err;}dc1394error_tdc1394_feature_has_manual_mode(dc1394camera_t *camera, dc1394feature_t feature, dc1394bool_t *value){  dc1394error_t err;  octlet_t offset;  quadlet_t quadval;    if (feature == DC1394_FEATURE_TRIGGER) {    return DC1394_INVALID_FEATURE;  }    FEATURE_TO_INQUIRY_OFFSET(feature, offset);    err=GetCameraControlRegister(camera, offset, &quadval);  DC1394_ERR_RTN(err, "Could not get manual modecapability for feature %d",feature);    if (quadval & 0x01000000UL) {    *value= DC1394_TRUE;  }  else {    *value= DC1394_FALSE;  }    return err;}dc1394error_tdc1394_feature_get_mode(dc1394camera_t *camera, dc1394feature_t feature, dc1394feature_mode_t *mode){  dc1394error_t err;  octlet_t offset;  quadlet_t quadval;    if (feature == DC1394_FEATURE_TRIGGER) {    return DC1394_INVALID_FEATURE;  }    FEATURE_TO_VALUE_OFFSET(feature, offset);

⌨️ 快捷键说明

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