func()

in ptp/protocol/ptp4l.go [236:283]


func (e *UnicastMasterEntry) MarshalBinary() ([]byte, error) {
	var bytes bytes.Buffer
	if err := binary.Write(&bytes, binary.BigEndian, e.PortIdentity); err != nil {
		return nil, err
	}
	if err := binary.Write(&bytes, binary.BigEndian, e.ClockQuality); err != nil {
		return nil, err
	}
	var selectedBin uint8 = 0
	if e.Selected {
		selectedBin = 1
	}
	if err := binary.Write(&bytes, binary.BigEndian, selectedBin); err != nil {
		return nil, err
	}
	if err := binary.Write(&bytes, binary.BigEndian, e.PortState); err != nil {
		return nil, err
	}
	if err := binary.Write(&bytes, binary.BigEndian, e.Priority1); err != nil {
		return nil, err
	}
	if err := binary.Write(&bytes, binary.BigEndian, e.Priority2); err != nil {
		return nil, err
	}
	var pa PortAddress
	asIPv4 := e.Address.To4()
	if asIPv4 != nil {
		pa = PortAddress{
			NetworkProtocol: TransportTypeUDPIPV4,
			AddressLength:   4,
			AddressField:    asIPv4,
		}
	} else {
		pa = PortAddress{
			NetworkProtocol: TransportTypeUDPIPV6,
			AddressLength:   16,
			AddressField:    e.Address,
		}
	}
	portBytes, err := pa.MarshalBinary()
	if err != nil {
		return nil, err
	}
	if err := binary.Write(&bytes, binary.BigEndian, portBytes); err != nil {
		return nil, err
	}
	return bytes.Bytes(), nil
}