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

Function AppendMessage

pkg/encoding/lorawan/messages.go:474–536  ·  view source on GitHub ↗

AppendMessage appends encoded msg to dst.

(dst []byte, msg *ttnpb.Message)

Source from the content-addressed store, hash-verified

472
473// AppendMessage appends encoded msg to dst.
474func AppendMessage(dst []byte, msg *ttnpb.Message) ([]byte, error) {
475 if msg.MHdr == nil {
476 return nil, errMissing("MHDR")
477 }
478 dst, err := AppendMHDR(dst, msg.MHdr)
479 if err != nil {
480 return nil, errFailedEncoding("MHDR").WithCause(err)
481 }
482 switch msg.MHdr.MType {
483 case ttnpb.MType_CONFIRMED_DOWN, ttnpb.MType_UNCONFIRMED_DOWN:
484 pld := msg.GetMacPayload()
485 if pld == nil {
486 return nil, errMissing("MACPayload")
487 }
488 dst, err = AppendMACPayload(dst, pld, false)
489 if err != nil {
490 return nil, errFailedEncoding("downlink MACPayload").WithCause(err)
491 }
492 case ttnpb.MType_CONFIRMED_UP, ttnpb.MType_UNCONFIRMED_UP:
493 pld := msg.GetMacPayload()
494 if pld == nil {
495 return nil, errMissing("MACPayload")
496 }
497 dst, err = AppendMACPayload(dst, pld, true)
498 if err != nil {
499 return nil, errFailedEncoding("uplink MACPayload").WithCause(err)
500 }
501 case ttnpb.MType_JOIN_REQUEST:
502 pld := msg.GetJoinRequestPayload()
503 if pld == nil {
504 return nil, errMissing("JoinRequestPayload")
505 }
506 dst, err = AppendJoinRequestPayload(dst, pld)
507 if err != nil {
508 return nil, errFailedEncoding("JoinRequestPayload").WithCause(err)
509 }
510 case ttnpb.MType_REJOIN_REQUEST:
511 pld := msg.GetRejoinRequestPayload()
512 if pld == nil {
513 return nil, errMissing("RejoinRequestPayload")
514 }
515 dst, err = AppendRejoinRequestPayload(dst, pld)
516 if err != nil {
517 return nil, errFailedEncoding("RejoinRequestPayload").WithCause(err)
518 }
519 case ttnpb.MType_JOIN_ACCEPT:
520 pld := msg.GetJoinAcceptPayload()
521 if pld == nil {
522 return nil, errMissing("JoinAcceptPayload")
523 }
524 n := len(pld.Encrypted)
525 if n != 16 && n != 32 {
526 return nil, errEncryptedJoinAcceptPayloadLength(n)
527 }
528 dst = append(dst, pld.Encrypted...)
529 case ttnpb.MType_PROPRIETARY:
530 return nil, errProprietary.New()
531 default:

Callers 4

MarshalMessageFunction · 0.85
TestLoRaWANEncodingRawFunction · 0.85

Calls 14

AppendMHDRFunction · 0.85
errFailedEncodingFunction · 0.85
AppendMACPayloadFunction · 0.85
AppendJoinRequestPayloadFunction · 0.85
errUnknownFunction · 0.85
GetJoinRequestPayloadMethod · 0.80
GetJoinAcceptPayloadMethod · 0.80
errMissingFunction · 0.70
NewMethod · 0.65
StringMethod · 0.65

Tested by 2

TestLoRaWANEncodingRawFunction · 0.68