1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/// Princeton Instruments camera adapter (PVCAM SDK).
///
/// Wraps the PVCAM C API behind the MicroManager `Camera` trait via a thin C
/// shim (`src/shim.c`) that exposes a simplified opaque API.
///
/// # Platform notes
///
/// | Platform | SDK headers | Library |
/// |---|---|---|
/// | macOS | `<PICAM/pvcam.h>` | `/Library/Frameworks/PICAM.framework` |
/// | Linux | `<pvcam/pvcam.h>` | `libpvcam.so` |
/// | Windows | `<picam.h>` | `pvcam32.lib` |
///
/// # Setup
///
/// 1. Install the [PVCAM SDK](https://www.princetoninstruments.com/products/software-library/pvcam)
/// for your platform.
/// 2. Build with: `cargo build -p mm-adapter-picam --features picam`
///
/// Set `PVCAM_ROOT` to override the default SDK search path.
///
/// # Properties
///
/// | Property | R/W | Description |
/// |---|---|---|
/// | `CameraName` | R/W (pre-init) | PVCAM camera name, e.g. `"pvcam0"`; empty = first found |
/// | `Exposure` | R/W | Exposure time in **milliseconds** |
/// | `GainIndex` | R/W | Gain index (1-based, range 1..GainMax) |
/// | `Binning` | R/W | Symmetric binning factor |
/// | `Width` | R | Active image width in pixels |
/// | `Height` | R | Active image height in pixels |
/// | `BitDepth` | R | Bits per pixel for the current readout speed |
/// | `Temperature` | R | Sensor temperature in °C |
/// | `TempSetpoint` | R/W | Cooling setpoint in °C |
/// | `SerialNumber` | R | Camera serial number |
/// | `ChipName` | R | Sensor chip name |
///
/// # Snap vs. sequence
///
/// `snap_image()` uses `pl_exp_setup_seq` + `pl_exp_start_seq` + polling.
/// `start_sequence_acquisition()` uses `pl_exp_setup_cont` + `pl_exp_start_cont`;
/// subsequent `snap_image()` calls dequeue frames via `pl_exp_get_oldest_frame`.
pub use PICAMCamera;