Skip to content

Commit 5bf8938

Browse files
committed
Add support for quality and access overrides in errata
1 parent 7f0f579 commit 5bf8938

2 files changed

Lines changed: 42 additions & 6 deletions

File tree

errata/sdk.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ type SDKType struct {
7171
Constraint string `yaml:"constraint,omitempty"`
7272
Conformance string `yaml:"conformance,omitempty"`
7373
Fallback string `yaml:"fallback,omitempty"`
74+
75+
Quality string `yaml:"quality,omitempty"`
76+
Access string `yaml:"access,omitempty"`
7477
}
7578

7679
type SDKTypeCollection map[string]*SDKType

sdk/errata.go

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

246251
func 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

Comments
 (0)