Skip to content

Commit cabfe70

Browse files
committed
Merge remote-tracking branch 'origin/camera-webrtc-provider' into camera-webrtc-provider
# Conflicts: # src/app/zap-templates/zcl/data-model/chip/web-rtc-provider-cluster.xml
2 parents 87af5e1 + 68c8dde commit cabfe70

File tree

52 files changed

+8977
-3
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+8977
-3
lines changed

docs/zap_clusters.md

+1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ Generally regenerate using one of:
129129
| 1294 | 0x50E | AccountLogin |
130130
| 1295 | 0x50F | ContentControl |
131131
| 1296 | 0x510 | ContentAppObserver |
132+
| 1363 | 0x553 | WebRTCTransportProvider |
132133
| 1366 | 0x556 | Chime |
133134
| 1872 | 0x750 | EcosystemInformation |
134135
| 1873 | 0x751 | CommissionerControl |

src/app/zap-templates/zcl/data-model/chip/web-rtc-provider-cluster.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,12 @@ Git: 0.9-fall2024-231-gf50161121
7676
<item fieldId="7" name="MetadataOptions" type="WebRTCMetadataOptions" default="0x00" min="0x00" max="0x01"/>
7777
</struct>
7878

79-
<cluster>
79+
<cluster apiMaturity="provisional">
8080
<domain name="General"/>
8181
<name>WebRTC Transport Provider</name>
8282
<code>0x0553</code>
8383
<define>WEB_RTC_TRANSPORT_PROVIDER_CLUSTER</define>
84-
<description>The following process SHALL be followed when the server receives this command:</description>
84+
<description>The WebRTC transport provider cluster provides a way for stream providers (e.g. Cameras) to stream or receive their data through WebRTC.</description>
8585
<client init="false" tick="false">true</client>
8686
<server init="false" tick="false">true</server>
8787
<globalAttribute code="0xFFFD" side="either" value="1"/>
@@ -138,7 +138,7 @@ Git: 0.9-fall2024-231-gf50161121
138138
<command code="0x07" source="client" name="EndSession" optional="false">
139139
<description>This command instructs the stream provider to end the WebRTC session.</description>
140140
<arg id="1" name="WebRTCSessionID" type="int16u"/>
141-
<arg id="2" name="Reason" type="WebRTCEndReasonEnum" default="0x0B" min="0x00" max="0x0B"/>
141+
<arg id="2" name="Reason" type="WebRTCEndReasonEnum" min="0x00" max="0x0B" default="0x0B"/>
142142
</command>
143143

144144
</cluster>

src/controller/data_model/controller-clusters.matter

+115
Original file line numberDiff line numberDiff line change
@@ -9415,6 +9415,121 @@ provisional cluster ContentAppObserver = 1296 {
94159415
command ContentAppMessage(ContentAppMessageRequest): ContentAppMessageResponse = 0;
94169416
}
94179417

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

0 commit comments

Comments
 (0)