@@ -144,6 +144,9 @@ func applyErrataToEnum(en *matter.Enum, typeNames map[string]string, typeOverrid
144144 if f .OverrideName != "" {
145145 ev .Name = f .OverrideName
146146 }
147+ if f .Conformance != "" {
148+ ev .Conformance = conformance .ParseConformance (f .Conformance )
149+ }
147150 break
148151 }
149152 }
@@ -225,22 +228,24 @@ func applyErrataToFields(fs matter.FieldSet, override *errata.SDKType) {
225228 }
226229}
227230
228- func applyErrataToField (entity * matter.Field , override * errata.SDKType ) {
231+ func applyErrataToField (field * matter.Field , override * errata.SDKType ) {
229232 if override .OverrideName != "" {
230- entity .Name = override .OverrideName
233+ field .Name = override .OverrideName
231234 }
232235 if override .OverrideType != "" {
233- entity .Type = types .ParseDataType (override .OverrideType , false )
236+ field .Type = types .ParseDataType (override .OverrideType , false )
234237 }
235238 if override .Conformance != "" {
236- entity .Conformance = conformance .ParseConformance (override .Conformance )
239+ field .Conformance = conformance .ParseConformance (override .Conformance )
237240 }
238241 if override .Constraint != "" {
239- entity .Constraint = constraint .ParseString (override .Constraint )
242+ field .Constraint = constraint .ParseString (override .Constraint )
240243 }
241244 if override .Fallback != "" {
242- entity .Fallback = constraint .ParseLimit (override .Fallback )
245+ field .Fallback = constraint .ParseLimit (override .Fallback )
243246 }
247+ field .Quality = overrideQuality (override , field .Quality )
248+ field .Access = overrideAccess (override , field .EntityType (), field .Access )
244249}
245250
246251func applyErrataToDeviceType (deviceType * matter.DeviceType , typeOverrides * errata.SDKTypes ) {
@@ -262,3 +267,31 @@ func applyTypeName(typeNames map[string]string, name string) string {
262267 }
263268 return name
264269}
270+
271+ func overrideQuality (override * errata.SDKType , defaultQuality matter.Quality ) matter.Quality {
272+ if override .Quality == "" {
273+ return defaultQuality
274+ }
275+ switch override .Quality {
276+ case "none" :
277+ return matter .QualityNone
278+ default :
279+ return matter .ParseQuality (override .Quality )
280+ }
281+ }
282+
283+ func overrideAccess (override * errata.SDKType , entityType types.EntityType , defaultAccess matter.Access ) matter.Access {
284+ if override .Access == "" {
285+ return defaultAccess
286+ }
287+ switch override .Access {
288+ case "none" :
289+ return matter.Access {}
290+ default :
291+ access , parsed := spec .ParseAccess (override .Access , entityType )
292+ if parsed {
293+ return access
294+ }
295+ return defaultAccess
296+ }
297+ }
0 commit comments