func (res *TunnelRes) Pack(buffer []byte) {
	buffer[0] = 4
	buffer[1] = res.Channel
	buffer[2] = res.SeqNumber
	buffer[3] = uint8(res.Status)
}
Pack assembles the service payload in the given buffer.
package knxnet
import (
	"errors"
	"github.com/vapourismo/knx-go/knx/cemi"
	"github.com/vapourismo/knx-go/knx/util"
)
type TunnelReq struct {
	Channel uint8
	SeqNumber uint8
	Payload cemi.Message
}
func (TunnelReq) Service() ServiceID {
	return TunnelReqService
}
func (req *TunnelReq) Size() uint {
	return 4 + cemi.Size(req.Payload)
}
func (req *TunnelReq) Pack(buffer []byte) {
	buffer[0] = 4
	buffer[1] = req.Channel
	buffer[2] = req.SeqNumber
	buffer[3] = 0
	cemi.Pack(buffer[4:], req.Payload)
}
func (req *TunnelReq) Unpack(data []byte) (n uint, err error) {
	var length, reserved uint8
	if n, err = util.UnpackSome(
		data, &length, &req.Channel, &req.SeqNumber, &reserved,
	); err != nil {
		return
	}
	if length != 4 {
		return n, errors.New("Length header is not 4")
	}
	m, err := cemi.Unpack(data[n:], &req.Payload)
	n += m
	return
}
type TunnelRes struct {
	Channel uint8
	SeqNumber uint8
	Status ErrCode
}
func (TunnelRes) Service() ServiceID {
	return TunnelResService
}
func (TunnelRes) Size() uint {
	return 4
}