Skip to content

Commit 48689f4

Browse files
committed
Add CameraAvStreamMgmt cluster partially inside all-clusters-app.zap config
Make the snapshot attributes and commands of the CameraStreamMgmt cluster be part of the all-clusters-app(in a minimalistic way) to exercise the cluster.
1 parent a34fa7f commit 48689f4

File tree

2 files changed

+567
-0
lines changed

2 files changed

+567
-0
lines changed

examples/all-clusters-app/all-clusters-common/all-clusters-app.matter

+330
Original file line numberDiff line numberDiff line change
@@ -6991,6 +6991,315 @@ cluster LowPower = 1288 {
69916991
command Sleep(): DefaultSuccess = 0;
69926992
}
69936993

6994+
/** The Camera AV Stream Management cluster is used to allow clients to manage, control, and configure various audio, video, and snapshot streams on a camera. */
6995+
provisional cluster CameraAvStreamManagement = 1361 {
6996+
revision 1;
6997+
6998+
enum AudioCodecEnum : enum8 {
6999+
kOPUS = 0;
7000+
kAACLC = 1;
7001+
}
7002+
7003+
enum ImageCodecEnum : enum8 {
7004+
kJPEG = 0;
7005+
}
7006+
7007+
enum StreamUsageEnum : enum8 {
7008+
kInternal = 0;
7009+
kRecording = 1;
7010+
kAnalysis = 2;
7011+
kLiveView = 3;
7012+
}
7013+
7014+
enum TriStateAutoEnum : enum8 {
7015+
kOff = 0;
7016+
kOn = 1;
7017+
kAuto = 2;
7018+
}
7019+
7020+
enum TwoWayTalkSupportTypeEnum : enum8 {
7021+
kNotSupported = 0;
7022+
kHalfDuplex = 1;
7023+
kFullDuplex = 2;
7024+
}
7025+
7026+
enum VideoCodecEnum : enum8 {
7027+
kH264 = 0;
7028+
kHEVC = 1;
7029+
kVVC = 2;
7030+
kAV1 = 3;
7031+
}
7032+
7033+
bitmap Feature : bitmap32 {
7034+
kAudio = 0x1;
7035+
kVideo = 0x2;
7036+
kSnapshot = 0x4;
7037+
kPrivacy = 0x8;
7038+
kSpeaker = 0x10;
7039+
kImageControl = 0x20;
7040+
kWatermark = 0x40;
7041+
kOnScreenDisplay = 0x80;
7042+
kLocalStorage = 0x100;
7043+
}
7044+
7045+
struct VideoResolutionStruct {
7046+
int16u width = 0;
7047+
int16u height = 1;
7048+
}
7049+
7050+
struct VideoStreamStruct {
7051+
int16u videoStreamID = 0;
7052+
StreamUsageEnum streamUsage = 1;
7053+
VideoCodecEnum videoCodec = 2;
7054+
int16u minFrameRate = 3;
7055+
int16u maxFrameRate = 4;
7056+
VideoResolutionStruct minResolution = 5;
7057+
VideoResolutionStruct maxResolution = 6;
7058+
int32u minBitRate = 7;
7059+
int32u maxBitRate = 8;
7060+
int16u minFragmentLen = 9;
7061+
int16u maxFragmentLen = 10;
7062+
optional boolean watermarkEnabled = 11;
7063+
optional boolean OSDEnabled = 12;
7064+
int8u referenceCount = 13;
7065+
}
7066+
7067+
struct SnapshotStreamStruct {
7068+
int16u snapshotStreamID = 0;
7069+
ImageCodecEnum imageCodec = 1;
7070+
int16u frameRate = 2;
7071+
int32u bitRate = 3;
7072+
VideoResolutionStruct minResolution = 4;
7073+
VideoResolutionStruct maxResolution = 5;
7074+
int8u quality = 6;
7075+
int8u referenceCount = 7;
7076+
}
7077+
7078+
struct SnapshotParamsStruct {
7079+
VideoResolutionStruct resolution = 0;
7080+
int16u maxFrameRate = 1;
7081+
ImageCodecEnum imageCodec = 2;
7082+
}
7083+
7084+
struct RateDistortionTradeOffPointsStruct {
7085+
VideoCodecEnum codec = 0;
7086+
VideoResolutionStruct resolution = 1;
7087+
int32u minBitRate = 2;
7088+
}
7089+
7090+
struct AudioCapabilitiesStruct {
7091+
int8u maxNumberOfChannels = 0;
7092+
AudioCodecEnum supportedCodecs[] = 1;
7093+
int32u supportedSampleRates[] = 2;
7094+
int8u supportedBitDepths[] = 3;
7095+
}
7096+
7097+
struct AudioStreamStruct {
7098+
int16u audioStreamID = 0;
7099+
StreamUsageEnum streamUsage = 1;
7100+
AudioCodecEnum audioCodec = 2;
7101+
int8u channelCount = 3;
7102+
int32u sampleRate = 4;
7103+
int32u bitRate = 5;
7104+
int8u bitDepth = 6;
7105+
int8u referenceCount = 7;
7106+
}
7107+
7108+
struct VideoSensorParamsStruct {
7109+
int16u sensorWidth = 0;
7110+
int16u sensorHeight = 1;
7111+
boolean HDRCapable = 2;
7112+
int16u maxFPS = 3;
7113+
int16u maxHDRFPS = 4;
7114+
}
7115+
7116+
struct ViewportStruct {
7117+
int16u x1 = 0;
7118+
int16u y1 = 1;
7119+
int16u x2 = 2;
7120+
int16u y2 = 3;
7121+
}
7122+
7123+
info event VideoStreamChanged = 0 {
7124+
int16u videoStreamID = 0;
7125+
optional StreamUsageEnum streamUsage = 1;
7126+
optional VideoCodecEnum videoCodec = 2;
7127+
optional int16u minFrameRate = 3;
7128+
optional int16u maxFrameRate = 4;
7129+
optional VideoResolutionStruct minResolution = 5;
7130+
optional VideoResolutionStruct maxResolution = 6;
7131+
optional int32u minBitRate = 7;
7132+
optional int32u maxBitRate = 8;
7133+
optional int16u minFragmentLen = 9;
7134+
optional int16u maxFragmentLen = 10;
7135+
}
7136+
7137+
info event AudioStreamChanged = 1 {
7138+
int16u audioStreamID = 0;
7139+
optional StreamUsageEnum streamUsage = 1;
7140+
optional AudioCodecEnum audioCodec = 2;
7141+
optional int8u channelCount = 3;
7142+
optional int32u sampleRate = 4;
7143+
optional int32u bitRate = 5;
7144+
optional int8u bitDepth = 6;
7145+
}
7146+
7147+
info event SnapshotStreamChanged = 2 {
7148+
int16u snapshotStreamID = 0;
7149+
optional ImageCodecEnum imageCodec = 1;
7150+
optional int16u frameRate = 2;
7151+
optional int32u bitRate = 3;
7152+
optional VideoResolutionStruct minResolution = 4;
7153+
optional VideoResolutionStruct maxResolution = 5;
7154+
optional int8u quality = 6;
7155+
}
7156+
7157+
readonly attribute optional int8u maxConcurrentVideoEncoders = 0;
7158+
readonly attribute optional int32u maxEncodedPixelRate = 1;
7159+
readonly attribute optional VideoSensorParamsStruct videoSensorParams = 2;
7160+
readonly attribute optional boolean nightVisionCapable = 3;
7161+
readonly attribute optional VideoResolutionStruct minViewport = 4;
7162+
readonly attribute optional RateDistortionTradeOffPointsStruct rateDistortionTradeOffPoints[] = 5;
7163+
readonly attribute optional int32u maxContentBufferSize = 6;
7164+
readonly attribute optional AudioCapabilitiesStruct microphoneCapabilities = 7;
7165+
readonly attribute optional AudioCapabilitiesStruct speakerCapabilities = 8;
7166+
readonly attribute optional TwoWayTalkSupportTypeEnum twoWayTalkSupport = 9;
7167+
readonly attribute optional SnapshotParamsStruct supportedSnapshotParams[] = 10;
7168+
readonly attribute int32u maxNetworkBandwidth = 11;
7169+
readonly attribute optional int16u currentFrameRate = 12;
7170+
attribute access(read: manage, write: manage) optional boolean HDRModeEnabled = 13;
7171+
readonly attribute fabric_idx fabricsUsingCamera[] = 14;
7172+
readonly attribute optional VideoStreamStruct allocatedVideoStreams[] = 15;
7173+
readonly attribute optional AudioStreamStruct allocatedAudioStreams[] = 16;
7174+
readonly attribute optional SnapshotStreamStruct allocatedSnapshotStreams[] = 17;
7175+
readonly attribute optional StreamUsageEnum rankedVideoStreamPrioritiesList[] = 18;
7176+
attribute optional boolean softRecordingPrivacyModeEnabled = 19;
7177+
attribute optional boolean softLivestreamPrivacyModeEnabled = 20;
7178+
readonly attribute optional boolean hardPrivacyModeOn = 21;
7179+
attribute access(read: manage, write: manage) optional TriStateAutoEnum nightVision = 22;
7180+
attribute access(read: manage, write: manage) optional TriStateAutoEnum nightVisionIllum = 23;
7181+
attribute access(read: manage, write: manage) optional ViewportStruct viewport = 24;
7182+
attribute access(read: manage, write: manage) optional boolean speakerMuted = 25;
7183+
attribute access(read: manage, write: manage) optional int8u speakerVolumeLevel = 26;
7184+
readonly attribute access(read: manage) optional int8u speakerMaxLevel = 27;
7185+
readonly attribute access(read: manage) optional int8u speakerMinLevel = 28;
7186+
attribute access(read: manage, write: manage) optional boolean microphoneMuted = 29;
7187+
attribute access(read: manage, write: manage) optional int8u microphoneVolumeLevel = 30;
7188+
readonly attribute access(read: manage) optional int8u microphoneMaxLevel = 31;
7189+
readonly attribute access(read: manage) optional int8u microphoneMinLevel = 32;
7190+
attribute access(read: manage, write: manage) optional boolean microphoneAGCEnabled = 33;
7191+
attribute access(read: manage, write: manage) optional int16u imageRotation = 34;
7192+
attribute access(read: manage, write: manage) optional boolean imageFlipHorizontal = 35;
7193+
attribute access(read: manage, write: manage) optional boolean imageFlipVertical = 36;
7194+
attribute access(read: manage, write: manage) optional boolean localVideoRecordingEnabled = 37;
7195+
attribute access(read: manage, write: manage) optional boolean localSnapshotRecordingEnabled = 38;
7196+
attribute access(read: manage, write: manage) optional boolean statusLightEnabled = 39;
7197+
attribute access(read: manage, write: manage) optional ThreeLevelAutoEnum statusLightBrightness = 40;
7198+
readonly attribute command_id generatedCommandList[] = 65528;
7199+
readonly attribute command_id acceptedCommandList[] = 65529;
7200+
readonly attribute event_id eventList[] = 65530;
7201+
readonly attribute attrib_id attributeList[] = 65531;
7202+
readonly attribute bitmap32 featureMap = 65532;
7203+
readonly attribute int16u clusterRevision = 65533;
7204+
7205+
request struct AudioStreamAllocateRequest {
7206+
StreamUsageEnum streamUsage = 0;
7207+
AudioCodecEnum audioCodec = 1;
7208+
int8u channelCount = 2;
7209+
int32u sampleRate = 3;
7210+
int32u bitRate = 4;
7211+
int8u bitDepth = 5;
7212+
}
7213+
7214+
response struct AudioStreamAllocateResponse = 1 {
7215+
int16u audioStreamID = 0;
7216+
}
7217+
7218+
request struct AudioStreamDeallocateRequest {
7219+
int16u audioStreamID = 0;
7220+
}
7221+
7222+
request struct VideoStreamAllocateRequest {
7223+
StreamUsageEnum streamUsage = 0;
7224+
VideoCodecEnum videoCodec = 1;
7225+
int16u minFrameRate = 2;
7226+
int16u maxFrameRate = 3;
7227+
VideoResolutionStruct minResolution = 4;
7228+
VideoResolutionStruct maxResolution = 5;
7229+
int32u minBitRate = 6;
7230+
int32u maxBitRate = 7;
7231+
int16u minFragmentLen = 8;
7232+
int16u maxFragmentLen = 9;
7233+
optional boolean watermarkEnabled = 10;
7234+
optional boolean OSDEnabled = 11;
7235+
}
7236+
7237+
response struct VideoStreamAllocateResponse = 4 {
7238+
int16u videoStreamID = 0;
7239+
}
7240+
7241+
request struct VideoStreamModifyRequest {
7242+
int16u videoStreamID = 0;
7243+
optional boolean watermarkEnabled = 1;
7244+
optional boolean OSDEnabled = 2;
7245+
}
7246+
7247+
request struct VideoStreamDeallocateRequest {
7248+
int16u videoStreamID = 0;
7249+
}
7250+
7251+
request struct SnapshotStreamAllocateRequest {
7252+
ImageCodecEnum imageCodec = 0;
7253+
int16u maxFrameRate = 1;
7254+
int32u bitRate = 2;
7255+
VideoResolutionStruct minResolution = 3;
7256+
VideoResolutionStruct maxResolution = 4;
7257+
int8u quality = 5;
7258+
}
7259+
7260+
response struct SnapshotStreamAllocateResponse = 8 {
7261+
int16u snapshotStreamID = 0;
7262+
}
7263+
7264+
request struct SnapshotStreamDeallocateRequest {
7265+
int16u snapshotStreamID = 0;
7266+
}
7267+
7268+
request struct SetStreamPrioritiesRequest {
7269+
StreamUsageEnum streamPriorities[] = 0;
7270+
}
7271+
7272+
request struct CaptureSnapshotRequest {
7273+
int16u snapshotStreamID = 0;
7274+
VideoResolutionStruct requestedResolution = 1;
7275+
}
7276+
7277+
response struct CaptureSnapshotResponse = 12 {
7278+
octet_string data = 0;
7279+
ImageCodecEnum imageCodec = 1;
7280+
VideoResolutionStruct resolution = 2;
7281+
}
7282+
7283+
/** This command SHALL allocate an audio stream on the camera and return an allocated audio stream identifier. */
7284+
command access(invoke: manage) AudioStreamAllocate(AudioStreamAllocateRequest): AudioStreamAllocateResponse = 0;
7285+
/** This command SHALL deallocate an audio stream on the camera, corresponding to the given audio stream identifier. */
7286+
command access(invoke: manage) AudioStreamDeallocate(AudioStreamDeallocateRequest): DefaultSuccess = 2;
7287+
/** This command SHALL allocate a video stream on the camera and return an allocated video stream identifier. */
7288+
command access(invoke: manage) VideoStreamAllocate(VideoStreamAllocateRequest): VideoStreamAllocateResponse = 3;
7289+
/** This command SHALL be used to modify a stream specified by the VideoStreamID. */
7290+
command access(invoke: manage) VideoStreamModify(VideoStreamModifyRequest): DefaultSuccess = 5;
7291+
/** This command SHALL deallocate a video stream on the camera, corresponding to the given video stream identifier. */
7292+
command access(invoke: manage) VideoStreamDeallocate(VideoStreamDeallocateRequest): DefaultSuccess = 6;
7293+
/** This command SHALL allocate a snapshot stream on the device and return an allocated snapshot stream identifier. */
7294+
command access(invoke: manage) SnapshotStreamAllocate(SnapshotStreamAllocateRequest): SnapshotStreamAllocateResponse = 7;
7295+
/** This command SHALL deallocate an snapshot stream on the camera, corresponding to the given snapshot stream identifier. */
7296+
command access(invoke: manage) SnapshotStreamDeallocate(SnapshotStreamDeallocateRequest): DefaultSuccess = 9;
7297+
/** This command SHALL set the relative priorities of the various stream usages on the camera. */
7298+
command access(invoke: administer) SetStreamPriorities(SetStreamPrioritiesRequest): DefaultSuccess = 10;
7299+
/** This command SHALL return a Snapshot from the camera. */
7300+
command CaptureSnapshot(CaptureSnapshotRequest): CaptureSnapshotResponse = 11;
7301+
}
7302+
69947303
/** The Test Cluster is meant to validate the generated code */
69957304
internal cluster UnitTesting = 4294048773 {
69967305
revision 1; // NOTE: Default/not specifically set
@@ -9509,6 +9818,27 @@ endpoint 2 {
95099818
callback attribute featureMap;
95109819
ram attribute clusterRevision default = 5;
95119820
}
9821+
9822+
server cluster CameraAvStreamManagement {
9823+
callback attribute supportedSnapshotParams;
9824+
callback attribute maxNetworkBandwidth;
9825+
callback attribute fabricsUsingCamera;
9826+
callback attribute allocatedSnapshotStreams;
9827+
callback attribute nightVision;
9828+
callback attribute nightVisionIllum;
9829+
callback attribute generatedCommandList;
9830+
callback attribute acceptedCommandList;
9831+
callback attribute attributeList;
9832+
callback attribute featureMap;
9833+
ram attribute clusterRevision default = 1;
9834+
9835+
handle command SnapshotStreamAllocate;
9836+
handle command SnapshotStreamAllocateResponse;
9837+
handle command SnapshotStreamDeallocate;
9838+
handle command SetStreamPriorities;
9839+
handle command CaptureSnapshot;
9840+
handle command CaptureSnapshotResponse;
9841+
}
95129842
}
95139843
endpoint 3 {
95149844
device type ma_genericswitch = 15, version 3;

0 commit comments

Comments
 (0)