Overview
Control of the Chronos camera is provided as a REST API, which is a type of web API, involving requests and responses, not too unlike visiting a web page. You make a request to a resource stored on a server, and the server responds with the requested information. The protocol used to transport the data is HTTP. "REST" stands for Representational State Transfer.
The Chronos API provides access to the camera configuration, settings and related data describing the camera's hardware and available features. The base address of the Chronos API is http://192.168.12.1/control
when accessing the camera via its USB interface. This API provides a set of endpoints, each with its own unique path.
Note: Use the IP Address specified in the Util -> Network screen when accessing the camera via Ethernet.
Methods
API methods are procedures that may start a procedure or change the camera state. Since these operations do not fit well into the REST model, they are performed using the HTTP POST method, with their arguments provided in JSON format as the HTTP POST body.
describe
The describe
method is accessible by the /control/describe
endpoint and returns a description of the available parameters and methods that can be accessed via the Chronos API. This method is used to generate most of the reference information on this page.
curl http://192.168.12.1/control/describe
{
"cameraMemoryGB": {
"type": "d",
"get": true,
"set": false,
"notifies": false,
"doc": "int: Amount of video memory attached to the FPGA in GiB"
}
...
}
Member | Description |
type | D-Bus type signature for the parameter's value. |
get | true when the parameter can be retrieved using the get method |
set | true when the parameter can be changed using the set method |
notifies | true when changes to the parameter are reported using the notify event |
doc | Documentation string, explaining the parameter's meaning and function |
availableCalls
The availableCalls
method is accessible by the /control/availableCalls
endpoint. This method gets a list of the methods that can be called via the API.
This method returns a dictionary with an entry for each method that can be called via the API. Each entry will include a brief
string that summarizes the purpose of the API method. Optionally, the entries may also contain a description
with a more extensive detail, as well as args
and returns
dictionaries that list the parameters that the method accepts, and any values that the method returns.
The availableCalls
method returns a dictionary with the following members:
Return Value | Type | Description |
calls | dict | A dictionary describing each method that is callable by the API. |
availableKeys
The availableKeys
method is accessible by the /control/availableKeys
endpoint.This method gets a list of the parameters available in the API.
This method returns a dictionary with an entry for each parameter that can be accessed via the API. Each entry will describe the type
of the parameter as a D-Bus signature, a doc
string that describes the function of the parameter, as well get
, set
, and notify
flags that indicate whether the parameter can is read-only, read-write or generates notify
events when its value changes.
The dictionary for each key may also include additional details depending on the type of the parameter. String parameters describing an enumerated type, may include an enum
dictionary which maps each of the acceptable values to a brief docstring describing what that value does.
Dictionary types may include an args
dictionary describing the each member of the dictionary does when it is set in the API, or they may include a returns
dictionary describing what each dictionary member means when it is returned by the API.
Each key may also include a description
member, which provides a detailed multi-line documentation string. This is intended to provide more detail than may be available in the single-line doc
.
The availableKeys
method returns a dictionary with the following members:
Return Value | Type | Description |
keys | dict | A dictionary describing each parameter in the API. |
clearCalibration
The clearCalibration
method is accessible by the /control/clearCalibration
endpoint.This method removes user calibration data, returning the camera to its factory state.
When called with no arguments, this removes only the user calibration, allowing the camera to return to its factory new state. The caller may also specify the removal of factory calibration data, though this is not recommended unless the user has made a backup of their calibration data first.
The clearCalibration
method accepts the following arguments:
Argument | Type | Description |
factory | bool, optional | Also remove factory calibration data. (default: false) |
exportCalData
The exportCalData
method is accessible by the /control/exportCalData
endpoint.This method generates factory calibration samples and saves them to external storage
This method iterates through the image sensor's internal calibration modes and generates factory calibration sample data to be processed externally. The calibration data will be saved to a USB thumb drive, typically mounted at /media/sda1.
After external processing of the calibration samples is complete, the resulting calibration data can be imported to the camera using the importCalData
method.
flushRecording
The flushRecording
method is accessible by the /control/flushRecording
endpoint.This method flushes recorded video data from memory.
Normally when recording video, the camera will overwrite video data only as needed to make room for new data from the the image sensor. This method discards all video data from the video memory so that the user can start fresh on their next recording.
get
The get
method is accessible by the /control/get
endpoint.This method retrieves parameter values from the API.
The resulting dictionary will contain an element for each parameter that was successfully read from the API. If any parameters could not be read, they will be included in an error
dictionary giving the reasons that they could not be retrieved.
The get
method accepts the following arguments:
Argument | Type | Description |
| string | list of parameter names to retrieve from the API. |
getResolutionTimingLimits
The getResolutionTimingLimits
method is accessible by the /control/getResolutionTimingLimits
endpoint.This method tests the camera ability to support a desired resolution and framerate.
This method checks the sensor's ability to operate at the desired resolution parameters and, if successful, reports on some of the parameters that would apply if that resolution was configured.
Otherwise, this method will generate an error to indicate that the resolution setting is not supported by the image sensor.
The getResolutionTimingLimits
method accepts the following arguments:
Argument | Type | Description |
bitDepth | int, optional | Desired pixel bit depth to use for image readout. (default: image sensor maximum) |
hOffset | int, optional | Horizontal offset of the image from the right edge of the image sensor. (default: center the image horizontally) |
hRes | int | Horizontal image resolution, in pixels. |
minFrameTime | float, optional | Minimum time period, in seconds between frames, that the imager sensor will operate at. (default: image sensor minimum) |
vOffset | int, optional | Vertical offset of the image from the top edge of the image sensor. (default: center the image vertically) |
vRes | int | Vertical image resolution, in pixels. |
The getResolutionTimingLimits
method returns a dictionary with the following members:
Return Value | Type | Description |
| int | The maximum number of frames that the camera can save at this resolution and framerate setting. |
| int | The maximmum exposure period in nanoseconds, that the image sensor can expose a frame for if framePeriod was set equal to minFramePeriod. |
| int | The minimum exposure period in nanoseconds that the image sensor can exposure a frame for. |
| int | The minimum frame period, in nanoseconds between frames, that the image sensor can operate at. |
importCalData
The importCalData
method is accessible by the /control/importCalData
endpoint.This method imports calibration data that was generated off-camera.
This method looks for any calibration data present on a USB thumb drive, typically mounted at /media/sda1, and copies the calibration data to the camera's internal filesystem for later use.
This method is used during factory calibration to import calibration data that the camera is not capable of generating on its own. Typically the camera will be connected to a test jig to trigger the camera, with data being acquired using the exportCalData
method.
reboot
The reboot
method is accessible by the /control/reboot
endpoint.This method restarts the control API and/or the camera.
This method allows the user to restart their camera software, and optionally perform a full power cycle and/or return to factory default settings at the same time.
The reboot
method accepts the following arguments:
Argument | Type | Description |
power | boolean, optional | When true, the camera will perform a full power cycle. |
reload | boolean, optional | When true, the control API and user interfaces will restart themselves (default: true). |
settings | boolean, optional | When true, the user and API settings are removed during the reboot, returning the camera to its factory default state. |
set
The set
method is accessible by the /control/set
endpoint.This method sets parameter values in the API.
The resulting dictionary will contain an element for each parameter that was successfully set in the API.
If any parameters could not be set, they will be included in an error
dictionary given the reason that they could not be set. Typically this is either because the value given was not valid for the parameter, or the parameter did not exist.
The set
method accepts the following arguments:
Argument | Type | Description |
**values | dict | A dictionary naming each of the parameters to update, and the to which they should be set. |
startCalibration
The startCalibration
method is accessible by the /control/startCalibration
endpoint.This method begin one or more calibration procedures at the current settings.
Black calibration takes a sequence of images with the lens cap or shutter closed and averages them to find the black level of each pixel on the image sensor. This value is then be subtracted during playback to correct for image offset defects.
Analog calibration consists of any automated image sensor calibration that can be performed quickly and autonomously without any setup from the user (eg: no closing of the aperture or calibration jigs).
Factory calibration algorithms may require special test equipment or setups. Factory calibration also implies that calibration data will be saved, and that conflicting user calibration data will be removed.
The startCalibration
method accepts the following arguments:
Argument | Type | Description |
analogCal | bool, optional | Perform autonomous analog calibration of the image sensor. (default: false) |
blackCal | bool, optional | Perform a full black calibration assuming the user has closed the aperture or lens cap. (default: false) |
factory | bool, optional | Whether factory calibration algorithms should be performed. (default: false) |
saveCal | bool, optional | Whether the results of calibration should be saved to the filesystem for later use. (default: false) |
zeroTimeBlackCal | bool, optional | Perform a fast black calibration by reducing the exposure time and aperture to their minimum values. (default: false) |
This method starts an asynchronous process that changes the camera's state and executes in the background. The results of the startCalibration
method will be returned to the user in the complete
event, with a method
equal to startCalibration
.
startFilesave
The startFilesave
method is accessible by the /control/startFilesave
endpoint.This method saves a region of recorded video to external storage.
Upon calling this method, the video system will switch to the filesave
state and begin encoding video data to the output device
. During this procedure, the playbackStart
, playbackPosition
and playbackLength
parameters will be updated to track the progress of the filesave.
When the filesave is completed, the video system will exit the filesave
state, and revert back to whichever state it was in when the startFilesave
method was called.
The startFilesave
method accepts the following arguments:
Argument | Type | Description |
bitrate | int, optional | For compressed formats, this sets the desired bitrate of the encoded file in bits per second (0.25 bits per pixel per second). |
device | string | Name of the external storage device where video should be saved. |
filename | string, optional | Name to give to the video file (or directory for TIFF and DNG formats). When omitted, a filename is generated using the current date and time. |
format | string | Enumerate the output video format. |
framerate | int, optional | For formats with a media container (such as MPEG-4), this determines the framerate of the encoded media file (default: 60 frames per second). |
length | int, optional | The number of frames of video that should be saved (default: all frames). |
start | int, optional | The frame number in recorded video where the saved video begin (default: 0). |
startLivedisplay
The startLivedisplay
method is accessible by the /control/startLivedisplay
endpoint.This method switches the video system into live display mode.
When in live display mode, the camera will replay the active video data being acquired from the image sensor onto the LCD screen, HDMI port and its RTSP stream. The video stream will monitor for changes in the video geometry, or hotplug events and may restart and reconfigure itself as necessary to keep the video data flowing. The show must go on.
Any video properties that relate to video playback rate and position have no meaning or effect when in this state.
startPlayback
The startPlayback
method is accessible by the /control/startPlayback
endpoint.This method switches the video system into playback mode, or sets the playback position and rate.
When in playback mode, the camera will replay the captured video on the LCD, HDMI port and its RTSP stream. The user may configure the starting frame number and the rate at which video is replayed.
The actual video stream replayed by the camera is fixed at either 30 or 60fps, the camera will either skip or duplicate frames to achieve the requested framerate. For example, setting the framerate
to 120fps will typically play every 2nd frame at 60fps.
The framerate
can be either positive for forward playback, or negative to rewind backwards through video. A value of zero will effectively pause the video on the current frame.
The startPlayback
method accepts the following arguments:
Argument | Type | Description |
framerate | int | The rate, in frames per second, at which video should advance through the playback memory. |
loopcount | int, optional | The number of frames, after which the video system should return back to |
position | int | The starting frame number from which video should play. |
startRecording
The startRecording
method is accessible by the /control/startRecording
endpoint.This method program the recording sequencer and start recording.
The startRecording
method accepts the following arguments:
Argument | Type | Description |
recMode | RecModes, optional | Override the current |
This method starts an asynchronous process that changes the camera's state and executes in the background. The results of the startRecording
method will be returned to the user in the complete
event, with a method
equal to startRecording
.
startWhiteBalance
The startWhiteBalance
method is accessible by the /control/startWhiteBalance
endpoint.This method begin the white balance procedure.
Take a white reference sample from the live video stream, and compute the white balance coefficients for the current lighting conditions. If successful, the results of the white balance calculation will be stored in wbCustomColor
and wbTemperature
will be set to 0K.
The startWhiteBalance
method accepts the following arguments:
Argument | Type | Description |
hStart | int, optional | Horizontal position at which the white reference should be taken. |
vStart | int, optional | Vertical position at which the white reference should be taken. |
This method starts an asynchronous process that changes the camera's state and executes in the background. The results of the startWhiteBalance
method will be returned to the user in the complete
event, with a method
equal to startWhiteBalance
.
stopFilesave
The stopFilesave
method is accessible by the /control/stopFilesave
endpoint.This method terminates an ongoing filesave operation
When the video system has started a filesave operation, it can take a very long time to complete depending on the quantity of footage being saved, and the speed of media to which it is being written.
If an operation was started in error, or the user changes their mind, then this method may be used to terminate that operation rather than waiting for it to complete.
It is acceptable to call this method even when no filesave operation is in progress, however, it may result in an otherwise unexpected restart of the video system.
stopRecording
The stopRecording
method is accessible by the /control/stopRecording
endpoint.This method terminate a recording if one is in progress.
Events
With server-sent-events it is possible for the camera to send asynchronous notifications when long running operations complete, or parameters change in the API. This is done by pushing events to the web browser.
Using Javascript, a browser can subscribe to the HTML5 Server-Sent-Events stream by creating a new EventSource
on the /control/subscribe
endpoint, and then using the addEventListener
function to receive events.
function onNotifyEvent(data) {
document.getElementById("result").innerText = JSON.parse(data);
}
var evtSource = new EventSource("/control/subscribe"); evtSource.addEventListener("notify", function(event) {
onNotifyEvent(event.data);
});
notify
The notify
event is generated whenever a mutable parameter in the API changes its value, and the data sent with the event will contain a dictionary of the updated parameter values.
curl http://192.168.12.1/control/subscribe
event: notify
data:{ data: "calSuggested": false, data: "state": "analogcal" data:}
complete
The complete
event is generated whenever an asynchronous procedure has run to completion, and will contain the results of the procedure.
If the procedure completed successfully then the data will contain a dictionary with the name of the method the completed, and the new state of the camera.
If the procedure completed with an error, then the dictionary will also contain an error
with the type of error that occurred, and optionally a message
with a human-readable description of the error.
curl http://192.168.12.1/control/subscribe
event: complete
data:{
data: "state": "idle",
data: "method": "startWhiteBalance",
data: "error": "SignalClippingError",
data: "message": "Signal clipping, reference image is too bright for white balance"
data:}
Member | Description |
state | The new state of the camera after completing the asynchronous call |
method | The name of the asynchronous API call that has completed |
error | A canonical name for an error that occurred during the asynchronous call (optional) |
message | A human-readable string describing the cause of the error |
Parameters
The Chronos API exposes a set of parameters that are accessible using a REST API. Parameters are accessed via standard HTTP requests in JSON format, and where possible the Chronos API uses appropriate verbs for each action:
Verb | Endpoint | Action |
GET |
| Retrieve a single parameter by name if the |
PUT |
| Set the value of a single parameter by name if the |
POST |
| Update a collection parameters together |
backlightEnabled
Type: Boolean
Get: true
Set: true
Notifies: true
True if the LCD on the back of the camera is lit. Can be set to False to dim the screen and save a small amount of power.
true
batteryChargeNormalized
Type: Double
Get: true
Set: false
Notifies: false
Estimated battery charge, with 0.0 being depleted and 1.0 being fully charged.
1
batteryChargePercent
Type: Integer
Get: true
Set: false
Notifies: false
Estimated battery charge, with 0% being depleted and 100% being fully charged.
100
batteryCritical
Type: Boolean
Get: true
Set: false
Notifies: true
True when the battery voltage is critically low and a power down is imminent
false
batteryPresent
Type: Boolean
Get: true
Set: false
Notifies: true
True when the battery is installed, and False when the camera is only running on adaptor power
true
batteryVoltage
Type: Double
Get: true
Set: false
Notifies: false
The voltage that is currently being output by the battery. A fully charged battery outputs between 12V and 12.5V.
12.225
calSuggested
Type: Boolean
Get: true
Set: false
Notifies: true
True when the calibration of the camera needs updating.
false
cameraApiVersion
Type: String
Get: true
Set: false
Notifies: false
Version string of the pychronos module
0.7.0
cameraDescription
Type: String
Get: true
Set: true
Notifies: true
Descriptive string assigned by the user
Chronos SN:00000
cameraFpgaVersion
Type: String
Get: true
Set: false
Notifies: false
Version string of the FPGA bitstream that is currently running
3.24
cameraIdNumber
Type: Integer
Get: true
Set: true
Notifies: true
Unique camera number assigned by the user
0
cameraMaxFrames
Type: Integer
Get: true
Set: false
Notifies: true
The maximum number of frames the camera's memory can save at the current resolution.
11038
cameraMemoryGB
Type: Double
Get: true
Set: false
Notifies: false
Amount of video memory attached to the FPGA in GiB
32
cameraModel
Type: String
Get: true
Set: false
Notifies: false
Camera model name
CR21-1.0
cameraSerial
Type: String
Get: true
Set: false
Notifies: false
Unique camera serial number
00000
cameraTallyMode
Type: String
Get: true
Set: true
Notifies: true
Mode in which the recording LEDs should operate.
auto
colorMatrix
Type: Array of Doubles
Get: true
Set: true
Notifies: true
The matrix coefficients for a 3x3 color matrix converting the image sensor color space into sRGB. The values are stored in row-scan order.
[
2.20679,
-0.863281,
-0.239746,
-0.375488,
1.63477,
-0.271973,
0.013916,
-0.911377,
1.7207
]
config
Type: Dictionary
Get: true
Set: false
Notifies: false
Return a configuration dictionary of all save-able parameters
{
"recSegments": 1,
"recMode": "normal",
"ioThresholdIo1": 2.50271,
"ioThresholdIo2": 2.50271,
"ioMappingCombOr2": {
"source": "io2",
"debounce": true,
"invert": true
},
"ioMappingCombOr3": {
"source": "io3",
"debounce": true,
"invert": false
},
"recTrigDelay": 0,
"exposureMode": "normal",
"ioMappingGate": {
"source": "none",
"debounce": false,
"invert": false
},
"ioMappingCombOr1": {
"source": "io1",
"debounce": true,
"invert": true
},
"ioMappingCombXor": {
"source": "none",
"debounce": false,
"invert": false
},
"ioMappingToggleSet": {
"source": "none",
"debounce": false,
"invert": false
},
"currentGain": 1.25,
"ioMappingStopRec": {
"source": "none",
"debounce": false,
"invert": false
},
"recPreBurst": 1,
"ioMappingToggleFlip": {
"source": "none",
"debounce": false,
"invert": false
},
"ioDelayTime": 0,
"cameraDescription": "Chronos SN:00000",
"wbCustomColor": [
1.33571,
1,
1.41714
],
"miscScratchPad": {
"empty": true
},
"ioMappingStartRec": {
"source": "none",
"debounce": false,
"invert": false
},
"ioMappingIo2": {
"source": "none",
"drive": 0,
"debounce": false,
"invert": false
},
"ioMappingIo1": {
"source": "none",
"drive": 0,
"debounce": false,
"invert": false
},
"colorMatrix": [
2.20679,
-0.863281,
-0.239746,
-0.375488,
1.63477,
-0.271973,
0.013916,
-0.911377,
1.7207
],
"ioMappingTrigger": {
"source": "none",
"debounce": false,
"invert": false
},
"ioMappingDelay": {
"source": "comb",
"debounce": false,
"invert": false
},
"disableRingBuffer": false,
"resolution": {
"minFrameTime": 0.000999893,
"vOffset": 0,
"hRes": 1920,
"hOffset": 0,
"vRes": 1080,
"bitDepth": 12,
"vDarkRows": 0
},
"recMaxFrames": 11038,
"wbTemperature": 5500,
"ioMappingToggleClear": {
"source": "none",
"debounce": false,
"invert": false
},
"ioMappingCombAnd": {
"source": "alwaysHigh",
"debounce": false,
"invert": false
},
"cameraIdNumber": 0,
"cameraTallyMode": "auto",
"exposurePeriod": 950000,
"ioMappingShutter": {
"source": "none",
"debounce": false,
"invert": false
},
"digitalGain": 1,
"framePeriod": 999893
}
currentGain
Type: Double
Get: true
Set: true
Notifies: true
The current gain of the image sensor as a linear multiplier of sensorIso
.
1.07143
currentIso
Type: Double
Get: true
Set: true
Notifies: false
The ISO number of the image sensor at the current current gain.
621.429
dateTime
Type: String
Get: true
Set: false
Notifies: false
The current date and time in ISO-8601 format.
2024-09-13T15:53:14.059095
digitalGain
Type: Double
Get: true
Set: true
Notifies: true
Digital image gain applied during video processing.
1
disableRingBuffer
Type: Integer
Get: true
Set: true
Notifies: false
When true, the camera will stop recording once the RAM buffer is full instead of looping over.
0
exposureMax
Type: Integer
Get: true
Set: false
Notifies: true
The maximum possible time, in nanoseconds, that the image sensor is capable of exposing
993226
exposureMin
Type: Integer
Get: true
Set: false
Notifies: true
The minimum possible time, in nanoseconds, that the image sensor is capable of exposing
1000
exposureMode
Type: String
Get: true
Set: true
Notifies: true
Mode in which frame timing and exposure should operate.
normal
exposureNormalized
Type: Double
Get: true
Set: true
Notifies: false
The current exposure time rescaled between exposureMin
and exposureMax
. This value is 0 when exposure is at minimum, and increases linearly until exposure is at maximum, when it is 1.0.
0.503877
exposurePercent
Type: Double
Get: true
Set: true
Notifies: false
The current exposure time rescaled between exposureMin
and exposureMax
. This value is 0% when exposure is at minimum, and increases linearly until exposure is at maximum, when it is 100%.
50.3877
exposurePeriod
Type: Integer
Get: true
Set: true
Notifies: true
Minimum period, in nanoseconds, that the image sensor is currently exposing frames for.
500950
externalPower
Type: Boolean
Get: true
Set: false
Notifies: true
True when the AC adaptor is present, and False when on battery power.
true
externalStorage
Type: Dictionary
Get: true
Set: false
Notifies: false
The currently attached external storage partitions and their status. The sizes of the reported storage devices are in units of kB.
{
"mmcblk1p1": {
"device": "/dev/mmcblk1p1",
"description": "MMC/SD Card Partiton 1",
"mount": "/media/mmcblk1p1",
"fstype": "vfat"
}
}
fanOverride
Type: Double
Get: true
Set: true
Notifies: true
Fan speed in the range of 0=off to 1.0=full, or -1 for automatic fan control.
-1
focusPeakingColor
Type: String
Get: true
Set: true
Notifies: true
The color to display when focus peaking detects a sharp edge.
cyan
focusPeakingLevel
Type: Double
Get: true
Set: true
Notifies: true
Edge sensitivity at which focus peaking is detected, with 0.0 disabling focus peaking and 1.0 for maximum sensitivity.
0
framePeriod
Type: Integer
Get: true
Set: true
Notifies: true
The time, in nanoseconds, to record a single frame.
999893
frameRate
Type: Double
Get: true
Set: true
Notifies: false
The estimated estimated recording rate in frames per second (reciprocal of framePeriod
).
1000.11
ioDelayTime
Type: Double
Get: true
Set: true
Notifies: true
Delay time, in seconds, for the programmable delay block
0
ioDetailedStatus
Type: Dictionary
Get: true
Set: false
Notifies: false
Detailed status of the IO block.
Values | Type | Description |
detailedComb | dict | Dictionary of booleans showing the internal state of the combinatorial logic block. |
edgeTimers | dict | Dictionary containing the time in clock cycles since the last rising and falling edges were measured for each output signal. |
output | dict | Dictionary of booleans showing the state of all the output signals from the IO block. |
sources | dict | The contents of the |
{
"outputs": {
"gate": false,
"delay": true,
"start": false,
"comb": true,
"toggle": false,
"shutter": false,
"stop": false,
"io1": false,
"io2": false
},
"detailedComb": {
"or1": true,
"or2": true,
"xor": false,
"and": true,
"or3": false
},
"edgeTimers": {
"stop": {
"rising": 42.9497,
"falling": 42.9497
},
"interrupt": {
"rising": 42.9497,
"falling": 42.9497
},
"io2": {
"rising": 42.9497,
"falling": 42.9497
},
"io1": {
"rising": 42.9497,
"falling": 42.9497
},
"toggle": {
"rising": 42.9497,
"falling": 42.9497
},
"start": {
"rising": 42.9497,
"falling": 42.9497
},
"shutter": {
"rising": 42.9497,
"falling": 42.9497
}
},
"sources": {
"io3": false,
"nextSeg": false,
"delay": true,
"timingIo": true,
"dispFrame": false,
"alwaysHigh": true,
"comb": true,
"none": false,
"toggle": false,
"shutter": true,
"endRec": false,
"recording": false,
"software": false,
"startRec": false,
"io1": false,
"io2": false
}
}
ioMapping
Type: Dictionary
Get: true
Set: true
Notifies: false
Legacy interface to the IO block.
{
"combAnd": {
"source": "alwaysHigh",
"debounce": false,
"invert": false
},
"toggleSet": {
"source": "none",
"debounce": false,
"invert": false
},
"delay": {
"source": "comb",
"delayTime": 0,
"debounce": false,
"invert": false
},
"gate": {
"source": "none",
"debounce": false,
"invert": false
},
"combOr3": {
"source": "io3",
"debounce": true,
"invert": false
},
"start": {
"source": "none",
"debounce": false,
"invert": false
},
"toggleFlip": {
"source": "none",
"debounce": false,
"invert": false
},
"shutter": {
"shutterTriggersFrame": false,
"source": "none",
"debounce": false,
"invert": false
},
"combXOr": {
"source": "none",
"debounce": false,
"invert": false
},
"combOr2": {
"source": "io2",
"debounce": true,
"invert": true
},
"toggleClear": {
"source": "none",
"debounce": false,
"invert": false
},
"combOr1": {
"source": "io1",
"debounce": true,
"invert": true
},
"trigger": {
"source": "none",
"debounce": false,
"invert": false
},
"stop": {
"source": "none",
"debounce": false,
"invert": false
},
"io1In": {
"threshold": 2.50271
},
"io2In": {
"threshold": 2.50271
},
"io1": {
"source": "none",
"driveStrength": 0,
"debounce": false,
"invert": false
},
"io2": {
"source": "none",
"driveStrength": 0,
"debounce": false,
"invert": false
}
}
ioMappingCombAnd
Type: Dictionary
Get: true
Set: true
Notifies: true
Combinatorial block AND input configuration
{
"source": "alwaysHigh",
"debounce": false,
"invert": false
}
ioMappingCombOr1
Type: Dictionary
Get: true
Set: true
Notifies: true
Combinatorial block OR input 1 configuration
{
"source": "io1",
"debounce": true,
"invert": true
}
ioMappingCombOr2
Type: Dictionary
Get: true
Set: true
Notifies: true
Combinatorial block OR input 2 configuration
{
"source": "io2",
"debounce": true,
"invert": true
}
ioMappingCombOr3
Type: Dictionary
Get: true
Set: true
Notifies: true
Combinatorial block OR input 3 configuration
{
"source": "io3",
"debounce": true,
"invert": false
}
ioMappingCombXor
Type: Dictionary
Get: true
Set: true
Notifies: true
Combinatorial block XOR input configuration
{
"source": "none",
"debounce": false,
"invert": false
}
ioMappingDelay
Type: Dictionary
Get: true
Set: true
Notifies: true
Programmable delay block input configuration
{
"source": "comb",
"debounce": false,
"invert": false
}
ioMappingGate
Type: Dictionary
Get: true
Set: true
Notifies: true
Gate input signal configuration
{
"source": "none",
"debounce": false,
"invert": false
}
ioMappingIo1
Type: Dictionary
Get: true
Set: true
Notifies: true
Ouput driver 1 configuration
{
"source": "none",
"drive": 0,
"debounce": false,
"invert": false
}
ioMappingIo2
Type: Dictionary
Get: true
Set: true
Notifies: true
Output driver 2 configuration
{
"source": "none",
"drive": 0,
"debounce": false,
"invert": false
}
ioMappingShutter
Type: Dictionary
Get: true
Set: true
Notifies: true
Timing block shutter control signal configuration
{
"source": "none",
"debounce": false,
"invert": false
}
ioMappingStartRec
Type: Dictionary
Get: true
Set: true
Notifies: true
Recording start signal configuration
{
"source": "none",
"debounce": false,
"invert": false
}
ioMappingStopRec
Type: Dictionary
Get: true
Set: true
Notifies: true
Recording stop signal configuration
{
"source": "none",
"debounce": false,
"invert": false
}
ioMappingToggleClear
Type: Dictionary
Get: true
Set: true
Notifies: true
Toggle/flip-flop block CLEAR input configuration
{
"source": "none",
"debounce": false,
"invert": false
}
ioMappingToggleFlip
Type: Dictionary
Get: true
Set: true
Notifies: true
Toggle/flip-flop block FLIP input configuration
{
"source": "none",
"debounce": false,
"invert": false
}
ioMappingToggleSet
Type: Dictionary
Get: true
Set: true
Notifies: true
Toggle/flip-flop block SET input configuration
{
"source": "none",
"debounce": false,
"invert": false
}
ioMappingTrigger
Type: Dictionary
Get: true
Set: true
Notifies: true
Recording trigger signal configuration
{
"source": "none",
"debounce": false,
"invert": false
}
ioOutputStatus
Type: Dictionary
Get: true
Set: false
Notifies: false
The output signals from the IO block and their current values.
{
"gate": false,
"delay": true,
"start": false,
"comb": true,
"toggle": false,
"shutter": false,
"stop": false,
"io1": false,
"io2": false
}
ioSourceStatus
Type: Dictionary
Get: true
Set: false
Notifies: false
The available IO signals and their current values.
{
"io3": false,
"nextSeg": false,
"delay": true,
"timingIo": true,
"dispFrame": false,
"alwaysHigh": true,
"comb": true,
"none": false,
"toggle": false,
"shutter": true,
"endRec": false,
"recording": false,
"software": false,
"startRec": false,
"io1": false,
"io2": false
}
ioStatusSourceIo1
Type: Boolean
Get: true
Set: false
Notifies: false
The current logic level seen on the IO input 1 (BNC jack).
false
ioStatusSourceIo2
Type: Boolean
Get: true
Set: false
Notifies: false
The current logic level seen on IO input 2 (green IO connector).
false
ioStatusSourceIo3
Type: Boolean
Get: true
Set: false
Notifies: false
The current logic level seen on IO input 3 (opto-isolated input).
false
ioThresholdIo1
Type: Double
Get: true
Set: true
Notifies: true
Voltage threshold at which trigger input signal 1 should go high.
2.50271
ioThresholdIo2
Type: Double
Get: true
Set: true
Notifies: true
Voltage threshold at which trigger input signal 2 should go high.
2.50271
lastShutdownReason
Type: String
Get: true
Set: false
Notifies: false
The reason for the last shutdown that happened.
97: PwrBtn, Software, PMIC Ack
minFramePeriod
Type: Integer
Get: true
Set: false
Notifies: true
The minimum frame period, in nanoseconds, at the current resolution settings.
999893
miscScratchPad
Type: Dictionary
Get: true
Set: true
Notifies: true
A dictionary of arbitrary values that can be stored in the camera.
{
"empty": true
}
networkHostname
Type: String
Get: true
Set: true
Notifies: false
Hostname to be used for dhcp requests and to be displayed on the command line.
chronos
overlayEnable
Type: Boolean
Get: true
Set: true
Notifies: true
Enabled the overlay text box when in playback mode
false
overlayFormat
Type: String
Get: true
Set: true
Notifies: true
Format string for the overlay text box
%.6h/%.6z Sg=%g/%i T=%.8Ss
overlayPosition
Type: String
Get: true
Set: true
Notifies: true
Location in the video stream to position the overlay textbox. This can take the values "top", "bottom" or a position of the form HPOSxVPOS.
bottom
playbackLength
Type: Integer
Get: true
Set: true
Notifies: true
The number of frames which should be replayed when in playback mode.
11032
playbackPosition
Type: Integer
Get: true
Set: true
Notifies: false
The current frame being display when the camera is in playback mode.
0
playbackRate
Type: Integer
Get: true
Set: true
Notifies: true
The rate at which video is being replayed when in playback mode.
0
playbackStart
Type: Integer
Get: true
Set: true
Notifies: true
The starting frame from which video should be replayed when in playback mode.
0
pmicFirmwareVersion
Type: String
Get: true
Set: false
Notifies: false
The Power Management IC's firmware version.
11
powerOffWhenMainsLost
Type: Boolean
Get: true
Set: true
Notifies: true
True if the camera should power itself down when disconnected from mains power.
false
powerOnWhenMainsConnected
Type: Boolean
Get: true
Set: true
Notifies: true
True if the camera should power itself on when plugged into mains power.
false
recMaxFrames
Type: Integer
Get: true
Set: true
Notifies: true
Limit on the maximum number of frames for the recording sequencer to use.
11038
recMode
Type: String
Get: true
Set: true
Notifies: true
Mode in which the recording sequencer stores frames into video memory.
normal: Frames are saved continuously into a ring buffer of up to
recMaxFrames
in length until the recording is terminated by the recording end trigger.burst: Each rising edge of the recording trigger starts a new segment in video memory, with frames being saved for as long as the recording trigger is active.
segmented: Up to
recMaxFrames
of video memory is divided intorecSegments
number of of ring buffers. The camera saves video into one ring buffer at a time, switching to the next ring buffer at each recording trigger.
normal
recPreBurst
Type: Integer
Get: true
Set: true
Notifies: true
The number of frames leading up to the trigger rising edge to save when in 'burst' recording mode.
1
recSegments
Type: Integer
Get: true
Set: true
Notifies: true
The number of segments used by the recording sequencer when in 'segmented' recording mode.
5
recTrigDelay
Type: Integer
Get: true
Set: true
Notifies: true
The number of frames to delay the trigger rising edge by in 'normal' and 'segmented' recording modes.
0
resolution
Type: Dictionary
Get: true
Set: true
Notifies: true
Resolution geometry at which the image sensor should capture frames.
Values | Type | Description |
hOffset | int, optional | Horizontal offset, in pixels, from the top left of the full frame at which the first pixel will be read out. |
hRes | int | Horizontal resolution of the catpured image, in pixels. |
minFrameTime | float, optional | The minimum frame time, in seconds, that the image sensor is capable of recording frames when at this resolution configuration. |
vDark | int, optional | The number of vertical dark rows to read out. |
vOffset | int, optional | Vertical offset, in pixels, from the top left of the full frame at which the first pixel will be read out. |
vRes | int | Vertical resolution of the captured image, in pixels. |
{
"minFrameTime": 0.000999893,
"vOffset": 0,
"hRes": 1920,
"hOffset": 0,
"vRes": 1080,
"bitDepth": 12,
"vDarkRows": 0
}
sensorBitDepth
Type: Integer
Get: true
Set: false
Notifies: false
Number of bits per pixel sampled by the image sensor.
12
sensorColorPattern
Type: String
Get: true
Set: false
Notifies: false
String describing the color filter array pattern of the image sensor.
GRBG
sensorHIncrement
Type: Integer
Get: true
Set: false
Notifies: false
Minimum step size allowed, in pixels, for changes in the horizontal resolution of the image sensor.
32
sensorHMax
Type: Integer
Get: true
Set: false
Notifies: false
Maximum horizontal resolution, in pixels, of the active area of the image sensor.
1920
sensorHMin
Type: Integer
Get: true
Set: false
Notifies: false
Minimum horizontal resolution, in pixels, of the active area of the image sensor.
640
sensorIso
Type: Integer
Get: true
Set: false
Notifies: false
ISO number of the image sensor with nominal (0dB) gain applied.
580
sensorMaxGain
Type: Integer
Get: true
Set: false
Notifies: false
Maximum gain of the image sensor as a linear multiplier of the sensorISO
.
16
sensorName
Type: String
Get: true
Set: false
Notifies: false
Descriptive name of the image sensor.
LUX2100
sensorPixelRate
Type: Double
Get: true
Set: false
Notifies: false
Approximate throughput of the image sensor in pixels per second.
2073920000
sensorTemperature
Type: Double
Get: true
Set: false
Notifies: false
The temperature, in degrees Celsius, measured near the image sensor.
45
sensorVDark
Type: Integer
Get: true
Set: false
Notifies: false
Maximum vertical resolution, in pixels, of the optical black regions of the sensor.
8
sensorVIncrement
Type: Integer
Get: true
Set: false
Notifies: false
Minimum step size allowed, in pixels, for changes in the vertical resolution of the image sensor.
2
sensorVMax
Type: Integer
Get: true
Set: false
Notifies: false
Maximum vertical resolution, in pixels, of the active area of the image sensor.
1080
sensorVMin
Type: Integer
Get: true
Set: false
Notifies: false
Minimum vertical resolution, in pixels, of the active area of the image sensor.
96
shippingMode
Type: Boolean
Get: true
Set: true
Notifies: true
True when the camera is configured for shipping mode
false
shutterAngle
Type: Double
Get: true
Set: true
Notifies: false
The angle in degrees for which frames are being exposed relative to the frame time.
180.365
state
Type: String
Get: true
Set: false
Notifies: true
The current operating state of the camera.
analogCal: The camera is currently performing analog calibration of the image sensor.
blackCal: The camera is currently calibrating using a dark reference image.
idle: The camera is powered up and operating, but not doing anything.
recording: The camera is running a recording program to save images into video memory.
reset: The camera is in the process of resetting the FPGA and image sensor.
idle
systemTemperature
Type: Double
Get: true
Set: false
Notifies: false
The temperature, in degrees Celsius, measured near the main processor.
47.3
totalFrames
Type: Integer
Get: true
Set: false
Notifies: false
Total number of frames of recorded video that are have been saved into memory.
11032
totalSegments
Type: Integer
Get: true
Set: false
Notifies: false
Total number of video segments that have been saved into memory.
0
videoConfig
Type: Dictionary
Get: true
Set: false
Notifies: false
Dictionary of parameters saved persistently by the video system.
{
"overlayFormat": "",
"overlayEnable": false,
"overlayPosition": "bottom",
"focusPeakingLevel": 0,
"zebraLevel": 0,
"focusPeakingColor": "cyan"
}
videoSegments
Type: Dictionary
Get: true
Set: false
Notifies: false
Array of video segments, describing the size and metadata of that has been recorded.
[]
videoState
Type: String
Get: true
Set: false
Notifies: true
Current state of the video system.
live
filesave
play
paused
live
videoZoom
Type: Double
Get: true
Set: true
Notifies: true
Video scaling ratio to apply to the video stream (1.0 = fit to screen)
1
wbColor
Type: Array of Doubles
Get: true
Set: true
Notifies: true
The Red, Green and Blue gain coefficients to achieve white balance.
[
1.33569,
1,
1.41699
]
wbCustomColor
Type: Array of Doubles
Get: true
Set: true
Notifies: true
The Red, Green and Blue gain coefficients last computed by startWhiteBalance()
.
[
1.33571,
1,
1.41714
]
wbTemperature
Type: Integer
Get: true
Set: true
Notifies: true
Color temperature, in degrees Kelvin, to use for white balance.
0
zebraLevel
Type: Double
Get: true
Set: true
Notifies: true
Pixel threshold at which zebra striping is enabled. Values close to 0.0 only trigger zebra stripes near saturation, and values near 1.0 would enable zebra stripes even when the image is black.
0