Creating PHYPayload

I’m trying to create a payload like so:

phy := lorawan.PHYPayload{
		MHDR: lorawan.MHDR{
			MType: lorawan.ConfirmedDataUp,
			Major: lorawan.LoRaWANR1,
		},
		MACPayload: &lorawan.MACPayload{
			FHDR: lorawan.FHDR{
				DevAddr: lorawan.DevAddr([4]byte{1, 2, 3, 4}),
				FCnt:    1,
			},
			FRMPayload: ,
		},
	}

But I can’t figure out how to specify the FRMPayload. Any tips?

Here’s an example of creating the PHYPayload, where payload is just a bytes array:

phy := lorawan.PHYPayload{
		MHDR: lorawan.MHDR{
			MType: lorawan.ConfirmedDataUp,
			Major: lorawan.LoRaWANR1,
		},
		MACPayload: &lorawan.MACPayload{
			FHDR: lorawan.FHDR{

				DevAddr: lorawan.DevAddr(devAddr),
				FCtrl: lorawan.FCtrl{
					ADR:       false,
					ADRACKReq: false,
					ACK:       false,
				},
				FCnt:  0,
				FOpts: []lorawan.MACCommand{}, // you can leave this out when there is no MAC command to send
			},
			FPort:      &fPort,
			FRMPayload: []lorawan.Payload{&lorawan.DataPayload{Bytes: payload}},
		},
	}

Check here for examples from Orne’s lorawan package, or here for another example.

2 Likes

Thank you, worked like a charm!