tape: Progress on dynamically decoding OTAs
This commit is contained in:
parent
08fe3d45dd
commit
37eccc91c0
@ -157,7 +157,7 @@ func decodeAny(decoder *Decoder, destination reflect.Value, tag Tag) (n int, err
|
||||
n += nn; if err != nil { return n, err }
|
||||
itemTag, nn, err := decoder.ReadTag()
|
||||
n += nn; if err != nil { return n, err }
|
||||
value, err := skeletonValue(itemTag)
|
||||
value, err := skeletonValue(decoder, itemTag)
|
||||
if err != nil { return n, err }
|
||||
nn, err = decodeAny(decoder, value.Elem(), itemTag)
|
||||
n += nn; if err != nil { return n, err }
|
||||
@ -304,7 +304,7 @@ func decodeAndSetFloat(decoder *Decoder, destination reflect.Value, bytes int) (
|
||||
|
||||
// skeletonValue returns a pointer value. In order for it to be set, it must be
|
||||
// dereferenced using Elem().
|
||||
func skeletonValue(tag Tag) (reflect.Value, error) {
|
||||
func skeletonValue(decoder *Decoder, tag Tag) (reflect.Value, error) {
|
||||
switch tag.WithoutCN() {
|
||||
case SI:
|
||||
value := uint8(0)
|
||||
@ -325,12 +325,20 @@ func skeletonValue(tag Tag) (reflect.Value, error) {
|
||||
return reflect.Value { }, fmt.Errorf("unknown CN %d for FP", tag.CN())
|
||||
case SBA: value := []byte { }; return reflect.ValueOf(&value), nil
|
||||
case LBA: value := []byte { }; return reflect.ValueOf(&value), nil
|
||||
case OTA: value := unknownSlicePlaceholder { }; return reflect.ValueOf(&value), nil
|
||||
case OTA: return skeletonValueSlice(decoder, tag)
|
||||
case KTV: value := map[uint16] any { }; return reflect.ValueOf(&value), nil
|
||||
}
|
||||
return reflect.Value { }, fmt.Errorf("unknown TN %d", tag.TN())
|
||||
}
|
||||
|
||||
// skeletonValueSlice returns a pointer value. In order for it to be set, it
|
||||
// must be dereferenced using Elem().
|
||||
func skeletonValueSlice(decoder *Decoder, tag Tag) (reflect.Value, error) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
// TODO: delete fucntion below
|
||||
|
||||
// skeletonValueSlice returns a pointer value. In order for it to be set, it
|
||||
// must be dereferenced using Elem().
|
||||
func skeletonValueSlice(tag Tag, length int) (reflect.Value, error) {
|
||||
|
Loading…
Reference in New Issue
Block a user