×

INDI Library v2.0.6 is Released (02 Feb 2024)

Bi-monthly release with minor bug fixes and improvements

Setting Gain / Autogain in Client SW

  • Posts: 10
  • Thank you received: 0
How do I set gain and prevent the auto-gain feature in tutorial sample client. Could not find similar example setting gain and clearing auto-gain feature, which is causing problems. Is it similar to the "getNumber("CCD_EXPOSRE") " below? If so, what are the key words for GAIN(CCD_GAIN?) and AUTO-GAIN(CCD_AUTOGAIN?).

Thanks in advance.

void MyClient::takeExposure()
{
INumberVectorProperty *ccd_exposure = NULL;

if ( ccd_simulator)
{
ccd_exposure = ccd_simulator->getNumber("CCD_EXPOSURE");
if (ccd_exposure == NULL)
{
IDLog("Error: unable to find CCD Simulator CCD_EXPOSURE property...\n");
return;
}
// Take a 1 second exposure
// IDLog("Taking a 1 second exposure.\n");
//was: ccd_exposure->np[0].value = 1;
if ( my_exposure < 0.01) my_exposure = 0.01;
ccd_exposure->np[0].value = my_exposure;
blob_ready = false;
sendNewNumber(ccd_exposure);
}
}

Suggestion appreciated.
Joe
9 years 7 months ago #1787

Please Log in or Create an account to join the conversation.

For what driver are you doing the gain & autogain?
The following user(s) said Thank You: joe
9 years 7 months ago #1788

Please Log in or Create an account to join the conversation.

  • Posts: 10
  • Thank you received: 0
www.indilib.org/forum/general/419-settin...t-sw/reply/1788.html

I am using: indi_v4l2_ccd

Starting up with "indiserver -vv indi_v4l2_ccd" get the following:
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='CONNECTION'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='CONNECTION'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defTextVector device='V4L2 CCD' name='DRIVER_INFO'>
2014-08-21T17:30:30: Client 0: queuing <defTextVector device='V4L2 CCD' name='DRIVER_INFO'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='DEBUG'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='DEBUG'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='CONFIG_PROCESS'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='CONFIG_PROCESS'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defTextVector device='V4L2 CCD' name='DEVICE_PORT'>
2014-08-21T17:30:30: Client 0: queuing <defTextVector device='V4L2 CCD' name='DEVICE_PORT'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defNumberVector device='V4L2 CCD' name='CCD_EXPOSURE'>
2014-08-21T17:30:30: Client 0: queuing <defNumberVector device='V4L2 CCD' name='CCD_EXPOSURE'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defNumberVector device='V4L2 CCD' name='CCD_FRAME'>
2014-08-21T17:30:30: Client 0: queuing <defNumberVector device='V4L2 CCD' name='CCD_FRAME'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defNumberVector device='V4L2 CCD' name='CCD_BINNING'>
2014-08-21T17:30:30: Client 0: queuing <defNumberVector device='V4L2 CCD' name='CCD_BINNING'>
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="CONNECTIO
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defNumberVector device='V4L2 CCD' name='CCD_INFO'>
2014-08-21T17:30:30: Client 0: queuing <defNumberVector device='V4L2 CCD' name='CCD_INFO'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='CCD_COMPRESSION'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='CCD_COMPRESSION'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defBLOBVector device='V4L2 CCD' name='CCD1'>
2014-08-21T17:30:30: Client 0: queuing <defBLOBVector device='V4L2 CCD' name='CCD1'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='CCD_FRAME_TYPE'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='CCD_FRAME_TYPE'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='CCD_RAPID_GUIDE'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='CCD_RAPID_GUIDE'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defTextVector device='V4L2 CCD' name='ACTIVE_DEVICES'>
2014-08-21T17:30:30: Client 0: queuing <defTextVector device='V4L2 CCD' name='ACTIVE_DEVICES'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defTextVector device='V4L2 CCD' name='Camera Model'>
2014-08-21T17:30:30: Client 0: queuing <defTextVector device='V4L2 CCD' name='Camera Model'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defNumberVector device='V4L2 CCD' name='Image Adjustments'>
2014-08-21T17:30:30: Client 0: queuing <defNumberVector device='V4L2 CCD' name='Image Adjustments'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='VIDEO_STREAM'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='VIDEO_STREAM'>
2014-08-21T17:30:30: Client 0: sending <defTextVector device="V4L2 CCD" name="DRIVER_INFO
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='Stacking Mode'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='Stacking Mode'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='Image Type'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='Image Type'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='V4L2_INPUT'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='V4L2_INPUT'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='V4L2_FORMAT'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='V4L2_FORMAT'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='V4L2_SIZE_DISCRETE'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='V4L2_SIZE_DISCRETE'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='V4L2_FRAMEINT_DISCRETE'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='V4L2_FRAMEINT_DISCRETE'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defTextVector device='V4L2 CCD' name='DEVICE_PORT'>
2014-08-21T17:30:30: Client 0: queuing <defTextVector device='V4L2 CCD' name='DEVICE_PORT'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defTextVector device='V4L2 CCD' name='Camera Model'>
2014-08-21T17:30:30: Client 0: queuing <defTextVector device='V4L2 CCD' name='Camera Model'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='VIDEO_STREAM'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='VIDEO_STREAM'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='Stacking Mode'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='Stacking Mode'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='Image Type'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='Image Type'>
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="DEBUG" la
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='V4L2_INPUT'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='V4L2_INPUT'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='V4L2_FORMAT'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='V4L2_FORMAT'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='V4L2_SIZE_DISCRETE'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='V4L2_SIZE_DISCRETE'>
2014-08-21T17:30:30: Driver indi_v4l2_ccd: read <defSwitchVector device='V4L2 CCD' name='V4L2_FRAMEINT_DISCRETE'>
2014-08-21T17:30:30: Client 0: queuing <defSwitchVector device='V4L2 CCD' name='V4L2_FRAMEINT_DISCRETE'>
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="CONFIG_PR
2014-08-21T17:30:30: Client 0: sending <defTextVector device="V4L2 CCD" name="DEVICE_PORT
2014-08-21T17:30:30: Client 0: sending <defNumberVector device="V4L2 CCD" name="CCD_EXPOS
2014-08-21T17:30:30: Client 0: sending <defNumberVector device="V4L2 CCD" name="CCD_FRAME
2014-08-21T17:30:30: Client 0: sending <defNumberVector device="V4L2 CCD" name="CCD_BINNI
2014-08-21T17:30:30: Client 0: sending <defNumberVector device="V4L2 CCD" name="CCD_INFO"
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="CCD_COMPR
2014-08-21T17:30:30: Client 0: sending <defBLOBVector device="V4L2 CCD" name="CCD1" label
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="CCD_FRAME
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="CCD_RAPID
2014-08-21T17:30:30: Client 0: sending <defTextVector device="V4L2 CCD" name="ACTIVE_DEVI
2014-08-21T17:30:30: Client 0: sending <defTextVector device="V4L2 CCD" name="Camera Mode
2014-08-21T17:30:30: Client 0: sending <defNumberVector device="V4L2 CCD" name="Image Adj
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="VIDEO_STR
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="Stacking
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="Image Typ
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="V4L2_INPU
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="V4L2_FORM
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="V4L2_SIZE
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="V4L2_FRAM
2014-08-21T17:30:30: Client 0: sending <defTextVector device="V4L2 CCD" name="DEVICE_PORT
2014-08-21T17:30:30: Client 0: sending <defTextVector device="V4L2 CCD" name="Camera Mode
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="VIDEO_STR
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="Stacking
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="Image Typ
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="V4L2_INPU
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="V4L2_FORM
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="V4L2_SIZE
2014-08-21T17:30:30: Client 0: sending <defSwitchVector device="V4L2 CCD" name="V4L2_FRAM
2014-08-21T17:30:32: Client 0: read EOF
2014-08-21T17:30:32: Client 0: shut down complete - bye!

