in mfg/parse.go [47:70]
func parseMetaTlv(bin []byte) (MetaTlv, int, error) {
r := bytes.NewReader(bin)
tlv := MetaTlv{}
if err := binary.Read(r, binary.LittleEndian, &tlv.Header); err != nil {
return tlv, 0, errors.Wrapf(err, "error reading TLV header")
}
data := make([]byte, tlv.Header.Size)
sz, err := r.Read(data)
if err != nil {
return tlv, 0, errors.Wrapf(err,
"error reading %d bytes of TLV data",
tlv.Header.Size)
}
if sz != len(data) {
return tlv, 0, errors.Errorf(
"error reading %d bytes of TLV data: incomplete read",
tlv.Header.Size)
}
tlv.Data = data
return tlv, META_TLV_HEADER_SZ + int(tlv.Header.Size), nil
}