LoRa-Workshop/micropython/uLoRaWAN/MHDR.py

35 lines
770 B
Python

from .MalformedPacketException import MalformedPacketException
class MHDR:
LORAWAN_V1 = 0x00
MHDR_TYPE = 0xE0
MHDR_RFU = 0x1C
MHDR_MAJOR = 0x03
JOIN_REQUEST = 0x00
JOIN_ACCEPT = 0x20
UNCONF_DATA_UP = 0x40
UNCONF_DATA_DOWN = 0x60
CONF_DATA_UP = 0x80
CONF_DATA_DOWN = 0xA0
RFU = 0xC0 # rejoin for roaming
PROPRIETARY = 0xE0
def __init__(self, mhdr):
self.mhdr = mhdr
mversion = mhdr & self.MHDR_MAJOR
if mversion != self.LORAWAN_V1:
raise MalformedPacketException("Invalid major version")
def to_raw(self):
return self.mhdr
def get_mversion(self):
return self.mhdr & self.MHDR_MAJOR
def get_mtype(self):
return self.mhdr & self.MHDR_TYPE