Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
MinimouseSrc/LoraWanProcess.cpp@1:eda561b01daf, 2017-12-18 (annotated)
- Committer:
- fholin
- Date:
- Mon Dec 18 16:31:11 2017 +0000
- Revision:
- 1:eda561b01daf
- Parent:
- 0:2325d1d28df3
inline with github repository : ; https://github.com/LoRaWanMiniMouse/Mini-Mouse.git
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fholin | 0:2325d1d28df3 | 1 | /* |
fholin | 0:2325d1d28df3 | 2 | |
fholin | 0:2325d1d28df3 | 3 | __ __ _ _ |
fholin | 0:2325d1d28df3 | 4 | | \/ (_) (_) |
fholin | 0:2325d1d28df3 | 5 | | \ / |_ _ __ _ _ __ ___ ___ _ _ ___ ___ |
fholin | 0:2325d1d28df3 | 6 | | |\/| | | '_ \| | '_ ` _ \ / _ \| | | / __|/ _ \ |
fholin | 0:2325d1d28df3 | 7 | | | | | | | | | | | | | | | (_) | |_| \__ \ __/ |
fholin | 0:2325d1d28df3 | 8 | |_| |_|_|_| |_|_|_| |_| |_|\___/ \__,_|___/\___| |
fholin | 0:2325d1d28df3 | 9 | |
fholin | 0:2325d1d28df3 | 10 | |
fholin | 0:2325d1d28df3 | 11 | Description : LoraWanProcess Class definition. |
fholin | 0:2325d1d28df3 | 12 | |
fholin | 0:2325d1d28df3 | 13 | |
fholin | 0:2325d1d28df3 | 14 | License : Revised BSD License, see LICENSE.TXT file include in the project |
fholin | 0:2325d1d28df3 | 15 | |
fholin | 0:2325d1d28df3 | 16 | Maintainer : Fabien Holin (SEMTECH) |
fholin | 0:2325d1d28df3 | 17 | */ |
fholin | 0:2325d1d28df3 | 18 | #include "LoraWanProcess.h" |
fholin | 0:2325d1d28df3 | 19 | #include "ApiRtc.h" |
fholin | 0:2325d1d28df3 | 20 | #include "utilities.h" |
fholin | 1:eda561b01daf | 21 | Serial pcf( SERIAL_TX, SERIAL_RX ); |
fholin | 0:2325d1d28df3 | 22 | |
fholin | 0:2325d1d28df3 | 23 | LoraWanObjet::LoraWanObjet( PinName interrupt ):packet( interrupt ){ |
fholin | 0:2325d1d28df3 | 24 | StateLoraWanProcess=LWPSTATE_IDLE; |
fholin | 0:2325d1d28df3 | 25 | packet.MajorBits= LORAWANR1; |
fholin | 0:2325d1d28df3 | 26 | }; |
fholin | 0:2325d1d28df3 | 27 | LoraWanObjet::~LoraWanObjet() { |
fholin | 0:2325d1d28df3 | 28 | }; |
fholin | 0:2325d1d28df3 | 29 | /************************************************************************************************/ |
fholin | 0:2325d1d28df3 | 30 | /* Public Methods */ |
fholin | 0:2325d1d28df3 | 31 | /************************************************************************************************/ |
fholin | 0:2325d1d28df3 | 32 | |
fholin | 0:2325d1d28df3 | 33 | |
fholin | 0:2325d1d28df3 | 34 | /***********************************************************************************************/ |
fholin | 0:2325d1d28df3 | 35 | /* LoraWanProcess Method */ |
fholin | 0:2325d1d28df3 | 36 | /***********************************************************************************************/ |
fholin | 0:2325d1d28df3 | 37 | |
fholin | 0:2325d1d28df3 | 38 | eLoraWan_Process_States LoraWanObjet::LoraWanProcess( uint8_t * AvailableRxPacket ) { |
fholin | 0:2325d1d28df3 | 39 | |
fholin | 0:2325d1d28df3 | 40 | *AvailableRxPacket = NOLORARXPACKETAVAILABLE; //@note AvailableRxPacket should be set to "yes" only in Last state before to return to LWPSTATE_IDLE* |
fholin | 0:2325d1d28df3 | 41 | switch ( StateLoraWanProcess ) { |
fholin | 0:2325d1d28df3 | 42 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 43 | /* STATE IDLE */ |
fholin | 0:2325d1d28df3 | 44 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 45 | case LWPSTATE_IDLE : |
fholin | 0:2325d1d28df3 | 46 | break; |
fholin | 0:2325d1d28df3 | 47 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 48 | /* STATE TX */ |
fholin | 0:2325d1d28df3 | 49 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 50 | case LWPSTATE_SEND: |
fholin | 0:2325d1d28df3 | 51 | switch ( GetRadioState( ) ) { |
fholin | 0:2325d1d28df3 | 52 | |
fholin | 0:2325d1d28df3 | 53 | case RADIOSTATE_IDLE : |
fholin | 0:2325d1d28df3 | 54 | packet.ConfigureRadioAndSend( ); |
fholin | 0:2325d1d28df3 | 55 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 56 | pcf.printf( " * Send Payload *\n " ); |
fholin | 0:2325d1d28df3 | 57 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 58 | break ; |
fholin | 0:2325d1d28df3 | 59 | |
fholin | 0:2325d1d28df3 | 60 | case RADIOSTATE_TXFINISHED : |
fholin | 0:2325d1d28df3 | 61 | packet.ConfigureRadioForRx1 ( ); |
fholin | 0:2325d1d28df3 | 62 | packet.ConfigureTimerForRx ( RX1 ); |
fholin | 0:2325d1d28df3 | 63 | StateLoraWanProcess = LWPSTATE_RX1; |
fholin | 0:2325d1d28df3 | 64 | break ; |
fholin | 0:2325d1d28df3 | 65 | |
fholin | 0:2325d1d28df3 | 66 | default : |
fholin | 0:2325d1d28df3 | 67 | break; |
fholin | 0:2325d1d28df3 | 68 | } |
fholin | 0:2325d1d28df3 | 69 | break; |
fholin | 0:2325d1d28df3 | 70 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 71 | /* STATE RX1 */ |
fholin | 0:2325d1d28df3 | 72 | /* RX1DELAY is defined in ms */ |
fholin | 0:2325d1d28df3 | 73 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 74 | case LWPSTATE_RX1: |
fholin | 0:2325d1d28df3 | 75 | if ( GetRadioState( ) == RADIOSTATE_RX1FINISHED ) { |
fholin | 0:2325d1d28df3 | 76 | if ( GetRadioIrqFlag ( ) == RECEIVEPACKETIRQFLAG) { |
fholin | 0:2325d1d28df3 | 77 | //@todo process downlink |
fholin | 0:2325d1d28df3 | 78 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 79 | pcf.printf( " * Receive a downlink RX1 *\n " ); |
fholin | 0:2325d1d28df3 | 80 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 81 | StateLoraWanProcess = LWPSTATE_PROCESSDOWNLINK; |
fholin | 0:2325d1d28df3 | 82 | } else { // So rxtimeout case @note manage error case |
fholin | 0:2325d1d28df3 | 83 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 84 | pcf.printf( " * RX1 Timeout *\n " ); |
fholin | 0:2325d1d28df3 | 85 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 86 | packet.ConfigureRadioForRx2 ( ); |
fholin | 0:2325d1d28df3 | 87 | packet.ConfigureTimerForRx ( RX2 ); |
fholin | 0:2325d1d28df3 | 88 | StateLoraWanProcess = LWPSTATE_RX2; |
fholin | 0:2325d1d28df3 | 89 | } |
fholin | 0:2325d1d28df3 | 90 | } |
fholin | 0:2325d1d28df3 | 91 | break; |
fholin | 0:2325d1d28df3 | 92 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 93 | /* STATE RX2 */ |
fholin | 0:2325d1d28df3 | 94 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 95 | case LWPSTATE_RX2: |
fholin | 0:2325d1d28df3 | 96 | |
fholin | 0:2325d1d28df3 | 97 | if ( GetRadioState( ) == RADIOSTATE_IDLE ) { |
fholin | 0:2325d1d28df3 | 98 | if ( GetRadioIrqFlag ( ) == RECEIVEPACKETIRQFLAG) { |
fholin | 0:2325d1d28df3 | 99 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 100 | pcf.printf( " * Receive a downlink RX2 *\n " ); |
fholin | 0:2325d1d28df3 | 101 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 102 | StateLoraWanProcess = LWPSTATE_PROCESSDOWNLINK; //@note to be discuss if it is necessary to create a dedicated state? |
fholin | 0:2325d1d28df3 | 103 | } else { |
fholin | 0:2325d1d28df3 | 104 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 105 | pcf.printf( " * RX2 Timeout *\n " ); |
fholin | 0:2325d1d28df3 | 106 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 107 | StateLoraWanProcess = LWPSTATE_UPDATEMAC; |
fholin | 0:2325d1d28df3 | 108 | } |
fholin | 0:2325d1d28df3 | 109 | } |
fholin | 0:2325d1d28df3 | 110 | break; |
fholin | 0:2325d1d28df3 | 111 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 112 | /* STATE PROCESS DOWNLINK */ |
fholin | 0:2325d1d28df3 | 113 | /* At this step crc is valid */ |
fholin | 0:2325d1d28df3 | 114 | /* Step 1 : CheckRxPayloadLength */ |
fholin | 0:2325d1d28df3 | 115 | /* Step 2 : ExtractRxMhdr */ |
fholin | 0:2325d1d28df3 | 116 | /* Step 3 : ExtractRxFhdr */ |
fholin | 0:2325d1d28df3 | 117 | /* Step 4 : Check Mic */ |
fholin | 0:2325d1d28df3 | 118 | /* Step 5 : Decrypt Payload */ |
fholin | 0:2325d1d28df3 | 119 | /* Step 6 : Extract Fport to select Between App/nwm Payload */ |
fholin | 0:2325d1d28df3 | 120 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 121 | case LWPSTATE_PROCESSDOWNLINK: |
fholin | 0:2325d1d28df3 | 122 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 123 | pcf.printf( " * Process Downlink *\n " ); |
fholin | 0:2325d1d28df3 | 124 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 125 | ValidRxPacket = packet.DecodeRxFrame( ); // return NOVALIDRXPACKET or USERRXPACKET or NWKRXPACKET or JOINACCEPTPACKET. |
fholin | 0:2325d1d28df3 | 126 | StateLoraWanProcess = LWPSTATE_UPDATEMAC; |
fholin | 0:2325d1d28df3 | 127 | break; |
fholin | 0:2325d1d28df3 | 128 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 129 | /* STATE UPDATE MAC */ |
fholin | 0:2325d1d28df3 | 130 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 131 | case LWPSTATE_UPDATEMAC: |
fholin | 0:2325d1d28df3 | 132 | packet.Phy.StateRadioProcess = RADIOSTATE_IDLE; |
fholin | 0:2325d1d28df3 | 133 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 134 | pcf.printf( " * UpdateMac *\n " ); |
fholin | 0:2325d1d28df3 | 135 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 136 | if ( ValidRxPacket == JOINACCEPTPACKET){ |
fholin | 0:2325d1d28df3 | 137 | packet.UpdateJoinProcedure( ); |
fholin | 0:2325d1d28df3 | 138 | } |
fholin | 1:eda561b01daf | 139 | if ( ( ValidRxPacket == NWKRXPACKET) || ( ValidRxPacket == USERRX_FOPTSPACKET) ) { |
fholin | 0:2325d1d28df3 | 140 | packet.ParseManagementPacket( ); |
fholin | 0:2325d1d28df3 | 141 | } |
fholin | 0:2325d1d28df3 | 142 | packet.UpdateMacLayer(); |
fholin | 0:2325d1d28df3 | 143 | *AvailableRxPacket = packet.AvailableRxPacketForUser; |
fholin | 0:2325d1d28df3 | 144 | if ( ( packet.IsFrameToSend == NWKFRAME_TOSEND ) ) {// @note ack send during the next tx|| ( packet.IsFrameToSend == USERACK_TOSEND ) ) { |
fholin | 0:2325d1d28df3 | 145 | RtcTargetTimer = RtcGetTimeSecond( ) + randr( 5, 25 ); //@note RtcGetTime in s so no wrap before 136 year since 1970 discuss wait between 5s and 25s |
fholin | 0:2325d1d28df3 | 146 | StateLoraWanProcess = LWPSTATE_TXWAIT; |
fholin | 0:2325d1d28df3 | 147 | } else { |
fholin | 0:2325d1d28df3 | 148 | RadioReset ( ) ; |
fholin | 0:2325d1d28df3 | 149 | StateLoraWanProcess = LWPSTATE_IDLE; |
fholin | 0:2325d1d28df3 | 150 | } |
fholin | 0:2325d1d28df3 | 151 | break; |
fholin | 0:2325d1d28df3 | 152 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 153 | /* STATE TXWAIT MAC */ |
fholin | 0:2325d1d28df3 | 154 | /************************************************************************************/ |
fholin | 0:2325d1d28df3 | 155 | case LWPSTATE_TXWAIT: |
fholin | 0:2325d1d28df3 | 156 | |
fholin | 0:2325d1d28df3 | 157 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 158 | pcf.printf( " * TXWAIT MAC *\n " ); |
fholin | 0:2325d1d28df3 | 159 | pcf.printf( " **************************\n " ); |
fholin | 0:2325d1d28df3 | 160 | if ( RtcGetTimeSecond( ) > RtcTargetTimer) { |
fholin | 0:2325d1d28df3 | 161 | StateLoraWanProcess = LWPSTATE_SEND; //@note the frame have already been prepare in Upadate Mac Layer |
fholin | 0:2325d1d28df3 | 162 | } |
fholin | 0:2325d1d28df3 | 163 | break; |
fholin | 0:2325d1d28df3 | 164 | |
fholin | 0:2325d1d28df3 | 165 | default: |
fholin | 0:2325d1d28df3 | 166 | pcf.printf( " Illegal state\n " ); |
fholin | 0:2325d1d28df3 | 167 | break; |
fholin | 0:2325d1d28df3 | 168 | } |
fholin | 0:2325d1d28df3 | 169 | return ( StateLoraWanProcess ); |
fholin | 0:2325d1d28df3 | 170 | } |
fholin | 0:2325d1d28df3 | 171 | |
fholin | 0:2325d1d28df3 | 172 | /***********************************************************************************************/ |
fholin | 0:2325d1d28df3 | 173 | /* End Of LoraWanProcess Method */ |
fholin | 0:2325d1d28df3 | 174 | /***********************************************************************************************/ |
fholin | 0:2325d1d28df3 | 175 | |
fholin | 0:2325d1d28df3 | 176 | |
fholin | 0:2325d1d28df3 | 177 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 178 | /* LoraWan Join Method */ |
fholin | 0:2325d1d28df3 | 179 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 180 | uint8_t LoraWanObjet::Join ( void ) { |
fholin | 0:2325d1d28df3 | 181 | packet.BuildJoinLoraFrame( ); |
fholin | 0:2325d1d28df3 | 182 | packet.MacRx1Delay = RX1DELAYJOIN; |
fholin | 0:2325d1d28df3 | 183 | packet.MacTxSf = 12; |
fholin | 0:2325d1d28df3 | 184 | packet.MacRx2Sf = 12; |
fholin | 0:2325d1d28df3 | 185 | StateLoraWanProcess = LWPSTATE_SEND; |
fholin | 0:2325d1d28df3 | 186 | return( StateLoraWanProcess ); |
fholin | 0:2325d1d28df3 | 187 | }; |
fholin | 0:2325d1d28df3 | 188 | |
fholin | 0:2325d1d28df3 | 189 | |
fholin | 0:2325d1d28df3 | 190 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 191 | /* LoraWan IsJoined Method */ |
fholin | 0:2325d1d28df3 | 192 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 193 | uint8_t LoraWanObjet::IsJoined( void ) { |
fholin | 0:2325d1d28df3 | 194 | uint8_t status; |
fholin | 0:2325d1d28df3 | 195 | pcf.printf( " New DevAddr = 0x%.8x \n",packet.DevAddr); |
fholin | 0:2325d1d28df3 | 196 | status = packet.JoinedStatus; |
fholin | 0:2325d1d28df3 | 197 | return ( status ); |
fholin | 0:2325d1d28df3 | 198 | } |
fholin | 0:2325d1d28df3 | 199 | |
fholin | 0:2325d1d28df3 | 200 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 201 | /* LoraWan SendPayload Method */ |
fholin | 0:2325d1d28df3 | 202 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 203 | eLoraWan_Process_States LoraWanObjet::SendPayload ( uint8_t fPort, const uint8_t* dataIn, const uint16_t sizeIn, uint8_t PacketType ) { |
fholin | 0:2325d1d28df3 | 204 | |
fholin | 0:2325d1d28df3 | 205 | if ( StateLoraWanProcess != LWPSTATE_IDLE ) { |
fholin | 0:2325d1d28df3 | 206 | return ( LWPSTATE_ERROR ); |
fholin | 0:2325d1d28df3 | 207 | } |
fholin | 0:2325d1d28df3 | 208 | RadioReset ( ) ; |
fholin | 0:2325d1d28df3 | 209 | CopyUserPayload( dataIn,sizeIn ); |
fholin | 0:2325d1d28df3 | 210 | packet.UserPayloadSize = sizeIn; |
fholin | 0:2325d1d28df3 | 211 | packet.fPort = fPort; |
fholin | 0:2325d1d28df3 | 212 | packet.MType = PacketType; |
fholin | 0:2325d1d28df3 | 213 | packet.BuildTxLoraFrame( ); |
fholin | 0:2325d1d28df3 | 214 | packet.EncryptTxFrame( ); |
fholin | 0:2325d1d28df3 | 215 | StateLoraWanProcess = LWPSTATE_SEND; |
fholin | 0:2325d1d28df3 | 216 | return( StateLoraWanProcess ); |
fholin | 0:2325d1d28df3 | 217 | }; |
fholin | 0:2325d1d28df3 | 218 | |
fholin | 0:2325d1d28df3 | 219 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 220 | /* LoraWan Receive Method */ |
fholin | 0:2325d1d28df3 | 221 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 222 | uint8_t LoraWanObjet::ReceivePayload ( uint8_t* UserRxFport, uint8_t* UserRxPayload, uint8_t* UserRxPayloadSize ) { |
fholin | 0:2325d1d28df3 | 223 | int status = OKLORAWAN; |
fholin | 0:2325d1d28df3 | 224 | if (packet.AvailableRxPacketForUser == NOLORARXPACKETAVAILABLE) { |
fholin | 0:2325d1d28df3 | 225 | status = ERRORLORAWAN ; |
fholin | 0:2325d1d28df3 | 226 | } else { |
fholin | 0:2325d1d28df3 | 227 | *UserRxPayloadSize = packet.MacRxPayloadSize; |
fholin | 0:2325d1d28df3 | 228 | *UserRxFport = packet.FportRx; |
fholin | 0:2325d1d28df3 | 229 | memcpy( UserRxPayload, &packet.MacRxPayload[0], packet.MacRxPayloadSize); |
fholin | 0:2325d1d28df3 | 230 | packet.AvailableRxPacketForUser = NOLORARXPACKETAVAILABLE ; |
fholin | 0:2325d1d28df3 | 231 | } |
fholin | 0:2325d1d28df3 | 232 | return( status ); |
fholin | 0:2325d1d28df3 | 233 | }; |
fholin | 0:2325d1d28df3 | 234 | |
fholin | 0:2325d1d28df3 | 235 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 236 | /* LoraWan AdrModeSelect Method */ |
fholin | 0:2325d1d28df3 | 237 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 238 | void LoraWanObjet::SetDataRateStrategy( eDataRateStrategy adrModeSelect ) { |
fholin | 0:2325d1d28df3 | 239 | packet.AdrModeSelect = adrModeSelect; |
fholin | 0:2325d1d28df3 | 240 | }; |
fholin | 0:2325d1d28df3 | 241 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 242 | /* LoraWan TryToJoin Method */ |
fholin | 0:2325d1d28df3 | 243 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 244 | uint8_t LoraWanObjet::TryToJoin ( void ) { |
fholin | 0:2325d1d28df3 | 245 | //@NOTE NOT YET IMPLEMENTED |
fholin | 0:2325d1d28df3 | 246 | } |
fholin | 0:2325d1d28df3 | 247 | |
fholin | 0:2325d1d28df3 | 248 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 249 | /* LoraWan GetNextMaxPayloadLength Method */ |
fholin | 0:2325d1d28df3 | 250 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 251 | uint32_t LoraWanObjet::GetNextMaxPayloadLength ( void ) { |
fholin | 0:2325d1d28df3 | 252 | //@NOTE NOT YET IMPLEMENTED |
fholin | 0:2325d1d28df3 | 253 | } |
fholin | 0:2325d1d28df3 | 254 | |
fholin | 0:2325d1d28df3 | 255 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 256 | /* LoraWan GetDevAddr Method */ |
fholin | 0:2325d1d28df3 | 257 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 258 | uint32_t LoraWanObjet::GetDevAddr ( void ) { |
fholin | 0:2325d1d28df3 | 259 | //@NOTE NOT YET IMPLEMENTED |
fholin | 0:2325d1d28df3 | 260 | } |
fholin | 0:2325d1d28df3 | 261 | |
fholin | 0:2325d1d28df3 | 262 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 263 | /* LoraWan GetNextPower Method */ |
fholin | 0:2325d1d28df3 | 264 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 265 | uint8_t LoraWanObjet::GetNextPower ( void ) { |
fholin | 0:2325d1d28df3 | 266 | //@NOTE NOT YET IMPLEMENTED |
fholin | 0:2325d1d28df3 | 267 | } |
fholin | 0:2325d1d28df3 | 268 | |
fholin | 0:2325d1d28df3 | 269 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 270 | /* LoraWan GetNextDataRate Method */ |
fholin | 0:2325d1d28df3 | 271 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 272 | uint8_t LoraWanObjet::GetNextDataRate ( void ) { |
fholin | 0:2325d1d28df3 | 273 | //@NOTE NOT YET IMPLEMENTED |
fholin | 0:2325d1d28df3 | 274 | } |
fholin | 0:2325d1d28df3 | 275 | |
fholin | 0:2325d1d28df3 | 276 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 277 | /* LoraWan GetLorawanProcessState Method */ |
fholin | 0:2325d1d28df3 | 278 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 279 | uint8_t LoraWanObjet::GetLorawanProcessState ( void ) { |
fholin | 0:2325d1d28df3 | 280 | //@NOTE NOT YET IMPLEMENTED |
fholin | 0:2325d1d28df3 | 281 | } |
fholin | 0:2325d1d28df3 | 282 | |
fholin | 0:2325d1d28df3 | 283 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 284 | /* LoraWan RestoreContext Method */ |
fholin | 0:2325d1d28df3 | 285 | /**************************************************/ |
fholin | 0:2325d1d28df3 | 286 | void LoraWanObjet::RestoreContext ( void ) { |
fholin | 0:2325d1d28df3 | 287 | packet.LoadFromFlash ( ); |
fholin | 0:2325d1d28df3 | 288 | }; |
fholin | 0:2325d1d28df3 | 289 | |
fholin | 0:2325d1d28df3 | 290 | /************************************************************************************************/ |
fholin | 0:2325d1d28df3 | 291 | /* Private Methods */ |
fholin | 0:2325d1d28df3 | 292 | /************************************************************************************************/ |
fholin | 0:2325d1d28df3 | 293 | void LoraWanObjet::CopyUserPayload( const uint8_t* dataIn, const uint16_t sizeIn ) { |
fholin | 0:2325d1d28df3 | 294 | memcpy( &packet.Phy.TxPhyPayload[FHDROFFSET], dataIn, sizeIn ); |
fholin | 0:2325d1d28df3 | 295 | }; |
fholin | 0:2325d1d28df3 | 296 | |
fholin | 0:2325d1d28df3 | 297 | uint8_t LoraWanObjet::GetStateTimer(void) { |
fholin | 0:2325d1d28df3 | 298 | return (packet.StateTimer); |
fholin | 0:2325d1d28df3 | 299 | } |
fholin | 0:2325d1d28df3 | 300 | |
fholin | 0:2325d1d28df3 | 301 | uint8_t LoraWanObjet::GetRadioState ( void ) { |
fholin | 0:2325d1d28df3 | 302 | return packet.Phy.GetRadioState( ); |
fholin | 0:2325d1d28df3 | 303 | }; |
fholin | 0:2325d1d28df3 | 304 | |
fholin | 0:2325d1d28df3 | 305 | uint8_t LoraWanObjet::GetRadioIrqFlag ( void ) { |
fholin | 0:2325d1d28df3 | 306 | return packet.Phy.RegIrqFlag; |
fholin | 0:2325d1d28df3 | 307 | }; |
fholin | 0:2325d1d28df3 | 308 | void LoraWanObjet::RadioReset ( void ) { |
fholin | 0:2325d1d28df3 | 309 | //NOT YET IMPLEMENTED |
fholin | 0:2325d1d28df3 | 310 | } |