LoRa Node on a single frequency
Dependencies: mbed simple-demo-76 LoRaWAN-lib SingleFrequencyLora
Fork of simple-demo-76 by
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 7 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 ){ 869400000, { ( ( DR_5 << 4 ) | DR_5 ) }, 3 } ); 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] = 0x43; 00100 AppData[1] = 0x68; 00101 AppData[2] = 0x72; 00102 AppData[3] = 0x69; 00103 AppData[4] = 0x73; 00104 AppData[5] = 0x21; 00105 AppData[6] = 0x21; 00106 00107 //Sendframe 00108 00109 McpsReq_t mcpsReq; 00110 00111 uint8_t AppPort = 3; 00112 mcpsReq.Type = MCPS_UNCONFIRMED; 00113 mcpsReq.Req.Unconfirmed.fPort = AppPort; 00114 mcpsReq.Req.Unconfirmed.fBuffer = AppData; 00115 mcpsReq.Req.Unconfirmed.fBufferSize = APPDATA_SIZE; 00116 mcpsReq.Req.Unconfirmed.Datarate = DR_5; 00117 00118 LoRaMacMcpsRequest( &mcpsReq ); 00119 00120 while(1){ 00121 wait(1); 00122 LoRaMacMcpsRequest( &mcpsReq ); 00123 } 00124 } 00125
Generated on Mon Jul 18 2022 01:27:35 by 1.7.2