Simple implementation of LoRaWAN-demo-76 by Semtech.

Dependencies:   mbed LoRaWAN-lib SX1276Lib

Dependents:   simple-demo-76_revised_20171113 simple-demo-76_revised_20171208

Fork of LoRaWAN-demo-76 by Semtech

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /*
00002  / _____)             _              | |
00003 ( (____  _____ ____ _| |_ _____  ____| |__
00004  \____ \| ___ |    (_   _) ___ |/ ___)  _ \
00005  _____) ) ____| | | || |_| ____( (___| | | |
00006 (______/|_____)_|_|_| \__)_____)\____)_| |_|
00007     (C)2015 Semtech
00008 
00009 Description: LoRaMac classA device implementation
00010 
00011 License: Revised BSD License, see LICENSE.TXT file include in the project
00012 
00013 Maintainer: Miguel Luis and Gregory Cristian
00014 */
00015 #include "mbed.h"
00016 #include "board.h"
00017 #include "radio.h"
00018 #include "LoRaMac.h"
00019 
00020 
00021 #define APPDATA_SIZE 4
00022 #define LORAWAN_DEFAULT_DATARATE DR_0
00023 #define LORAWAN_DEVICE_ADDRESS                      ( uint32_t )0x01234567
00024 #define LORAWAN_NWKSKEY                             { 0x11, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }
00025 #define LORAWAN_APPSKEY                             { 0x11, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }
00026 
00027 uint8_t AppData[APPDATA_SIZE];
00028 static uint8_t NwkSKey[] = LORAWAN_NWKSKEY;
00029 static uint8_t AppSKey[] = LORAWAN_APPSKEY;
00030 
00031 
00032 
00033 void McpsConfirm( McpsConfirm_t *mcpsConfirm )
00034 {
00035     return;
00036 }
00037 
00038 void McpsIndication( McpsIndication_t *mcpsIndication )
00039 {
00040     return;
00041 }
00042 
00043 
00044 
00045  
00046 int main( void )
00047 {
00048     //Initialise firmware
00049         
00050     LoRaMacPrimitives_t LoRaMacPrimitives;
00051     LoRaMacCallback_t LoRaMacCallbacks;
00052     MibRequestConfirm_t mibReq;
00053 
00054     LoRaMacPrimitives.MacMcpsConfirm = McpsConfirm;
00055     LoRaMacPrimitives.MacMcpsIndication = McpsIndication;
00056 //    LoRaMacPrimitives.MacMlmeConfirm = McpsConfirm;
00057     LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks );
00058 
00059     LoRaMacChannelAdd( 3, ( ChannelParams_t ){ 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } );
00060     LoRaMacChannelAdd( 4, ( ChannelParams_t ){ 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 });
00061     LoRaMacChannelAdd( 5, ( ChannelParams_t ){ 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } );
00062     LoRaMacChannelAdd( 6, ( ChannelParams_t ){ 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } );
00063     LoRaMacChannelAdd( 7, ( ChannelParams_t ){ 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } );
00064     LoRaMacChannelAdd( 8, ( ChannelParams_t ){ 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } );
00065     LoRaMacChannelAdd( 9, ( ChannelParams_t ){ 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } );
00066 
00067     //Join ABP
00068 
00069     mibReq.Type = MIB_NET_ID;
00070     mibReq.Param.NetID = 0;
00071     LoRaMacMibSetRequestConfirm( &mibReq );
00072 
00073     mibReq.Type = MIB_DEV_ADDR;
00074     mibReq.Param.DevAddr = LORAWAN_DEVICE_ADDRESS;
00075     LoRaMacMibSetRequestConfirm( &mibReq );
00076 
00077     mibReq.Type = MIB_NWK_SKEY;
00078     mibReq.Param.NwkSKey = NwkSKey;
00079     LoRaMacMibSetRequestConfirm( &mibReq );
00080 
00081     mibReq.Type = MIB_APP_SKEY;
00082     mibReq.Param.AppSKey = AppSKey;
00083     LoRaMacMibSetRequestConfirm( &mibReq );
00084 
00085     mibReq.Type = MIB_NETWORK_JOINED;
00086     mibReq.Param.IsNetworkJoined = true;
00087     LoRaMacMibSetRequestConfirm( &mibReq );
00088     
00089     mibReq.Type = MIB_CHANNELS_TX_POWER;
00090     mibReq.Param.ChannelsTxPower = LORAMAC_MAX_TX_POWER;
00091     LoRaMacMibSetRequestConfirm( &mibReq );
00092     
00093     mibReq.Type = MIB_CHANNELS_DEFAULT_TX_POWER;
00094     mibReq.Param.ChannelsDefaultTxPower = LORAMAC_MAX_TX_POWER;
00095     LoRaMacMibSetRequestConfirm( &mibReq );
00096 
00097     //Prepareframe
00098 
00099     AppData[0] = 0xFF;
00100     AppData[1] = 0xFF;
00101     AppData[2] = 0xFF;
00102     AppData[3] = 0xFF;
00103     
00104     //Sendframe
00105     
00106     McpsReq_t mcpsReq;
00107     
00108     uint8_t AppPort = 3;
00109     mcpsReq.Type = MCPS_CONFIRMED;
00110     mcpsReq.Req.Confirmed.fPort = AppPort;
00111     mcpsReq.Req.Confirmed.fBuffer = AppData;
00112     mcpsReq.Req.Confirmed.fBufferSize = APPDATA_SIZE;
00113     mcpsReq.Req.Confirmed.Datarate = LORAWAN_DEFAULT_DATARATE;
00114         
00115     LoRaMacMcpsRequest( &mcpsReq );
00116     
00117     while(1);
00118 }
00119