func parseMetaTlv()

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
}