LoRaWAN MAC layer implementation
Fork of LoRaWAN-lib by
Diff: LoRaMac.cpp
- Revision:
- 4:28021ec4f3ae
- Parent:
- 3:b9d87593a8ae
--- a/LoRaMac.cpp Mon Mar 14 09:09:54 2016 +0000 +++ b/LoRaMac.cpp Mon May 09 08:06:09 2016 +0000 @@ -2324,7 +2324,7 @@ fCtrl.Bits.Ack = false; fCtrl.Bits.AdrAckReq = false; fCtrl.Bits.Adr = AdrCtrlOn; - + // Prepare the frame status = PrepareFrame( macHdr, &fCtrl, fPort, fBuffer, fBufferSize ); @@ -2338,7 +2338,7 @@ McpsConfirm.NbRetries = 0; McpsConfirm.AckReceived = false; McpsConfirm.UpLinkCounter = UpLinkCounter; - + status = ScheduleTx( ); return status; @@ -2374,10 +2374,12 @@ if( dutyCycleTimeOff == 0 ) { // Try to send now + printf("frame sent right away .. \r\n"); return SendFrameOnChannel( Channels[Channel] ); } else { + printf("frame was scheduled .. \r\n"); // Send later - prepare timer LoRaMacState |= MAC_TX_DELAYED; TimerSetValue( &TxDelayedTimer, dutyCycleTimeOff ); @@ -2443,12 +2445,10 @@ } fCtrl->Bits.AdrAckReq = AdrNextDr( fCtrl->Bits.Adr, true, &ChannelsDatarate ); - if( ValidatePayloadLength( fBufferSize, ChannelsDatarate, MacCommandsBufferIndex ) == false ) { return LORAMAC_STATUS_LENGTH_ERROR; } - RxWindow1Delay = ReceiveDelay1 - RADIO_WAKEUP_TIME; RxWindow2Delay = ReceiveDelay2 - RADIO_WAKEUP_TIME; @@ -2473,7 +2473,6 @@ if( ( MacCommandsBufferIndex <= LORA_MAC_COMMAND_MAX_LENGTH ) && ( MacCommandsInNextTx == true ) ) { fCtrl->Bits.FOptsLen += MacCommandsBufferIndex; - // Update FCtrl field with new value of OptionsLength LoRaMacBuffer[0x05] = fCtrl->Value; for( i = 0; i < MacCommandsBufferIndex; i++ ) @@ -2493,7 +2492,6 @@ } MacCommandsInNextTx = false; MacCommandsBufferIndex = 0; - if( ( payload != NULL ) && ( payloadSize > 0 ) ) { LoRaMacBuffer[pktHeaderLen++] = framePort; @@ -2516,9 +2514,7 @@ LoRaMacBuffer[LoRaMacBufferPktLen + 1] = ( mic >> 8 ) & 0xFF; LoRaMacBuffer[LoRaMacBufferPktLen + 2] = ( mic >> 16 ) & 0xFF; LoRaMacBuffer[LoRaMacBufferPktLen + 3] = ( mic >> 24 ) & 0xFF; - LoRaMacBufferPktLen += LORAMAC_MFR_LEN; - break; case FRAME_TYPE_PROPRIETARY: if( ( fBuffer != NULL ) && ( fBufferSize > 0 ) )