@camera.ui/sdk / plugin / ServicePlugin
Abstract Class: ServicePlugin<T> ​
Defined in: plugin/interfaces.ts:249
Base class for a plugin with the role PluginRole.Service: it serves camera.ui itself and never touches cameras, so the camera lifecycle hooks are already implemented as no-ops.
Example ​
export default class MyModels extends ServicePlugin implements AssistantModelProvider {
assistantModels(): AssistantModelSpec[] {
return [{ id: 'local', name: 'Local model', contextTokens: 8192, vision: false, toolCalling: false, structuredOutput: true }];
}
}Extends ​
BasePlugin<T>
Type Parameters ​
T ​
T extends Record<string, any> = Record<string, any>
Constructors ​
Constructor ​
new ServicePlugin<
T>(logger,api,storage):ServicePlugin<T>
Defined in: plugin/interfaces.ts:167
Parameters ​
logger ​
api ​
storage ​
Returns ​
ServicePlugin<T>
Inherited from ​
Properties ​
api ​
api:
PluginAPI
Defined in: plugin/interfaces.ts:169
Inherited from ​
logger ​
logger:
LoggerService
Defined in: plugin/interfaces.ts:168
Inherited from ​
storage ​
storage:
DeviceStorage<T>
Defined in: plugin/interfaces.ts:170
Inherited from ​
Accessors ​
storageSchema ​
Get Signature ​
get storageSchema():
JsonSchema[]
Defined in: plugin/interfaces.ts:174
Override to register a JSON schema for the plugin-level settings form rendered in the UI. Default: no schema.
Returns ​
Inherited from ​
Methods ​
configureCameras() ​
configureCameras():
Promise<void>
Defined in: plugin/interfaces.ts:250
Called once on startup with every camera that is already assigned to this plugin. Attach handlers, open vendor sessions, warm up models here. A rejection aborts plugin startup.
Returns ​
Promise<void>
Overrides ​
configureSensors()? ​
optionalconfigureSensors(sensors):Promise<void>
Defined in: plugin/interfaces.ts:215
Called once on startup with every sensor this plugin may consume: sensors whose type is listed in contract.consumes and that are exposed. Each sensor carries type, assignedCameraIds, assignmentLocked and connected, so consumers decide rendering purely from that data. Optional, only bridge plugins implement it.
Parameters ​
sensors ​
Consumable sensors known at startup.
Returns ​
Promise<void>
Inherited from ​
onCameraAdded() ​
onCameraAdded():
Promise<void>
Defined in: plugin/interfaces.ts:252
Called whenever a camera is assigned to this plugin at runtime, after a discovery adoption (DiscoveryProvider.onAdoptCamera) or after the user re-assigns an existing camera. Set up the same per-camera state as in configureCameras().
Returns ​
Promise<void>
Overrides ​
onCameraReleased() ​
onCameraReleased():
Promise<void>
Defined in: plugin/interfaces.ts:254
Called when a camera is unassigned from this plugin or deleted from the system. Release per-camera resources (sessions, timers, decoders) before resolving.
Returns ​
Promise<void>
Overrides ​
onSensorAdded()? ​
optionalonSensorAdded(sensor):Promise<void>
Defined in: plugin/interfaces.ts:223
Called when a sensor enters this plugin's consumable view at runtime: it was created, became exposed, or its type became consumable.
Parameters ​
sensor ​
The sensor that appeared.
Returns ​
Promise<void>
Inherited from ​
onSensorReleased()? ​
optionalonSensorReleased(sensorId):Promise<void>
Defined in: plugin/interfaces.ts:232
Called when a sensor permanently leaves the consumable view: it was deleted or unexposed. Plugin connectivity does NOT fire this, watch sensor.onConnectedChanged for that.
Parameters ​
sensorId ​
string
Persistent id of the sensor that left.
Returns ​
Promise<void>