Skip to content

Commit 30342c9

Browse files
yufengwangcaratgr
authored andcommitted
Align XML definition for WebRTC Provider Cluster with spec (project-chip#37648)
* Align xml defination for WebRTC provider cluster with spec * Generate XML file from alchemy
1 parent 2939246 commit 30342c9

File tree

27 files changed

+300
-184
lines changed

27 files changed

+300
-184
lines changed

scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/gen_config.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142
#define MATTER_DM_ZONE_MANAGEMENT_CLUSTER_SERVER_ENDPOINT_COUNT (0)
143143
#define MATTER_DM_CAMERA_AV_STREAM_MANAGEMENT_CLUSTER_SERVER_ENDPOINT_COUNT (0)
144144
#define MATTER_DM_CAMERA_AV_SETTINGS_USER_LEVEL_MANAGEMENT_CLUSTER_SERVER_ENDPOINT_COUNT (0)
145-
#define MATTER_DM_WEBRTC_TRANSPORT_PROVIDER_CLUSTER_SERVER_ENDPOINT_COUNT (0)
145+
#define MATTER_DM_WEB_RTC_TRANSPORT_PROVIDER_CLUSTER_SERVER_ENDPOINT_COUNT (0)
146146
#define MATTER_DM_WEB_RTC_TRANSPORT_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (0)
147147
#define MATTER_DM_PUSH_AV_STREAM_TRANSPORT_CLUSTER_SERVER_ENDPOINT_COUNT (0)
148148
#define MATTER_DM_CHIME_CLUSTER_SERVER_ENDPOINT_COUNT (0)
@@ -274,7 +274,7 @@
274274
#define MATTER_DM_ZONE_MANAGEMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
275275
#define MATTER_DM_CAMERA_AV_STREAM_MANAGEMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
276276
#define MATTER_DM_CAMERA_AV_SETTINGS_USER_LEVEL_MANAGEMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
277-
#define MATTER_DM_WEBRTC_TRANSPORT_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
277+
#define MATTER_DM_WEB_RTC_TRANSPORT_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
278278
#define MATTER_DM_WEB_RTC_TRANSPORT_REQUESTOR_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
279279
#define MATTER_DM_PUSH_AV_STREAM_TRANSPORT_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
280280
#define MATTER_DM_CHIME_CLUSTER_CLIENT_ENDPOINT_COUNT (0)

scripts/tools/zap/tests/outputs/lighting-app/app-templates/gen_config.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142
#define MATTER_DM_ZONE_MANAGEMENT_CLUSTER_SERVER_ENDPOINT_COUNT (0)
143143
#define MATTER_DM_CAMERA_AV_STREAM_MANAGEMENT_CLUSTER_SERVER_ENDPOINT_COUNT (0)
144144
#define MATTER_DM_CAMERA_AV_SETTINGS_USER_LEVEL_MANAGEMENT_CLUSTER_SERVER_ENDPOINT_COUNT (0)
145-
#define MATTER_DM_WEBRTC_TRANSPORT_PROVIDER_CLUSTER_SERVER_ENDPOINT_COUNT (0)
145+
#define MATTER_DM_WEB_RTC_TRANSPORT_PROVIDER_CLUSTER_SERVER_ENDPOINT_COUNT (0)
146146
#define MATTER_DM_WEB_RTC_TRANSPORT_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (0)
147147
#define MATTER_DM_PUSH_AV_STREAM_TRANSPORT_CLUSTER_SERVER_ENDPOINT_COUNT (0)
148148
#define MATTER_DM_CHIME_CLUSTER_SERVER_ENDPOINT_COUNT (0)
@@ -274,7 +274,7 @@
274274
#define MATTER_DM_ZONE_MANAGEMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
275275
#define MATTER_DM_CAMERA_AV_STREAM_MANAGEMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
276276
#define MATTER_DM_CAMERA_AV_SETTINGS_USER_LEVEL_MANAGEMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
277-
#define MATTER_DM_WEBRTC_TRANSPORT_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
277+
#define MATTER_DM_WEB_RTC_TRANSPORT_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
278278
#define MATTER_DM_WEB_RTC_TRANSPORT_REQUESTOR_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
279279
#define MATTER_DM_PUSH_AV_STREAM_TRANSPORT_CLUSTER_CLIENT_ENDPOINT_COUNT (0)
280280
#define MATTER_DM_CHIME_CLUSTER_CLIENT_ENDPOINT_COUNT (0)

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

+22-16
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0"?>
22
<!--
3-
Copyright (c) 2024 Project CHIP Authors
3+
Copyright (c) 2025 Project CHIP Authors
44
55
Licensed under the Apache License, Version 2.0 (the "License");
66
you may not use this file except in compliance with the License.
@@ -18,12 +18,11 @@ limitations under the License.
1818
XML generated by Alchemy; DO NOT EDIT.
1919
Source: src/app_clusters/WebRTC_Provider.adoc
2020
Parameters: in-progress
21-
Git: 0.9-fall2024-234-gf4d359001
21+
Git: 0.7-summer-2025-5-g06c4d5596
2222
-->
2323
<configurator xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../zcl.xsd">
24-
<domain name="General"/>
25-
26-
<bitmap name="WebRTCMetadataOptions" type="bitmap8">
24+
<domain name="Cameras"/>
25+
<bitmap name="WebRTCMetadataOptionsBitmap" type="bitmap8">
2726
<cluster code="0x0553"/>
2827
<cluster code="0x0554"/>
2928
<field name="DataTLV" mask="0x01"/>
@@ -64,31 +63,33 @@ Git: 0.9-fall2024-234-gf4d359001
6463
<item fieldId="4" name="StreamUsage" type="StreamUsageEnum" min="0x00" max="0x03"/>
6564
<item fieldId="5" name="VideoStreamID" type="int16u" isNullable="true"/>
6665
<item fieldId="6" name="AudioStreamID" type="int16u" isNullable="true"/>
67-
<item fieldId="7" name="MetadataOptions" type="WebRTCMetadataOptions" default="0x00" min="0x00" max="0x01"/>
66+
<item fieldId="7" name="MetadataOptions" type="WebRTCMetadataOptionsBitmap" default="0x00" min="0x00" max="0x01"/>
6867
</struct>
6968

7069
<cluster apiMaturity="provisional">
71-
<domain name="Cameras"/>
70+
<domain>Cameras</domain>
7271
<name>WebRTC Transport Provider</name>
7372
<code>0x0553</code>
74-
<define>WEBRTC_TRANSPORT_PROVIDER_CLUSTER</define>
73+
<define>WEB_RTC_TRANSPORT_PROVIDER_CLUSTER</define>
7574
<description>The WebRTC transport provider cluster provides a way for stream providers (e.g. Cameras) to stream or receive their data through WebRTC.</description>
7675
<client init="false" tick="false">true</client>
7776
<server init="false" tick="false">true</server>
7877
<globalAttribute code="0xFFFD" side="either" value="1"/>
7978
<attribute code="0x0000" side="server" define="CURRENT_SESSIONS" type="array" entryType="WebRTCSessionStruct">CurrentSessions</attribute>
8079
<command code="0x01" source="client" name="SolicitOffer" optional="false" response="SolicitOfferResponse">
8180
<description>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.</description>
81+
<quality largeMessage="true"/>
8282
<arg id="1" name="StreamUsage" type="StreamUsageEnum" min="0x00" max="0x03"/>
8383
<arg id="2" name="VideoStreamID" type="int16u" optional="true" isNullable="true"/>
8484
<arg id="3" name="AudioStreamID" type="int16u" optional="true" isNullable="true"/>
8585
<arg id="4" name="ICEServers" array="true" type="ICEServerStruct" optional="true"/>
8686
<arg id="5" name="ICETransportPolicy" type="char_string" optional="true"/>
87-
<arg id="6" name="MetadataOptions" type="WebRTCMetadataOptions" optional="true" min="0x00" max="0x01"/>
87+
<arg id="6" name="MetadataOptions" type="WebRTCMetadataOptionsBitmap" optional="true" min="0x00" max="0x01"/>
8888
</command>
8989

9090
<command code="0x02" source="server" name="SolicitOfferResponse" optional="false" disableDefaultResponse="true">
9191
<description>This command SHALL be generated in response to a SolicitOffer command.</description>
92+
<quality largeMessage="true"/>
9293
<arg id="1" name="WebRTCSessionID" type="int16u"/>
9394
<arg id="2" name="DeferredOffer" type="boolean"/>
9495
<arg id="3" name="VideoStreamID" type="int16u" optional="true" isNullable="true"/>
@@ -97,37 +98,42 @@ Git: 0.9-fall2024-234-gf4d359001
9798

9899
<command code="0x03" source="client" name="ProvideOffer" optional="false" response="ProvideOfferResponse">
99100
<description>This command allows an SDP Offer to be set and start a new session.</description>
101+
<quality largeMessage="true"/>
100102
<arg id="1" name="WebRTCSessionID" type="int16u" isNullable="true"/>
101103
<arg id="2" name="SDP" type="char_string"/>
102104
<arg id="3" name="StreamUsage" type="StreamUsageEnum" min="0x00" max="0x03"/>
103105
<arg id="4" name="VideoStreamID" type="int16u" optional="true" isNullable="true"/>
104106
<arg id="5" name="AudioStreamID" type="int16u" optional="true" isNullable="true"/>
105107
<arg id="6" name="ICEServers" array="true" type="ICEServerStruct" optional="true"/>
106108
<arg id="7" name="ICETransportPolicy" type="char_string" optional="true"/>
107-
<arg id="8" name="MetadataOptions" type="WebRTCMetadataOptions" optional="true" min="0x00" max="0x01"/>
109+
<arg id="8" name="MetadataOptions" type="WebRTCMetadataOptionsBitmap" optional="true" min="0x00" max="0x01"/>
108110
</command>
109111

110112
<command code="0x04" source="server" name="ProvideOfferResponse" optional="false" disableDefaultResponse="true">
111-
<description>This command contains information about the stream created as a response to the requestor&apos;s offer.</description>
113+
<description>This command contains information about the session and streams created as a response to the requestor&apos;s offer.</description>
114+
<quality largeMessage="true"/>
112115
<arg id="1" name="WebRTCSessionID" type="int16u"/>
113-
<arg id="2" name="VideoStreamID" type="int16u"/>
114-
<arg id="3" name="AudioStreamID" type="int16u"/>
116+
<arg id="2" name="VideoStreamID" type="int16u" optional="true" isNullable="true"/>
117+
<arg id="3" name="AudioStreamID" type="int16u" optional="true" isNullable="true"/>
115118
</command>
116119

117120
<command code="0x05" source="client" name="ProvideAnswer" optional="false">
118121
<description>This command SHALL be initiated from a Node in response to an Offer that was previously received from a remote peer.</description>
122+
<quality largeMessage="true"/>
119123
<arg id="1" name="WebRTCSessionID" type="int16u"/>
120124
<arg id="2" name="SDP" type="char_string"/>
121125
</command>
122126

123-
<command code="0x06" source="client" name="ProvideICECandidate" optional="false">
124-
<description>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.</description>
127+
<command code="0x06" source="client" name="ProvideICECandidates" optional="false">
128+
<description>This command allows for string based https://rfc-editor.org/rfc/rfc8839#section-5.1 generated after the initial Offer / Answer exchange, via a JSEP https://datatracker.ietf.org/doc/html/rfc9429#section-4.1.20 event, a DOM https://www.w3.org/TR/webrtc/#dom-rtcpeerconnectioniceevent event, or other WebRTC compliant implementations, to be added to a session during the gathering phase.</description>
129+
<quality largeMessage="true"/>
125130
<arg id="1" name="WebRTCSessionID" type="int16u"/>
126-
<arg id="2" name="ICECandidate" type="char_string"/>
131+
<arg id="2" name="ICECandidates" array="true" type="char_string" minLength="1"/>
127132
</command>
128133

129134
<command code="0x07" source="client" name="EndSession" optional="false">
130135
<description>This command instructs the stream provider to end the WebRTC session.</description>
136+
<quality largeMessage="true"/>
131137
<arg id="1" name="WebRTCSessionID" type="int16u"/>
132138
<arg id="2" name="Reason" type="WebRTCEndReasonEnum" default="0x0B" min="0x00" max="0x0B"/>
133139
</command>

src/controller/data_model/controller-clusters.matter

+12-12
Original file line numberDiff line numberDiff line change
@@ -10127,7 +10127,7 @@ provisional cluster WebRTCTransportProvider = 1363 {
1012710127
kUnknownReason = 11;
1012810128
}
1012910129

10130-
bitmap WebRTCMetadataOptions : bitmap8 {
10130+
bitmap WebRTCMetadataOptionsBitmap : bitmap8 {
1013110131
kDataTLV = 0x1;
1013210132
}
1013310133

@@ -10145,7 +10145,7 @@ provisional cluster WebRTCTransportProvider = 1363 {
1014510145
StreamUsageEnum streamUsage = 4;
1014610146
nullable int16u videoStreamID = 5;
1014710147
nullable int16u audioStreamID = 6;
10148-
WebRTCMetadataOptions metadataOptions = 7;
10148+
WebRTCMetadataOptionsBitmap metadataOptions = 7;
1014910149
}
1015010150

1015110151
readonly attribute WebRTCSessionStruct currentSessions[] = 0;
@@ -10162,7 +10162,7 @@ provisional cluster WebRTCTransportProvider = 1363 {
1016210162
optional nullable int16u audioStreamID = 2;
1016310163
optional ICEServerStruct ICEServers[] = 3;
1016410164
optional char_string ICETransportPolicy = 4;
10165-
optional WebRTCMetadataOptions metadataOptions = 5;
10165+
optional WebRTCMetadataOptionsBitmap metadataOptions = 5;
1016610166
}
1016710167

1016810168
response struct SolicitOfferResponse = 2 {
@@ -10180,23 +10180,23 @@ provisional cluster WebRTCTransportProvider = 1363 {
1018010180
optional nullable int16u audioStreamID = 4;
1018110181
optional ICEServerStruct ICEServers[] = 5;
1018210182
optional char_string ICETransportPolicy = 6;
10183-
optional WebRTCMetadataOptions metadataOptions = 7;
10183+
optional WebRTCMetadataOptionsBitmap metadataOptions = 7;
1018410184
}
1018510185

1018610186
response struct ProvideOfferResponse = 4 {
1018710187
int16u webRTCSessionID = 0;
10188-
int16u videoStreamID = 1;
10189-
int16u audioStreamID = 2;
10188+
optional nullable int16u videoStreamID = 1;
10189+
optional nullable int16u audioStreamID = 2;
1019010190
}
1019110191

1019210192
request struct ProvideAnswerRequest {
1019310193
int16u webRTCSessionID = 0;
1019410194
char_string sdp = 1;
1019510195
}
1019610196

10197-
request struct ProvideICECandidateRequest {
10197+
request struct ProvideICECandidatesRequest {
1019810198
int16u webRTCSessionID = 0;
10199-
char_string ICECandidate = 1;
10199+
char_string ICECandidates[] = 1;
1020010200
}
1020110201

1020210202
request struct EndSessionRequest {
@@ -10210,8 +10210,8 @@ provisional cluster WebRTCTransportProvider = 1363 {
1021010210
command ProvideOffer(ProvideOfferRequest): ProvideOfferResponse = 3;
1021110211
/** This command SHALL be initiated from a Node in response to an Offer that was previously received from a remote peer. */
1021210212
command ProvideAnswer(ProvideAnswerRequest): DefaultSuccess = 5;
10213-
/** 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. */
10214-
command ProvideICECandidate(ProvideICECandidateRequest): DefaultSuccess = 6;
10213+
/** This command allows for string based https://rfc-editor.org/rfc/rfc8839#section-5.1 generated after the initial Offer / Answer exchange, via a JSEP https://datatracker.ietf.org/doc/html/rfc9429#section-4.1.20 event, a DOM https://www.w3.org/TR/webrtc/#dom-rtcpeerconnectioniceevent event, or other WebRTC compliant implementations, to be added to a session during the gathering phase. */
10214+
command ProvideICECandidates(ProvideICECandidatesRequest): DefaultSuccess = 6;
1021510215
/** This command instructs the stream provider to end the WebRTC session. */
1021610216
command EndSession(EndSessionRequest): DefaultSuccess = 7;
1021710217
}
@@ -10242,7 +10242,7 @@ provisional cluster WebRTCTransportRequestor = 1364 {
1024210242
kUnknownReason = 11;
1024310243
}
1024410244

10245-
bitmap WebRTCMetadataOptions : bitmap8 {
10245+
bitmap WebRTCMetadataOptionsBitmap : bitmap8 {
1024610246
kDataTLV = 0x1;
1024710247
}
1024810248

@@ -10260,7 +10260,7 @@ provisional cluster WebRTCTransportRequestor = 1364 {
1026010260
StreamUsageEnum streamUsage = 4;
1026110261
nullable int16u videoStreamID = 5;
1026210262
nullable int16u audioStreamID = 6;
10263-
WebRTCMetadataOptions metadataOptions = 7;
10263+
WebRTCMetadataOptionsBitmap metadataOptions = 7;
1026410264
}
1026510265

1026610266
readonly attribute WebRTCSessionStruct currentSessions[] = 0;

src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java

+11-11
Original file line numberDiff line numberDiff line change
@@ -63011,9 +63011,9 @@ public void onResponse(StructType invokeStructValue) {
6301163011
final long webRTCSessionIDFieldID = 0L;
6301263012
Integer webRTCSessionID = null;
6301363013
final long videoStreamIDFieldID = 1L;
63014-
Integer videoStreamID = null;
63014+
@Nullable Optional<Integer> videoStreamID = null;
6301563015
final long audioStreamIDFieldID = 2L;
63016-
Integer audioStreamID = null;
63016+
@Nullable Optional<Integer> audioStreamID = null;
6301763017
for (StructElement element: invokeStructValue.value()) {
6301863018
if (element.contextTagNum() == webRTCSessionIDFieldID) {
6301963019
if (element.value(BaseTLVType.class).type() == TLVType.UInt) {
@@ -63023,12 +63023,12 @@ public void onResponse(StructType invokeStructValue) {
6302363023
} else if (element.contextTagNum() == videoStreamIDFieldID) {
6302463024
if (element.value(BaseTLVType.class).type() == TLVType.UInt) {
6302563025
UIntType castingValue = element.value(UIntType.class);
63026-
videoStreamID = castingValue.value(Integer.class);
63026+
videoStreamID = Optional.of(castingValue.value(Integer.class));
6302763027
}
6302863028
} else if (element.contextTagNum() == audioStreamIDFieldID) {
6302963029
if (element.value(BaseTLVType.class).type() == TLVType.UInt) {
6303063030
UIntType castingValue = element.value(UIntType.class);
63031-
audioStreamID = castingValue.value(Integer.class);
63031+
audioStreamID = Optional.of(castingValue.value(Integer.class));
6303263032
}
6303363033
}
6303463034
}
@@ -63060,21 +63060,21 @@ public void onResponse(StructType invokeStructValue) {
6306063060
}}, commandId, commandArgs, timedInvokeTimeoutMs);
6306163061
}
6306263062

63063-
public void provideICECandidate(DefaultClusterCallback callback, Integer webRTCSessionID, String ICECandidate) {
63064-
provideICECandidate(callback, webRTCSessionID, ICECandidate, 0);
63063+
public void provideICECandidates(DefaultClusterCallback callback, Integer webRTCSessionID, ArrayList<String> ICECandidates) {
63064+
provideICECandidates(callback, webRTCSessionID, ICECandidates, 0);
6306563065
}
6306663066

63067-
public void provideICECandidate(DefaultClusterCallback callback, Integer webRTCSessionID, String ICECandidate, int timedInvokeTimeoutMs) {
63067+
public void provideICECandidates(DefaultClusterCallback callback, Integer webRTCSessionID, ArrayList<String> ICECandidates, int timedInvokeTimeoutMs) {
6306863068
final long commandId = 6L;
6306963069

6307063070
ArrayList<StructElement> elements = new ArrayList<>();
6307163071
final long webRTCSessionIDFieldID = 0L;
6307263072
BaseTLVType webRTCSessionIDtlvValue = new UIntType(webRTCSessionID);
6307363073
elements.add(new StructElement(webRTCSessionIDFieldID, webRTCSessionIDtlvValue));
6307463074

63075-
final long ICECandidateFieldID = 1L;
63076-
BaseTLVType ICECandidatetlvValue = new StringType(ICECandidate);
63077-
elements.add(new StructElement(ICECandidateFieldID, ICECandidatetlvValue));
63075+
final long ICECandidatesFieldID = 1L;
63076+
BaseTLVType ICECandidatestlvValue = ArrayType.generateArrayType(ICECandidates, (elementICECandidates) -> new StringType(elementICECandidates));
63077+
elements.add(new StructElement(ICECandidatesFieldID, ICECandidatestlvValue));
6307863078

6307963079
StructType commandArgs = new StructType(elements);
6308063080
invoke(new InvokeCallbackImpl(callback) {
@@ -63113,7 +63113,7 @@ public interface SolicitOfferResponseCallback extends BaseClusterCallback {
6311363113
}
6311463114

6311563115
public interface ProvideOfferResponseCallback extends BaseClusterCallback {
63116-
void onSuccess(Integer webRTCSessionID, Integer videoStreamID, Integer audioStreamID);
63116+
void onSuccess(Integer webRTCSessionID, @Nullable Optional<Integer> videoStreamID, @Nullable Optional<Integer> audioStreamID);
6311763117
}
6311863118

6311963119
public interface CurrentSessionsAttributeCallback extends BaseAttributeCallback {

src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -17861,7 +17861,7 @@ public enum Command {
1786117861
SolicitOffer(1L),
1786217862
ProvideOffer(3L),
1786317863
ProvideAnswer(5L),
17864-
ProvideICECandidate(6L),
17864+
ProvideICECandidates(6L),
1786517865
EndSession(7L),;
1786617866
private final long id;
1786717867
Command(long id) {
@@ -17931,17 +17931,17 @@ public static ProvideAnswerCommandField value(int id) throws NoSuchFieldError {
1793117931
}
1793217932
throw new NoSuchFieldError();
1793317933
}
17934-
}public enum ProvideICECandidateCommandField {WebRTCSessionID(0),ICECandidate(1),;
17934+
}public enum ProvideICECandidatesCommandField {WebRTCSessionID(0),ICECandidates(1),;
1793517935
private final int id;
17936-
ProvideICECandidateCommandField(int id) {
17936+
ProvideICECandidatesCommandField(int id) {
1793717937
this.id = id;
1793817938
}
1793917939

1794017940
public int getID() {
1794117941
return id;
1794217942
}
17943-
public static ProvideICECandidateCommandField value(int id) throws NoSuchFieldError {
17944-
for (ProvideICECandidateCommandField field : ProvideICECandidateCommandField.values()) {
17943+
public static ProvideICECandidatesCommandField value(int id) throws NoSuchFieldError {
17944+
for (ProvideICECandidatesCommandField field : ProvideICECandidatesCommandField.values()) {
1794517945
if (field.getID() == id) {
1794617946
return field;
1794717947
}

0 commit comments

Comments
 (0)