Skip to content

Commit

Permalink
Merge pull request #31 from jwlodek/R1-3
Browse files Browse the repository at this point in the history
R1-3
  • Loading branch information
jwlodek committed Sep 6, 2019
2 parents 3120101 + 7a8e596 commit a6a19a3
Show file tree
Hide file tree
Showing 10 changed files with 465 additions and 102 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ make
```
The driver is now installed.

Libuvc can also be built from source at: https://github.com/ktossell/libuvc.git
Libuvc can also be built from source at: https://github.com/libuvc/libuvc.git
Documentation for the library can be found at: https://int80k.com/libuvc/doc/


Expand Down
14 changes: 14 additions & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,20 @@ ADUVC requires libusb, libuvc, epics-base, epics-modules, ADCore, and ADSupport.
Release Notes
=============

R1-3 (06-September-2019)
-----
* Key detector features implemented:
* Added IOC feature to auto-adjust camera settings based on operating mode.

* Key fixes and improvements
* Minor screen updates
* Repoint libuvc upstream repo. New repo has issues with CMake file
* Add documentation for fixing root ownership issues of UVC devices

* Known Issues
* Auto adjust feature can break with certain odd configurations of the camera
* Uses array size to determine 8/16 bit and Mono/RGB, but certain compressed formats break the adjuster.

R1-2 (11-June-2019)
-----
* Key detector features implemented:
Expand Down
106 changes: 57 additions & 49 deletions adUVCApp/Db/ADUVC.template
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@
record(ao, "$(P)$(R)UVCFramerate"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_FRAMERATE")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_FRAMERATE")
}

record(ai, "$(P)$(R)UVCFramerate_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_FRAMERATE")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_FRAMERATE")
field(SCAN, "I/O Intr")
}

Expand All @@ -30,12 +30,12 @@ record(ai, "$(P)$(R)UVCFramerate_RBV"){
record(ao, "$(P)$(R)UVCComplianceLevel"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_COMPLIANCE")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_COMPLIANCE")
}

record(ai, "$(P)$(R)UVCComplianceLevel_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_COMPLIANCE")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_COMPLIANCE")
field(SCAN, "I/O Intr")
}

Expand All @@ -45,12 +45,12 @@ record(ai, "$(P)$(R)UVCComplianceLevel_RBV"){
record(ao, "$(P)$(R)UVCReferenceCount"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_REFCOUNT")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_REFCOUNT")
}

record(ai, "$(P)$(R)UVCReferenceCount_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_REFCOUNT")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_REFCOUNT")
field(SCAN, "I/O Intr")
}

Expand All @@ -60,27 +60,28 @@ record(ai, "$(P)$(R)UVCReferenceCount_RBV"){
record(ao, "$(P)$(R)UVCVendorID"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_VENDOR")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_VENDOR")
}

record(ai, "$(P)$(R)UVCVendorID_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_VENDOR")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_VENDOR")
field(SCAN, "I/O Intr")
}

##############################################
# stores the product id for the UVC camera. Used for connecting to it if serial is unavailable
################################################

record(ao, "$(P)$(R)UVCProductID"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_PRODUCT")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_PRODUCT")
}

record(ai, "$(P)$(R)UVCProductID_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_PRODUCT")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_PRODUCT")
field(SCAN, "I/O Intr")
}

Expand All @@ -90,7 +91,7 @@ record(ai, "$(P)$(R)UVCProductID_RBV"){
record(mbbo, "$(P)$(R)UVCImageFormat"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_FORMAT")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_FORMAT")
field(ZRST, "MJPEG")
field(ZRVL, "0")
field(ONST, "RGB")
Expand All @@ -105,7 +106,7 @@ record(mbbo, "$(P)$(R)UVCImageFormat"){
field(FVVL, "5")
field(SXST, "Uncompressed")
field(SXVL, "6")
field(VAL, "0")
field(VAL, "0")
info(autosaveFields, "VAL")
}
record(mbbi, "$(P)$(R)UVCImageFormat_RBV"){
Expand Down Expand Up @@ -134,7 +135,7 @@ record(mbbi, "$(P)$(R)UVCImageFormat_RBV"){
record(mbbo, "$(P)$(R)UVCCameraFormat"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_CAMERA_FORMAT")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_CAMERA_FORMAT")
field(ZRST, "Supported Mode 1")
field(ZRVL, "0")
field(ONST, "Supported Mode 2")
Expand All @@ -149,7 +150,7 @@ record(mbbo, "$(P)$(R)UVCCameraFormat"){
field(FVVL, "5")
field(SXST, "Supported Mode 7")
field(SXVL, "6")
field(VAL, "0")
field(VAL, "0")
info(autosaveFields, "VAL")
}

Expand Down Expand Up @@ -186,18 +187,40 @@ record(waveform, "$(P)$(R)UVCFormatDescription_RBV"){

##############################################
# Applies the supported format to the IOC
################################################
##############################################
record(ao, "$(P)$(R)UVCApplyFormat"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_APPLY_FORMAT")
field(VAL, "0")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_APPLY_FORMAT")
field(VAL, "0")
field(autosaveFields, "VAL")
}

record(ai, "$(P)$(R)UVCApplyFormat_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_APPLY_FORMAT")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_APPLY_FORMAT")
field(SCAN, "I/O Intr")
}

##############################################
# Toggles auto adjusting Color Mode, Data Type
##############################################
record(bo, "$(P)$(R)UVCAutoAdjust"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))UVC_AUTO_ADJUST")
field(ZNAM, "Disable")
field(ONAM, "Enable")
field(VAL, "1")
field(OSV, "MINOR")
info(autosaveFields, "VAL")
}

record(bi, "$(P)$(R)UVCAutoAdjust_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))UVC_AUTO_ADJUST")
field(ZNAM, "Disable")
field(ONAM, "Enable")
field(SCAN, "I/O Intr")
}

Expand All @@ -211,12 +234,12 @@ record(ai, "$(P)$(R)UVCApplyFormat_RBV"){
record(ao, "$(P)$(R)UVCGamma"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_GAMMA")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_GAMMA")
}

record(ai, "$(P)$(R)UVCGamma_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_GAMMA")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_GAMMA")
field(SCAN, "I/O Intr")
}

Expand All @@ -226,12 +249,12 @@ record(ai, "$(P)$(R)UVCGamma_RBV"){
record(ao, "$(P)$(R)UVCBacklightCompensation"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_BACKLIGHT")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_BACKLIGHT")
}

record(ai, "$(P)$(R)UVCBacklightCompensation_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_BACKLIGHT")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_BACKLIGHT")
field(SCAN, "I/O Intr")
}

Expand All @@ -241,12 +264,12 @@ record(ai, "$(P)$(R)UVCBacklightCompensation_RBV"){
record(ao, "$(P)$(R)UVCBrightness"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_BRIGHTNESS")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_BRIGHTNESS")
}

record(ai, "$(P)$(R)UVCBrightness_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_BRIGHTNESS")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_BRIGHTNESS")
field(SCAN, "I/O Intr")
}

Expand All @@ -256,42 +279,27 @@ record(ai, "$(P)$(R)UVCBrightness_RBV"){
record(ao, "$(P)$(R)UVCContrast"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_CONTRAST")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_CONTRAST")
}

record(ai, "$(P)$(R)UVCContrast_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_CONTRAST")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_CONTRAST")
field(SCAN, "I/O Intr")
}

######################################
# Stores the Gain value -> deprecated because there is the ADGain PV already
######################################
#record(ao, "$(P)$(R)UVCGain"){
# field(PINI, "YES")
# field(DTYP, "asynInt32")
# field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_GAIN")
#}
#
#record(ai, "$(P)$(R)UVCGain_RBV"){
# field(DTYP, "asynInt32")
# field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_GAIN")
# field(SCAN, "I/O Intr")
#}

######################################
# Stores the Power line frequency value
######################################
record(ao, "$(P)$(R)UVCPowerLine"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_POWER")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_POWER")
}

record(ai, "$(P)$(R)UVCPowerLine_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_POWER")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_POWER")
field(SCAN, "I/O Intr")
}

Expand All @@ -301,12 +309,12 @@ record(ai, "$(P)$(R)UVCPowerLine_RBV"){
record(ao, "$(P)$(R)UVCHue"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_HUE")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_HUE")
}

record(ai, "$(P)$(R)UVCHue_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_HUE")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_HUE")
field(SCAN, "I/O Intr")
}

Expand All @@ -316,12 +324,12 @@ record(ai, "$(P)$(R)UVCHue_RBV"){
record(ao, "$(P)$(R)UVCSaturation"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_SATURATION")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_SATURATION")
}

record(ai, "$(P)$(R)UVCSaturation_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_SATURATION")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_SATURATION")
field(SCAN, "I/O Intr")
}

Expand All @@ -331,11 +339,11 @@ record(ai, "$(P)$(R)UVCSaturation_RBV"){
record(ao, "$(P)$(R)UVCSharpness"){
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_SHARPNESS")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_SHARPNESS")
}

record(ai, "$(P)$(R)UVCSharpness_RBV"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_SHARPNESS")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))UVC_SHARPNESS")
field(SCAN, "I/O Intr")
}
Loading

0 comments on commit a6a19a3

Please sign in to comment.