diff --git a/internal/homekit/server.go b/internal/homekit/server.go index 363a7047..6c8b37ae 100644 --- a/internal/homekit/server.go +++ b/internal/homekit/server.go @@ -87,7 +87,7 @@ func (s *server) SetCharacteristic(conn net.Conn, aid uint8, iid uint64, value a switch char.Type { case camera.TypeSetupEndpoints: var offer camera.SetupEndpoints - if err := tlv8.UnmarshalBase64(value.(string), &offer); err != nil { + if err := tlv8.UnmarshalBase64(value, &offer); err != nil { return } @@ -96,7 +96,7 @@ func (s *server) SetCharacteristic(conn net.Conn, aid uint8, iid uint64, value a case camera.TypeSelectedStreamConfiguration: var conf camera.SelectedStreamConfig - if err := tlv8.UnmarshalBase64(value.(string), &conf); err != nil { + if err := tlv8.UnmarshalBase64(value, &conf); err != nil { return } diff --git a/pkg/hap/tlv8/tlv8.go b/pkg/hap/tlv8/tlv8.go index 41a6de58..068f21c3 100644 --- a/pkg/hap/tlv8/tlv8.go +++ b/pkg/hap/tlv8/tlv8.go @@ -142,12 +142,13 @@ func appendValue(b []byte, tag byte, value reflect.Value) ([]byte, error) { return nil, errors.New("tlv8: not implemented: " + value.Kind().String()) } -func UnmarshalBase64(s string, v any) error { +func UnmarshalBase64(in any, out any) error { + s, _ := in.(string) // protect from in == nil data, err := base64.StdEncoding.DecodeString(s) if err != nil { return err } - return Unmarshal(data, v) + return Unmarshal(data, out) } func UnmarshalReader(r io.Reader, v any) error {