3 - Receiving Messages

Messages sent from a network server to an end device are referred to as downlinks. These are sent to the end device via a single gateway. If there are multiple gateways near a device, the network server will select the most suitable gateway to broadcast from. This means the end device does not need to consider de-duping.

Devices operating in Class A mode only receive downlinks during the receive windows opened following an uplink, as described in the section Opening Receive Windows of the Sending Messages Book.

Devices that support Class B mode as well as Class A can receive additional downlinks in receive windows opened at fixed time slots. Read more about Class B mode in the Class B Book.

Devices that support Class C mode as well as Class A can receive additional downlinks at any time. Read more in the Class C: Continuously Listening for Downlinks book.

Todo

Fix link

In this book, you learn how to receive and handle downlink packets using the LoRaWAN® 1.0.4 specification.

Processing the Downlink Packet

Check the FOptsLen and FOpts Fields

MAC commands may be found in either the Frame Payload (FRMPayload) field or the Frame Options (FOpts) field. Application data may be found in the FRMPayload field.

downlink-packet-foptslen-fopts

Figure 1: FOptsLen and FOpts fields highlighted in the LoRaWAN® downlink packet structure

The 4-bit FOptsLen field inside the Frame Control Octet is located within the Frame Header in the MAC Payload, as shown in Figure 1.

If the FOptsLen field in the downlink is set to 0, this indicates that the FOpts field is 0 octets long, and the end device should proceed to check the FPort field described in the next section Check the FPort and FRMPayload Fields.

If the FOptsLen is set between 1 and 15, this indicates the length in octets of the variable length FOpts field. The end device must then read the FOpts field, the length of which will now be known. The FOpts octets are found inside the Frame Header within the MAC payload, as shown in Figure 1. Before processing the contents of the FOpts octets, the end device should proceed to check the FPort field described in the next section Check the FPort and FRMPayload Fields.