when query with "./indi_getprop -v "

Hope that helps. Best Regards, Joe
9 years 7 months ago #1794

Please Log in or Create an account to join the conversation.

  • Posts: 10
  • Thank you received: 0
Also, from ./indi_getprop -v:
joe@joe-Inspiron-N5030:~/joeLinLaptop/joe/indi/Projects/libindi_build$ ./indi_getprop -v
looking for *.*.*
Connected to localhost on port 7624
Queried properties from *
V4L2 CCD.CONNECTION.CONNECT=On
V4L2 CCD.CONNECTION.DISCONNECT=Off
V4L2 CCD.DRIVER_INFO.NAME=V4L2 CCD
V4L2 CCD.DRIVER_INFO.EXEC=indi_v4l2_ccd
V4L2 CCD.DRIVER_INFO.VERSION=1.0
V4L2 CCD.DEBUG.ENABLE=Off
V4L2 CCD.DEBUG.DISABLE=On
V4L2 CCD.CONFIG_PROCESS.CONFIG_LOAD=Off
V4L2 CCD.CONFIG_PROCESS.CONFIG_SAVE=Off
V4L2 CCD.CONFIG_PROCESS.CONFIG_DEFAULT=Off
V4L2 CCD.DEVICE_PORT.PORT=/dev/video0
V4L2 CCD.CCD_EXPOSURE.CCD_EXPOSURE_VALUE=1
V4L2 CCD.CCD_FRAME.X=0
V4L2 CCD.CCD_FRAME.Y=0
V4L2 CCD.CCD_FRAME.WIDTH=1280
V4L2 CCD.CCD_FRAME.HEIGHT=960
V4L2 CCD.CCD_BINNING.HOR_BIN=1
V4L2 CCD.CCD_BINNING.VER_BIN=1
V4L2 CCD.CCD_INFO.CCD_MAX_X=1280
V4L2 CCD.CCD_INFO.CCD_MAX_Y=960
V4L2 CCD.CCD_INFO.CCD_PIXEL_SIZE=5.5999999046325683594
V4L2 CCD.CCD_INFO.CCD_PIXEL_SIZE_X=5.5999999046325683594
V4L2 CCD.CCD_INFO.CCD_PIXEL_SIZE_Y=5.5999999046325683594
V4L2 CCD.CCD_INFO.CCD_BITSPERPIXEL=8
V4L2 CCD.CCD_COMPRESSION.COMPRESS=On
V4L2 CCD.CCD_COMPRESSION.RAW=Off
sending enableBLOB V4L2 CCD.CCD1
V4L2 CCD.CCD_FRAME_TYPE.FRAME_LIGHT=On
V4L2 CCD.CCD_FRAME_TYPE.FRAME_BIAS=Off
V4L2 CCD.CCD_FRAME_TYPE.FRAME_DARK=Off
V4L2 CCD.CCD_FRAME_TYPE.FRAME_FLAT=Off
V4L2 CCD.CCD_RAPID_GUIDE.ENABLE=Off
V4L2 CCD.CCD_RAPID_GUIDE.DISABLE=On
V4L2 CCD.ACTIVE_DEVICES.ACTIVE_TELESCOPE=Telescope Simulator
V4L2 CCD.ACTIVE_DEVICES.ACTIVE_FOCUSER=Focuser Simulator
V4L2 CCD.Camera Model.Model=DMK 23U445
V4L2 CCD.Image Adjustments.Gain=175
V4L2 CCD.Image Adjustments.Exposure (Absolute)=22
V4L2 CCD.VIDEO_STREAM.ON=Off
V4L2 CCD.VIDEO_STREAM.OFF=On
V4L2 CCD.Stacking Mode.None=On
V4L2 CCD.Stacking Mode.Additive=Off
V4L2 CCD.Image Type.Grey=On
V4L2 CCD.Image Type.Color=Off
V4L2 CCD.V4L2_INPUT.Camera 1=On
V4L2 CCD.V4L2_FORMAT.Greyscale 8-bit (Y800)=On
V4L2 CCD.V4L2_FORMAT.Greyscale 16-bit (Y16 )=Off
V4L2 CCD.V4L2_SIZE_DISCRETE.1280x960=On
V4L2 CCD.V4L2_FRAMEINT_DISCRETE.1/15=Off
V4L2 CCD.V4L2_FRAMEINT_DISCRETE.1/10=Off
V4L2 CCD.V4L2_FRAMEINT_DISCRETE.2/15=Off
V4L2 CCD.V4L2_FRAMEINT_DISCRETE.1/5=Off
V4L2 CCD.V4L2_FRAMEINT_DISCRETE.4/15=Off
V4L2 CCD.DEVICE_PORT.PORT=/dev/video0
V4L2 CCD.Camera Model.Model=DMK 23U445
V4L2 CCD.VIDEO_STREAM.ON=Off
V4L2 CCD.VIDEO_STREAM.OFF=On
V4L2 CCD.Stacking Mode.None=On
V4L2 CCD.Stacking Mode.Additive=Off
V4L2 CCD.Image Type.Grey=On
V4L2 CCD.Image Type.Color=Off
V4L2 CCD.V4L2_INPUT.Camera 1=On
V4L2 CCD.V4L2_FORMAT.Greyscale 8-bit (Y800)=On
V4L2 CCD.V4L2_FORMAT.Greyscale 16-bit (Y16 )=Off
V4L2 CCD.V4L2_SIZE_DISCRETE.1280x960=On
V4L2 CCD.V4L2_FRAMEINT_DISCRETE.1/15=Off
V4L2 CCD.V4L2_FRAMEINT_DISCRETE.1/10=Off
V4L2 CCD.V4L2_FRAMEINT_DISCRETE.2/15=Off
V4L2 CCD.V4L2_FRAMEINT_DISCRETE.1/5=Off
V4L2 CCD.V4L2_FRAMEINT_DISCRETE.4/15=Off

which contains for device info.
Regards,

Joe
9 years 7 months ago #1795

Please Log in or Create an account to join the conversation.

By looking at getProp, I can only see one setting for gain:

V4L2 CCD.Image Adjustments.Gain=175

So from the client, you can change that by:
INumberVectorProperty *ccd_adjustment = ccd_device->getNumber("Image Adjustments");
INumber *ccd_gain = IUFindNumber(ccd_adjustment, "Gain");
if (ccd_gain)
{
ccd_gain->value = new_gain_value;
sendNewNumber(ccd_adjustment);
}

just replace ccd_simulator with ccd_device in your code since this is more appropriate :-)
The following user(s) said Thank You: joe
9 years 7 months ago #1799

Please Log in or Create an account to join the conversation.

  • Posts: 10
  • Thank you received: 0
knro,
Thanks. Worked great.
Please close out this question. Wish a similar example had been used in the sample client.
Regards, Joe
9 years 7 months ago #1800

Please Log in or Create an account to join the conversation.

Time to create page: 0.673 seconds