func ParseQoSMonitoringMeasurementFields(b []byte) (*QoSMonitoringMeasurementFields, error) {
	f := &QoSMonitoringMeasurementFields{}
	if err := f.UnmarshalBinary(b); err != nil {
		return nil, err
	}
	return f, nil
}
ParseQoSMonitoringMeasurementFields parses b into QoSMonitoringMeasurementFields.
package ie
import (
	"encoding/binary"
	"io"
)
func NewQoSMonitoringMeasurement(flags uint8, dl, ul, rp uint32) *IE {
	fields := NewQoSMonitoringMeasurementFields(flags, dl, ul, rp)
	b, err := fields.Marshal()
	if err != nil {
		return nil
	}
	return New(QoSMonitoringMeasurement, b)
}
func (i *IE) QoSMonitoringMeasurement() (*QoSMonitoringMeasurementFields, error) {
	switch i.Type {
	case QoSMonitoringMeasurement:
		fields, err := ParseQoSMonitoringMeasurementFields(i.Payload)
		if err != nil {
			return nil, err
		}
		return fields, nil
	case QoSMonitoringReport:
		ies, err := i.QoSMonitoringReport()
		if err != nil {
			return nil, err
		}
		for _, x := range ies {
			if x.Type == QoSMonitoringMeasurement {
				return x.QoSMonitoringMeasurement()
			}
		}
		return nil, ErrIENotFound
	default:
		return nil, &InvalidTypeError{Type: i.Type}
	}
}
type QoSMonitoringMeasurementFields struct {
	Flags                uint8
	DownlinkPacketDelay  uint32
	UplinkPacketDelay    uint32
	RoundTripPacketDelay uint32
}
func NewQoSMonitoringMeasurementFields(flags uint8, dl, ul, rp uint32) *QoSMonitoringMeasurementFields {
	return &QoSMonitoringMeasurementFields{
		Flags:                flags,
		DownlinkPacketDelay:  dl,
		UplinkPacketDelay:    ul,
		RoundTripPacketDelay: rp,
	}
}
func (f *QoSMonitoringMeasurementFields) HasPLMF() bool {
	return has4thBit(f.Flags)
}
func (f *QoSMonitoringMeasurementFields) SetPLMFFlag() {
	f.Flags |= 0x08
}
func (f *QoSMonitoringMeasurementFields) HasRP() bool {
	return has3rdBit(f.Flags)
}
func (f *QoSMonitoringMeasurementFields) SetRPFlag() {
	f.Flags |= 0x04
}
func (f *QoSMonitoringMeasurementFields) HasUL() bool {
	return has2ndBit(f.Flags)
}
func (f *QoSMonitoringMeasurementFields) SetULFlag() {
	f.Flags |= 0x02
}
func (f *QoSMonitoringMeasurementFields) HasDL() bool {
	return has1stBit(f.Flags)
}
func (f *QoSMonitoringMeasurementFields) SetDLFlag() {
	f.Flags |= 0x01
}