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

Function UnmarshalMACPayload

pkg/encoding/lorawan/messages.go:161–187  ·  view source on GitHub ↗

UnmarshalMACPayload unmarshals b into msg.

(b []byte, msg *ttnpb.MACPayload, isUplink bool)

Source from the content-addressed store, hash-verified

159
160// UnmarshalMACPayload unmarshals b into msg.
161func UnmarshalMACPayload(b []byte, msg *ttnpb.MACPayload, isUplink bool) error {
162 n := uint8(len(b))
163 if n < 7 {
164 return errExpectedLengthHigherOrEqual("FHDR", 7)(n)
165 }
166 fOptsLen := b[4] & 0xf
167 fhdrLen := fOptsLen + 7
168 if n < fhdrLen {
169 return errExpectedLengthHigherOrEqual("MACPayload", fhdrLen)(n)
170 }
171 msg.FHdr = &ttnpb.FHDR{}
172 if err := UnmarshalFHDR(b[0:fhdrLen], msg.FHdr, isUplink); err != nil {
173 return errFailedDecoding("FHDR").WithCause(err)
174 }
175
176 fPortIdx := fhdrLen
177 if n > fPortIdx {
178 msg.FPort = uint32(b[fPortIdx])
179
180 frmPayloadIdx := fPortIdx + 1
181 if n > frmPayloadIdx {
182 msg.FrmPayload = make([]byte, 0, n-frmPayloadIdx)
183 msg.FrmPayload = append(msg.FrmPayload, b[frmPayloadIdx:]...)
184 }
185 }
186 return nil
187}
188
189// AppendDLSettings appends encoded msg to dst.
190func AppendDLSettings(dst []byte, msg *ttnpb.DLSettings) ([]byte, error) {

Callers 1

UnmarshalMessageFunction · 0.85

Calls 4

UnmarshalFHDRFunction · 0.85
errFailedDecodingFunction · 0.85
WithCauseMethod · 0.45

Tested by

no test coverage detected