MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / AppendFHDR

Function AppendFHDR

pkg/encoding/lorawan/messages.go:99–115  ·  view source on GitHub ↗

AppendFHDR appends encoded msg to dst.

(dst []byte, msg *ttnpb.FHDR, isUplink bool)

Source from the content-addressed store, hash-verified

97
98// AppendFHDR appends encoded msg to dst.
99func AppendFHDR(dst []byte, msg *ttnpb.FHDR, isUplink bool) ([]byte, error) {
100 if n := len(msg.DevAddr); n != 4 {
101 return nil, errExpectedLengthEqual("DevAddr", 4)(n)
102 }
103 dst = appendReverse(dst, msg.DevAddr...)
104 fOptsLen := uint8(len(msg.GetFOpts()))
105 if fOptsLen > 15 {
106 return nil, errExpectedLowerOrEqual("FOptsLen", 15)(fOptsLen)
107 }
108 dst, err := AppendFCtrl(dst, msg.GetFCtrl(), isUplink, fOptsLen)
109 if err != nil {
110 return nil, errFailedEncoding("FCtrl").WithCause(err)
111 }
112 dst = byteutil.AppendUint32(dst, msg.GetFCnt()&0xffff, 2)
113 dst = append(dst, msg.GetFOpts()...)
114 return dst, nil
115}
116
117// UnmarshalFHDR unmarshals b into msg.
118func UnmarshalFHDR(b []byte, msg *ttnpb.FHDR, isUplink bool) error {

Callers 2

AppendMACPayloadFunction · 0.85
TestAppendFHDRFunction · 0.85

Calls 10

AppendUint32Function · 0.92
errExpectedLengthEqualFunction · 0.85
appendReverseFunction · 0.85
AppendFCtrlFunction · 0.85
errFailedEncodingFunction · 0.85
GetFCtrlMethod · 0.80
errExpectedLowerOrEqualFunction · 0.70
GetFOptsMethod · 0.45
WithCauseMethod · 0.45
GetFCntMethod · 0.45

Tested by 1

TestAppendFHDRFunction · 0.68