Capability
A capability describes what can be done with a device.
For example, a recorder device of type A may have a capability record. An recorder device of type B may have the capabilities record, looprecord and streamrecord. And a router may have the capability to switch.
Capabilities are provided by the adapter modules that connect VidiControl to specific recorders. In their content field it is then defined, which action should be taken, which input parameters are available and whether they are mandatory or optional. It also includes the events that may be thrown by the recorder adapter module and properties for the capability.
Capabilities and Devices are connected via a DeviceCapability object which also stores the actual values for the capability properties.
Properties
Property | Possible Values | Example | Description |
---|---|---|---|
id | string | 0B | External ID of the capability. |
content | string (JSON) |
JSON
| Defines how a capability is used:
|
capabilityName | string | Name of the capability | |
capabilityType | string (“Record”, “LoopRecord”, “Switch”, “LockSwitch”, “Storage”, “Turn”) | LoopRecord | Type of the capability. Basically which action can be performed with this capability. |
needsStopCommand | bool | true | For some devices special capabilities like “Record” cannot be started with a duration as parameter. Instead the recording has to be started and stopped. If this is the case, needsStopCommand is true. |
capabilityGroup | string | RecorderEvsNeoGroup | Offers the possibility to group capabilities of the same name that differ for different devices. For example there could be a “RecorderA” Group with a Record capability and a LoopRecord capability and a “RecorderB” Group with a different Record capability. This is used for displaying capabilities in the ConfigUI. |
defaultConfig | string (JSON) |
JSON
| A default config that a recorder can use during AutoSetup to set values on its DeviceCapability |
Example JSON Snippet
{
"id": "0B",
"capabilityName": "RecorderA Recording-Capability",
"content": "{\"action\":\"Record\",\"input\":{\"targetPath\":{\"type\":\"string\",\"optional\":\"true\"},\"profileName\":{\"type\":\"string\",\"optional\":\"true\"}},\"output\":{\"pathToFile\":{\"type\":\"string\"}},\"properties\":{\"preroll\":{\"type\":\"integer\",\"kind\":\"fix\"}}, \"events\": [ \"RecorderMock.fileCreated\", \"RecorderMock.recordingFailed\", \"RecorderMock.recordingStarted\", \"RecorderMock.recordingFinished\" ]}",
"capabilityType": "Record",
"capabilityGroup": "RecorderAGroup",
"defaultConfig": "{\"preroll\":3}"
"needsStopCommand": true
}