Commit 8a17f78
authored
Improves/updates/fixes indi-gige driver (#1338)
* remove compiler warnings of unused and unreturned values
* Change indi-gige in prepartion to support multiple gige cameras
This patch retains the camera device id (and model name) only as persistent,
even while the camera is disconnected. The device id is used to open a
handle to the camera and the model name is used with the device id to
create a unique INDI device name to present to the user.
* make indi-gige really disconnect from cameras
* Several improvements to enable multiple cameras and models
This patch makes several improvments preparing to handle multiple cameras
and multiple models:
1. Much better error handling/logging for all calls to aravis library.
2. Uses device ID to idenfity cameras (includes vendor, model, serial)
3. Changes GigECCD class functions signatures:
- adds virtual specifier to those functions that we override that are
virtual--proper virtual specification is necessary to ensure the
correct functions are called in all cases
- adds "override" modifier to overridden functions for cleaner code.
* Add device temperature to indi property and image info
In general, GiGE cameras often have sensors onboard to measure sensor the
temperature of the CCD/CMOS chip. This patch gathers this data if the
camera claims that it has this information (using "DeviceTemperature"
property). The temperature is added to the INDI panel display and also to
the image metadata.
* examine stream buffer queue status before looking at buffer
* GiGe: update gain property following ccd simulator
* GiGe: set expopsure start/duration for FITS header
* do not overwrite ArvGeneric::cam->device id--retain enumerated value from arv_get_device_id()
* GiGe: add pixel size property to allow for manual user config
* GiGe: save Gain and PixelSize settings in config file
* GiGe: minor simplification in setting deviceName
* GiGe: implement streaming
* GiGE: Fix binning
At least for FLIR GiGE cameras, changing binning changes the apparent size
of the chip, such that the region of interest is configured using a smaller
number of pixels. This appears to be contrary to how INDI expects binning
to be configured. Following the CCD Simulator (hopefully it is a decent
example of implementing a INDI::CCD device), it rather appears that the
region of interest is still expected to be set using the entire available
Width/Height. It therefore appears necessary to mitigate this mismatch
since (at least for ekos) the client appears to mess up the apparent image
if binning is configured but a smaller region is selected, but in reality
the entire avaialble sensor was binned.
So, for now, even when binning is used, this patch makes the driver use the
full WidthMax and HeightMax manually divided by the binning to select the
region of interest.
This means that any use of get_x_offset().val(), get_y_offset().val(),
get_width().val(), or get_height().val() from the GigECCD::camera object must
be manually multiplied or divided by the values from get_bin_x().val() and
get_bin_y().val() as appropriate. Similarly, camera->set_geometry(...) must
be given values that are divided by the appropriate binning.
It remains to verify this behavior on GiGE cameras from other vendors, or
at least to check what the standard says, if anything useful on the matter.
* GiGE: update aravis-0.8 requirement, authors, version in xml
* GigE: use unique_ptr to fix memory leak
This patch changes GigECCD to handle the pointer to the underlying
ArvCamera with a unqiue_ptr rather than a raw pointer. Prior to this
patch, the GigECCD destructor did not delete the ArvCamera pointer. Using
a smart pointer interface, this is handled much more carefully and memory
leaks are avoided entirely.
* GigE: enable multiple cameras
This patch implements an iterator in the ArvFactory and creates device
instances for all cameras found.1 parent b0802f2 commit 8a17f78
11 files changed
Lines changed: 912 additions & 329 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | | - | |
| 60 | + | |
61 | 61 | | |
62 | | - | |
| 62 | + | |
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
30 | 72 | | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
| 73 | + | |
48 | 74 | | |
0 commit comments