@@ -9408,6 +9408,121 @@ provisional cluster ContentAppObserver = 1296 {
9408
9408
command ContentAppMessage(ContentAppMessageRequest): ContentAppMessageResponse = 0;
9409
9409
}
9410
9410
9411
+ /** The WebRTC transport provider cluster provides a way for stream providers (e.g. Cameras) to stream or receive their data through WebRTC. */
9412
+ provisional cluster WebRTCTransportProvider = 1363 {
9413
+ revision 1;
9414
+
9415
+ enum StreamTypeEnum : enum8 {
9416
+ kInternal = 0;
9417
+ kRecording = 1;
9418
+ kAnalysis = 2;
9419
+ kLiveView = 3;
9420
+ }
9421
+
9422
+ enum WebRTCEndReasonEnum : enum8 {
9423
+ kIceFailed = 0;
9424
+ kIceTimeout = 1;
9425
+ kUserHangup = 2;
9426
+ kUserBusy = 3;
9427
+ kReplaced = 4;
9428
+ kNoUserMedia = 5;
9429
+ kInviteTimeout = 6;
9430
+ kAnsweredElsewhere = 7;
9431
+ kOutOfResources = 8;
9432
+ kMediaTimeout = 9;
9433
+ kLowPower = 10;
9434
+ kUnknownReason = 11;
9435
+ }
9436
+
9437
+ bitmap WebRTCMetadataOptions : bitmap8 {
9438
+ kDataTLV = 0x1;
9439
+ }
9440
+
9441
+ struct ICEServerStruct {
9442
+ char_string urls[] = 1;
9443
+ optional char_string username = 2;
9444
+ optional char_string credential = 3;
9445
+ optional int16u caid = 4;
9446
+ }
9447
+
9448
+ struct WebRTCSessionStruct {
9449
+ int16u id = 1;
9450
+ node_id peerNodeID = 2;
9451
+ fabric_idx peerFabricIndex = 3;
9452
+ StreamTypeEnum streamType = 4;
9453
+ nullable int16u videoStreamID = 5;
9454
+ nullable int16u audioStreamID = 6;
9455
+ WebRTCMetadataOptions metadataOptions = 7;
9456
+ }
9457
+
9458
+ readonly attribute WebRTCSessionStruct currentSessions[] = 0;
9459
+ readonly attribute command_id generatedCommandList[] = 65528;
9460
+ readonly attribute command_id acceptedCommandList[] = 65529;
9461
+ readonly attribute event_id eventList[] = 65530;
9462
+ readonly attribute attrib_id attributeList[] = 65531;
9463
+ readonly attribute bitmap32 featureMap = 65532;
9464
+ readonly attribute int16u clusterRevision = 65533;
9465
+
9466
+ request struct SolicitOfferRequest {
9467
+ StreamTypeEnum streamType = 0;
9468
+ optional nullable int16u videoStreamID = 1;
9469
+ optional nullable int16u audioStreamID = 2;
9470
+ optional ICEServerStruct ICEServers[] = 3;
9471
+ optional char_string ICETransportPolicy = 4;
9472
+ optional WebRTCMetadataOptions metadataOptions = 5;
9473
+ }
9474
+
9475
+ response struct SolicitOfferResponse = 2 {
9476
+ int16u webRTCSessionID = 0;
9477
+ boolean deferredOffer = 1;
9478
+ optional nullable int16u videoStreamID = 2;
9479
+ optional nullable int16u audioStreamID = 3;
9480
+ }
9481
+
9482
+ request struct ProvideOfferRequest {
9483
+ nullable int16u webRTCSessionID = 0;
9484
+ char_string sdp = 1;
9485
+ StreamTypeEnum streamType = 2;
9486
+ optional nullable int16u videoStreamID = 3;
9487
+ optional nullable int16u audioStreamID = 4;
9488
+ optional ICEServerStruct ICEServers[] = 5;
9489
+ optional char_string ICETransportPolicy = 6;
9490
+ optional WebRTCMetadataOptions metadataOptions = 7;
9491
+ }
9492
+
9493
+ response struct ProvideOfferResponse = 4 {
9494
+ int16u webRTCSessionID = 0;
9495
+ int16u videoStreamID = 1;
9496
+ int16u audioStreamID = 2;
9497
+ }
9498
+
9499
+ request struct ProvideAnswerRequest {
9500
+ int16u webRTCSessionID = 0;
9501
+ char_string sdp = 1;
9502
+ }
9503
+
9504
+ request struct ProvideICECandidateRequest {
9505
+ int16u webRTCSessionID = 0;
9506
+ char_string ICECandidate = 1;
9507
+ }
9508
+
9509
+ request struct EndSessionRequest {
9510
+ int16u webRTCSessionID = 0;
9511
+ WebRTCEndReasonEnum reason = 1;
9512
+ }
9513
+
9514
+ /** Requests that the Provider initiates a new session with the Offer / Answer flow in a way that allows for options to be passed and work with devices needing the standby flow. */
9515
+ command SolicitOffer(SolicitOfferRequest): SolicitOfferResponse = 1;
9516
+ /** This command allows an SDP Offer to be set and start a new session. */
9517
+ command ProvideOffer(ProvideOfferRequest): ProvideOfferResponse = 3;
9518
+ /** This command SHALL be initiated from a Node in response to an Offer that was previously received from a remote peer. */
9519
+ command ProvideAnswer(ProvideAnswerRequest): DefaultSuccess = 5;
9520
+ /** This command allows for https://www.rfc-editor.org/rfc/rfc8839#section-4.2.1.2 nominated after the initial Offer / Answer exchange to be added to a session during the gathering phase. */
9521
+ command ProvideICECandidate(ProvideICECandidateRequest): DefaultSuccess = 6;
9522
+ /** This command instructs the stream provider to end the WebRTC session. */
9523
+ command EndSession(EndSessionRequest): DefaultSuccess = 7;
9524
+ }
9525
+
9411
9526
/** This cluster provides facilities to configure and play Chime sounds, such as those used in a doorbell. */
9412
9527
provisional cluster Chime = 1366 {
9413
9528
revision 1;
0 commit comments