scapy.contrib.loraphy2wan

LoRa PHY to WAN Layer

Initially developed @PentHertz and improved at @Trend Micro

Spec: lorawantm_specification v1.1

class scapy.contrib.loraphy2wan.ADRParamSetupAns(_pkt, /)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.ADRParamSetupAns'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = []
class scapy.contrib.loraphy2wan.ADRParamSetupReq(_pkt, /, *, Limit_exp=0, Delay_exp=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.ADRParamSetupReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (ADRparam,ADRParamSetupReq).Limit_exp>, <BitField (ADRparam,ADRParamSetupReq).Delay_exp>]
class scapy.contrib.loraphy2wan.ADRparam(_pkt, /, *, Limit_exp=0, Delay_exp=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.ADRparam'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (ADRparam,ADRParamSetupReq).Limit_exp>, <BitField (ADRparam,ADRParamSetupReq).Delay_exp>]
class scapy.contrib.loraphy2wan.DLsettings(_pkt, /, *, OptNeg=0, RX1DRoffset=0, RX2_Data_rate=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DLsettings'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (DLsettings,RXParamSetupReq,Join_Accept).OptNeg>, <XBitField (DLsettings,RXParamSetupReq,Join_Accept).RX1DRoffset>, <XBitField (DLsettings,RXParamSetupReq,Join_Accept).RX2_Data_rate>]
class scapy.contrib.loraphy2wan.DataRate_TXPower(_pkt, /, *, DataRate=0, TXPower=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DataRate_TXPower'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XBitField (DataRate_TXPower,LinkADRReq).DataRate>, <XBitField (DataRate_TXPower,LinkADRReq).TXPower>]
class scapy.contrib.loraphy2wan.DevAddrElem(_pkt, /, *, NwkID=0, NwkAddr=b'\x00\x00\x00')[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DevAddrElem'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XByteField (DevAddrElem).NwkID>, <XLE3BytesField (DevAddrElem).NwkAddr>]
class scapy.contrib.loraphy2wan.DevLoraWANversion(_pkt, /, *, RFU=0, Minor=1)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DevLoraWANversion'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (DevLoraWANversion).RFU>, <BitField (DevLoraWANversion).Minor>]
class scapy.contrib.loraphy2wan.DevStatusAns(_pkt, /, *, RFU=0, Margin=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DevStatusAns'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XBitField (DevStatusAns_Status,DevStatusAns).RFU>, <XBitField (DevStatusAns_Status,DevStatusAns).Margin>]
class scapy.contrib.loraphy2wan.DevStatusAns_Status(_pkt, /, *, RFU=0, Margin=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DevStatusAns_Status'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XBitField (DevStatusAns_Status,DevStatusAns).RFU>, <XBitField (DevStatusAns_Status,DevStatusAns).Margin>]
class scapy.contrib.loraphy2wan.DevStatusReq(_pkt, /, *, Battery=0, Margin=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DevStatusReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (DevStatusReq).Battery>, <ByteField (DevStatusReq).Margin>]
class scapy.contrib.loraphy2wan.DeviceTimeAns(_pkt, /, *, SecondsSinceEpoch=0, FracSecond=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DeviceTimeAns'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IntField (DeviceTimeAns).SecondsSinceEpoch>, <ByteField (DeviceTimeAns).FracSecond>]
class scapy.contrib.loraphy2wan.DeviceTimeReq(_pkt, /)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DeviceTimeReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = []
class scapy.contrib.loraphy2wan.DlChannelAns(_pkt, /, *, Status=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DlChannelAns'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteField (DlChannelAns).Status>]
class scapy.contrib.loraphy2wan.DlChannelReq(_pkt, /, *, ChIndex=0, Freq=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DlChannelReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteField (DlChannelReq).ChIndex>, <X3BytesField (DlChannelReq).Freq>]
class scapy.contrib.loraphy2wan.DrRange(_pkt, /, *, MaxDR=0, MinDR=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DrRange'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XBitField (DrRange,NewChannelReq).MaxDR>, <XBitField (DrRange,NewChannelReq).MinDR>]
class scapy.contrib.loraphy2wan.DutyCycleAns(_pkt, /)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DutyCycleAns'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = []
class scapy.contrib.loraphy2wan.DutyCyclePL(_pkt, /, *, MaxDCycle=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DutyCyclePL'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (DutyCyclePL,DutyCycleReq).MaxDCycle>]
class scapy.contrib.loraphy2wan.DutyCycleReq(_pkt, /, *, MaxDCycle=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.DutyCycleReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (DutyCyclePL,DutyCycleReq).MaxDCycle>]
class scapy.contrib.loraphy2wan.EIRP_DwellTime(_pkt, /, *, RFU=0, DownlinkDwellTime=0, UplinkDwellTime=0, MaxEIRP=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.EIRP_DwellTime'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (EIRP_DwellTime,TxParamSetupReq).RFU>, <BitEnumField (EIRP_DwellTime,TxParamSetupReq).DownlinkDwellTime>, <BitEnumField (EIRP_DwellTime,TxParamSetupReq).UplinkDwellTime>, <BitEnumField (EIRP_DwellTime,TxParamSetupReq).MaxEIRP>]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.FCtrl_DownLink'>, <class 'scapy.packet.Packet'>]
extract_padding(p)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (FCtrl_DownLink).ADR>, <BitField (FCtrl_DownLink).ADRACKReq>, <BitField (FCtrl_DownLink).ACK>, <BitField (FCtrl_DownLink).FPending>, <BitFieldLenField (FCtrl_DownLink).FOptsLen>]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.FCtrl_Link'>, <class 'scapy.packet.Packet'>]
extract_padding(p)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (FCtrl_Link).ADR>, <BitField (FCtrl_Link).ADRACKReq>, <BitField (FCtrl_Link).ACK>, <BitField (FCtrl_Link).UpClassB_DownFPending>, <BitFieldLenField (FCtrl_Link).FOptsLen>]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.FCtrl_UpLink'>, <class 'scapy.packet.Packet'>]
extract_padding(p)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (FCtrl_UpLink).ADR>, <BitField (FCtrl_UpLink).ADRACKReq>, <BitField (FCtrl_UpLink).ACK>, <BitField (FCtrl_UpLink).ClassB>, <BitFieldLenField (FCtrl_UpLink).FOptsLen>]
class scapy.contrib.loraphy2wan.FHDR(_pkt, /, *, DevAddr=[b''], FCtrl=[b''], FCnt=0, FOpts_up=[b''], FOpts_down=[b''])[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.FHDR'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>]
class scapy.contrib.loraphy2wan.FOpts(_pkt, /, *, FOpts_up=[b''], FOpts_down=[b''])[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.FOpts'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>]
scapy.contrib.loraphy2wan.FOptsDownShow(pkt)[source]
scapy.contrib.loraphy2wan.FOptsUpShow(pkt)[source]
class scapy.contrib.loraphy2wan.FRMPayload(_pkt, /, *, DataPayload=None, Join_Request_Field=[b''], Join_Accept_Field=[b''], Join_Accept_Encrypted=0, ReJoin_Request_Field=[b''])[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.FRMPayload'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>]
class scapy.contrib.loraphy2wan.ForceRejoinReq(_pkt, /, *, RFU=0, Period=0, Max_Retries=0, RFU2=0, RejoinType=0, DR=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.ForceRejoinReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (ForceRejoinReq).RFU>, <BitField (ForceRejoinReq).Period>, <BitField (ForceRejoinReq).Max_Retries>, <BitField (ForceRejoinReq).RFU2>, <BitField (ForceRejoinReq).RejoinType>, <BitField (ForceRejoinReq).DR>]
class scapy.contrib.loraphy2wan.Join_Accept(_pkt, /, *, JoinAppNonce=0, NetID=0, DevAddr=0, OptNeg=0, RX1DRoffset=0, RX2_Data_rate=0, RxDelay=0, CFList=b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.Join_Accept'>, <class 'scapy.packet.Packet'>]
dcflist = False
extract_padding(p)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XLE3BytesField (Join_Accept).JoinAppNonce>, <XLE3BytesField (Join_Accept).NetID>, <XLEIntField (Join_Accept).DevAddr>, <BitField (DLsettings,RXParamSetupReq,Join_Accept).OptNeg>, <XBitField (DLsettings,RXParamSetupReq,Join_Accept).RX1DRoffset>, <XBitField (DLsettings,RXParamSetupReq,Join_Accept).RX2_Data_rate>, <XByteField (Join_Accept).RxDelay>, <scapy.fields.ConditionalField object>]
class scapy.contrib.loraphy2wan.Join_Request(_pkt, /, *, AppEUI=b'\x00\x00\x00\x00\x00\x00\x00\x00', DevEUI=b'\x00\x00\x00\x00\x00\x00\x00\x00', DevNonce=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.Join_Request'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<StrFixedLenField (Join_Request).AppEUI>, <StrFixedLenField (Join_Request).DevEUI>, <LEShortField (Join_Request).DevNonce>]
class scapy.contrib.loraphy2wan.LinkADRAns(_pkt, /, *, status=<LinkADRAns_Status  |>)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.LinkADRAns'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<PacketField (LinkADRAns).status>]
class scapy.contrib.loraphy2wan.LinkADRAns_Status(_pkt, /, *, RFU=0, PowerACK=0, DataRate=0, ChannelMaskACK=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.LinkADRAns_Status'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (LinkADRAns_Status).RFU>, <BitField (LinkADRAns_Status).PowerACK>, <BitField (LinkADRAns_Status).DataRate>, <BitField (LinkADRAns_Status).ChannelMaskACK>]
class scapy.contrib.loraphy2wan.LinkADRReq(_pkt, /, *, DataRate=0, TXPower=0, ChMask=0, RFU=0, ChMaskCntl=0, NbTrans=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.LinkADRReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XBitField (DataRate_TXPower,LinkADRReq).DataRate>, <XBitField (DataRate_TXPower,LinkADRReq).TXPower>, <XShortField (LinkADRReq).ChMask>, <XBitField (Redundancy,LinkADRReq).RFU>, <XBitField (Redundancy,LinkADRReq).ChMaskCntl>, <XBitField (Redundancy,LinkADRReq).NbTrans>]
class scapy.contrib.loraphy2wan.LinkCheckAns(_pkt, /, *, Margin=0, GwCnt=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.LinkCheckAns'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteField (LinkCheckAns).Margin>, <ByteField (LinkCheckAns).GwCnt>]
class scapy.contrib.loraphy2wan.LinkCheckReq(_pkt, /)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.LinkCheckReq'>, <class 'scapy.packet.Packet'>]
class scapy.contrib.loraphy2wan.LoRa(_pkt, /, *, Preamble=0, PHDR=0, PHDR_CRC=0, MType=0, RFU=0, Major=0, DevAddr=[b''], FCtrl=[b''], FCnt=0, FOpts_up=[b''], FOpts_down=[b''], FPort=0, DataPayload=None, Join_Request_Field=[b''], Join_Accept_Field=[b''], Join_Accept_Encrypted=0, ReJoin_Request_Field=[b''], MIC=0, CRC=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.LoRa'>, <class 'scapy.packet.Packet'>]
encrypted = True
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XBitField (LoRa).Preamble>, <XBitField (LoRa).PHDR>, <XBitField (LoRa).PHDR_CRC>, <BitEnumField (MHDR,PHYPayload,LoRa).MType>, <BitField (MHDR,PHYPayload,LoRa).RFU>, <BitField (MHDR,PHYPayload,LoRa).Major>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.MayEnd object>, <scapy.fields.ConditionalField object>]
version = '1.1'
class scapy.contrib.loraphy2wan.MACCommand_down(_pkt, /, *, CID=0, Reset=[b''], LinkCheck=[b''], LinkADR=[b''], DutyCycle=[b''], RXParamSetup=[b''], DevStatusAns=[b''], NewChannel=[b''], RXTimingSetup=[b''], TxParamSetup=[b''], DlChannel=[b''], Rekey=[b''], ADRParamSetup=[b''], DeviceTime=[b''], RejoinParamSetup=[b''])[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.MACCommand_down'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (MACCommand_down).CID>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>]
class scapy.contrib.loraphy2wan.MACCommand_up(_pkt, /, *, CID=0, Reset=[b''], LinkCheck=[b''], LinkADR=[b''], DutyCycle=[b''], RXParamSetup=[b''], DevStatus=[b''], NewChannel=[b''], RXTimingSetup=[b''], TxParamSetup=[b''], DlChannel=[b''], Rekey=[b''], ADRParamSetup=[b''], DeviceTime=[b''], ForceRejoin=[b''], RejoinParamSetup=[b''])[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.MACCommand_up'>, <class 'scapy.packet.Packet'>]
extract_padding(p)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteEnumField (MACCommand_up).CID>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>]
class scapy.contrib.loraphy2wan.MACPayload(_pkt, /, *, DevAddr=[b''], FCtrl=[b''], FCnt=0, FOpts_up=[b''], FOpts_down=[b''], FPort=0, DataPayload=None, Join_Request_Field=[b''], Join_Accept_Field=[b''], Join_Accept_Encrypted=0, ReJoin_Request_Field=[b''])[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.MACPayload'>, <class 'scapy.packet.Packet'>]
eFPort = False
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>]
class scapy.contrib.loraphy2wan.MHDR(_pkt, /, *, MType=0, RFU=0, Major=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.MHDR'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitEnumField (MHDR,PHYPayload,LoRa).MType>, <BitField (MHDR,PHYPayload,LoRa).RFU>, <BitField (MHDR,PHYPayload,LoRa).Major>]
class scapy.contrib.loraphy2wan.NewChannelAns(_pkt, /, *, RFU=0, Dataraterangeok=0, Channelfrequencyok=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.NewChannelAns'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XBitField (NewChannelAns_Status,NewChannelAns).RFU>, <BitField (NewChannelAns_Status,NewChannelAns).Dataraterangeok>, <BitField (NewChannelAns_Status,NewChannelAns).Channelfrequencyok>]
class scapy.contrib.loraphy2wan.NewChannelAns_Status(_pkt, /, *, RFU=0, Dataraterangeok=0, Channelfrequencyok=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.NewChannelAns_Status'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XBitField (NewChannelAns_Status,NewChannelAns).RFU>, <BitField (NewChannelAns_Status,NewChannelAns).Dataraterangeok>, <BitField (NewChannelAns_Status,NewChannelAns).Channelfrequencyok>]
class scapy.contrib.loraphy2wan.NewChannelReq(_pkt, /, *, ChIndex=0, Freq=0, MaxDR=0, MinDR=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.NewChannelReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteField (NewChannelReq).ChIndex>, <X3BytesField (NewChannelReq).Freq>, <XBitField (DrRange,NewChannelReq).MaxDR>, <XBitField (DrRange,NewChannelReq).MinDR>]
class scapy.contrib.loraphy2wan.PHYPayload(_pkt, /, *, MType=0, RFU=0, Major=0, DevAddr=[b''], FCtrl=[b''], FCnt=0, FOpts_up=[b''], FOpts_down=[b''], FPort=0, DataPayload=None, Join_Request_Field=[b''], Join_Accept_Field=[b''], Join_Accept_Encrypted=0, ReJoin_Request_Field=[b''], MIC=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.PHYPayload'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitEnumField (MHDR,PHYPayload,LoRa).MType>, <BitField (MHDR,PHYPayload,LoRa).RFU>, <BitField (MHDR,PHYPayload,LoRa).Major>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.MayEnd object>]
class scapy.contrib.loraphy2wan.RXParamSetupAns(_pkt, /, *, RFU=0, RX1DRoffsetACK=0, RX2DatarateACK=0, ChannelACK=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.RXParamSetupAns'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XBitField (RXParamSetupAns_Status,RXParamSetupAns).RFU>, <BitField (RXParamSetupAns_Status,RXParamSetupAns).RX1DRoffsetACK>, <BitField (RXParamSetupAns_Status,RXParamSetupAns).RX2DatarateACK>, <BitField (RXParamSetupAns_Status,RXParamSetupAns).ChannelACK>]
class scapy.contrib.loraphy2wan.RXParamSetupAns_Status(_pkt, /, *, RFU=0, RX1DRoffsetACK=0, RX2DatarateACK=0, ChannelACK=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.RXParamSetupAns_Status'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XBitField (RXParamSetupAns_Status,RXParamSetupAns).RFU>, <BitField (RXParamSetupAns_Status,RXParamSetupAns).RX1DRoffsetACK>, <BitField (RXParamSetupAns_Status,RXParamSetupAns).RX2DatarateACK>, <BitField (RXParamSetupAns_Status,RXParamSetupAns).ChannelACK>]
class scapy.contrib.loraphy2wan.RXParamSetupReq(_pkt, /, *, OptNeg=0, RX1DRoffset=0, RX2_Data_rate=0, Frequency=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.RXParamSetupReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (DLsettings,RXParamSetupReq,Join_Accept).OptNeg>, <XBitField (DLsettings,RXParamSetupReq,Join_Accept).RX1DRoffset>, <XBitField (DLsettings,RXParamSetupReq,Join_Accept).RX2_Data_rate>, <X3BytesField (RXParamSetupReq).Frequency>]
class scapy.contrib.loraphy2wan.RXTimingSetupAns(_pkt, /)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.RXTimingSetupAns'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = []
class scapy.contrib.loraphy2wan.RXTimingSetupReq(_pkt, /, *, RFU=0, Del=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.RXTimingSetupReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XBitField (RXTimingSetupReq_Settings,RXTimingSetupReq).RFU>, <XBitField (RXTimingSetupReq_Settings,RXTimingSetupReq).Del>]
class scapy.contrib.loraphy2wan.RXTimingSetupReq_Settings(_pkt, /, *, RFU=0, Del=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.RXTimingSetupReq_Settings'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XBitField (RXTimingSetupReq_Settings,RXTimingSetupReq).RFU>, <XBitField (RXTimingSetupReq_Settings,RXTimingSetupReq).Del>]
class scapy.contrib.loraphy2wan.Redundancy(_pkt, /, *, RFU=0, ChMaskCntl=0, NbTrans=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.Redundancy'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<XBitField (Redundancy,LinkADRReq).RFU>, <XBitField (Redundancy,LinkADRReq).ChMaskCntl>, <XBitField (Redundancy,LinkADRReq).NbTrans>]
class scapy.contrib.loraphy2wan.RejoinParamSetupAns(_pkt, /, *, RFU=0, TimeOK=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.RejoinParamSetupAns'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (RejoinParamSetupAns).RFU>, <BitField (RejoinParamSetupAns).TimeOK>]
class scapy.contrib.loraphy2wan.RejoinParamSetupReq(_pkt, /, *, MaxTimeN=0, MaxCountN=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.RejoinParamSetupReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (RejoinParamSetupReq).MaxTimeN>, <BitField (RejoinParamSetupReq).MaxCountN>]
class scapy.contrib.loraphy2wan.RejoinReq(_pkt, /, *, Type=0, NetID=0, DevEUI=b'\x00\x00\x00\x00\x00\x00\x00\x00', RJcount0=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.RejoinReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteField (RejoinReq).Type>, <X3BytesField (RejoinReq).NetID>, <StrFixedLenField (RejoinReq).DevEUI>, <XShortField (RejoinReq).RJcount0>]
class scapy.contrib.loraphy2wan.RekeyConf(_pkt, /, *, ServerVersion=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.RekeyConf'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteField (RekeyConf).ServerVersion>]
class scapy.contrib.loraphy2wan.RekeyInd(_pkt, /, *, LoRaWANversion=[b''])[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.RekeyInd'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<PacketListField (RekeyInd).LoRaWANversion>]
class scapy.contrib.loraphy2wan.ResetConf(_pkt, /, *, Serv_version=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.ResetConf'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteField (ResetConf).Serv_version>]
class scapy.contrib.loraphy2wan.ResetInd(_pkt, /, *, Dev_version=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.ResetInd'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ByteField (ResetInd).Dev_version>]
class scapy.contrib.loraphy2wan.TxParamSetupAns(_pkt, /)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.TxParamSetupAns'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = []
class scapy.contrib.loraphy2wan.TxParamSetupReq(_pkt, /, *, RFU=0, DownlinkDwellTime=0, UplinkDwellTime=0, MaxEIRP=0)[source]

Bases: Packet

aliastypes = [<class 'scapy.contrib.loraphy2wan.TxParamSetupReq'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (EIRP_DwellTime,TxParamSetupReq).RFU>, <BitEnumField (EIRP_DwellTime,TxParamSetupReq).DownlinkDwellTime>, <BitEnumField (EIRP_DwellTime,TxParamSetupReq).UplinkDwellTime>, <BitEnumField (EIRP_DwellTime,TxParamSetupReq).MaxEIRP>]
scapy.contrib.loraphy2wan.dpload_type(pkt)[source]