diff --git a/internal/transformer/transform.go b/internal/transformer/transform.go index 9d7997fa..31352052 100644 --- a/internal/transformer/transform.go +++ b/internal/transformer/transform.go @@ -154,6 +154,8 @@ func commandValueToReading(cv *models.CommandValue, deviceName, profileName, med reading = dtos.NewBinaryReading(profileName, deviceName, cv.DeviceResourceName, binary, mediaType) } else if cv.Type == common.ValueTypeObject { reading = dtos.NewObjectReading(profileName, deviceName, cv.DeviceResourceName, cv.Value) + } else if cv.Type == common.ValueTypeObjectArray { + reading = dtos.NewObjectReadingWithArray(profileName, deviceName, cv.DeviceResourceName, cv.Value) } else { reading, err = dtos.NewSimpleReading(profileName, deviceName, cv.DeviceResourceName, cv.Type, cv.Value) if err != nil { diff --git a/internal/transformer/transformresult.go b/internal/transformer/transformresult.go index 5a025b9e..64ec3170 100644 --- a/internal/transformer/transformresult.go +++ b/internal/transformer/transformresult.go @@ -398,6 +398,9 @@ func transformReadShift(value any, shift int64) (any, errors.EdgeX) { } func commandValueForTransform(cv *sdkModels.CommandValue) (interface{}, errors.EdgeX) { + if cv.Value == nil { + return nil, nil + } var v interface{} var err error switch cv.Type { diff --git a/pkg/models/commandvalue.go b/pkg/models/commandvalue.go index f582b23f..e900da4e 100644 --- a/pkg/models/commandvalue.go +++ b/pkg/models/commandvalue.go @@ -442,6 +442,9 @@ func (cv *CommandValue) Float64ArrayValue() ([]float64, error) { // BinaryValue returns the value in []byte data type, and returns error if the Type is not Binary. func (cv *CommandValue) BinaryValue() ([]byte, error) { + if cv.Value == nil { + return nil, nil + } var value []byte if cv.Type != common.ValueTypeBinary { errMsg := fmt.Sprintf("cannot convert %s to %s", cv.Type, common.ValueTypeBinary) @@ -467,6 +470,9 @@ func (cv *CommandValue) ObjectValue() (interface{}, error) { // validate checks if the given value can be converted to specified valueType by // performing type assertion func validate(valueType string, value interface{}) error { + if value == nil { + return nil // value can be nil, skip validation + } var ok bool switch valueType { case common.ValueTypeString: