LR Initial Publish

Dependencies:   X_NUCLEO_IKS01A2 driver_mbed_TH02 mbed LoRaWAN-lib-v1_0_1 SX1272Lib

Fork of Training-Aug2018-SX1272-X-NUCLEO-IKS01A2 by Uttam Bhat

Committer:
ubhat
Date:
Thu Apr 06 21:59:50 2017 +0000
Revision:
0:6cc76d70e2a1
LoRaWAN SX1272 Application

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ubhat 0:6cc76d70e2a1 1 /*
ubhat 0:6cc76d70e2a1 2 / _____) _ | |
ubhat 0:6cc76d70e2a1 3 ( (____ _____ ____ _| |_ _____ ____| |__
ubhat 0:6cc76d70e2a1 4 \____ \| ___ | (_ _) ___ |/ ___) _ \
ubhat 0:6cc76d70e2a1 5 _____) ) ____| | | || |_| ____( (___| | | |
ubhat 0:6cc76d70e2a1 6 (______/|_____)_|_|_| \__)_____)\____)_| |_|
ubhat 0:6cc76d70e2a1 7 (C)2015 Semtech
ubhat 0:6cc76d70e2a1 8
ubhat 0:6cc76d70e2a1 9 Description: Compliance Test for LoRaWAN End-Device
ubhat 0:6cc76d70e2a1 10
ubhat 0:6cc76d70e2a1 11 License: Revised BSD License, see LICENSE.TXT file include in the project
ubhat 0:6cc76d70e2a1 12
ubhat 0:6cc76d70e2a1 13 Maintainer: Uttam Bhat
ubhat 0:6cc76d70e2a1 14 */
ubhat 0:6cc76d70e2a1 15
ubhat 0:6cc76d70e2a1 16 #include "ComplianceTest.h"
ubhat 0:6cc76d70e2a1 17
ubhat 0:6cc76d70e2a1 18
ubhat 0:6cc76d70e2a1 19 void PrepareComplianceTestFrame( McpsIndication_t *McpsIndication )
ubhat 0:6cc76d70e2a1 20 {
ubhat 0:6cc76d70e2a1 21 uint8_t *pData;
ubhat 0:6cc76d70e2a1 22
ubhat 0:6cc76d70e2a1 23 pData = &McpsIndication->Buffer[0];
ubhat 0:6cc76d70e2a1 24
ubhat 0:6cc76d70e2a1 25 if( ComplianceTest.Running == false )
ubhat 0:6cc76d70e2a1 26 {
ubhat 0:6cc76d70e2a1 27 // Check compliance test enable command (i)
ubhat 0:6cc76d70e2a1 28 if( ( McpsIndication->BufferSize == 4 ) &&
ubhat 0:6cc76d70e2a1 29 ( pData[0] == 0x01 ) && ( pData[1] == 0x01 ) && ( pData[2] == 0x01 ) && (pData[3] == 0x01 ) )
ubhat 0:6cc76d70e2a1 30 {
ubhat 0:6cc76d70e2a1 31 AppPort = 224;
ubhat 0:6cc76d70e2a1 32 AppDataSize = 2;
ubhat 0:6cc76d70e2a1 33 ComplianceTest.DownLinkCounter = 0;
ubhat 0:6cc76d70e2a1 34 ComplianceTest.LinkCheck = false;
ubhat 0:6cc76d70e2a1 35 ComplianceTest.DemodMargin = 0;
ubhat 0:6cc76d70e2a1 36 ComplianceTest.NbGateways = 0;
ubhat 0:6cc76d70e2a1 37 ComplianceTest.Running = true;
ubhat 0:6cc76d70e2a1 38 ComplianceTest.State = 1;
ubhat 0:6cc76d70e2a1 39 }
ubhat 0:6cc76d70e2a1 40 }
ubhat 0:6cc76d70e2a1 41 else
ubhat 0:6cc76d70e2a1 42 {
ubhat 0:6cc76d70e2a1 43 ComplianceTest.State = pData[0];
ubhat 0:6cc76d70e2a1 44 switch( ComplianceTest.State )
ubhat 0:6cc76d70e2a1 45 {
ubhat 0:6cc76d70e2a1 46 case 0: // Check compliance test disable command (ii)
ubhat 0:6cc76d70e2a1 47 IsTxConfirmed = LORAWAN_CONFIRMED_MSG_ON;
ubhat 0:6cc76d70e2a1 48 AppPort = LORAWAN_APP_PORT;
ubhat 0:6cc76d70e2a1 49 AppDataSize = LORAWAN_APP_DATA_SIZE;
ubhat 0:6cc76d70e2a1 50 ComplianceTest.DownLinkCounter = 0;
ubhat 0:6cc76d70e2a1 51 ComplianceTest.Running = false;
ubhat 0:6cc76d70e2a1 52
ubhat 0:6cc76d70e2a1 53 MibRequestConfirm_t mibReq;
ubhat 0:6cc76d70e2a1 54 mibReq.Type = MIB_ADR;
ubhat 0:6cc76d70e2a1 55 mibReq.Param.AdrEnable = LORAWAN_ADR_ON;
ubhat 0:6cc76d70e2a1 56 LoRaMacMibSetRequestConfirm( &mibReq );
ubhat 0:6cc76d70e2a1 57 break;
ubhat 0:6cc76d70e2a1 58 case 1: // (iii, iv)
ubhat 0:6cc76d70e2a1 59 AppDataSize = 2;
ubhat 0:6cc76d70e2a1 60 break;
ubhat 0:6cc76d70e2a1 61 case 2: // Enable confirmed messages (v)
ubhat 0:6cc76d70e2a1 62 IsTxConfirmed = true;
ubhat 0:6cc76d70e2a1 63 ComplianceTest.State = 1;
ubhat 0:6cc76d70e2a1 64 break;
ubhat 0:6cc76d70e2a1 65 case 3: // Disable confirmed messages (vi)
ubhat 0:6cc76d70e2a1 66 IsTxConfirmed = false;
ubhat 0:6cc76d70e2a1 67 ComplianceTest.State = 1;
ubhat 0:6cc76d70e2a1 68 break;
ubhat 0:6cc76d70e2a1 69 case 4: // (vii)
ubhat 0:6cc76d70e2a1 70 AppDataSize = McpsIndication->BufferSize;
ubhat 0:6cc76d70e2a1 71
ubhat 0:6cc76d70e2a1 72 AppData[0] = 4;
ubhat 0:6cc76d70e2a1 73 for( uint8_t i = 1; i < AppDataSize; i++ )
ubhat 0:6cc76d70e2a1 74 {
ubhat 0:6cc76d70e2a1 75 AppData[i] = McpsIndication->Buffer[i] + 1;
ubhat 0:6cc76d70e2a1 76 }
ubhat 0:6cc76d70e2a1 77 break;
ubhat 0:6cc76d70e2a1 78 case 5: // (viii)
ubhat 0:6cc76d70e2a1 79 {
ubhat 0:6cc76d70e2a1 80 MlmeReq_t mlmeReq;
ubhat 0:6cc76d70e2a1 81 mlmeReq.Type = MLME_LINK_CHECK;
ubhat 0:6cc76d70e2a1 82 LoRaMacMlmeRequest( &mlmeReq );
ubhat 0:6cc76d70e2a1 83 }
ubhat 0:6cc76d70e2a1 84 break;
ubhat 0:6cc76d70e2a1 85 default:
ubhat 0:6cc76d70e2a1 86 break;
ubhat 0:6cc76d70e2a1 87 }
ubhat 0:6cc76d70e2a1 88 }
ubhat 0:6cc76d70e2a1 89 }
ubhat 0:6cc76d70e2a1 90
ubhat 0:6cc76d70e2a1 91 void RunComplianceTest( void )
ubhat 0:6cc76d70e2a1 92 {
ubhat 0:6cc76d70e2a1 93 if( ComplianceTest.LinkCheck == true )
ubhat 0:6cc76d70e2a1 94 {
ubhat 0:6cc76d70e2a1 95 ComplianceTest.LinkCheck = false;
ubhat 0:6cc76d70e2a1 96 AppDataSize = 3;
ubhat 0:6cc76d70e2a1 97 AppData[0] = 5;
ubhat 0:6cc76d70e2a1 98 AppData[1] = ComplianceTest.DemodMargin;
ubhat 0:6cc76d70e2a1 99 AppData[2] = ComplianceTest.NbGateways;
ubhat 0:6cc76d70e2a1 100 ComplianceTest.State = 1;
ubhat 0:6cc76d70e2a1 101 }
ubhat 0:6cc76d70e2a1 102 else
ubhat 0:6cc76d70e2a1 103 {
ubhat 0:6cc76d70e2a1 104 switch( ComplianceTest.State )
ubhat 0:6cc76d70e2a1 105 {
ubhat 0:6cc76d70e2a1 106 case 1:
ubhat 0:6cc76d70e2a1 107 AppDataSize = 2;
ubhat 0:6cc76d70e2a1 108 AppData[0] = ComplianceTest.DownLinkCounter >> 8;
ubhat 0:6cc76d70e2a1 109 AppData[1] = ComplianceTest.DownLinkCounter;
ubhat 0:6cc76d70e2a1 110 break;
ubhat 0:6cc76d70e2a1 111
ubhat 0:6cc76d70e2a1 112 case 4:
ubhat 0:6cc76d70e2a1 113 ComplianceTest.State = 1;
ubhat 0:6cc76d70e2a1 114 break;
ubhat 0:6cc76d70e2a1 115 }
ubhat 0:6cc76d70e2a1 116 }
ubhat 0:6cc76d70e2a1 117 }