From 60e6468817d763a8c744bb4105634cacea848a54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 2 Mar 2017 14:43:00 +0100 Subject: [PATCH 001/161] Add region abstraction layer. --- src/mac/region/Region.c | 954 ++++++++++++++++++++++++++++ src/mac/region/Region.h | 1316 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 2270 insertions(+) create mode 100644 src/mac/region/Region.c create mode 100644 src/mac/region/Region.h diff --git a/src/mac/region/Region.c b/src/mac/region/Region.c new file mode 100644 index 000000000..10634c297 --- /dev/null +++ b/src/mac/region/Region.c @@ -0,0 +1,954 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + ___ _____ _ ___ _ _____ ___ ___ ___ ___ +/ __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| +\__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| +|___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| +embedded.connectivity.solutions=============== + +Description: LoRa MAC region implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) +*/ +#include +#include +#include + +#include "timer.h" +#include "LoRaMac.h" + + + +// Regional includes +#include "Region.h" + + + +// Setup regions +#ifdef REGION_AS923 +#include "RegionAS923.h" +#define AS923_CASE case LORAMAC_REGION_AS923: +#define AS923_IS_ACTIVE( ) AS923_CASE { return true; } +#define AS923_GET_PHY_PARAM( ) AS923_CASE { RegionAS923GetPhyParam( getPhy ); break; } +#define AS923_SET_BAND_TX_DONE( ) AS923_CASE { RegionAS923SetBandTxDone( txDone ); break; } +#define AS923_INIT_DEFAULTS( ) AS923_CASE { RegionAS923InitDefaults( type ); break; } +#define AS923_VERIFY( ) AS923_CASE { return RegionAS923Verify( verify, phyAttribute ); } +#define AS923_APPLY_CF_LIST( ) AS923_CASE { RegionAS923ApplyCFList( applyCFList ); break; } +#define AS923_CHAN_MASK_SET( ) AS923_CASE { return RegionAS923ChanMaskSet( chanMaskSet ); } +#define AS923_ADR_NEXT( ) AS923_CASE { return RegionAS923AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define AS923_RX_CONFIG( ) AS923_CASE { return RegionAS923RxConfig( rxConfig, datarate ); } +#define AS923_TX_CONFIG( ) AS923_CASE { return RegionAS923TxConfig( txConfig, txPower, txTimeOnAir ); } +#define AS923_LINK_ADR_REQ( ) AS923_CASE { return RegionAS923LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define AS923_RX_PARAM_SETUP_REQ( ) AS923_CASE { return RegionAS923RxParamSetupReq( rxParamSetupReq ); } +#define AS923_NEW_CHANNEL_REQ( ) AS923_CASE { return RegionAS923NewChannelReq( newChannelReq ); } +#define AS923_TX_PARAM_SETUP_REQ( ) AS923_CASE { return RegionAS923TxParamSetupReq( txParamSetupReq ); } +#define AS923_DL_CHANNEL_REQ( ) AS923_CASE { return RegionAS923DlChannelReq( dlChannelReq ); } +#define AS923_ALTERNATE_DR( ) AS923_CASE { return RegionAS923AlternateDr( alternateDr ); } +#define AS923_CALC_BACKOFF( ) AS923_CASE { RegionAS923CalcBackOff( calcBackOff ); break; } +#define AS923_NEXT_CHANNEL( ) AS923_CASE { return RegionAS923NextChannel( nextChanParams, channel, time ); } +#define AS923_CHANNEL_ADD( ) AS923_CASE { return RegionAS923ChannelAdd( channelAdd ); } +#define AS923_CHANNEL_REMOVE( ) AS923_CASE { return RegionAS923ChannelsRemove( channelRemove ); } +#define AS923_SET_CONTINUOUS_WAVE( ) AS923_CASE { RegionAS923SetContinuousWave( continuousWave ); break; } +#else +#define AS923_IS_ACTIVE( ) +#define AS923_GET_PHY_PARAM( ) +#define AS923_SET_BAND_TX_DONE( ) +#define AS923_INIT_DEFAULTS( ) +#define AS923_VERIFY( ) +#define AS923_APPLY_CF_LIST( ) +#define AS923_CHAN_MASK_SET( ) +#define AS923_ADR_NEXT( ) +#define AS923_RX_CONFIG( ) +#define AS923_TX_CONFIG( ) +#define AS923_LINK_ADR_REQ( ) +#define AS923_RX_PARAM_SETUP_REQ( ) +#define AS923_NEW_CHANNEL_REQ( ) +#define AS923_TX_PARAM_SETUP_REQ( ) +#define AS923_DL_CHANNEL_REQ( ) +#define AS923_ALTERNATE_DR( ) +#define AS923_CALC_BACKOFF( ) +#define AS923_NEXT_CHANNEL( ) +#define AS923_CHANNEL_ADD( ) +#define AS923_CHANNEL_REMOVE( ) +#define AS923_SET_CONTINUOUS_WAVE( ) +#endif + +#ifdef REGION_AU915 +#include "RegionAU915.h" +#define AU915_CASE case LORAMAC_REGION_AU915: +#define AU915_IS_ACTIVE( ) AU915_CASE { return true; } +#define AU915_GET_PHY_PARAM( ) AU915_CASE { RegionAU915GetPhyParam( getPhy ); break; } +#define AU915_SET_BAND_TX_DONE( ) AU915_CASE { RegionAU915SetBandTxDone( txDone ); break; } +#define AU915_INIT_DEFAULTS( ) AU915_CASE { RegionAU915InitDefaults( type ); break; } +#define AU915_VERIFY( ) AU915_CASE { return RegionAU915Verify( verify, phyAttribute ); } +#define AU915_APPLY_CF_LIST( ) AU915_CASE { RegionAU915ApplyCFList( applyCFList ); break; } +#define AU915_CHAN_MASK_SET( ) AU915_CASE { return RegionAU915ChanMaskSet( chanMaskSet ); } +#define AU915_ADR_NEXT( ) AU915_CASE { return RegionAU915AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define AU915_RX_CONFIG( ) AU915_CASE { return RegionAU915RxConfig( rxConfig, datarate ); } +#define AU915_TX_CONFIG( ) AU915_CASE { return RegionAU915TxConfig( txConfig, txPower, txTimeOnAir ); } +#define AU915_LINK_ADR_REQ( ) AU915_CASE { return RegionAU915LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define AU915_RX_PARAM_SETUP_REQ( ) AU915_CASE { return RegionAU915RxParamSetupReq( rxParamSetupReq ); } +#define AU915_NEW_CHANNEL_REQ( ) AU915_CASE { return RegionAU915NewChannelReq( newChannelReq ); } +#define AU915_TX_PARAM_SETUP_REQ( ) AU915_CASE { return RegionAU915TxParamSetupReq( txParamSetupReq ); } +#define AU915_DL_CHANNEL_REQ( ) AU915_CASE { return RegionAU915DlChannelReq( dlChannelReq ); } +#define AU915_ALTERNATE_DR( ) AU915_CASE { return RegionAU915AlternateDr( alternateDr ); } +#define AU915_CALC_BACKOFF( ) AU915_CASE { RegionAU915CalcBackOff( calcBackOff ); break; } +#define AU915_NEXT_CHANNEL( ) AU915_CASE { return RegionAU915NextChannel( nextChanParams, channel, time ); } +#define AU915_CHANNEL_ADD( ) AU915_CASE { return RegionAU915ChannelAdd( channelAdd ); } +#define AU915_CHANNEL_REMOVE( ) AU915_CASE { return RegionAU915ChannelsRemove( channelRemove ); } +#define AU915_SET_CONTINUOUS_WAVE( ) AU915_CASE { RegionAU915SetContinuousWave( continuousWave ); break; } +#else +#define AU915_IS_ACTIVE( ) +#define AU915_GET_PHY_PARAM( ) +#define AU915_SET_BAND_TX_DONE( ) +#define AU915_INIT_DEFAULTS( ) +#define AU915_VERIFY( ) +#define AU915_APPLY_CF_LIST( ) +#define AU915_CHAN_MASK_SET( ) +#define AU915_ADR_NEXT( ) +#define AU915_RX_CONFIG( ) +#define AU915_TX_CONFIG( ) +#define AU915_LINK_ADR_REQ( ) +#define AU915_RX_PARAM_SETUP_REQ( ) +#define AU915_NEW_CHANNEL_REQ( ) +#define AU915_TX_PARAM_SETUP_REQ( ) +#define AU915_DL_CHANNEL_REQ( ) +#define AU915_ALTERNATE_DR( ) +#define AU915_CALC_BACKOFF( ) +#define AU915_NEXT_CHANNEL( ) +#define AU915_CHANNEL_ADD( ) +#define AU915_CHANNEL_REMOVE( ) +#define AU915_SET_CONTINUOUS_WAVE( ) +#endif + +#ifdef REGION_CN470 +#include "RegionCN470.h" +#define CN470_CASE case LORAMAC_REGION_CN470: +#define CN470_IS_ACTIVE( ) CN470_CASE { return true; } +#define CN470_GET_PHY_PARAM( ) CN470_CASE { RegionCN470GetPhyParam( getPhy ); break; } +#define CN470_SET_BAND_TX_DONE( ) CN470_CASE { RegionCN470SetBandTxDone( txDone ); break; } +#define CN470_INIT_DEFAULTS( ) CN470_CASE { RegionCN470InitDefaults( type ); break; } +#define CN470_VERIFY( ) CN470_CASE { return RegionCN470Verify( verify, phyAttribute ); } +#define CN470_APPLY_CF_LIST( ) CN470_CASE { RegionCN470ApplyCFList( applyCFList ); break; } +#define CN470_CHAN_MASK_SET( ) CN470_CASE { return RegionCN470ChanMaskSet( chanMaskSet ); } +#define CN470_ADR_NEXT( ) CN470_CASE { return RegionCN470AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define CN470_RX_CONFIG( ) CN470_CASE { return RegionCN470RxConfig( rxConfig, datarate ); } +#define CN470_TX_CONFIG( ) CN470_CASE { return RegionCN470TxConfig( txConfig, txPower, txTimeOnAir ); } +#define CN470_LINK_ADR_REQ( ) CN470_CASE { return RegionCN470LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define CN470_RX_PARAM_SETUP_REQ( ) CN470_CASE { return RegionCN470RxParamSetupReq( rxParamSetupReq ); } +#define CN470_NEW_CHANNEL_REQ( ) CN470_CASE { return RegionCN470NewChannelReq( newChannelReq ); } +#define CN470_TX_PARAM_SETUP_REQ( ) CN470_CASE { return RegionCN470TxParamSetupReq( txParamSetupReq ); } +#define CN470_DL_CHANNEL_REQ( ) CN470_CASE { return RegionCN470DlChannelReq( dlChannelReq ); } +#define CN470_ALTERNATE_DR( ) CN470_CASE { return RegionCN470AlternateDr( alternateDr ); } +#define CN470_CALC_BACKOFF( ) CN470_CASE { RegionCN470CalcBackOff( calcBackOff ); break; } +#define CN470_NEXT_CHANNEL( ) CN470_CASE { return RegionCN470NextChannel( nextChanParams, channel, time ); } +#define CN470_CHANNEL_ADD( ) CN470_CASE { return RegionCN470ChannelAdd( channelAdd ); } +#define CN470_CHANNEL_REMOVE( ) CN470_CASE { return RegionCN470ChannelsRemove( channelRemove ); } +#define CN470_SET_CONTINUOUS_WAVE( ) CN470_CASE { RegionCN470SetContinuousWave( continuousWave ); break; } +#else +#define CN470_IS_ACTIVE( ) +#define CN470_GET_PHY_PARAM( ) +#define CN470_SET_BAND_TX_DONE( ) +#define CN470_INIT_DEFAULTS( ) +#define CN470_VERIFY( ) +#define CN470_APPLY_CF_LIST( ) +#define CN470_CHAN_MASK_SET( ) +#define CN470_ADR_NEXT( ) +#define CN470_RX_CONFIG( ) +#define CN470_TX_CONFIG( ) +#define CN470_LINK_ADR_REQ( ) +#define CN470_RX_PARAM_SETUP_REQ( ) +#define CN470_NEW_CHANNEL_REQ( ) +#define CN470_TX_PARAM_SETUP_REQ( ) +#define CN470_DL_CHANNEL_REQ( ) +#define CN470_ALTERNATE_DR( ) +#define CN470_CALC_BACKOFF( ) +#define CN470_NEXT_CHANNEL( ) +#define CN470_CHANNEL_ADD( ) +#define CN470_CHANNEL_REMOVE( ) +#define CN470_SET_CONTINUOUS_WAVE( ) +#endif + +#ifdef REGION_CN779 +#include "RegionCN779.h" +#define CN779_CASE case LORAMAC_REGION_CN779: +#define CN779_IS_ACTIVE( ) CN779_CASE { return true; } +#define CN779_GET_PHY_PARAM( ) CN779_CASE { RegionCN779GetPhyParam( getPhy ); break; } +#define CN779_SET_BAND_TX_DONE( ) CN779_CASE { RegionCN779SetBandTxDone( txDone ); break; } +#define CN779_INIT_DEFAULTS( ) CN779_CASE { RegionCN779InitDefaults( type ); break; } +#define CN779_VERIFY( ) CN779_CASE { return RegionCN779Verify( verify, phyAttribute ); } +#define CN779_APPLY_CF_LIST( ) CN779_CASE { RegionCN779ApplyCFList( applyCFList ); break; } +#define CN779_CHAN_MASK_SET( ) CN779_CASE { return RegionCN779ChanMaskSet( chanMaskSet ); } +#define CN779_ADR_NEXT( ) CN779_CASE { return RegionCN779AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define CN779_RX_CONFIG( ) CN779_CASE { return RegionCN779RxConfig( rxConfig, datarate ); } +#define CN779_TX_CONFIG( ) CN779_CASE { return RegionCN779TxConfig( txConfig, txPower, txTimeOnAir ); } +#define CN779_LINK_ADR_REQ( ) CN779_CASE { return RegionCN779LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define CN779_RX_PARAM_SETUP_REQ( ) CN779_CASE { return RegionCN779RxParamSetupReq( rxParamSetupReq ); } +#define CN779_NEW_CHANNEL_REQ( ) CN779_CASE { return RegionCN779NewChannelReq( newChannelReq ); } +#define CN779_TX_PARAM_SETUP_REQ( ) CN779_CASE { return RegionCN779TxParamSetupReq( txParamSetupReq ); } +#define CN779_DL_CHANNEL_REQ( ) CN779_CASE { return RegionCN779DlChannelReq( dlChannelReq ); } +#define CN779_ALTERNATE_DR( ) CN779_CASE { return RegionCN779AlternateDr( alternateDr ); } +#define CN779_CALC_BACKOFF( ) CN779_CASE { RegionCN779CalcBackOff( calcBackOff ); break; } +#define CN779_NEXT_CHANNEL( ) CN779_CASE { return RegionCN779NextChannel( nextChanParams, channel, time ); } +#define CN779_CHANNEL_ADD( ) CN779_CASE { return RegionCN779ChannelAdd( channelAdd ); } +#define CN779_CHANNEL_REMOVE( ) CN779_CASE { return RegionCN779ChannelsRemove( channelRemove ); } +#define CN779_SET_CONTINUOUS_WAVE( ) CN779_CASE { RegionCN779SetContinuousWave( continuousWave ); break; } +#else +#define CN779_IS_ACTIVE( ) +#define CN779_GET_PHY_PARAM( ) +#define CN779_SET_BAND_TX_DONE( ) +#define CN779_INIT_DEFAULTS( ) +#define CN779_VERIFY( ) +#define CN779_APPLY_CF_LIST( ) +#define CN779_CHAN_MASK_SET( ) +#define CN779_ADR_NEXT( ) +#define CN779_RX_CONFIG( ) +#define CN779_TX_CONFIG( ) +#define CN779_LINK_ADR_REQ( ) +#define CN779_RX_PARAM_SETUP_REQ( ) +#define CN779_NEW_CHANNEL_REQ( ) +#define CN779_TX_PARAM_SETUP_REQ( ) +#define CN779_DL_CHANNEL_REQ( ) +#define CN779_ALTERNATE_DR( ) +#define CN779_CALC_BACKOFF( ) +#define CN779_NEXT_CHANNEL( ) +#define CN779_CHANNEL_ADD( ) +#define CN779_CHANNEL_REMOVE( ) +#define CN779_SET_CONTINUOUS_WAVE( ) +#endif + +#ifdef REGION_EU433 +#include "RegionEU433.h" +#define EU433_CASE case LORAMAC_REGION_EU433: +#define EU433_IS_ACTIVE( ) EU433_CASE { return true; } +#define EU433_GET_PHY_PARAM( ) EU433_CASE { RegionEU433GetPhyParam( getPhy ); break; } +#define EU433_SET_BAND_TX_DONE( ) EU433_CASE { RegionEU433SetBandTxDone( txDone ); break; } +#define EU433_INIT_DEFAULTS( ) EU433_CASE { RegionEU433InitDefaults( type ); break; } +#define EU433_VERIFY( ) EU433_CASE { return RegionEU433Verify( verify, phyAttribute ); } +#define EU433_APPLY_CF_LIST( ) EU433_CASE { RegionEU433ApplyCFList( applyCFList ); break; } +#define EU433_CHAN_MASK_SET( ) EU433_CASE { return RegionEU433ChanMaskSet( chanMaskSet ); } +#define EU433_ADR_NEXT( ) EU433_CASE { return RegionEU433AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define EU433_RX_CONFIG( ) EU433_CASE { return RegionEU433RxConfig( rxConfig, datarate ); } +#define EU433_TX_CONFIG( ) EU433_CASE { return RegionEU433TxConfig( txConfig, txPower, txTimeOnAir ); } +#define EU433_LINK_ADR_REQ( ) EU433_CASE { return RegionEU433LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define EU433_RX_PARAM_SETUP_REQ( ) EU433_CASE { return RegionEU433RxParamSetupReq( rxParamSetupReq ); } +#define EU433_NEW_CHANNEL_REQ( ) EU433_CASE { return RegionEU433NewChannelReq( newChannelReq ); } +#define EU433_TX_PARAM_SETUP_REQ( ) EU433_CASE { return RegionEU433TxParamSetupReq( txParamSetupReq ); } +#define EU433_DL_CHANNEL_REQ( ) EU433_CASE { return RegionEU433DlChannelReq( dlChannelReq ); } +#define EU433_ALTERNATE_DR( ) EU433_CASE { return RegionEU433AlternateDr( alternateDr ); } +#define EU433_CALC_BACKOFF( ) EU433_CASE { RegionEU433CalcBackOff( calcBackOff ); break; } +#define EU433_NEXT_CHANNEL( ) EU433_CASE { return RegionEU433NextChannel( nextChanParams, channel, time ); } +#define EU433_CHANNEL_ADD( ) EU433_CASE { return RegionEU433ChannelAdd( channelAdd ); } +#define EU433_CHANNEL_REMOVE( ) EU433_CASE { return RegionEU433ChannelsRemove( channelRemove ); } +#define EU433_SET_CONTINUOUS_WAVE( ) EU433_CASE { RegionEU433SetContinuousWave( continuousWave ); break; } +#else +#define EU433_IS_ACTIVE( ) +#define EU433_GET_PHY_PARAM( ) +#define EU433_SET_BAND_TX_DONE( ) +#define EU433_INIT_DEFAULTS( ) +#define EU433_VERIFY( ) +#define EU433_APPLY_CF_LIST( ) +#define EU433_CHAN_MASK_SET( ) +#define EU433_ADR_NEXT( ) +#define EU433_RX_CONFIG( ) +#define EU433_TX_CONFIG( ) +#define EU433_LINK_ADR_REQ( ) +#define EU433_RX_PARAM_SETUP_REQ( ) +#define EU433_NEW_CHANNEL_REQ( ) +#define EU433_TX_PARAM_SETUP_REQ( ) +#define EU433_DL_CHANNEL_REQ( ) +#define EU433_ALTERNATE_DR( ) +#define EU433_CALC_BACKOFF( ) +#define EU433_NEXT_CHANNEL( ) +#define EU433_CHANNEL_ADD( ) +#define EU433_CHANNEL_REMOVE( ) +#define EU433_SET_CONTINUOUS_WAVE( ) +#endif + +#ifdef REGION_EU868 +#include "RegionEU868.h" +#define EU868_CASE case LORAMAC_REGION_EU868: +#define EU868_IS_ACTIVE( ) EU868_CASE { return true; } +#define EU868_GET_PHY_PARAM( ) EU868_CASE { RegionEU868GetPhyParam( getPhy ); break; } +#define EU868_SET_BAND_TX_DONE( ) EU868_CASE { RegionEU868SetBandTxDone( txDone ); break; } +#define EU868_INIT_DEFAULTS( ) EU868_CASE { RegionEU868InitDefaults( type ); break; } +#define EU868_VERIFY( ) EU868_CASE { return RegionEU868Verify( verify, phyAttribute ); } +#define EU868_APPLY_CF_LIST( ) EU868_CASE { RegionEU868ApplyCFList( applyCFList ); break; } +#define EU868_CHAN_MASK_SET( ) EU868_CASE { return RegionEU868ChanMaskSet( chanMaskSet ); } +#define EU868_ADR_NEXT( ) EU868_CASE { return RegionEU868AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define EU868_RX_CONFIG( ) EU868_CASE { return RegionEU868RxConfig( rxConfig, datarate ); } +#define EU868_TX_CONFIG( ) EU868_CASE { return RegionEU868TxConfig( txConfig, txPower, txTimeOnAir ); } +#define EU868_LINK_ADR_REQ( ) EU868_CASE { return RegionEU868LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define EU868_RX_PARAM_SETUP_REQ( ) EU868_CASE { return RegionEU868RxParamSetupReq( rxParamSetupReq ); } +#define EU868_NEW_CHANNEL_REQ( ) EU868_CASE { return RegionEU868NewChannelReq( newChannelReq ); } +#define EU868_TX_PARAM_SETUP_REQ( ) EU868_CASE { return RegionEU868TxParamSetupReq( txParamSetupReq ); } +#define EU868_DL_CHANNEL_REQ( ) EU868_CASE { return RegionEU868DlChannelReq( dlChannelReq ); } +#define EU868_ALTERNATE_DR( ) EU868_CASE { return RegionEU868AlternateDr( alternateDr ); } +#define EU868_CALC_BACKOFF( ) EU868_CASE { RegionEU868CalcBackOff( calcBackOff ); break; } +#define EU868_NEXT_CHANNEL( ) EU868_CASE { return RegionEU868NextChannel( nextChanParams, channel, time ); } +#define EU868_CHANNEL_ADD( ) EU868_CASE { return RegionEU868ChannelAdd( channelAdd ); } +#define EU868_CHANNEL_REMOVE( ) EU868_CASE { return RegionEU868ChannelsRemove( channelRemove ); } +#define EU868_SET_CONTINUOUS_WAVE( ) EU868_CASE { RegionEU868SetContinuousWave( continuousWave ); break; } +#else +#define EU868_IS_ACTIVE( ) +#define EU868_GET_PHY_PARAM( ) +#define EU868_SET_BAND_TX_DONE( ) +#define EU868_INIT_DEFAULTS( ) +#define EU868_VERIFY( ) +#define EU868_APPLY_CF_LIST( ) +#define EU868_CHAN_MASK_SET( ) +#define EU868_ADR_NEXT( ) +#define EU868_RX_CONFIG( ) +#define EU868_TX_CONFIG( ) +#define EU868_LINK_ADR_REQ( ) +#define EU868_RX_PARAM_SETUP_REQ( ) +#define EU868_NEW_CHANNEL_REQ( ) +#define EU868_TX_PARAM_SETUP_REQ( ) +#define EU868_DL_CHANNEL_REQ( ) +#define EU868_ALTERNATE_DR( ) +#define EU868_CALC_BACKOFF( ) +#define EU868_NEXT_CHANNEL( ) +#define EU868_CHANNEL_ADD( ) +#define EU868_CHANNEL_REMOVE( ) +#define EU868_SET_CONTINUOUS_WAVE( ) +#endif + +#ifdef REGION_KR920 +#include "RegionKR920.h" +#define KR920_CASE case LORAMAC_REGION_KR920: +#define KR920_IS_ACTIVE( ) KR920_CASE { return true; } +#define KR920_GET_PHY_PARAM( ) KR920_CASE { RegionKR920GetPhyParam( getPhy ); break; } +#define KR920_SET_BAND_TX_DONE( ) KR920_CASE { RegionKR920SetBandTxDone( txDone ); break; } +#define KR920_INIT_DEFAULTS( ) KR920_CASE { RegionKR920InitDefaults( type ); break; } +#define KR920_VERIFY( ) KR920_CASE { return RegionKR920Verify( verify, phyAttribute ); } +#define KR920_APPLY_CF_LIST( ) KR920_CASE { RegionKR920ApplyCFList( applyCFList ); break; } +#define KR920_CHAN_MASK_SET( ) KR920_CASE { return RegionKR920ChanMaskSet( chanMaskSet ); } +#define KR920_ADR_NEXT( ) KR920_CASE { return RegionKR920AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define KR920_RX_CONFIG( ) KR920_CASE { return RegionKR920RxConfig( rxConfig, datarate ); } +#define KR920_TX_CONFIG( ) KR920_CASE { return RegionKR920TxConfig( txConfig, txPower, txTimeOnAir ); } +#define KR920_LINK_ADR_REQ( ) KR920_CASE { return RegionKR920LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define KR920_RX_PARAM_SETUP_REQ( ) KR920_CASE { return RegionKR920RxParamSetupReq( rxParamSetupReq ); } +#define KR920_NEW_CHANNEL_REQ( ) KR920_CASE { return RegionKR920NewChannelReq( newChannelReq ); } +#define KR920_TX_PARAM_SETUP_REQ( ) KR920_CASE { return RegionKR920TxParamSetupReq( txParamSetupReq ); } +#define KR920_DL_CHANNEL_REQ( ) KR920_CASE { return RegionKR920DlChannelReq( dlChannelReq ); } +#define KR920_ALTERNATE_DR( ) KR920_CASE { return RegionKR920AlternateDr( alternateDr ); } +#define KR920_CALC_BACKOFF( ) KR920_CASE { RegionKR920CalcBackOff( calcBackOff ); break; } +#define KR920_NEXT_CHANNEL( ) KR920_CASE { return RegionKR920NextChannel( nextChanParams, channel, time ); } +#define KR920_CHANNEL_ADD( ) KR920_CASE { return RegionKR920ChannelAdd( channelAdd ); } +#define KR920_CHANNEL_REMOVE( ) KR920_CASE { return RegionKR920ChannelsRemove( channelRemove ); } +#define KR920_SET_CONTINUOUS_WAVE( ) KR920_CASE { RegionKR920SetContinuousWave( continuousWave ); break; } +#else +#define KR920_IS_ACTIVE( ) +#define KR920_GET_PHY_PARAM( ) +#define KR920_SET_BAND_TX_DONE( ) +#define KR920_INIT_DEFAULTS( ) +#define KR920_VERIFY( ) +#define KR920_APPLY_CF_LIST( ) +#define KR920_CHAN_MASK_SET( ) +#define KR920_ADR_NEXT( ) +#define KR920_RX_CONFIG( ) +#define KR920_TX_CONFIG( ) +#define KR920_LINK_ADR_REQ( ) +#define KR920_RX_PARAM_SETUP_REQ( ) +#define KR920_NEW_CHANNEL_REQ( ) +#define KR920_TX_PARAM_SETUP_REQ( ) +#define KR920_DL_CHANNEL_REQ( ) +#define KR920_ALTERNATE_DR( ) +#define KR920_CALC_BACKOFF( ) +#define KR920_NEXT_CHANNEL( ) +#define KR920_CHANNEL_ADD( ) +#define KR920_CHANNEL_REMOVE( ) +#define KR920_SET_CONTINUOUS_WAVE( ) +#endif + +#ifdef REGION_IN865 +#include "RegionIN865.h" +#define IN865_CASE case LORAMAC_REGION_IN865: +#define IN865_IS_ACTIVE( ) IN865_CASE { return true; } +#define IN865_GET_PHY_PARAM( ) IN865_CASE { RegionIN865GetPhyParam( getPhy ); break; } +#define IN865_SET_BAND_TX_DONE( ) IN865_CASE { RegionIN865SetBandTxDone( txDone ); break; } +#define IN865_INIT_DEFAULTS( ) IN865_CASE { RegionIN865InitDefaults( type ); break; } +#define IN865_VERIFY( ) IN865_CASE { return RegionIN865Verify( verify, phyAttribute ); } +#define IN865_APPLY_CF_LIST( ) IN865_CASE { RegionIN865ApplyCFList( applyCFList ); break; } +#define IN865_CHAN_MASK_SET( ) IN865_CASE { return RegionIN865ChanMaskSet( chanMaskSet ); } +#define IN865_ADR_NEXT( ) IN865_CASE { return RegionIN865AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define IN865_RX_CONFIG( ) IN865_CASE { return RegionIN865RxConfig( rxConfig, datarate ); } +#define IN865_TX_CONFIG( ) IN865_CASE { return RegionIN865TxConfig( txConfig, txPower, txTimeOnAir ); } +#define IN865_LINK_ADR_REQ( ) IN865_CASE { return RegionIN865LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define IN865_RX_PARAM_SETUP_REQ( ) IN865_CASE { return RegionIN865RxParamSetupReq( rxParamSetupReq ); } +#define IN865_NEW_CHANNEL_REQ( ) IN865_CASE { return RegionIN865NewChannelReq( newChannelReq ); } +#define IN865_TX_PARAM_SETUP_REQ( ) IN865_CASE { return RegionIN865TxParamSetupReq( txParamSetupReq ); } +#define IN865_DL_CHANNEL_REQ( ) IN865_CASE { return RegionIN865DlChannelReq( dlChannelReq ); } +#define IN865_ALTERNATE_DR( ) IN865_CASE { return RegionIN865AlternateDr( alternateDr ); } +#define IN865_CALC_BACKOFF( ) IN865_CASE { RegionIN865CalcBackOff( calcBackOff ); break; } +#define IN865_NEXT_CHANNEL( ) IN865_CASE { return RegionIN865NextChannel( nextChanParams, channel, time ); } +#define IN865_CHANNEL_ADD( ) IN865_CASE { return RegionIN865ChannelAdd( channelAdd ); } +#define IN865_CHANNEL_REMOVE( ) IN865_CASE { return RegionIN865ChannelsRemove( channelRemove ); } +#define IN865_SET_CONTINUOUS_WAVE( ) IN865_CASE { RegionIN865SetContinuousWave( continuousWave ); break; } +#else +#define IN865_IS_ACTIVE( ) +#define IN865_GET_PHY_PARAM( ) +#define IN865_SET_BAND_TX_DONE( ) +#define IN865_INIT_DEFAULTS( ) +#define IN865_VERIFY( ) +#define IN865_APPLY_CF_LIST( ) +#define IN865_CHAN_MASK_SET( ) +#define IN865_ADR_NEXT( ) +#define IN865_RX_CONFIG( ) +#define IN865_TX_CONFIG( ) +#define IN865_LINK_ADR_REQ( ) +#define IN865_RX_PARAM_SETUP_REQ( ) +#define IN865_NEW_CHANNEL_REQ( ) +#define IN865_TX_PARAM_SETUP_REQ( ) +#define IN865_DL_CHANNEL_REQ( ) +#define IN865_ALTERNATE_DR( ) +#define IN865_CALC_BACKOFF( ) +#define IN865_NEXT_CHANNEL( ) +#define IN865_CHANNEL_ADD( ) +#define IN865_CHANNEL_REMOVE( ) +#define IN865_SET_CONTINUOUS_WAVE( ) +#endif + +#ifdef REGION_US915 +#include "RegionUS915.h" +#define US915_CASE case LORAMAC_REGION_US915: +#define US915_IS_ACTIVE( ) US915_CASE { return true; } +#define US915_GET_PHY_PARAM( ) US915_CASE { RegionUS915GetPhyParam( getPhy ); break; } +#define US915_SET_BAND_TX_DONE( ) US915_CASE { RegionUS915SetBandTxDone( txDone ); break; } +#define US915_INIT_DEFAULTS( ) US915_CASE { RegionUS915InitDefaults( type ); break; } +#define US915_VERIFY( ) US915_CASE { return RegionUS915Verify( verify, phyAttribute ); } +#define US915_APPLY_CF_LIST( ) US915_CASE { RegionUS915ApplyCFList( applyCFList ); break; } +#define US915_CHAN_MASK_SET( ) US915_CASE { return RegionUS915ChanMaskSet( chanMaskSet ); } +#define US915_ADR_NEXT( ) US915_CASE { return RegionUS915AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define US915_RX_CONFIG( ) US915_CASE { return RegionUS915RxConfig( rxConfig, datarate ); } +#define US915_TX_CONFIG( ) US915_CASE { return RegionUS915TxConfig( txConfig, txPower, txTimeOnAir ); } +#define US915_LINK_ADR_REQ( ) US915_CASE { return RegionUS915LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define US915_RX_PARAM_SETUP_REQ( ) US915_CASE { return RegionUS915RxParamSetupReq( rxParamSetupReq ); } +#define US915_NEW_CHANNEL_REQ( ) US915_CASE { return RegionUS915NewChannelReq( newChannelReq ); } +#define US915_TX_PARAM_SETUP_REQ( ) US915_CASE { return RegionUS915TxParamSetupReq( txParamSetupReq ); } +#define US915_DL_CHANNEL_REQ( ) US915_CASE { return RegionUS915DlChannelReq( dlChannelReq ); } +#define US915_ALTERNATE_DR( ) US915_CASE { return RegionUS915AlternateDr( alternateDr ); } +#define US915_CALC_BACKOFF( ) US915_CASE { RegionUS915CalcBackOff( calcBackOff ); break; } +#define US915_NEXT_CHANNEL( ) US915_CASE { return RegionUS915NextChannel( nextChanParams, channel, time ); } +#define US915_CHANNEL_ADD( ) US915_CASE { return RegionUS915ChannelAdd( channelAdd ); } +#define US915_CHANNEL_REMOVE( ) US915_CASE { return RegionUS915ChannelsRemove( channelRemove ); } +#define US915_SET_CONTINUOUS_WAVE( ) US915_CASE { RegionUS915SetContinuousWave( continuousWave ); break; } +#else +#define US915_IS_ACTIVE( ) +#define US915_GET_PHY_PARAM( ) +#define US915_SET_BAND_TX_DONE( ) +#define US915_INIT_DEFAULTS( ) +#define US915_VERIFY( ) +#define US915_APPLY_CF_LIST( ) +#define US915_CHAN_MASK_SET( ) +#define US915_ADR_NEXT( ) +#define US915_RX_CONFIG( ) +#define US915_TX_CONFIG( ) +#define US915_LINK_ADR_REQ( ) +#define US915_RX_PARAM_SETUP_REQ( ) +#define US915_NEW_CHANNEL_REQ( ) +#define US915_TX_PARAM_SETUP_REQ( ) +#define US915_DL_CHANNEL_REQ( ) +#define US915_ALTERNATE_DR( ) +#define US915_CALC_BACKOFF( ) +#define US915_NEXT_CHANNEL( ) +#define US915_CHANNEL_ADD( ) +#define US915_CHANNEL_REMOVE( ) +#define US915_SET_CONTINUOUS_WAVE( ) +#endif + +#ifdef REGION_US915_HYBRID +#include "RegionUS915-Hybrid.h" +#define US915_HYBRID_CASE case LORAMAC_REGION_US915_HYBRID: +#define US915_HYBRID_IS_ACTIVE( ) US915_HYBRID_CASE { return true; } +#define US915_HYBRID_GET_PHY_PARAM( ) US915_HYBRID_CASE { RegionUS915HybridGetPhyParam( getPhy ); break; } +#define US915_HYBRID_SET_BAND_TX_DONE( ) US915_HYBRID_CASE { RegionUS915HybridSetBandTxDone( txDone ); break; } +#define US915_HYBRID_INIT_DEFAULTS( ) US915_HYBRID_CASE { RegionUS915HybridInitDefaults( type ); break; } +#define US915_HYBRID_VERIFY( ) US915_HYBRID_CASE { return RegionUS915HybridVerify( verify, phyAttribute ); } +#define US915_HYBRID_APPLY_CF_LIST( ) US915_HYBRID_CASE { RegionUS915HybridApplyCFList( applyCFList ); break; } +#define US915_HYBRID_CHAN_MASK_SET( ) US915_HYBRID_CASE { return RegionUS915HybridChanMaskSet( chanMaskSet ); } +#define US915_HYBRID_ADR_NEXT( ) US915_HYBRID_CASE { return RegionUS915HybridAdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define US915_HYBRID_RX_CONFIG( ) US915_HYBRID_CASE { return RegionUS915HybridRxConfig( rxConfig, datarate ); } +#define US915_HYBRID_TX_CONFIG( ) US915_HYBRID_CASE { return RegionUS915HybridTxConfig( txConfig, txPower, txTimeOnAir ); } +#define US915_HYBRID_LINK_ADR_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridLinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define US915_HYBRID_RX_PARAM_SETUP_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridRxParamSetupReq( rxParamSetupReq ); } +#define US915_HYBRID_NEW_CHANNEL_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridNewChannelReq( newChannelReq ); } +#define US915_HYBRID_TX_PARAM_SETUP_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridTxParamSetupReq( txParamSetupReq ); } +#define US915_HYBRID_DL_CHANNEL_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridDlChannelReq( dlChannelReq ); } +#define US915_HYBRID_ALTERNATE_DR( ) US915_HYBRID_CASE { return RegionUS915HybridAlternateDr( alternateDr ); } +#define US915_HYBRID_CALC_BACKOFF( ) US915_HYBRID_CASE { RegionUS915HybridCalcBackOff( calcBackOff ); break; } +#define US915_HYBRID_NEXT_CHANNEL( ) US915_HYBRID_CASE { return RegionUS915HybridNextChannel( nextChanParams, channel, time ); } +#define US915_HYBRID_CHANNEL_ADD( ) US915_HYBRID_CASE { return RegionUS915HybridChannelAdd( channelAdd ); } +#define US915_HYBRID_CHANNEL_REMOVE( ) US915_HYBRID_CASE { return RegionUS915HybridChannelsRemove( channelRemove ); } +#define US915_HYBRID_SET_CONTINUOUS_WAVE( ) US915_HYBRID_CASE { RegionUS915HybridSetContinuousWave( continuousWave ); break; } +#else +#define US915_HYBRID_IS_ACTIVE( ) +#define US915_HYBRID_GET_PHY_PARAM( ) +#define US915_HYBRID_SET_BAND_TX_DONE( ) +#define US915_HYBRID_INIT_DEFAULTS( ) +#define US915_HYBRID_VERIFY( ) +#define US915_HYBRID_APPLY_CF_LIST( ) +#define US915_HYBRID_CHAN_MASK_SET( ) +#define US915_HYBRID_ADR_NEXT( ) +#define US915_HYBRID_RX_CONFIG( ) +#define US915_HYBRID_TX_CONFIG( ) +#define US915_HYBRID_LINK_ADR_REQ( ) +#define US915_HYBRID_RX_PARAM_SETUP_REQ( ) +#define US915_HYBRID_NEW_CHANNEL_REQ( ) +#define US915_HYBRID_TX_PARAM_SETUP_REQ( ) +#define US915_HYBRID_DL_CHANNEL_REQ( ) +#define US915_HYBRID_ALTERNATE_DR( ) +#define US915_HYBRID_CALC_BACKOFF( ) +#define US915_HYBRID_NEXT_CHANNEL( ) +#define US915_HYBRID_CHANNEL_ADD( ) +#define US915_HYBRID_CHANNEL_REMOVE( ) +#define US915_HYBRID_SET_CONTINUOUS_WAVE( ) +#endif + +bool RegionIsActive( LoRaMacRegion_t region ) +{ + switch( region ) + { + AS923_IS_ACTIVE( ); + AU915_IS_ACTIVE( ); + CN470_IS_ACTIVE( ); + CN779_IS_ACTIVE( ); + EU433_IS_ACTIVE( ); + EU868_IS_ACTIVE( ); + KR920_IS_ACTIVE( ); + IN865_IS_ACTIVE( ); + US915_IS_ACTIVE( ); + US915_HYBRID_IS_ACTIVE( ); + default: + { + return false; + } + } +} + +void RegionGetPhyParam( LoRaMacRegion_t region, GetPhyParams_t* getPhy ) +{ + switch( region ) + { + AS923_GET_PHY_PARAM( ); + AU915_GET_PHY_PARAM( ); + CN470_GET_PHY_PARAM( ); + CN779_GET_PHY_PARAM( ); + EU433_GET_PHY_PARAM( ); + EU868_GET_PHY_PARAM( ); + KR920_GET_PHY_PARAM( ); + IN865_GET_PHY_PARAM( ); + US915_GET_PHY_PARAM( ); + US915_HYBRID_GET_PHY_PARAM( ); + default: + { + return; + } + } +} + +void RegionSetBandTxDone( LoRaMacRegion_t region, SetBandTxDoneParams_t* txDone ) +{ + switch( region ) + { + AS923_SET_BAND_TX_DONE( ); + AU915_SET_BAND_TX_DONE( ); + CN470_SET_BAND_TX_DONE( ); + CN779_SET_BAND_TX_DONE( ); + EU433_SET_BAND_TX_DONE( ); + EU868_SET_BAND_TX_DONE( ); + KR920_SET_BAND_TX_DONE( ); + IN865_SET_BAND_TX_DONE( ); + US915_SET_BAND_TX_DONE( ); + US915_HYBRID_SET_BAND_TX_DONE( ); + default: + { + return; + } + } +} + +void RegionInitDefaults( LoRaMacRegion_t region, InitType_t type ) +{ + switch( region ) + { + AS923_INIT_DEFAULTS( ); + AU915_INIT_DEFAULTS( ); + CN470_INIT_DEFAULTS( ); + CN779_INIT_DEFAULTS( ); + EU433_INIT_DEFAULTS( ); + EU868_INIT_DEFAULTS( ); + KR920_INIT_DEFAULTS( ); + IN865_INIT_DEFAULTS( ); + US915_INIT_DEFAULTS( ); + US915_HYBRID_INIT_DEFAULTS( ); + default: + { + break; + } + } +} + +bool RegionVerify( LoRaMacRegion_t region, VerifyParams_t* verify, PhyAttribute_t phyAttribute ) +{ + switch( region ) + { + AS923_VERIFY( ); + AU915_VERIFY( ); + CN470_VERIFY( ); + CN779_VERIFY( ); + EU433_VERIFY( ); + EU868_VERIFY( ); + KR920_VERIFY( ); + IN865_VERIFY( ); + US915_VERIFY( ); + US915_HYBRID_VERIFY( ); + default: + { + return false; + } + } +} + +void RegionApplyCFList( LoRaMacRegion_t region, ApplyCFListParams_t* applyCFList ) +{ + switch( region ) + { + AS923_APPLY_CF_LIST( ); + AU915_APPLY_CF_LIST( ); + CN470_APPLY_CF_LIST( ); + CN779_APPLY_CF_LIST( ); + EU433_APPLY_CF_LIST( ); + EU868_APPLY_CF_LIST( ); + KR920_APPLY_CF_LIST( ); + IN865_APPLY_CF_LIST( ); + US915_APPLY_CF_LIST( ); + US915_HYBRID_APPLY_CF_LIST( ); + default: + { + break; + } + } +} + +bool RegionChanMaskSet( LoRaMacRegion_t region, ChanMaskSetParams_t* chanMaskSet ) +{ + switch( region ) + { + AS923_CHAN_MASK_SET( ); + AU915_CHAN_MASK_SET( ); + CN470_CHAN_MASK_SET( ); + CN779_CHAN_MASK_SET( ); + EU433_CHAN_MASK_SET( ); + EU868_CHAN_MASK_SET( ); + KR920_CHAN_MASK_SET( ); + IN865_CHAN_MASK_SET( ); + US915_CHAN_MASK_SET( ); + US915_HYBRID_CHAN_MASK_SET( ); + default: + { + return false; + } + } +} + +bool RegionAdrNext( LoRaMacRegion_t region, AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ) +{ + switch( region ) + { + AS923_ADR_NEXT( ); + AU915_ADR_NEXT( ); + CN470_ADR_NEXT( ); + CN779_ADR_NEXT( ); + EU433_ADR_NEXT( ); + EU868_ADR_NEXT( ); + KR920_ADR_NEXT( ); + IN865_ADR_NEXT( ); + US915_ADR_NEXT( ); + US915_HYBRID_ADR_NEXT( ); + default: + { + return false; + } + } +} + +bool RegionRxConfig( LoRaMacRegion_t region, RxConfigParams_t* rxConfig, int8_t* datarate ) +{ + switch( region ) + { + AS923_RX_CONFIG( ); + AU915_RX_CONFIG( ); + CN470_RX_CONFIG( ); + CN779_RX_CONFIG( ); + EU433_RX_CONFIG( ); + EU868_RX_CONFIG( ); + KR920_RX_CONFIG( ); + IN865_RX_CONFIG( ); + US915_RX_CONFIG( ); + US915_HYBRID_RX_CONFIG( ); + default: + { + return false; + } + } +} + +bool RegionTxConfig( LoRaMacRegion_t region, TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) +{ + switch( region ) + { + AS923_TX_CONFIG( ); + AU915_TX_CONFIG( ); + CN470_TX_CONFIG( ); + CN779_TX_CONFIG( ); + EU433_TX_CONFIG( ); + EU868_TX_CONFIG( ); + KR920_TX_CONFIG( ); + IN865_TX_CONFIG( ); + US915_TX_CONFIG( ); + US915_HYBRID_TX_CONFIG( ); + default: + { + return false; + } + } +} + +uint8_t RegionLinkAdrReq( LoRaMacRegion_t region, LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) +{ + switch( region ) + { + AS923_LINK_ADR_REQ( ); + AU915_LINK_ADR_REQ( ); + CN470_LINK_ADR_REQ( ); + CN779_LINK_ADR_REQ( ); + EU433_LINK_ADR_REQ( ); + EU868_LINK_ADR_REQ( ); + KR920_LINK_ADR_REQ( ); + IN865_LINK_ADR_REQ( ); + US915_LINK_ADR_REQ( ); + US915_HYBRID_LINK_ADR_REQ( ); + default: + { + return 0; + } + } +} + +uint8_t RegionRxParamSetupReq( LoRaMacRegion_t region, RxParamSetupReqParams_t* rxParamSetupReq ) +{ + switch( region ) + { + AS923_RX_PARAM_SETUP_REQ( ); + AU915_RX_PARAM_SETUP_REQ( ); + CN470_RX_PARAM_SETUP_REQ( ); + CN779_RX_PARAM_SETUP_REQ( ); + EU433_RX_PARAM_SETUP_REQ( ); + EU868_RX_PARAM_SETUP_REQ( ); + KR920_RX_PARAM_SETUP_REQ( ); + IN865_RX_PARAM_SETUP_REQ( ); + US915_RX_PARAM_SETUP_REQ( ); + US915_HYBRID_RX_PARAM_SETUP_REQ( ); + default: + { + return 0; + } + } +} + +uint8_t RegionNewChannelReq( LoRaMacRegion_t region, NewChannelReqParams_t* newChannelReq ) +{ + switch( region ) + { + AS923_NEW_CHANNEL_REQ( ); + AU915_NEW_CHANNEL_REQ( ); + CN470_NEW_CHANNEL_REQ( ); + CN779_NEW_CHANNEL_REQ( ); + EU433_NEW_CHANNEL_REQ( ); + EU868_NEW_CHANNEL_REQ( ); + KR920_NEW_CHANNEL_REQ( ); + IN865_NEW_CHANNEL_REQ( ); + US915_NEW_CHANNEL_REQ( ); + US915_HYBRID_NEW_CHANNEL_REQ( ); + default: + { + return 0; + } + } +} + +int8_t RegionTxParamSetupReq( LoRaMacRegion_t region, TxParamSetupReqParams_t* txParamSetupReq ) +{ + switch( region ) + { + AS923_TX_PARAM_SETUP_REQ( ); + AU915_TX_PARAM_SETUP_REQ( ); + CN470_TX_PARAM_SETUP_REQ( ); + CN779_TX_PARAM_SETUP_REQ( ); + EU433_TX_PARAM_SETUP_REQ( ); + EU868_TX_PARAM_SETUP_REQ( ); + KR920_TX_PARAM_SETUP_REQ( ); + IN865_TX_PARAM_SETUP_REQ( ); + US915_TX_PARAM_SETUP_REQ( ); + US915_HYBRID_TX_PARAM_SETUP_REQ( ); + default: + { + return 0; + } + } +} + +uint8_t RegionDlChannelReq( LoRaMacRegion_t region, DlChannelReqParams_t* dlChannelReq ) +{ + switch( region ) + { + AS923_DL_CHANNEL_REQ( ); + AU915_DL_CHANNEL_REQ( ); + CN470_DL_CHANNEL_REQ( ); + CN779_DL_CHANNEL_REQ( ); + EU433_DL_CHANNEL_REQ( ); + EU868_DL_CHANNEL_REQ( ); + KR920_DL_CHANNEL_REQ( ); + IN865_DL_CHANNEL_REQ( ); + US915_DL_CHANNEL_REQ( ); + US915_HYBRID_DL_CHANNEL_REQ( ); + default: + { + return 0; + } + } +} + +int8_t RegionAlternateDr( LoRaMacRegion_t region, AlternateDrParams_t* alternateDr ) +{ + switch( region ) + { + AS923_ALTERNATE_DR( ); + AU915_ALTERNATE_DR( ); + CN470_ALTERNATE_DR( ); + CN779_ALTERNATE_DR( ); + EU433_ALTERNATE_DR( ); + EU868_ALTERNATE_DR( ); + KR920_ALTERNATE_DR( ); + IN865_ALTERNATE_DR( ); + US915_ALTERNATE_DR( ); + US915_HYBRID_ALTERNATE_DR( ); + default: + { + return 0; + } + } +} + +void RegionCalcBackOff( LoRaMacRegion_t region, CalcBackOffParams_t* calcBackOff ) +{ + switch( region ) + { + AS923_CALC_BACKOFF( ); + AU915_CALC_BACKOFF( ); + CN470_CALC_BACKOFF( ); + CN779_CALC_BACKOFF( ); + EU433_CALC_BACKOFF( ); + EU868_CALC_BACKOFF( ); + KR920_CALC_BACKOFF( ); + IN865_CALC_BACKOFF( ); + US915_CALC_BACKOFF( ); + US915_HYBRID_CALC_BACKOFF( ); + default: + { + break; + } + } +} + +bool RegionNextChannel( LoRaMacRegion_t region, NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +{ + switch( region ) + { + AS923_NEXT_CHANNEL( ); + AU915_NEXT_CHANNEL( ); + CN470_NEXT_CHANNEL( ); + CN779_NEXT_CHANNEL( ); + EU433_NEXT_CHANNEL( ); + EU868_NEXT_CHANNEL( ); + KR920_NEXT_CHANNEL( ); + IN865_NEXT_CHANNEL( ); + US915_NEXT_CHANNEL( ); + US915_HYBRID_NEXT_CHANNEL( ); + default: + { + return false; + } + } +} + +LoRaMacStatus_t RegionChannelAdd( LoRaMacRegion_t region, ChannelAddParams_t* channelAdd ) +{ + switch( region ) + { + AS923_CHANNEL_ADD( ); + AU915_CHANNEL_ADD( ); + CN470_CHANNEL_ADD( ); + CN779_CHANNEL_ADD( ); + EU433_CHANNEL_ADD( ); + EU868_CHANNEL_ADD( ); + KR920_CHANNEL_ADD( ); + IN865_CHANNEL_ADD( ); + US915_CHANNEL_ADD( ); + US915_HYBRID_CHANNEL_ADD( ); + default: + { + return LORAMAC_STATUS_PARAMETER_INVALID; + } + } +} + +bool RegionChannelsRemove( LoRaMacRegion_t region, ChannelRemoveParams_t* channelRemove ) +{ + switch( region ) + { + AS923_CHANNEL_REMOVE( ); + AU915_CHANNEL_REMOVE( ); + CN470_CHANNEL_REMOVE( ); + CN779_CHANNEL_REMOVE( ); + EU433_CHANNEL_REMOVE( ); + EU868_CHANNEL_REMOVE( ); + KR920_CHANNEL_REMOVE( ); + IN865_CHANNEL_REMOVE( ); + US915_CHANNEL_REMOVE( ); + US915_HYBRID_CHANNEL_REMOVE( ); + default: + { + return false; + } + } +} + +void RegionSetContinuousWave( LoRaMacRegion_t region, ContinuousWaveParams_t* continuousWave ) +{ + switch( region ) + { + AS923_SET_CONTINUOUS_WAVE( ); + AU915_SET_CONTINUOUS_WAVE( ); + CN470_SET_CONTINUOUS_WAVE( ); + CN779_SET_CONTINUOUS_WAVE( ); + EU433_SET_CONTINUOUS_WAVE( ); + EU868_SET_CONTINUOUS_WAVE( ); + KR920_SET_CONTINUOUS_WAVE( ); + IN865_SET_CONTINUOUS_WAVE( ); + US915_SET_CONTINUOUS_WAVE( ); + US915_HYBRID_SET_CONTINUOUS_WAVE( ); + default: + { + break; + } + } +} diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h new file mode 100644 index 000000000..8a6f022ea --- /dev/null +++ b/src/mac/region/Region.h @@ -0,0 +1,1316 @@ +/*! + * \file Region.h + * + * \brief Region implementation. + * + * \copyright Revised BSD License, see section \ref LICENSE. + * + * \code + * ______ _ + * / _____) _ | | + * ( (____ _____ ____ _| |_ _____ ____| |__ + * \____ \| ___ | (_ _) ___ |/ ___) _ \ + * _____) ) ____| | | || |_| ____( (___| | | | + * (______/|_____)_|_|_| \__)_____)\____)_| |_| + * (C)2013 Semtech + * + * ___ _____ _ ___ _ _____ ___ ___ ___ ___ + * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| + * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| + * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| + * embedded.connectivity.solutions=============== + * + * \endcode + * + * \author Miguel Luis ( Semtech ) + * + * \author Gregory Cristian ( Semtech ) + * + * \author Daniel Jaeckle ( STACKFORCE ) + * + * \defgroup REGION Region implementation + * This is the common API to access the specific + * regional implementations. + * + * Preprocessor options: + * - LoRaWAN regions can be activated by defining the related preprocessor + * definition. It is possible to define more than one region. + * The following regions are supported: + * - #define REGION_AS923 + * - #define REGION_AU915 + * - #define REGION_CN470 + * - #define REGION_CN779 + * - #define REGION_EU433 + * - #define REGION_EU868 + * - #define REGION_KR920 + * - #define REGION_IN865 + * - #define REGION_US915 + * - #define REGION_US915_HYBRID + * + * \{ + */ +#ifndef __REGION_H__ +#define __REGION_H__ + + + + +/*! + * Macro to compute bit of a channel index. + */ +#define LC( channelIndex ) ( uint16_t )( 1 << ( channelIndex - 1 ) ) + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | SF12 - BW125 + * AU915 | SF10 - BW125 + * CN470 | SF12 - BW125 + * CN779 | SF12 - BW125 + * EU433 | SF12 - BW125 + * EU868 | SF12 - BW125 + * IN865 | SF12 - BW125 + * KR920 | SF12 - BW125 + * US915 | SF10 - BW125 + * US915_HYBRID | SF10 - BW125 + */ +#define DR_0 0 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | SF11 - BW125 + * AU915 | SF9 - BW125 + * CN470 | SF11 - BW125 + * CN779 | SF11 - BW125 + * EU433 | SF11 - BW125 + * EU868 | SF11 - BW125 + * IN865 | SF11 - BW125 + * KR920 | SF11 - BW125 + * US915 | SF9 - BW125 + * US915_HYBRID | SF9 - BW125 + */ +#define DR_1 1 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | SF10 - BW125 + * AU915 | SF8 - BW125 + * CN470 | SF10 - BW125 + * CN779 | SF10 - BW125 + * EU433 | SF10 - BW125 + * EU868 | SF10 - BW125 + * IN865 | SF10 - BW125 + * KR920 | SF10 - BW125 + * US915 | SF8 - BW125 + * US915_HYBRID | SF8 - BW125 + */ +#define DR_2 2 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | SF9 - BW125 + * AU915 | SF7 - BW125 + * CN470 | SF9 - BW125 + * CN779 | SF9 - BW125 + * EU433 | SF9 - BW125 + * EU868 | SF9 - BW125 + * IN865 | SF9 - BW125 + * KR920 | SF9 - BW125 + * US915 | SF7 - BW125 + * US915_HYBRID | SF7 - BW125 + */ +#define DR_3 3 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | SF8 - BW125 + * AU915 | SF8 - BW500 + * CN470 | SF8 - BW125 + * CN779 | SF8 - BW125 + * EU433 | SF8 - BW125 + * EU868 | SF8 - BW125 + * IN865 | SF8 - BW125 + * KR920 | SF8 - BW125 + * US915 | SF8 - BW500 + * US915_HYBRID | SF8 - BW500 + */ +#define DR_4 4 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | SF7 - BW125 + * AU915 | RFU + * CN470 | SF7 - BW125 + * CN779 | SF7 - BW125 + * EU433 | SF7 - BW125 + * EU868 | SF7 - BW125 + * IN865 | SF7 - BW125 + * KR920 | SF7 - BW125 + * US915 | RFU + * US915_HYBRID | RFU + */ +#define DR_5 5 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | SF7 - BW250 + * AU915 | RFU + * CN470 | SF12 - BW125 + * CN779 | SF7 - BW250 + * EU433 | SF7 - BW250 + * EU868 | SF7 - BW250 + * IN865 | SF7 - BW250 + * KR920 | RFU + * US915 | RFU + * US915_HYBRID | RFU + */ +#define DR_6 6 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | FSK + * AU915 | RFU + * CN470 | SF12 - BW125 + * CN779 | FSK + * EU433 | FSK + * EU868 | FSK + * IN865 | FSK + * KR920 | RFU + * US915 | RFU + * US915_HYBRID | RFU + */ +#define DR_7 7 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | RFU + * AU915 | SF12 - BW500 + * CN470 | RFU + * CN779 | RFU + * EU433 | RFU + * EU868 | RFU + * IN865 | RFU + * KR920 | RFU + * US915 | SF12 - BW500 + * US915_HYBRID | SF12 - BW500 + */ +#define DR_8 8 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | RFU + * AU915 | SF11 - BW500 + * CN470 | RFU + * CN779 | RFU + * EU433 | RFU + * EU868 | RFU + * IN865 | RFU + * KR920 | RFU + * US915 | SF11 - BW500 + * US915_HYBRID | SF11 - BW500 + */ +#define DR_9 9 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | RFU + * AU915 | SF10 - BW500 + * CN470 | RFU + * CN779 | RFU + * EU433 | RFU + * EU868 | RFU + * IN865 | RFU + * KR920 | RFU + * US915 | SF10 - BW500 + * US915_HYBRID | SF10 - BW500 + */ +#define DR_10 10 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | RFU + * AU915 | SF9 - BW500 + * CN470 | RFU + * CN779 | RFU + * EU433 | RFU + * EU868 | RFU + * IN865 | RFU + * KR920 | RFU + * US915 | SF9 - BW500 + * US915_HYBRID | SF9 - BW500 + */ +#define DR_11 11 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | RFU + * AU915 | SF8 - BW500 + * CN470 | RFU + * CN779 | RFU + * EU433 | RFU + * EU868 | RFU + * IN865 | RFU + * KR920 | RFU + * US915 | SF8 - BW500 + * US915_HYBRID | SF8 - BW500 + */ +#define DR_12 12 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | RFU + * AU915 | SF7 - BW500 + * CN470 | RFU + * CN779 | RFU + * EU433 | RFU + * EU868 | RFU + * IN865 | RFU + * KR920 | RFU + * US915 | SF7 - BW500 + * US915_HYBRID | SF7 - BW500 + */ +#define DR_13 13 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | RFU + * AU915 | RFU + * CN470 | RFU + * CN779 | RFU + * EU433 | RFU + * EU868 | RFU + * IN865 | RFU + * KR920 | RFU + * US915 | RFU + * US915_HYBRID | RFU + */ +#define DR_14 14 + +/*! + * Region | SF + * ------------ | :-----: + * AS923 | RFU + * AU915 | RFU + * CN470 | RFU + * CN779 | RFU + * EU433 | RFU + * EU868 | RFU + * IN865 | RFU + * KR920 | RFU + * US915 | RFU + * US915_HYBRID | RFU + */ +#define DR_15 15 + + + +/*! + * Region | dBM + * ------------ | :-----: + * AS923 | Max ERP + * AU915 | 30 + * CN470 | 17 + * CN779 | 10 + * EU433 | 10 + * EU868 | 20 + * IN865 | Max ERP + * KR920 | 20 + * US915 | 30 + * US915_HYBRID | 30 + */ +#define TX_POWER_0 0 + +/*! + * Region | dBM + * ------------ | :-----: + * AS923 | Max ERP - 2 + * AU915 | 28 + * CN470 | 16 + * CN779 | 7 + * EU433 | 7 + * EU868 | 14 + * IN865 | Max ERP - 2 + * KR920 | 14 + * US915 | 28 + * US915_HYBRID | 28 + */ +#define TX_POWER_1 1 + +/*! + * Region | dBM + * ------------ | :-----: + * AS923 | Max ERP - 4 + * AU915 | 26 + * CN470 | 14 + * CN779 | 4 + * EU433 | 4 + * EU868 | 11 + * IN865 | Max ERP - 4 + * KR920 | 10 + * US915 | 26 + * US915_HYBRID | 26 + */ +#define TX_POWER_2 2 + +/*! + * Region | dBM + * ------------ | :-----: + * AS923 | Max ERP - 6 + * AU915 | 24 + * CN470 | 12 + * CN779 | 1 + * EU433 | 1 + * EU868 | 8 + * IN865 | Max ERP - 6 + * KR920 | 8 + * US915 | 24 + * US915_HYBRID | 24 + */ +#define TX_POWER_3 3 + +/*! + * Region | dBM + * ------------ | :-----: + * AS923 | Max ERP - 8 + * AU915 | 22 + * CN470 | 10 + * CN779 | M2 + * EU433 | M2 + * EU868 | 5 + * IN865 | Max ERP - 8 + * KR920 | 5 + * US915 | 22 + * US915_HYBRID | 22 + */ +#define TX_POWER_4 4 + +/*! + * Region | dBM + * ------------ | :-----: + * AS923 | Max ERP - 10 + * AU915 | 20 + * CN470 | 7 + * CN779 | M5 + * EU433 | M5 + * EU868 | 2 + * IN865 | Max ERP - 10 + * KR920 | 2 + * US915 | 20 + * US915_HYBRID | 20 + */ +#define TX_POWER_5 5 + +/*! + * Region | dBM + * ------------ | :-----: + * AS923 | - + * AU915 | 18 + * CN470 | 5 + * CN779 | - + * EU433 | - + * EU868 | - + * IN865 | Max ERP - 12 + * KR920 | 0 + * US915 | 18 + * US915_HYBRID | 18 + */ +#define TX_POWER_6 6 + +/*! + * Region | dBM + * ------------ | :-----: + * AS923 | - + * AU915 | 16 + * CN470 | 2 + * CN779 | - + * EU433 | - + * EU868 | - + * IN865 | Max ERP - 14 + * KR920 | - + * US915 | 16 + * US915_HYBRID | 16 + */ +#define TX_POWER_7 7 + +/*! + * Region | dBM + * ------------ | :-----: + * AS923 | - + * AU915 | 14 + * CN470 | - + * CN779 | - + * EU433 | - + * EU868 | - + * IN865 | Max ERP - 16 + * KR920 | 0 + * US915 | 14 + * US915_HYBRID | 14 + */ +#define TX_POWER_8 8 + +/*! + * Region | dBM + * ------------ | :-----: + * AS923 | - + * AU915 | 12 + * CN470 | - + * CN779 | - + * EU433 | - + * EU868 | - + * IN865 | Max ERP - 18 + * KR920 | 0 + * US915 | 12 + * US915_HYBRID | 12 + */ +#define TX_POWER_9 9 + +/*! + * Region | dBM + * ------------ | :-----: + * AS923 | - + * AU915 | 10 + * CN470 | - + * CN779 | - + * EU433 | - + * EU868 | - + * IN865 | Max ERP - 20 + * KR920 | 0 + * US915 | 10 + * US915_HYBRID | 10 + */ +#define TX_POWER_10 10 + +/*! + * RFU + */ +#define TX_POWER_11 11 + +/*! + * RFU + */ +#define TX_POWER_12 12 + +/*! + * RFU + */ +#define TX_POWER_13 13 + +/*! + * RFU + */ +#define TX_POWER_14 14 + +/*! + * RFU + */ +#define TX_POWER_15 15 + + + +/*! + * Enumeration of phy attributes. + */ +typedef enum ePhyAttribute +{ + /*! + * Minimum datarate. + */ + PHY_MIN_DR, + /*! + * Maximum datarate. + */ + PHY_MAX_DR, + /*! + * TX datarate. + */ + PHY_TX_DR, + /*! + * Default TX datarate. + */ + PHY_DEF_TX_DR, + /*! + * TX power. + */ + PHY_TX_POWER, + /*! + * Default TX power. + */ + PHY_DEF_TX_POWER, + /*! + * Maximum payload possible. + */ + PHY_MAX_PAYLOAD, + /*! + * Maximum payload possible when repeater support is enabled. + */ + PHY_MAX_PAYLOAD_REPEATER, + /*! + * Duty cycle. + */ + PHY_DUTY_CYCLE, + /*! + * Maximum receive window duration. + */ + PHY_MAX_RX_WINDOW, + /*! + * Receive delay for window 1. + */ + PHY_RECEIVE_DELAY1, + /*! + * Receive delay for window 2. + */ + PHY_RECEIVE_DELAY2, + /*! + * Join accept delay for window 1. + */ + PHY_JOIN_ACCEPT_DELAY1, + /*! + * Join accept delay for window 2. + */ + PHY_JOIN_ACCEPT_DELAY2, + /*! + * Maximum frame counter gap. + */ + PHY_MAX_FCNT_GAP, + /*! + * Acknowledgement time out. + */ + PHY_ACK_TIMEOUT, + /*! + * Default datarate offset for window 1. + */ + PHY_DEF_DR1_OFFSET, + /*! + * Default receive window 2 frequency. + */ + PHY_DEF_RX2_FREQUENCY, + /*! + * Default receive window 2 datarate. + */ + PHY_DEF_RX2_DR, + /*! + * Channels mask. + */ + PHY_CHANNELS_MASK, + /*! + * Channels default mask. + */ + PHY_CHANNELS_DEFAULT_MASK, + /*! + * Maximum number of supported channels + */ + PHY_MAX_NB_CHANNELS, + /*! + * Channels. + */ + PHY_CHANNELS, + /*! + * Default value of the uplink dwell time. + */ + PHY_DEF_UPLINK_DWELL_TIME, + /*! + * Default value of the downlink dwell time. + */ + PHY_DEF_DOWNLINK_DWELL_TIME, + /*! + * Default value of the MaxEIRP. + */ + PHY_DEF_MAX_EIRP, + /*! + * Value for the number of join trials. + */ + PHY_NB_JOIN_TRIALS, + /*! + * Default value for the number of join trials. + */ + PHY_DEF_NB_JOIN_TRIALS +}PhyAttribute_t; + +/*! + * Enumeration of initialization types. + */ +typedef enum eInitType +{ + /*! + * Performs an initialization and overwrites all existing data. + */ + INIT_TYPE_INIT, + /*! + * Restores default channels only. + */ + INIT_TYPE_RESTORE +}InitType_t; + +typedef enum eChannelsMask +{ + /*! + * The channels mask. + */ + CHANNELS_MASK, + /*! + * The channels default mask. + */ + CHANNELS_DEFAULT_MASK +}ChannelsMask_t; + +/*! + * Union for the structure uGetPhyParams + */ +typedef union uPhyParam +{ + /*! + * A parameter value. + */ + uint32_t Value; + /*! + * Pointer to the channels mask. + */ + uint16_t* ChannelsMask; + /*! + * Pointer to the channels. + */ + ChannelParams_t* Channels; +}PhyParam_t; + +/*! + * Parameter structure for the function RegionGetPhyParam. + */ +typedef struct sGetPhyParams +{ + /*! + * Setup the parameter to get. + */ + PhyAttribute_t Attribute; + /*! + * Datarate. The parameter is only used to query maximum payload lengths. + */ + int8_t Datarate; + /*! + * Uplink dwell time. + */ + uint8_t UplinkDwellTime; + /*! + * Contains the parameter to get. + */ + PhyParam_t Param; +}GetPhyParams_t; + +/*! + * Parameter structure for the function RegionSetBandTxDone. + */ +typedef struct sSetBandTxDoneParams +{ + /*! + * Channel to update. + */ + uint8_t Channel; + /*! + * Last TX done time. + */ + TimerTime_t LastTxDoneTime; +}SetBandTxDoneParams_t; + +/*! + * Parameter structure for the function RegionVerify. + */ +typedef union uVerifyParams +{ + /*! + * TX power to verify. + */ + int8_t TxPower; + /*! + * Datarate to verify. + */ + int8_t Datarate; + /*! + * Set to true, if the duty cycle is enabled, otherwise false. + */ + bool DutyCycle; + /*! + * The number of join trials. + */ + uint8_t NbJoinTrials; +}VerifyParams_t; + +/*! + * Parameter structure for the function RegionApplyCFList. + */ +typedef struct sApplyCFListParams +{ + /*! + * Payload which contains the CF list. + */ + uint8_t* Payload; + /*! + * Size of the payload. + */ + uint8_t Size; +}ApplyCFListParams_t; + +/*! + * Parameter structure for the function RegionChanMaskSet. + */ +typedef struct sChanMaskSetParams +{ + /*! + * Pointer to the channels mask which should be set. + */ + uint16_t* ChannelsMaskIn; + /*! + * Pointer to the channels mask which should be set. + */ + ChannelsMask_t ChannelsMaskType; +}ChanMaskSetParams_t; + +/*! + * Parameter structure for the function RegionAdrNext. + */ +typedef struct sAdrNextParams +{ + /*! + * Set to true, if the function should update the channels mask. + */ + bool UpdateChanMask; + /*! + * Set to true, if ADR is enabled. + */ + bool AdrEnabled; + /*! + * ADR ack counter. + */ + uint32_t AdrAckCounter; + /*! + * Datarate used currently. + */ + int8_t Datarate; + /*! + * TX power used currently. + */ + int8_t TxPower; +}AdrNextParams_t; + +/*! + * Parameter structure for the function RegionRxConfig. + */ +typedef struct sRxConfigParams +{ + /*! + * The RX channel. + */ + uint8_t Channel; + /*! + * RX datarate. + */ + int8_t Datarate; + /*! + * RX datarate offset. + */ + int8_t DrOffset; + /*! + * RX frequency. + */ + uint32_t Frequency; + /*! + * Downlink dwell time. + */ + uint8_t DownlinkDwellTime; + /*! + * Set to true, if a repeater is supported. + */ + bool RepeaterSupport; + /*! + * Set to true, if RX should be continuous. + */ + bool RxContinuous; + /*! + * Sets the RX window. 0: RX window 1, 1: RX window 2. + */ + bool Window; +}RxConfigParams_t; + +/*! + * Parameter structure for the function RegionTxConfig. + */ +typedef struct sTxConfigParams +{ + /*! + * The TX channel. + */ + uint8_t Channel; + /*! + * The TX datarate. + */ + int8_t Datarate; + /*! + * The TX power. + */ + int8_t TxPower; + /*! + * The Max EIRP, if applicable. + */ + uint8_t MaxEirp; + /*! + * Frame length to setup. + */ + uint16_t PktLen; +}TxConfigParams_t; + +/*! + * Parameter structure for the function RegionLinkAdrReq. + */ +typedef struct sLinkAdrReqParams +{ + /*! + * Pointer to the payload which contains the MAC commands. + */ + uint8_t* Payload; + /*! + * Size of the payload. + */ + uint8_t PayloadSize; +}LinkAdrReqParams_t; + +/*! + * Parameter structure for the function RegionRxParamSetupReq. + */ +typedef struct sRxParamSetupReqParams +{ + /*! + * The datarate to setup. + */ + int8_t Datarate; + /*! + * Datarate offset. + */ + int8_t DrOffset; + /*! + * The frequency to setup. + */ + uint32_t Frequency; +}RxParamSetupReqParams_t; + +/*! + * Parameter structure for the function RegionNewChannelReq. + */ +typedef struct sNewChannelReqParams +{ + /*! + * Pointer to the new channels. + */ + ChannelParams_t* NewChannel; + /*! + * Channel id. + */ + int8_t ChannelId; +}NewChannelReqParams_t; + +/*! + * Parameter structure for the function RegionTxParamSetupReq. + */ +typedef struct sTxParamSetupReqParams +{ + /*! + * Uplink dwell time. + */ + uint8_t UplinkDwellTime; + /*! + * Downlink dwell time. + */ + uint8_t DownlinkDwellTime; + /*! + * Max EIRP. + */ + uint8_t MaxEirp; +}TxParamSetupReqParams_t; + +/*! + * Parameter structure for the function RegionDlChannelReq. + */ +typedef struct sDlChannelReqParams +{ + /*! + * Channel Id to add the frequency. + */ + uint8_t ChannelId; + /*! + * Alternative frequency for the Rx1 window. + */ + uint32_t Rx1Frequency; +}DlChannelReqParams_t; + +/*! + * Parameter structure for the function RegionAlternateDr. + */ +typedef struct sAlternateDrParams +{ + /*! + * Number of trials. + */ + uint16_t NbTrials; +}AlternateDrParams_t; + +/*! + * Parameter structure for the function RegionCalcBackOff. + */ +typedef struct sCalcBackOffParams +{ + /*! + * Set to true, if the node has already joined a network, otherwise false. + */ + bool Joined; + /*! + * Set to true, if the duty cycle is enabled, otherwise false. + */ + bool DutyCycleEnabled; + /*! + * Current channel index. + */ + uint8_t Channel; + /*! + * Elapsed time since the start of the node. + */ + TimerTime_t ElapsedTime; + /*! + * Time-on-air of the last transmission. + */ + TimerTime_t TxTimeOnAir; +}CalcBackOffParams_t; + +/*! + * Parameter structure for the function RegionNextChannel. + */ +typedef struct sNextChanParams +{ + /*! + * Aggregated time-off time. + */ + TimerTime_t AggrTimeOff; + /*! + * Time of the last aggregated TX. + */ + TimerTime_t LastAggrTx; + /*! + * Current datarate. + */ + int8_t Datarate; + /*! + * Set to true, if the node has already joined a network, otherwise false. + */ + bool Joined; + /*! + * Set to true, if the duty cycle is enabled, otherwise false. + */ + bool DutyCycleEnabled; +}NextChanParams_t; + +/*! + * Parameter structure for the function RegionChannelsAdd. + */ +typedef struct sChannelAddParams +{ + /*! + * Pointer to the new channel to add. + */ + ChannelParams_t* NewChannel; + /*! + * Channel id to add. + */ + uint8_t ChannelId; +}ChannelAddParams_t; + +/*! + * Parameter structure for the function RegionChannelsRemove. + */ +typedef struct sChannelRemoveParams +{ + /*! + * Channel id to remove. + */ + uint8_t ChannelId; +}ChannelRemoveParams_t; + +/*! + * Parameter structure for the function RegionContinuousWave. + */ +typedef struct sContinuousWaveParams +{ + /*! + * Current channel index. + */ + uint8_t Channel; + /*! + * Datarate. Used to limit the TX power. + */ + int8_t Datarate; + /*! + * The TX power to setup. + */ + int8_t TxPower; + /*! + * Max EIRP, if applicable. + */ + uint8_t MaxEirp; + /*! + * Specifies the time the radio will stay in CW mode. + */ + uint16_t Timeout; +}ContinuousWaveParams_t; + + + +/*! + * \brief The function verifies if a region is active or not. If a region + * is not active, it cannot be used. + * + * \param [IN] region LoRaWAN region. + * + * \retval Return true, if the region is supported. + */ +bool RegionIsActive( LoRaMacRegion_t region ); + +/*! + * \brief The function gets a value of a specific phy attribute. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] getPhy Pointer to the function parameters. + */ +void RegionGetPhyParam( LoRaMacRegion_t region, GetPhyParams_t* getPhy ); + +/*! + * \brief Updates the last TX done parameters of the current channel. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] txDone Pointer to the function parameters. + */ +void RegionSetBandTxDone( LoRaMacRegion_t region, SetBandTxDoneParams_t* txDone ); + +/*! + * \brief Initializes the channels masks and the channels. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] type Sets the initialization type. + */ +void RegionInitDefaults( LoRaMacRegion_t region, InitType_t type ); + +/*! + * \brief Verifies a parameter. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] verify Pointer to the function parameters. + * + * \param [IN] type Sets the initialization type. + * + * \retval Returns true, if the parameter is valid. + */ +bool RegionVerify( LoRaMacRegion_t region, VerifyParams_t* verify, PhyAttribute_t phyAttribute ); + +/*! + * \brief The function parses the input buffer and sets up the channels of the + * CF list. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] applyCFList Pointer to the function parameters. + */ +void RegionApplyCFList( LoRaMacRegion_t region, ApplyCFListParams_t* applyCFList ); + +/*! + * \brief Sets a channels mask. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] chanMaskSet Pointer to the function parameters. + * + * \retval Returns true, if the channels mask could be set. + */ +bool RegionChanMaskSet( LoRaMacRegion_t region, ChanMaskSetParams_t* chanMaskSet ); + +/*! + * \brief Calculates the next datarate to set, when ADR is on or off. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] adrNext Pointer to the function parameters. + * + * \param [OUT] drOut The calculated datarate for the next TX. + * + * \param [OUT] txPowOut The TX power for the next TX. + * + * \param [OUT] adrAckCounter The calculated ADR acknowledgement counter. + * + * \retval Returns true, if an ADR request should be performed. + */ +bool RegionAdrNext( LoRaMacRegion_t region, AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); + +/*! + * \brief Configuration of the RX windows. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] rxConfig Pointer to the function parameters. + * + * \param [OUT] datarate The datarate index which was set. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionRxConfig( LoRaMacRegion_t region, RxConfigParams_t* rxConfig, int8_t* datarate ); + +/*! + * \brief TX configuration. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] txConfig Pointer to the function parameters. + * + * \param [OUT] txPower The tx power index which was set. + * + * \param [OUT] txTimeOnAir The time-on-air of the frame. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionTxConfig( LoRaMacRegion_t region, TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ); + +/*! + * \brief The function processes a Link ADR Request. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] linkAdrReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionLinkAdrReq( LoRaMacRegion_t region, LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ); + +/*! + * \brief The function processes a RX Parameter Setup Request. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] rxParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionRxParamSetupReq( LoRaMacRegion_t region, RxParamSetupReqParams_t* rxParamSetupReq ); + +/*! + * \brief The function processes a New Channel Request. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] newChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionNewChannelReq( LoRaMacRegion_t region, NewChannelReqParams_t* newChannelReq ); + +/*! + * \brief The function processes a TX ParamSetup Request. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] txParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + * Returns -1, if the functionality is not implemented. In this case, the end node + * shall ignore the command. + */ +int8_t RegionTxParamSetupReq( LoRaMacRegion_t region, TxParamSetupReqParams_t* txParamSetupReq ); + +/*! + * \brief The function processes a DlChannel Request. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] dlChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionDlChannelReq( LoRaMacRegion_t region, DlChannelReqParams_t* dlChannelReq ); + +/*! + * \brief Alternates the datarate of the channel for the join request. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] alternateDr Pointer to the function parameters. + * + * \retval Datarate to apply. + */ +int8_t RegionAlternateDr( LoRaMacRegion_t region, AlternateDrParams_t* alternateDr ); + +/*! + * \brief Calculates the back-off time. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] calcBackOff Pointer to the function parameters. + */ +void RegionCalcBackOff( LoRaMacRegion_t region, CalcBackOffParams_t* calcBackOff ); + +/*! + * \brief Searches and set the next random available channel + * + * \param [IN] region LoRaWAN region. + * + * \param [OUT] channel Next channel to use for TX. + * + * \param [OUT] time Time to wait for the next transmission according to the duty + * cycle. + * + * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate]. + */ +bool RegionNextChannel( LoRaMacRegion_t region, NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); + +/*! + * \brief Adds a channel. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] channelAdd Pointer to the function parameters. + * + * \retval Status of the operation. + */ +LoRaMacStatus_t RegionChannelAdd( LoRaMacRegion_t region, ChannelAddParams_t* channelAdd ); + +/*! + * \brief Removes a channel. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] channelRemove Pointer to the function parameters. + * + * \retval Returns true, if the channel was removed successfully. + */ +bool RegionChannelsRemove( LoRaMacRegion_t region, ChannelRemoveParams_t* channelRemove ); + +/*! + * \brief Sets the radio into continuous wave mode. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] continuousWave Pointer to the function parameters. + */ +void RegionSetContinuousWave( LoRaMacRegion_t region, ContinuousWaveParams_t* continuousWave ); + +/*! \} defgroup REGION */ + +#endif // __REGION_H__ From 8bba9f1c636632f068ff9e5aaf9831afc6b96b82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 2 Mar 2017 14:43:17 +0100 Subject: [PATCH 002/161] Add common region implementation. --- src/mac/region/RegionCommon.c | 204 ++++++++++++++++++++++++++++++++++ src/mac/region/RegionCommon.h | 187 +++++++++++++++++++++++++++++++ 2 files changed, 391 insertions(+) create mode 100644 src/mac/region/RegionCommon.c create mode 100644 src/mac/region/RegionCommon.h diff --git a/src/mac/region/RegionCommon.c b/src/mac/region/RegionCommon.c new file mode 100644 index 000000000..17d79de9b --- /dev/null +++ b/src/mac/region/RegionCommon.c @@ -0,0 +1,204 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + ___ _____ _ ___ _ _____ ___ ___ ___ ___ +/ __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| +\__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| +|___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| +embedded.connectivity.solutions=============== + +Description: LoRa MAC common region implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) +*/ + +#include +#include +#include + +#include "timer.h" +#include "utilities.h" +#include "LoRaMac.h" +#include "RegionCommon.h" + + + +#define BACKOFF_DC_1_HOUR 100 +#define BACKOFF_DC_10_HOURS 1000 +#define BACKOFF_DC_24_HOURS 10000 + + + +static uint8_t CountChannels( uint16_t mask, uint8_t nbBits ) +{ + uint8_t nbActiveBits = 0; + + for( uint8_t j = 0; j < nbBits; j++ ) + { + if( ( mask & ( 1 << j ) ) == ( 1 << j ) ) + { + nbActiveBits++; + } + } + return nbActiveBits; +} + + + +uint16_t RegionCommonGetJoinDc( TimerTime_t elapsedTime ) +{ + uint16_t dutyCycle = 0; + + if( elapsedTime < 3600000 ) + { + dutyCycle = BACKOFF_DC_1_HOUR; + } + else if( elapsedTime < ( 3600000 + 36000000 ) ) + { + dutyCycle = BACKOFF_DC_10_HOURS; + } + else + { + dutyCycle = BACKOFF_DC_24_HOURS; + } + return dutyCycle; +} + +bool RegionCommonChanVerifyDr( uint8_t nbChannels, uint16_t* channelsMask, int8_t dr, int8_t minDr, int8_t maxDr, ChannelParams_t* channels ) +{ + if( RegionCommonValueInRange( dr, minDr, maxDr ) == 0 ) + { + return false; + } + + for( uint8_t i = 0, k = 0; i < nbChannels; i += 16, k++ ) + { + for( uint8_t j = 0; j < 16; j++ ) + { + if( ( ( channelsMask[k] & ( 1 << j ) ) != 0 ) ) + {// Check datarate validity for enabled channels + if( RegionCommonValueInRange( dr, channels[i + j].DrRange.Fields.Min, channels[i + j].DrRange.Fields.Max ) == 1 ) + { + // At least 1 channel has been found we can return OK. + return true; + } + } + } + } + return false; +} + +uint8_t RegionCommonValueInRange( int8_t value, int8_t min, int8_t max ) +{ + if( ( value >= min ) && ( value <= max ) ) + { + return 1; + } + return 0; +} + +bool RegionCommonChanDisable( uint16_t* channelsMask, uint8_t id, uint8_t maxChannels ) +{ + uint8_t index = id / 16; + + if( ( index > ( maxChannels / 16 ) ) || ( id >= maxChannels ) ) + { + return false; + } + + // Deactivate channel + channelsMask[index] &= ~( 1 << ( id % 16 ) ); + + return true; +} + +uint8_t RegionCommonCountChannels( uint16_t* channelsMask, uint8_t startIdx, uint8_t stopIdx ) +{ + uint8_t nbChannels = 0; + + if( channelsMask == NULL ) + { + return 0; + } + + for( uint8_t i = startIdx; i < stopIdx; i++ ) + { + nbChannels += CountChannels( channelsMask[i], 16 ); + } + + return nbChannels; +} + +void RegionCommonChanMaskCopy( uint16_t* channelsMaskDest, uint16_t* channelsMaskSrc, uint8_t len ) +{ + if( ( channelsMaskDest != NULL ) && ( channelsMaskSrc != NULL ) ) + { + for( uint8_t i = 0; i < len; i++ ) + { + channelsMaskDest[i] = channelsMaskSrc[i]; + } + } +} + +void RegionCommonSetBandTxDone( Band_t* band, TimerTime_t lastTxDone ) +{ + band->LastTxDoneTime = lastTxDone; +} + +TimerTime_t RegionCommonUpdateBandTimeOff( bool dutyCycle, Band_t* bands, uint8_t nbBands ) +{ + TimerTime_t nextTxDelay = ( TimerTime_t )( -1 ); + + // Update bands Time OFF + for( uint8_t i = 0; i < nbBands; i++ ) + { + if( dutyCycle == true ) + { + if( bands[i].TimeOff <= TimerGetElapsedTime( bands[i].LastTxDoneTime ) ) + { + bands[i].TimeOff = 0; + } + if( bands[i].TimeOff != 0 ) + { + nextTxDelay = MIN( bands[i].TimeOff - TimerGetElapsedTime( bands[i].LastTxDoneTime ), + nextTxDelay ); + } + } + else + { + nextTxDelay = 0; + bands[i].TimeOff = 0; + } + } + return nextTxDelay; +} + +uint8_t RegionCommonParseLinkAdrReq( uint8_t* payload, LinkAdrParams_t* linkAdrParams ) +{ + uint8_t retIndex = 0; + + if( payload[0] == SRV_MAC_LINK_ADR_REQ ) + { + // Parse datarate and tx power + linkAdrParams->Datarate = payload[1]; + linkAdrParams->TxPower = linkAdrParams->Datarate & 0x0F; + linkAdrParams->Datarate = ( linkAdrParams->Datarate >> 4 ) & 0x0F; + // Parse ChMask + linkAdrParams->ChMask = ( uint16_t )payload[2]; + linkAdrParams->ChMask |= ( uint16_t )payload[3] << 8; + // Parse ChMaskCtrl and nbRep + linkAdrParams->NbRep = payload[4]; + linkAdrParams->ChMaskCtrl = ( linkAdrParams->NbRep >> 4 ) & 0x07; + linkAdrParams->NbRep &= 0x0F; + + // LinkAdrReq has 4 bytes length + 1 byte CMD + retIndex = 5; + } + return retIndex; +} diff --git a/src/mac/region/RegionCommon.h b/src/mac/region/RegionCommon.h new file mode 100644 index 000000000..c7230b7d2 --- /dev/null +++ b/src/mac/region/RegionCommon.h @@ -0,0 +1,187 @@ +/*! + * \file RegionCommon.h + * + * \brief Region independent implementations which are common to all regions. + * + * \copyright Revised BSD License, see section \ref LICENSE. + * + * \code + * ______ _ + * / _____) _ | | + * ( (____ _____ ____ _| |_ _____ ____| |__ + * \____ \| ___ | (_ _) ___ |/ ___) _ \ + * _____) ) ____| | | || |_| ____( (___| | | | + * (______/|_____)_|_|_| \__)_____)\____)_| |_| + * (C)2013 Semtech + * + * ___ _____ _ ___ _ _____ ___ ___ ___ ___ + * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| + * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| + * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| + * embedded.connectivity.solutions=============== + * + * \endcode + * + * \author Miguel Luis ( Semtech ) + * + * \author Gregory Cristian ( Semtech ) + * + * \author Daniel Jaeckle ( STACKFORCE ) + * + * \defgroup REGIONCOMMON Common region implementation + * Region independent implementations which are common to all regions. + * \{ + */ +#ifndef __REGIONCOMMON_H__ +#define __REGIONCOMMON_H__ + +typedef struct sLinkAdrParams +{ + /*! + * Number of repetitions. + */ + uint8_t NbRep; + /*! + * Datarate. + */ + int8_t Datarate; + /*! + * Tx power. + */ + int8_t TxPower; + /*! + * Channels mask control field. + */ + uint8_t ChMaskCtrl; + /*! + * Channels mask field. + */ + uint16_t ChMask; +}LinkAdrParams_t; + +/*! + * \brief Calculates the join duty cycle. + * This is a generic function and valid for all regions. + * + * \param [IN] elapsedTime Elapsed time since the start of the device. + * + * \retval Duty cycle restriction. + */ +uint16_t RegionCommonGetJoinDc( TimerTime_t elapsedTime ); + +/*! + * \brief Verifies, if a value is in a given range. + * This is a generic function and valid for all regions. + * + * \param [IN] value Value to verify, if it is in range. + * + * \param [IN] min Minimum possible value. + * + * \param [IN] max Maximum possible value. + * + * \retval Returns 1 if the value is in range, otherwise 0. + */ +uint8_t RegionCommonValueInRange( int8_t value, int8_t min, int8_t max ); + +/*! + * \brief Verifies, if a datarate is available on an active channel. + * This is a generic function and valid for all regions. + * + * \param [IN] nbChannels Number of channels. + * + * \param [IN] channelsMask The channels mask of the region. + * + * \param [IN] dr The datarate to verify. + * + * \param [IN] minDr Minimum datarate. + * + * \param [IN] maxDr Maximum datarate. + * + * \param [IN] channels The channels of the region. + * + * \retval Returns true if the datarate is supported, false if not. + */ +bool RegionCommonChanVerifyDr( uint8_t nbChannels, uint16_t* channelsMask, int8_t dr, + int8_t minDr, int8_t maxDr, ChannelParams_t* channels ); + +/*! + * \brief Disables a channel in a given channels mask. + * This is a generic function and valid for all regions. + * + * \param [IN] channelsMask The channels mask of the region. + * + * \param [IN] id The id of the channels mask to disable. + * + * \param [IN] maxChannels Maximum number of channels. + * + * \retval Returns true if the channel could be disabled, false if not. + */ +bool RegionCommonChanDisable( uint16_t* channelsMask, uint8_t id, uint8_t maxChannels ); + +/*! + * \brief Counts the number of active channels in a given channels mask. + * This is a generic function and valid for all regions. + * + * \param [IN] channelsMask The channels mask of the region. + * + * \param [IN] startIdx Start index. + * + * \param [IN] stopIdx Stop index ( the channels of this index will not be counted ). + * + * \retval Returns the number of active channels. + */ +uint8_t RegionCommonCountChannels( uint16_t* channelsMask, uint8_t startIdx, uint8_t stopIdx ); + +/*! + * \brief Copy a channels mask. + * This is a generic function and valid for all regions. + * + * \param [IN] channelsMaskDest The destination channels mask. + * + * \param [IN] channelsMaskSrc The source channels mask. + * + * \param [IN] len The index length to copy. + */ +void RegionCommonChanMaskCopy( uint16_t* channelsMaskDest, uint16_t* channelsMaskSrc, uint8_t len ); + +/*! + * \brief Sets the last tx done property. + * This is a generic function and valid for all regions. + * + * \param [IN] band The band to be updated. + * + * \param [IN] lastTxDone The time of the last TX done. + */ +void RegionCommonSetBandTxDone( Band_t* band, TimerTime_t lastTxDone ); + +/*! + * \brief Updates the time-offs of the bands. + * This is a generic function and valid for all regions. + * + * \param [IN] dutyCycle Set to true, if the duty cycle is enabled. + * + * \param [IN] bands A pointer to the bands. + * + * \param [IN] nbBands The number of bands available. + * + * \retval Returns the time which must be waited to perform the next uplink. + */ +TimerTime_t RegionCommonUpdateBandTimeOff( bool dutyCycle, Band_t* bands, uint8_t nbBands ); + +/*! + * \brief Parses the parameter of an LinkAdrRequest. + * This is a generic function and valid for all regions. + * + * \param [IN] payload Pointer to the payload containing the MAC commands. The payload + * must contain the CMD identifier, following by the parameters. + * + * \param [OUT] parseLinkAdr The function fills the structure with the ADR parameters. + * + * \retval Returns the length of the ADR request, if a request was found. Otherwise, the + * function returns 0. + */ +uint8_t RegionCommonParseLinkAdrReq( uint8_t* payload, LinkAdrParams_t* parseLinkAdr ); + +/*! \} defgroup REGIONCOMMON */ + +#endif // __REGIONCOMMON_H__ From 5cb1d7e82c57d673efbbde1c2b2330cbaeecad6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 2 Mar 2017 14:43:38 +0100 Subject: [PATCH 003/161] Add region implementations. --- src/mac/region/RegionAS923.c | 1030 ++++++++++++++++++++++++++ src/mac/region/RegionAS923.h | 453 ++++++++++++ src/mac/region/RegionAU915.c | 853 ++++++++++++++++++++++ src/mac/region/RegionAU915.h | 413 +++++++++++ src/mac/region/RegionCN470.c | 753 +++++++++++++++++++ src/mac/region/RegionCN470.h | 401 +++++++++++ src/mac/region/RegionCN779.c | 1001 ++++++++++++++++++++++++++ src/mac/region/RegionCN779.h | 420 +++++++++++ src/mac/region/RegionEU433.c | 1001 ++++++++++++++++++++++++++ src/mac/region/RegionEU433.h | 423 +++++++++++ src/mac/region/RegionEU868.c | 1031 +++++++++++++++++++++++++++ src/mac/region/RegionEU868.h | 443 ++++++++++++ src/mac/region/RegionIN865.c | 996 ++++++++++++++++++++++++++ src/mac/region/RegionIN865.h | 421 +++++++++++ src/mac/region/RegionKR920.c | 986 +++++++++++++++++++++++++ src/mac/region/RegionKR920.h | 424 +++++++++++ src/mac/region/RegionUS915-Hybrid.c | 944 ++++++++++++++++++++++++ src/mac/region/RegionUS915-Hybrid.h | 413 +++++++++++ src/mac/region/RegionUS915.c | 850 ++++++++++++++++++++++ src/mac/region/RegionUS915.h | 413 +++++++++++ 20 files changed, 13669 insertions(+) create mode 100644 src/mac/region/RegionAS923.c create mode 100644 src/mac/region/RegionAS923.h create mode 100644 src/mac/region/RegionAU915.c create mode 100644 src/mac/region/RegionAU915.h create mode 100644 src/mac/region/RegionCN470.c create mode 100644 src/mac/region/RegionCN470.h create mode 100644 src/mac/region/RegionCN779.c create mode 100644 src/mac/region/RegionCN779.h create mode 100644 src/mac/region/RegionEU433.c create mode 100644 src/mac/region/RegionEU433.h create mode 100644 src/mac/region/RegionEU868.c create mode 100644 src/mac/region/RegionEU868.h create mode 100644 src/mac/region/RegionIN865.c create mode 100644 src/mac/region/RegionIN865.h create mode 100644 src/mac/region/RegionKR920.c create mode 100644 src/mac/region/RegionKR920.h create mode 100644 src/mac/region/RegionUS915-Hybrid.c create mode 100644 src/mac/region/RegionUS915-Hybrid.h create mode 100644 src/mac/region/RegionUS915.c create mode 100644 src/mac/region/RegionUS915.h diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c new file mode 100644 index 000000000..cd2d5b22d --- /dev/null +++ b/src/mac/region/RegionAS923.c @@ -0,0 +1,1030 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + ___ _____ _ ___ _ _____ ___ ___ ___ ___ +/ __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| +\__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| +|___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| +embedded.connectivity.solutions=============== + +Description: LoRa MAC region AS923 implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) +*/ +#include +#include +#include + +#include "radio.h" +#include "timer.h" +#include "LoRaMac.h" + +#include "utilities.h" + +#include "Region.h" +#include "RegionCommon.h" +#include "RegionAS923.h" + + + +// Definitions +#define CHANNELS_MASK_SIZE 1 + + + +// Global attributes +/*! + * LoRaMAC channels + */ +static ChannelParams_t Channels[AS923_MAX_NB_CHANNELS]; + +/*! + * LoRaMac bands + */ +static Band_t Bands[AS923_MAX_NB_BANDS] = +{ + AS923_BAND0 +}; + +/*! + * LoRaMac channels mask + */ +static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; + +/*! + * LoRaMac channels default mask + */ +static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; + + + +// Static functions +static uint8_t ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +{ + // Initialize minDr for a downlink dwell time configuration of 0 + int8_t minDr = DR_0; + + // Update the minDR for a downlink dwell time configuration of 1 + if( downlinkDwellTime == 1 ) + { + minDr = DR_2; + } + + // Apply offset formula + return MIN( DR_5, MAX( minDr, dr - EffectiveRx1DrOffsetAS923[dr] ) ); +} + +static uint16_t GetSymbTimeout( int8_t dr ) +{ + uint16_t symbolTimeout = 5; + + if( ( dr == DR_3 ) || ( dr == DR_4 ) ) + { + symbolTimeout = 8; + } + else if( dr == DR_5 ) + { + symbolTimeout = 10; + } + else if( dr == DR_6 ) + { + symbolTimeout = 14; + } + return symbolTimeout; +} + +static uint32_t GetBandwidth( int8_t dr ) +{ + uint32_t bandwidth = 0; + + if( dr == DR_6 ) + { + bandwidth = 1; + } + return bandwidth; +} + +static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) +{ + int8_t txPowerResult = txPower; + + // Limit tx power to the band max + txPowerResult = MAX( txPower, maxBandTxPower ); + + return txPowerResult; +} + +static bool VerifyTxFreq( uint32_t freq ) +{ + // Check radio driver support + if( Radio.CheckRfFrequency( freq ) == false ) + { + return false; + } + return true; +} + +static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t* channelsMask, ChannelParams_t* channels, Band_t* bands, uint8_t* enabledChannels, uint8_t* delayTx ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTransmission = 0; + + for( uint8_t i = 0, k = 0; i < AS923_MAX_NB_CHANNELS; i += 16, k++ ) + { + for( uint8_t j = 0; j < 16; j++ ) + { + if( ( channelsMask[k] & ( 1 << j ) ) != 0 ) + { + if( channels[i + j].Frequency == 0 ) + { // Check if the channel is enabled + continue; + } + if( joined == false ) + { + if( ( AS923_JOIN_CHANNELS & ( 1 << j ) ) == 0 ) + { + continue; + } + } + if( RegionCommonValueInRange( datarate, channels[i + j].DrRange.Fields.Min, + channels[i + j].DrRange.Fields.Max ) == false ) + { // Check if the current channel selection supports the given datarate + continue; + } + if( bands[channels[i + j].Band].TimeOff > 0 ) + { // Check if the band is available for transmission + delayTransmission++; + continue; + } + enabledChannels[nbEnabledChannels++] = i + j; + } + } + } + + *delayTx = delayTransmission; + return nbEnabledChannels; +} + + + +void RegionAS923GetPhyParam( GetPhyParams_t* getPhy ) +{ + switch( getPhy->Attribute ) + { + case PHY_MIN_DR: + { + getPhy->Param.Value = AS923_TX_MIN_DATARATE; + break; + } + case PHY_DEF_TX_DR: + { + getPhy->Param.Value = AS923_DEFAULT_DATARATE; + break; + } + case PHY_DEF_TX_POWER: + { + getPhy->Param.Value = AS923_DEFAULT_TX_POWER; + break; + } + case PHY_MAX_PAYLOAD: + { + if( getPhy->UplinkDwellTime == 0 ) + { + getPhy->Param.Value = MaxPayloadOfDatarateDwell0AS923[getPhy->Datarate]; + } + else + { + getPhy->Param.Value = MaxPayloadOfDatarateDwell1UpAS923[getPhy->Datarate]; + } + break; + } + case PHY_MAX_PAYLOAD_REPEATER: + { + if( getPhy->UplinkDwellTime == 0 ) + { + getPhy->Param.Value = MaxPayloadOfDatarateRepeaterDwell0AS923[getPhy->Datarate]; + } + else + { + getPhy->Param.Value = MaxPayloadOfDatarateDwell1UpAS923[getPhy->Datarate]; + } + break; + } + case PHY_DUTY_CYCLE: + { + getPhy->Param.Value = AS923_DUTY_CYCLE_ENABLED; + break; + } + case PHY_MAX_RX_WINDOW: + { + getPhy->Param.Value = AS923_MAX_RX_WINDOW; + break; + } + case PHY_RECEIVE_DELAY1: + { + getPhy->Param.Value = AS923_RECEIVE_DELAY1; + break; + } + case PHY_RECEIVE_DELAY2: + { + getPhy->Param.Value = AS923_RECEIVE_DELAY2; + break; + } + case PHY_JOIN_ACCEPT_DELAY1: + { + getPhy->Param.Value = AS923_JOIN_ACCEPT_DELAY1; + break; + } + case PHY_JOIN_ACCEPT_DELAY2: + { + getPhy->Param.Value = AS923_JOIN_ACCEPT_DELAY2; + break; + } + case PHY_MAX_FCNT_GAP: + { + getPhy->Param.Value = AS923_MAX_FCNT_GAP; + break; + } + case PHY_ACK_TIMEOUT: + { + getPhy->Param.Value = ( AS923_ACKTIMEOUT + randr( -AS923_ACK_TIMEOUT_RND, AS923_ACK_TIMEOUT_RND ) ); + break; + } + case PHY_DEF_DR1_OFFSET: + { + getPhy->Param.Value = AS923_DEFAULT_RX1_DR_OFFSET; + break; + } + case PHY_DEF_RX2_FREQUENCY: + { + getPhy->Param.Value = AS923_RX_WND_2_FREQ; + break; + } + case PHY_DEF_RX2_DR: + { + getPhy->Param.Value = AS923_RX_WND_2_DR; + break; + } + case PHY_CHANNELS_MASK: + { + getPhy->Param.ChannelsMask = ChannelsMask; + break; + } + case PHY_CHANNELS_DEFAULT_MASK: + { + getPhy->Param.ChannelsMask = ChannelsDefaultMask; + break; + } + case PHY_MAX_NB_CHANNELS: + { + getPhy->Param.Value = AS923_MAX_NB_CHANNELS; + break; + } + case PHY_CHANNELS: + { + getPhy->Param.Channels = Channels; + break; + } + case PHY_DEF_UPLINK_DWELL_TIME: + { + getPhy->Param.Value = AS923_DEFAULT_UPLINK_DWELL_TIME; + break; + } + case PHY_DEF_DOWNLINK_DWELL_TIME: + { + getPhy->Param.Value = AS923_DEFAULT_DOWNLINK_DWELL_TIME; + break; + } + case PHY_DEF_MAX_EIRP: + { + getPhy->Param.Value = AS923_DEFAULT_MAX_EIRP; + break; + } + case PHY_NB_JOIN_TRIALS: + case PHY_DEF_NB_JOIN_TRIALS: + { + getPhy->Param.Value = 1; + break; + } + default: + { + return; + } + } +} + +void RegionAS923SetBandTxDone( SetBandTxDoneParams_t* txDone ) +{ + RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); +} + +void RegionAS923InitDefaults( InitType_t type ) +{ + switch( type ) + { + case INIT_TYPE_INIT: + { + // Channels + Channels[0] = ( ChannelParams_t ) AS923_LC1; + Channels[1] = ( ChannelParams_t ) AS923_LC2; + + // Initialize the channels default mask + ChannelsDefaultMask[0] = LC( 1 ) + LC( 2 ); + // Update the channels mask + RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 1 ); + break; + } + case INIT_TYPE_RESTORE: + { + // Restore channels default mask + ChannelsMask[0] |= ChannelsDefaultMask[0]; + break; + } + default: + { + break; + } + } +} + +bool RegionAS923Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) +{ + switch( phyAttribute ) + { + case PHY_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, AS923_TX_MIN_DATARATE, AS923_TX_MAX_DATARATE ); + } + case PHY_DEF_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + } + case PHY_DEF_TX_POWER: + case PHY_TX_POWER: + { + // Remark: switched min and max! + return RegionCommonValueInRange( verify->TxPower, AS923_MAX_TX_POWER, AS923_MIN_TX_POWER ); + } + case PHY_DUTY_CYCLE: + { + return AS923_DUTY_CYCLE_ENABLED; + } + case PHY_NB_JOIN_TRIALS: + { + return true; + } + default: + return false; + } +} + +void RegionAS923ApplyCFList( ApplyCFListParams_t* applyCFList ) +{ + ChannelParams_t newChannel; + ChannelAddParams_t channelAdd; + ChannelRemoveParams_t channelRemove; + + // Setup default datarate range + newChannel.DrRange.Value = ( DR_5 << 4 ) | DR_0; + + // Size of the optional CF list + if( applyCFList->Size != 16 ) + { + return; + } + + // Last byte is RFU, don't take it into account + for( uint8_t i = 0, chanIdx = AS923_NUMB_DEFAULT_CHANNELS; i < 15; i+=3, chanIdx++ ) + { + // Channel frequency + newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); + newChannel.Frequency *= 100; + + // Initialize alternative frequency to 0 + newChannel.Rx1Frequency = 0; + + if( newChannel.Frequency != 0 ) + { + channelAdd.NewChannel = &newChannel; + channelAdd.ChannelId = chanIdx; + + // Try to add all channels + RegionAS923ChannelAdd( &channelAdd ); + } + else + { + channelRemove.ChannelId = chanIdx; + + RegionAS923ChannelsRemove( &channelRemove ); + } + } +} + +bool RegionAS923ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ) +{ + switch( chanMaskSet->ChannelsMaskType ) + { + case CHANNELS_MASK: + { + RegionCommonChanMaskCopy( ChannelsMask, chanMaskSet->ChannelsMaskIn, 1 ); + break; + } + case CHANNELS_DEFAULT_MASK: + { + RegionCommonChanMaskCopy( ChannelsDefaultMask, chanMaskSet->ChannelsMaskIn, 1 ); + break; + } + default: + return false; + } + return true; +} + +bool RegionAS923AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ) +{ + bool adrAckReq = false; + int8_t datarate = adrNext->Datarate; + int8_t txPower = adrNext->TxPower; + + // Report back the adr ack counter + *adrAckCounter = adrNext->AdrAckCounter; + + if( adrNext->AdrEnabled == true ) + { + if( datarate == AS923_TX_MIN_DATARATE ) + { + *adrAckCounter = 0; + adrAckReq = false; + } + else + { + if( adrNext->AdrAckCounter >= AS923_ADR_ACK_LIMIT ) + { + adrAckReq = true; + txPower = AS923_MAX_TX_POWER; + } + else + { + adrAckReq = false; + } + if( adrNext->AdrAckCounter >= ( AS923_ADR_ACK_LIMIT + AS923_ADR_ACK_DELAY ) ) + { + if( ( adrNext->AdrAckCounter % AS923_ADR_ACK_DELAY ) == 0 ) + { + if( datarate > AS923_TX_MIN_DATARATE ) + { + datarate--; + } + + if( datarate == AS923_TX_MIN_DATARATE ) + { + if( adrNext->UpdateChanMask == true ) + { + // Re-enable default channels + ChannelsMask[0] |= LC( 1 ) + LC( 2 ); + } + } + } + } + } + } + + *drOut = datarate; + *txPowOut = txPower; + return adrAckReq; +} + +// ToDo get phy datarate afterwards +bool RegionAS923RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) +{ + RadioModems_t modem; + int8_t dr = rxConfig->Datarate; + uint8_t maxPayload = 0; + uint16_t symbTimeout = 0; + uint32_t bandwidth = 0; + int8_t phyDr = 0; + uint32_t frequency = rxConfig->Frequency; + + if( Radio.GetStatus( ) != RF_IDLE ) + { + return false; + } + + if( rxConfig->Window == 0 ) + { + // Apply the datarate offset for RX window 1 + dr = ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); + // Apply window 1 frequency + frequency = Channels[rxConfig->Channel].Frequency; + // Apply the alternative RX 1 window frequency, if it is available + if( Channels[rxConfig->Channel].Rx1Frequency != 0 ) + { + frequency = Channels[rxConfig->Channel].Rx1Frequency; + } + } + symbTimeout = GetSymbTimeout( dr ); + bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table + phyDr = DataratesAS923[dr]; + + Radio.SetChannel( frequency ); + + if( dr == DR_7 ) + { + modem = MODEM_FSK; + Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, 0, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + } + else + { + modem = MODEM_LORA; + Radio.SetRxConfig( modem, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + } + + // Check the downlink dwell time + if( rxConfig->DownlinkDwellTime == 0 ) + { + // Check for repeater support + if( rxConfig->RepeaterSupport == true ) + { + maxPayload = MaxPayloadOfDatarateRepeaterDwell0AS923[dr]; + } + else + { + maxPayload = MaxPayloadOfDatarateDwell0AS923[dr]; + } + } + else + { + // Same table for repeater and non-repeater support for dwell time + // configuration 1. + maxPayload = MaxPayloadOfDatarateDwell1DownAS923[dr]; + } + + Radio.SetMaxPayloadLength( modem, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); + + *datarate = (uint8_t) dr; + return true; +} + +bool RegionAS923TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) +{ + RadioModems_t modem; + int8_t phyDr = DataratesAS923[txConfig->Datarate]; + int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band].TxMaxPower, txConfig->Datarate, ChannelsMask ); + uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); + int8_t phyTxPower = 0; + + phyTxPower = txConfig->MaxEirp - ( txPowerLimited * 2U ); + + // Setup the radio frequency + Radio.SetChannel( Channels[txConfig->Channel].Frequency ); + + if( txConfig->Datarate == DR_7 ) + { // High Speed FSK channel + modem = MODEM_FSK; + Radio.SetTxConfig( modem, phyTxPower, 25e3, bandwidth, phyDr * 1e3, 0, 5, false, true, 0, 0, false, 3e3 ); + } + else + { + modem = MODEM_LORA; + Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + } + + // Setup maximum payload lenght of the radio driver + Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); + // Get the time-on-air of the next tx frame + *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); + + *txPower = txConfig->TxPower; + return true; +} + +uint8_t RegionAS923LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) +{ + uint8_t status = 0x07; + LinkAdrParams_t linkAdrParams; + uint8_t nextIndex = 0; + uint8_t bytesProcessed = 0; + uint16_t chMask = 0; + + while( bytesProcessed < linkAdrReq->PayloadSize ) + { + // Get ADR request parameters + nextIndex = RegionCommonParseLinkAdrReq( &( linkAdrReq->Payload[bytesProcessed] ), &linkAdrParams ); + + if( nextIndex == 0 ) + break; // break loop, since no more request has been found + + // Update bytes processed + bytesProcessed += nextIndex; + + // Revert status, as we only check the last ADR request for the channel mask KO + status = 0x07; + + // Setup temporary channels mask + chMask = linkAdrParams.ChMask; + + // Verify channels mask + if( ( linkAdrParams.ChMaskCtrl == 0 ) && ( chMask == 0 ) ) + { + status &= 0xFE; // Channel mask KO + } + else if( ( ( linkAdrParams.ChMaskCtrl >= 1 ) && ( linkAdrParams.ChMaskCtrl <= 5 )) || + ( linkAdrParams.ChMaskCtrl >= 7 ) ) + { + // RFU + status &= 0xFE; // Channel mask KO + } + else + { + for( uint8_t i = 0; i < AS923_MAX_NB_CHANNELS; i++ ) + { + if( linkAdrParams.ChMaskCtrl == 6 ) + { + if( Channels[i].Frequency != 0 ) + { + chMask |= 1 << i; + } + } + else + { + if( ( ( chMask & ( 1 << i ) ) != 0 ) && + ( Channels[i].Frequency == 0 ) ) + {// Trying to enable an undefined channel + status &= 0xFE; // Channel mask KO + } + } + } + } + } + + // Verify datarate + if( RegionCommonChanVerifyDr( AS923_MAX_NB_CHANNELS, &chMask, linkAdrParams.Datarate, AS923_TX_MIN_DATARATE, AS923_TX_MAX_DATARATE, Channels ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify tx power + if( RegionCommonValueInRange( linkAdrParams.TxPower, AS923_MAX_TX_POWER, AS923_MIN_TX_POWER ) == 0 ) + { + // Verify if the maximum TX power is exceeded + if( AS923_MAX_TX_POWER > linkAdrParams.TxPower ) + { // Apply maximum TX power. Accept TX power. + linkAdrParams.TxPower = AS923_MAX_TX_POWER; + } + else + { + status &= 0xFB; // TxPower KO + } + } + + // Update channelsMask if everything is correct + if( status == 0x07 ) + { + if( linkAdrParams.NbRep == 0 ) + { // Value of 0 is not allowed, revert to default. + linkAdrParams.NbRep = 1; + } + + // Set the channels mask to a default value + memset( ChannelsMask, 0, sizeof( ChannelsMask ) ); + // Update the channels mask + ChannelsMask[0] = chMask; + } + + // Update status variables + *drOut = linkAdrParams.Datarate; + *txPowOut = linkAdrParams.TxPower; + *nbRepOut = linkAdrParams.NbRep; + *nbBytesParsed = bytesProcessed; + + return status; +} + +uint8_t RegionAS923RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) +{ + uint8_t status = 0x07; + + // Verify radio frequency + if( Radio.CheckRfFrequency( rxParamSetupReq->Frequency ) == false ) + { + status &= 0xFE; // Channel frequency KO + } + + // Verify datarate + if( RegionCommonValueInRange( rxParamSetupReq->Datarate, AS923_RX_MIN_DATARATE, AS923_RX_MAX_DATARATE ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify datarate offset + if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, AS923_MIN_RX1_DR_OFFSET, AS923_MAX_RX1_DR_OFFSET ) == false ) + { + status &= 0xFB; // Rx1DrOffset range KO + } + + return status; +} + +uint8_t RegionAS923NewChannelReq( NewChannelReqParams_t* newChannelReq ) +{ + uint8_t status = 0x03; + ChannelAddParams_t channelAdd; + ChannelRemoveParams_t channelRemove; + + if( newChannelReq->NewChannel->Frequency == 0 ) + { + channelRemove.ChannelId = newChannelReq->ChannelId; + + // Remove + if( RegionAS923ChannelsRemove( &channelRemove ) == false ) + { + status &= 0xFC; + } + } + else + { + channelAdd.NewChannel = newChannelReq->NewChannel; + channelAdd.ChannelId = newChannelReq->ChannelId; + + switch( RegionAS923ChannelAdd( &channelAdd ) ) + { + case LORAMAC_STATUS_OK: + { + break; + } + case LORAMAC_STATUS_FREQUENCY_INVALID: + { + status &= 0xFE; + break; + } + case LORAMAC_STATUS_DATARATE_INVALID: + { + status &= 0xFD; + break; + } + case LORAMAC_STATUS_FREQ_AND_DR_INVALID: + { + status &= 0xFC; + break; + } + default: + { + status &= 0xFC; + break; + } + } + } + + return status; +} + +int8_t RegionAS923TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ) +{ + // Accept the request + return 0; +} + +uint8_t RegionAS923DlChannelReq( DlChannelReqParams_t* dlChannelReq ) +{ + uint8_t status = 0x03; + + // Verify if the frequency is supported + if( VerifyTxFreq( dlChannelReq->Rx1Frequency ) == false ) + { + status &= 0xFE; + } + + // Verify if an uplink frequency exists + if( Channels[dlChannelReq->ChannelId].Frequency == 0 ) + { + status &= 0xFD; + } + + // Apply Rx1 frequency, if the status is OK + if( status == 0x03 ) + { + Channels[dlChannelReq->ChannelId].Rx1Frequency = dlChannelReq->Rx1Frequency; + } + + return status; +} + +int8_t RegionAS923AlternateDr( AlternateDrParams_t* alternateDr ) +{ + // Only DR_2 is supported + return DR_2; +} + +void RegionAS923CalcBackOff( CalcBackOffParams_t* calcBackOff ) +{ + uint8_t channel = calcBackOff->Channel; + uint16_t dutyCycle = Bands[Channels[channel].Band].DCycle; + uint16_t joinDutyCycle = 0; + + // Reset time-off to initial value. + Bands[Channels[channel].Band].TimeOff = 0; + + if( calcBackOff->Joined == false ) + { + // Get the join duty cycle + joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); + // Apply the most restricting duty cycle + dutyCycle = MAX( dutyCycle, joinDutyCycle ); + // Apply band time-off. + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; + } + else + { + if( calcBackOff->DutyCycleEnabled == true ) + { + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; + } + } +} + +bool RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +{ + uint8_t channelNext = 0; + uint8_t nbEnabledChannels = 0; + uint8_t delayTx = 0; + uint8_t enabledChannels[AS923_MAX_NB_CHANNELS] = { 0 }; + TimerTime_t nextTxDelay = 0; + TimerTime_t carrierSenseTime = 0; + bool channelFree = false; + + if( RegionCommonCountChannels( ChannelsMask, 0, 1 ) == 0 ) + { // Reactivate default channels + ChannelsMask[0] |= LC( 1 ) + LC( 2 ); + } + + if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) + { + // Update bands Time OFF + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, AS923_MAX_NB_BANDS ); + + // Search how many channels are enabled + nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Joined, nextChanParams->Datarate, + ChannelsMask, Channels, + Bands, enabledChannels, &delayTx ); + } + else + { + delayTx++; + nextTxDelay = nextChanParams->AggrTimeOff - TimerGetElapsedTime( nextChanParams->LastAggrTx ); + } + + if( nbEnabledChannels > 0 ) + { + for( uint8_t i = 0, j = randr( 0, nbEnabledChannels - 1 ); i < AS923_MAX_NB_CHANNELS; i++ ) + { + channelNext = enabledChannels[j]; + j = ( j + 1 ) % nbEnabledChannels; + + carrierSenseTime = TimerGetCurrentTime( ); + channelFree = true; + + // Perform carrier sense for 6ms + while( TimerGetElapsedTime( carrierSenseTime ) < AS923_CARRIER_SENSE_TIME ) + { + if( Radio.IsChannelFree( MODEM_LORA, Channels[channelNext].Frequency, AS923_RSSI_FREE_TH ) == false ) + { + channelFree = false; + break; + } + } + + // If the channel is free, we can stop the LBT mechanism + if( channelFree == true ) + { + // Free channel found + *channel = channelNext; + *time = 0; + return true; + } + } + return false; + } + else + { + if( delayTx > 0 ) + { + // Delay transmission due to AggregatedTimeOff or to a band time off + *time = nextTxDelay; + return true; + } + // Datarate not supported by any channel, restore defaults + ChannelsMask[0] |= LC( 1 ) + LC( 2 ); + *time = 0; + return false; + } +} + +LoRaMacStatus_t RegionAS923ChannelAdd( ChannelAddParams_t* channelAdd ) +{ + uint8_t band = 0; + bool drInvalid = false; + bool freqInvalid = false; + uint8_t id = channelAdd->ChannelId; + + if( id >= AS923_MAX_NB_CHANNELS ) + { + return LORAMAC_STATUS_PARAMETER_INVALID; + } + + // Validate the datarate range + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Min, AS923_TX_MIN_DATARATE, AS923_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, AS923_TX_MIN_DATARATE, AS923_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + if( channelAdd->NewChannel->DrRange.Fields.Min > channelAdd->NewChannel->DrRange.Fields.Max ) + { + drInvalid = true; + } + + // Default channels don't accept all values + if( id < AS923_NUMB_DEFAULT_CHANNELS ) + { + // Validate the datarate range for min: must be DR_0 + if( channelAdd->NewChannel->DrRange.Fields.Min > DR_0 ) + { + drInvalid = true; + } + // Validate the datarate range for max: must be DR_5 <= Max <= TX_MAX_DATARATE + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, DR_5, AS923_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + // We are not allowed to change the frequency + if( channelAdd->NewChannel->Frequency != Channels[id].Frequency ) + { + freqInvalid = true; + } + } + + // Check frequency + if( freqInvalid == false ) + { + if( VerifyTxFreq( channelAdd->NewChannel->Frequency ) == false ) + { + freqInvalid = true; + } + } + + // Check status + if( ( drInvalid == true ) && ( freqInvalid == true ) ) + { + return LORAMAC_STATUS_FREQ_AND_DR_INVALID; + } + if( drInvalid == true ) + { + return LORAMAC_STATUS_DATARATE_INVALID; + } + if( freqInvalid == true ) + { + return LORAMAC_STATUS_FREQUENCY_INVALID; + } + + memcpy( &(Channels[id]), channelAdd->NewChannel, sizeof( Channels[id] ) ); + Channels[id].Band = band; + ChannelsMask[0] |= ( 1 << id ); + return LORAMAC_STATUS_OK; +} + +bool RegionAS923ChannelsRemove( ChannelRemoveParams_t* channelRemove ) +{ + uint8_t id = channelRemove->ChannelId; + + if( id < AS923_NUMB_DEFAULT_CHANNELS ) + { + return false; + } + + // Remove the channel from the list of channels + Channels[id] = ( ChannelParams_t ){ 0, 0, { 0 }, 0 }; + + return RegionCommonChanDisable( ChannelsMask, id, AS923_MAX_NB_CHANNELS ); +} + +void RegionAS923SetContinuousWave( ContinuousWaveParams_t* continuousWave ) +{ + int8_t txPowerLimited = LimitTxPower( continuousWave->TxPower, Bands[Channels[continuousWave->Channel].Band].TxMaxPower, continuousWave->Datarate, ChannelsMask ); + int8_t phyTxPower = 0; + uint32_t frequency = Channels[continuousWave->Channel].Frequency; + + phyTxPower = continuousWave->MaxEirp - ( txPowerLimited * 2U ); + + Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); +} diff --git a/src/mac/region/RegionAS923.h b/src/mac/region/RegionAS923.h new file mode 100644 index 000000000..9503998ee --- /dev/null +++ b/src/mac/region/RegionAS923.h @@ -0,0 +1,453 @@ +/*! + * \file RegionAS923.h + * + * \brief Region definition for AS923 + * + * \copyright Revised BSD License, see section \ref LICENSE. + * + * \code + * ______ _ + * / _____) _ | | + * ( (____ _____ ____ _| |_ _____ ____| |__ + * \____ \| ___ | (_ _) ___ |/ ___) _ \ + * _____) ) ____| | | || |_| ____( (___| | | | + * (______/|_____)_|_|_| \__)_____)\____)_| |_| + * (C)2013 Semtech + * + * ___ _____ _ ___ _ _____ ___ ___ ___ ___ + * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| + * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| + * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| + * embedded.connectivity.solutions=============== + * + * \endcode + * + * \author Miguel Luis ( Semtech ) + * + * \author Gregory Cristian ( Semtech ) + * + * \author Daniel Jaeckle ( STACKFORCE ) + * + * \defgroup REGIONAS923 Region AS923 + * Implementation according to LoRaWAN Specification v1.0.2. + * \{ + */ +#ifndef __REGION_AS923_H__ +#define __REGION_AS923_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define AS923_MAX_NB_CHANNELS 16 + +/*! + * Number of default channels + */ +#define AS923_NUMB_DEFAULT_CHANNELS 2 + +/*! + * Minimal datarate that can be used by the node + */ +#define AS923_TX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define AS923_TX_MAX_DATARATE DR_7 + +/*! + * Minimal datarate that can be used by the node + */ +#define AS923_RX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define AS923_RX_MAX_DATARATE DR_7 + +/*! + * Default datarate used by the node + */ +#define AS923_DEFAULT_DATARATE DR_0 + +/*! + * Minimal Rx1 receive datarate offset + */ +#define AS923_MIN_RX1_DR_OFFSET 0 + +/*! + * Maximal Rx1 receive datarate offset + */ +#define AS923_MAX_RX1_DR_OFFSET 7 + +/*! + * Default Rx1 receive datarate offset + */ +#define AS923_DEFAULT_RX1_DR_OFFSET 0 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define AS923_MIN_TX_POWER TX_POWER_5 + +/*! + * Maximal Tx output power that can be used by the node + */ +#define AS923_MAX_TX_POWER TX_POWER_0 + +/*! + * Default Tx output power used by the node + */ +#define AS923_DEFAULT_TX_POWER TX_POWER_0 + +/*! + * Default uplink dwell time configuration + */ +#define AS923_DEFAULT_UPLINK_DWELL_TIME 0 + +/*! + * Default downlink dwell time configuration + */ +#define AS923_DEFAULT_DOWNLINK_DWELL_TIME 0 + +/*! + * Default Max EIRP + */ +#define AS923_DEFAULT_MAX_EIRP 14 + +/*! + * ADR Ack limit + */ +#define AS923_ADR_ACK_LIMIT 64 + +/*! + * ADR Ack delay + */ +#define AS923_ADR_ACK_DELAY 32 + +/*! + * Enabled or disabled the duty cycle + */ +#define AS923_DUTY_CYCLE_ENABLED 0 + +/*! + * Maximum RX window duration + */ +#define AS923_MAX_RX_WINDOW 3000 + +/*! + * Receive delay 1 + */ +#define AS923_RECEIVE_DELAY1 1000 + +/*! + * Receive delay 2 + */ +#define AS923_RECEIVE_DELAY2 2000 + +/*! + * Join accept delay 1 + */ +#define AS923_JOIN_ACCEPT_DELAY1 5000 + +/*! + * Join accept delay 2 + */ +#define AS923_JOIN_ACCEPT_DELAY2 6000 + +/*! + * Maximum frame counter gap + */ +#define AS923_MAX_FCNT_GAP 16384 + +/*! + * Ack timeout + */ +#define AS923_ACKTIMEOUT 2000 + +/*! + * Random ack timeout limits + */ +#define AS923_ACK_TIMEOUT_RND 1000 + +#if ( AS923_DEFAULT_DATARATE > DR_5 ) +#error "A default DR higher than DR_5 may lead to connectivity loss." +#endif + +/*! + * Second reception window channel frequency definition. + */ +#define AS923_RX_WND_2_FREQ 923200000 + +/*! + * Second reception window channel datarate definition. + */ +#define AS923_RX_WND_2_DR DR_2 + +/*! + * Maximum number of bands + */ +#define AS923_MAX_NB_BANDS 1 + +/*! + * Band 0 definition + * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define AS923_BAND0 { 100, AS923_DEFAULT_TX_POWER, 0, 0 } // 1.0 % + +/*! + * LoRaMac default channel 1 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define AS923_LC1 { 923200000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } + +/*! + * LoRaMac default channel 2 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define AS923_LC2 { 923400000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } + +/*! + * LoRaMac channels which are allowed for the join procedure + */ +#define AS923_JOIN_CHANNELS ( uint16_t )( LC( 1 ) | LC( 2 ) ) + +/*! + * RSSI threshold for a free channel [dBm] + */ +#define AS923_RSSI_FREE_TH -85 + +/*! + * Specifies the time the node performs a carrier sense + */ +#define AS923_CARRIER_SENSE_TIME 6 + +/*! + * Data rates table definition + */ +static const uint8_t DataratesAS923[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; + +/*! + * Maximum payload with respect to the datarate index. Cannot operate with repeater. + * The table is valid for the dwell time configuration of 0 for uplinks and downlinks. + */ +static const uint8_t MaxPayloadOfDatarateDwell0AS923[] = { 51, 51, 51, 115, 242, 242, 242, 242 }; + +/*! + * Maximum payload with respect to the datarate index. Can operate with repeater. + * The table is valid for the dwell time configuration of 0 for uplinks and downlinks. The table provides + * repeater support. + */ +static const uint8_t MaxPayloadOfDatarateRepeaterDwell0AS923[] = { 51, 51, 51, 115, 222, 222, 222, 222 }; + +/*! + * Maximum payload with respect to the datarate index. Can operate with and without repeater. + * The table proides repeater support. The table is only valid for uplinks. + */ +static const uint8_t MaxPayloadOfDatarateDwell1UpAS923[] = { 0, 0, 11, 53, 125, 242, 242, 242 }; + +/*! + * Maximum payload with respect to the datarate index. Can operate with and without repeater. + * The table proides repeater support. The table is only valid for downlinks. + */ +static const uint8_t MaxPayloadOfDatarateDwell1DownAS923[] = { 0, 0, 11, 53, 126, 242, 242, 242 }; + +/*! + * Effective datarate offsets for receive window 1. + */ +static const int8_t EffectiveRx1DrOffsetAS923[] = { 0, 1, 2, 3, 4, 5, -1, -2 }; + + + + +/*! + * \brief The function gets a value of a specific phy attribute. + * + * \param [IN] getPhy Pointer to the function parameters. + */ +void RegionAS923GetPhyParam( GetPhyParams_t* getPhy ); + +/*! + * \brief Updates the last TX done parameters of the current channel. + * + * \param [IN] txDone Pointer to the function parameters. + */ +void RegionAS923SetBandTxDone( SetBandTxDoneParams_t* txDone ); + +/*! + * \brief Initializes the channels masks and the channels. + * + * \param [IN] type Sets the initialization type. + */ +void RegionAS923InitDefaults( InitType_t type ); + +/*! + * \brief Verifies a parameter. + * + * \param [IN] verify Pointer to the function parameters. + * + * \param [IN] type Sets the initialization type. + * + * \retval Returns true, if the parameter is valid. + */ +bool RegionAS923Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ); + +/*! + * \brief The function parses the input buffer and sets up the channels of the + * CF list. + * + * \param [IN] applyCFList Pointer to the function parameters. + */ +void RegionAS923ApplyCFList( ApplyCFListParams_t* applyCFList ); + +/*! + * \brief Sets a channels mask. + * + * \param [IN] chanMaskSet Pointer to the function parameters. + * + * \retval Returns true, if the channels mask could be set. + */ +bool RegionAS923ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); + +/*! + * \brief Calculates the next datarate to set, when ADR is on or off. + * + * \param [IN] adrNext Pointer to the function parameters. + * + * \param [OUT] drOut The calculated datarate for the next TX. + * + * \param [OUT] txPowOut The TX power for the next TX. + * + * \param [OUT] adrAckCounter The calculated ADR acknowledgement counter. + * + * \retval Returns true, if an ADR request should be performed. + */ +bool RegionAS923AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); + +/*! + * \brief Configuration of the RX windows. + * + * \param [IN] rxConfig Pointer to the function parameters. + * + * \param [OUT] datarate The datarate index which was set. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionAS923RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ); + +/*! + * \brief TX configuration. + * + * \param [IN] txConfig Pointer to the function parameters. + * + * \param [OUT] txPower The tx power index which was set. + * + * \param [OUT] txTimeOnAir The time-on-air of the frame. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionAS923TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ); + +/*! + * \brief The function processes a Link ADR Request. + * + * \param [IN] linkAdrReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionAS923LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ); + +/*! + * \brief The function processes a RX Parameter Setup Request. + * + * \param [IN] rxParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionAS923RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ); + +/*! + * \brief The function processes a Channel Request. + * + * \param [IN] newChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionAS923NewChannelReq( NewChannelReqParams_t* newChannelReq ); + +/*! + * \brief The function processes a TX ParamSetup Request. + * + * \param [IN] txParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + * Returns -1, if the functionality is not implemented. In this case, the end node + * shall not process the command. + */ +int8_t RegionAS923TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ); + +/*! + * \brief The function processes a DlChannel Request. + * + * \param [IN] dlChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionAS923DlChannelReq( DlChannelReqParams_t* dlChannelReq ); + +/* + * \brief Alternates the datarate of the channel for the join request. + * + * \param [IN] alternateDr Pointer to the function parameters. + * + * \retval Datarate to apply. + */ +int8_t RegionAS923AlternateDr( AlternateDrParams_t* alternateDr ); + +/*! + * \brief Calculates the back-off time. + * + * \param [IN] calcBackOff Pointer to the function parameters. + */ +void RegionAS923CalcBackOff( CalcBackOffParams_t* calcBackOff ); + +/*! + * \brief Searches and set the next random available channel + * + * \param [OUT] channel Next channel to use for TX. + * + * \param [OUT] time Time to wait for the next transmission according to the duty + * cycle. + * + * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] + */ +bool RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); + +/*! + * \brief Adds a channel. + * + * \param [IN] channelAdd Pointer to the function parameters. + * + * \retval Status of the operation. + */ +LoRaMacStatus_t RegionAS923ChannelAdd( ChannelAddParams_t* channelAdd ); + +/*! + * \brief Removes a channel. + * + * \param [IN] channelRemove Pointer to the function parameters. + * + * \retval Returns true, if the channel was removed successfully. + */ +bool RegionAS923ChannelsRemove( ChannelRemoveParams_t* channelRemove ); + +/*! + * \brief Sets the radio into continuous wave mode. + * + * \param [IN] continuousWave Pointer to the function parameters. + */ +void RegionAS923SetContinuousWave( ContinuousWaveParams_t* continuousWave ); + +/*! \} defgroup REGIONAS923 */ + +#endif // __REGION_AS923_H__ diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c new file mode 100644 index 000000000..607ce6988 --- /dev/null +++ b/src/mac/region/RegionAU915.c @@ -0,0 +1,853 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + ___ _____ _ ___ _ _____ ___ ___ ___ ___ +/ __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| +\__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| +|___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| +embedded.connectivity.solutions=============== + +Description: LoRa MAC region AU915 implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) +*/ +#include +#include +#include + +#include "radio.h" +#include "timer.h" +#include "LoRaMac.h" + +#include "utilities.h" + +#include "Region.h" +#include "RegionCommon.h" +#include "RegionAU915.h" + + + +// Definitions +#define CHANNELS_MASK_SIZE 6 + + + +// Global attributes +/*! + * LoRaMAC channels + */ +static ChannelParams_t Channels[AU915_MAX_NB_CHANNELS]; + +/*! + * LoRaMac bands + */ +static Band_t Bands[AU915_MAX_NB_BANDS] = +{ + AU915_BAND0 +}; + +/*! + * LoRaMac channels mask + */ +static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; + +/*! + * LoRaMac channels remaining + */ +static uint16_t ChannelsMaskRemaining[CHANNELS_MASK_SIZE]; + +/*! + * LoRaMac channels default mask + */ +static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; + + + +// Static functions +static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) +{ + int8_t datarate = DatarateOffsetsAU915[dr][drOffset]; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} + +static uint16_t GetSymbTimeout( int8_t dr ) +{ + uint16_t symbolTimeout = 5; + + switch( dr ) + { + case DR_0: // SF10 - BW125 + { + symbolTimeout = 5; + break; + } + case DR_1: // SF9 - BW125 + case DR_2: // SF8 - BW125 + case DR_8: // SF12 - BW500 + case DR_9: // SF11 - BW500 + case DR_10: // SF10 - BW500 + { + symbolTimeout = 8; + break; + } + case DR_3: // SF7 - BW125 + case DR_11: // SF9 - BW500 + { + symbolTimeout = 10; + break; + } + case DR_4: // SF8 - BW500 + case DR_12: // SF8 - BW500 + { + symbolTimeout = 14; + break; + } + case DR_13: // SF7 - BW500 + { + symbolTimeout = 16; + break; + } + } + return symbolTimeout; +} + +static uint32_t GetBandwidth( int8_t dr ) +{ + uint32_t bandwidth = 0; + + if( dr > DR_4 ) + { // LoRa 500 kHz + bandwidth = 2; + } + return bandwidth; +} + +// ToDo +static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) +{ + int8_t txPowerResult = txPower; + + // Limit tx power to the band max + txPowerResult = MAX( txPower, maxBandTxPower ); + + if( ( datarate == DR_4 ) || ( ( datarate >= DR_8 ) && ( datarate <= DR_13 ) ) ) + {// Limit tx power to max 26dBm + txPowerResult = MAX( txPower, TX_POWER_2 ); + } + else + { + if( RegionCommonCountChannels( channelsMask, 0, 4 ) < 50 ) + {// Limit tx power to max 21dBm + txPowerResult = MAX( txPower, TX_POWER_5 ); + } + } + return txPowerResult; +} + +static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMask, ChannelParams_t* channels, Band_t* bands, uint8_t* enabledChannels, uint8_t* delayTx ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTransmission = 0; + + for( uint8_t i = 0, k = 0; i < AU915_MAX_NB_CHANNELS; i += 16, k++ ) + { + for( uint8_t j = 0; j < 16; j++ ) + { + if( ( channelsMask[k] & ( 1 << j ) ) != 0 ) + { + if( channels[i + j].Frequency == 0 ) + { // Check if the channel is enabled + continue; + } + if( RegionCommonValueInRange( datarate, channels[i + j].DrRange.Fields.Min, + channels[i + j].DrRange.Fields.Max ) == false ) + { // Check if the current channel selection supports the given datarate + continue; + } + if( bands[channels[i + j].Band].TimeOff > 0 ) + { // Check if the band is available for transmission + delayTransmission++; + continue; + } + enabledChannels[nbEnabledChannels++] = i + j; + } + } + } + + *delayTx = delayTransmission; + return nbEnabledChannels; +} + + +void RegionAU915GetPhyParam( GetPhyParams_t* getPhy ) +{ + switch( getPhy->Attribute ) + { + case PHY_MIN_DR: + { + getPhy->Param.Value = AU915_TX_MIN_DATARATE; + break; + } + case PHY_DEF_TX_DR: + { + getPhy->Param.Value = AU915_DEFAULT_DATARATE; + break; + } + case PHY_DEF_TX_POWER: + { + getPhy->Param.Value = AU915_DEFAULT_TX_POWER; + break; + } + case PHY_MAX_PAYLOAD: + { + getPhy->Param.Value = MaxPayloadOfDatarateAU915[getPhy->Datarate]; + break; + } + case PHY_MAX_PAYLOAD_REPEATER: + { + getPhy->Param.Value = MaxPayloadOfDatarateRepeaterAU915[getPhy->Datarate]; + break; + } + case PHY_DUTY_CYCLE: + { + getPhy->Param.Value = AU915_DUTY_CYCLE_ENABLED; + break; + } + case PHY_MAX_RX_WINDOW: + { + getPhy->Param.Value = AU915_MAX_RX_WINDOW; + break; + } + case PHY_RECEIVE_DELAY1: + { + getPhy->Param.Value = AU915_RECEIVE_DELAY1; + break; + } + case PHY_RECEIVE_DELAY2: + { + getPhy->Param.Value = AU915_RECEIVE_DELAY2; + break; + } + case PHY_JOIN_ACCEPT_DELAY1: + { + getPhy->Param.Value = AU915_JOIN_ACCEPT_DELAY1; + break; + } + case PHY_JOIN_ACCEPT_DELAY2: + { + getPhy->Param.Value = AU915_JOIN_ACCEPT_DELAY2; + break; + } + case PHY_MAX_FCNT_GAP: + { + getPhy->Param.Value = AU915_MAX_FCNT_GAP; + break; + } + case PHY_ACK_TIMEOUT: + { + getPhy->Param.Value = ( AU915_ACKTIMEOUT + randr( -AU915_ACK_TIMEOUT_RND, AU915_ACK_TIMEOUT_RND ) ); + break; + } + case PHY_DEF_DR1_OFFSET: + { + getPhy->Param.Value = AU915_DEFAULT_RX1_DR_OFFSET; + break; + } + case PHY_DEF_RX2_FREQUENCY: + { + getPhy->Param.Value = AU915_RX_WND_2_FREQ; + break; + } + case PHY_DEF_RX2_DR: + { + getPhy->Param.Value = AU915_RX_WND_2_DR; + break; + } + case PHY_CHANNELS_MASK: + { + getPhy->Param.ChannelsMask = ChannelsMask; + break; + } + case PHY_CHANNELS_DEFAULT_MASK: + { + getPhy->Param.ChannelsMask = ChannelsDefaultMask; + break; + } + case PHY_MAX_NB_CHANNELS: + { + getPhy->Param.Value = AU915_MAX_NB_CHANNELS; + break; + } + case PHY_CHANNELS: + { + getPhy->Param.Channels = Channels; + break; + } + case PHY_DEF_UPLINK_DWELL_TIME: + case PHY_DEF_DOWNLINK_DWELL_TIME: + case PHY_DEF_MAX_EIRP: + { + getPhy->Param.Value = 0; + break; + } + case PHY_NB_JOIN_TRIALS: + case PHY_DEF_NB_JOIN_TRIALS: + { + getPhy->Param.Value = 2; + break; + } + default: + { + return; + } + } +} + +void RegionAU915SetBandTxDone( SetBandTxDoneParams_t* txDone ) +{ + RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); +} + +void RegionAU915InitDefaults( InitType_t type ) +{ + switch( type ) + { + case INIT_TYPE_INIT: + { + // Channels + // 125 kHz channels + for( uint8_t i = 0; i < AU915_MAX_NB_CHANNELS - 8; i++ ) + { + Channels[i].Frequency = 915.2e6 + i * 200e3; + Channels[i].DrRange.Value = ( DR_3 << 4 ) | DR_0; + Channels[i].Band = 0; + } + // 500 kHz channels + for( uint8_t i = AU915_MAX_NB_CHANNELS - 8; i < AU915_MAX_NB_CHANNELS; i++ ) + { + Channels[i].Frequency = 915.9e6 + ( i - ( AU915_MAX_NB_CHANNELS - 8 ) ) * 1.6e6; + Channels[i].DrRange.Value = ( DR_4 << 4 ) | DR_4; + Channels[i].Band = 0; + } + + // Initialize channels default mask + ChannelsDefaultMask[0] = 0xFFFF; + ChannelsDefaultMask[1] = 0xFFFF; + ChannelsDefaultMask[2] = 0xFFFF; + ChannelsDefaultMask[3] = 0xFFFF; + ChannelsDefaultMask[4] = 0x00FF; + ChannelsDefaultMask[5] = 0x0000; + + // Copy channels default mask + RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 6 ); + + // Copy into channels mask remaining + RegionCommonChanMaskCopy( ChannelsMaskRemaining, ChannelsMask, 6 ); + break; + } + case INIT_TYPE_RESTORE: + { + // Copy channels default mask + RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 6 ); + + for( uint8_t i = 0; i < 6; i++ ) + { // Copy-And the channels mask + ChannelsMaskRemaining[i] &= ChannelsMask[i]; + } + break; + } + default: + { + break; + } + } +} + +bool RegionAU915Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) +{ + switch( phyAttribute ) + { + case PHY_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, AU915_TX_MIN_DATARATE, AU915_TX_MAX_DATARATE ); + } + case PHY_DEF_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + } + case PHY_DEF_TX_POWER: + case PHY_TX_POWER: + { + // Remark: switched min and max! + return RegionCommonValueInRange( verify->TxPower, AU915_MAX_TX_POWER, AU915_MIN_TX_POWER ); + } + case PHY_DUTY_CYCLE: + { + return AU915_DUTY_CYCLE_ENABLED; + } + case PHY_NB_JOIN_TRIALS: + { + if( verify->NbJoinTrials < 2 ) + { + return false; + } + break; + } + default: + return false; + } + return true; +} + +void RegionAU915ApplyCFList( ApplyCFListParams_t* applyCFList ) +{ + return; +} + +bool RegionAU915ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ) +{ + uint8_t nbChannels = RegionCommonCountChannels( chanMaskSet->ChannelsMaskIn, 0, 4 ); + + // Check the number of active channels + // According to ACMA regulation, we require at least 20 125KHz channels, if + // the node shall utilize 125KHz channels. + if( ( nbChannels < 20 ) && + ( nbChannels > 0 ) ) + { + return false; + } + + switch( chanMaskSet->ChannelsMaskType ) + { + case CHANNELS_MASK: + { + RegionCommonChanMaskCopy( ChannelsMask, chanMaskSet->ChannelsMaskIn, 6 ); + + for( uint8_t i = 0; i < 6; i++ ) + { // Copy-And the channels mask + ChannelsMaskRemaining[i] &= ChannelsMask[i]; + } + break; + } + case CHANNELS_DEFAULT_MASK: + { + RegionCommonChanMaskCopy( ChannelsDefaultMask, chanMaskSet->ChannelsMaskIn, 6 ); + break; + } + default: + return false; + } + return true; +} + +bool RegionAU915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ) +{ + bool adrAckReq = false; + int8_t datarate = adrNext->Datarate; + int8_t txPower = adrNext->TxPower; + + // Report back the adr ack counter + *adrAckCounter = adrNext->AdrAckCounter; + + if( adrNext->AdrEnabled == true ) + { + if( datarate == AU915_TX_MIN_DATARATE ) + { + *adrAckCounter = 0; + adrAckReq = false; + } + else + { + if( adrNext->AdrAckCounter >= AU915_ADR_ACK_LIMIT ) + { + adrAckReq = true; + txPower = AU915_MAX_TX_POWER; + } + else + { + adrAckReq = false; + } + if( adrNext->AdrAckCounter >= ( AU915_ADR_ACK_LIMIT + AU915_ADR_ACK_DELAY ) ) + { + if( ( adrNext->AdrAckCounter % AU915_ADR_ACK_DELAY ) == 0 ) + { + if( ( datarate > AU915_TX_MIN_DATARATE ) && ( datarate == DR_8 ) ) + { + datarate = DR_4; + } + else if( datarate > AU915_TX_MIN_DATARATE ) + { + datarate--; + } + + if( datarate == AU915_TX_MIN_DATARATE ) + { + if( adrNext->UpdateChanMask == true ) + { + // Re-enable default channels + ChannelsMask[0] = 0xFFFF; + ChannelsMask[1] = 0xFFFF; + ChannelsMask[2] = 0xFFFF; + ChannelsMask[3] = 0xFFFF; + ChannelsMask[4] = 0x00FF; + ChannelsMask[5] = 0x0000; + } + } + } + } + } + } + + *drOut = datarate; + *txPowOut = txPower; + return adrAckReq; +} + +bool RegionAU915RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) +{ + int8_t dr = rxConfig->Datarate; + uint8_t maxPayload = 0; + uint16_t symbTimeout = 0; + uint32_t bandwidth = 0; + int8_t phyDr = 0; + uint32_t frequency = rxConfig->Frequency; + + if( Radio.GetStatus( ) != RF_IDLE ) + { + return false; + } + + if( rxConfig->Window == 0 ) + { + // Apply the datarate offset for RX window 1 + dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + // Apply window 1 frequency + frequency = AU915_FIRST_RX1_CHANNEL + ( rxConfig->Channel % 8 ) * AU915_STEPWIDTH_RX1_CHANNEL; + } + symbTimeout = GetSymbTimeout( dr ); + bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table + phyDr = DataratesAU915[dr]; + + Radio.SetChannel( frequency ); + + Radio.SetRxConfig( MODEM_LORA, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + + if( rxConfig->RepeaterSupport == true ) + { + maxPayload = MaxPayloadOfDatarateRepeaterAU915[dr]; + } + else + { + maxPayload = MaxPayloadOfDatarateAU915[dr]; + } + Radio.SetMaxPayloadLength( MODEM_LORA, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); + + *datarate = (uint8_t) dr; + return true; +} + +bool RegionAU915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) +{ + int8_t phyDr = DataratesAU915[txConfig->Datarate]; + int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band].TxMaxPower, txConfig->Datarate, ChannelsMask ); + uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); + int8_t phyTxPower = 0; + + phyTxPower = TxPowersAU915[txPowerLimited]; + + Radio.SetChannel( Channels[txConfig->Channel].Frequency ); + + Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); + Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + + *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); + *txPower = txPowerLimited; + + return true; +} + +uint8_t RegionAU915LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) +{ + uint8_t status = 0x07; + LinkAdrParams_t linkAdrParams; + uint8_t nextIndex = 0; + uint8_t bytesProcessed = 0; + uint16_t channelsMask[6] = { 0, 0, 0, 0, 0, 0 }; + + // Initialize local copy of channels mask + RegionCommonChanMaskCopy( channelsMask, ChannelsMask, 6 ); + + while( bytesProcessed < linkAdrReq->PayloadSize ) + { + nextIndex = RegionCommonParseLinkAdrReq( &( linkAdrReq->Payload[bytesProcessed] ), &linkAdrParams ); + + if( nextIndex == 0 ) + break; // break loop, since no more request has been found + + // Update bytes processed + bytesProcessed += nextIndex; + + // Revert status, as we only check the last ADR request for the channel mask KO + status = 0x07; + + if( linkAdrParams.ChMaskCtrl == 6 ) + { + // Enable all 125 kHz channels + channelsMask[0] = 0xFFFF; + channelsMask[1] = 0xFFFF; + channelsMask[2] = 0xFFFF; + channelsMask[3] = 0xFFFF; + // Apply chMask to channels 64 to 71 + channelsMask[4] = linkAdrParams.ChMask; + } + else if( linkAdrParams.ChMaskCtrl == 7 ) + { + // Disable all 125 kHz channels + channelsMask[0] = 0x0000; + channelsMask[1] = 0x0000; + channelsMask[2] = 0x0000; + channelsMask[3] = 0x0000; + // Apply chMask to channels 64 to 71 + channelsMask[4] = linkAdrParams.ChMask; + } + else if( linkAdrParams.ChMaskCtrl == 5 ) + { + // RFU + status &= 0xFE; // Channel mask KO + } + else + { + channelsMask[linkAdrParams.ChMaskCtrl] = linkAdrParams.ChMask; + } + } + + // FCC 15.247 paragraph F mandates to hop on at least 2 125 kHz channels + if( ( linkAdrParams.Datarate < DR_4 ) && ( RegionCommonCountChannels( channelsMask, 0, 4 ) < 2 ) ) + { + status &= 0xFE; // Channel mask KO + } + + // Verify datarate + if( RegionCommonChanVerifyDr( AU915_MAX_NB_CHANNELS, channelsMask, linkAdrParams.Datarate, AU915_TX_MIN_DATARATE, AU915_TX_MAX_DATARATE, Channels ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify tx power + if( RegionCommonValueInRange( linkAdrParams.TxPower, AU915_MAX_TX_POWER, AU915_MIN_TX_POWER ) == 0 ) + { + // Verify if the maximum TX power is exceeded + if( AU915_MAX_TX_POWER > linkAdrParams.TxPower ) + { // Apply maximum TX power. Accept TX power. + linkAdrParams.TxPower = AU915_MAX_TX_POWER; + } + else + { + status &= 0xFB; // TxPower KO + } + } + + // Update channelsMask if everything is correct + if( status == 0x07 ) + { + if( linkAdrParams.NbRep == 0 ) + { // Value of 0 is not allowed, revert to default. + linkAdrParams.NbRep = 1; + } + + // Copy Mask + RegionCommonChanMaskCopy( ChannelsMask, channelsMask, 6 ); + + ChannelsMaskRemaining[0] &= ChannelsMask[0]; + ChannelsMaskRemaining[1] &= ChannelsMask[1]; + ChannelsMaskRemaining[2] &= ChannelsMask[2]; + ChannelsMaskRemaining[3] &= ChannelsMask[3]; + ChannelsMaskRemaining[4] = ChannelsMask[4]; + ChannelsMaskRemaining[5] = ChannelsMask[5]; + } + + // Update status variables + *drOut = linkAdrParams.Datarate; + *txPowOut = linkAdrParams.TxPower; + *nbRepOut = linkAdrParams.NbRep; + *nbBytesParsed = bytesProcessed; + + return status; +} + +uint8_t RegionAU915RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) +{ + uint8_t status = 0x07; + uint32_t freq = rxParamSetupReq->Frequency; + + // Verify radio frequency + if( ( Radio.CheckRfFrequency( freq ) == false ) || + ( freq < AU915_FIRST_RX1_CHANNEL ) || + ( freq > AU915_LAST_RX1_CHANNEL ) || + ( ( ( freq - ( uint32_t ) AU915_FIRST_RX1_CHANNEL ) % ( uint32_t ) AU915_STEPWIDTH_RX1_CHANNEL ) != 0 ) ) + { + status &= 0xFE; // Channel frequency KO + } + + // Verify datarate + if( RegionCommonValueInRange( rxParamSetupReq->Datarate, AU915_RX_MIN_DATARATE, AU915_RX_MAX_DATARATE ) == false ) + { + status &= 0xFD; // Datarate KO + } + if( ( RegionCommonValueInRange( rxParamSetupReq->Datarate, DR_5, DR_7 ) == true ) || + ( rxParamSetupReq->Datarate > DR_13 ) ) + { + status &= 0xFD; // Datarate KO + } + + // Verify datarate offset + if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, AU915_MIN_RX1_DR_OFFSET, AU915_MAX_RX1_DR_OFFSET ) == false ) + { + status &= 0xFB; // Rx1DrOffset range KO + } + + return status; +} + +uint8_t RegionAU915NewChannelReq( NewChannelReqParams_t* newChannelReq ) +{ + // Datarate and frequency KO + return 0; +} + +int8_t RegionAU915TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ) +{ + return -1; +} + +uint8_t RegionAU915DlChannelReq( DlChannelReqParams_t* dlChannelReq ) +{ + return 0; +} + +int8_t RegionAU915AlternateDr( AlternateDrParams_t* alternateDr ) +{ + int8_t datarate = 0; + + // Re-enable 500 kHz default channels + ChannelsMask[4] = 0x00FF; + + if( ( alternateDr->NbTrials & 0x01 ) == 0x01 ) + { + datarate = DR_4; + } + else + { + datarate = DR_0; + } + return datarate; +} + +void RegionAU915CalcBackOff( CalcBackOffParams_t* calcBackOff ) +{ + uint8_t channel = calcBackOff->Channel; + uint16_t joinDutyCycle = 0; + + if( calcBackOff->Joined == false ) + { + // Get the join duty cycle + joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); + // Apply band time-off. + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * joinDutyCycle - calcBackOff->TxTimeOnAir; + } + else + { + Bands[Channels[channel].Band].TimeOff = 0; + } +} + +bool RegionAU915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTx = 0; + uint8_t enabledChannels[AU915_MAX_NB_CHANNELS] = { 0 }; + TimerTime_t nextTxDelay = ( TimerTime_t )( -1 ); + + // Count 125kHz channels + if( RegionCommonCountChannels( ChannelsMaskRemaining, 0, 4 ) == 0 ) + { // Reactivate default channels + RegionCommonChanMaskCopy( ChannelsMaskRemaining, ChannelsMask, 4 ); + } + // Check other channels + if( nextChanParams->Datarate >= DR_4 ) + { + if( ( ChannelsMaskRemaining[4] & 0x00FF ) == 0 ) + { + ChannelsMaskRemaining[4] = ChannelsMask[4]; + } + } + + if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) + { + // Search how many channels are enabled + nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, + ChannelsMask, Channels, + Bands, enabledChannels, &delayTx ); + } + else + { + delayTx++; + nextTxDelay = nextChanParams->AggrTimeOff - TimerGetElapsedTime( nextChanParams->LastAggrTx ); + } + + if( nbEnabledChannels > 0 ) + { + // We found a valid channel + *channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; + // Disable the channel in the mask + RegionCommonChanDisable( ChannelsMaskRemaining, *channel, AU915_MAX_NB_CHANNELS - 8 ); + + *time = 0; + return true; + } + else + { + if( delayTx > 0 ) + { + // Delay transmission due to AggregatedTimeOff or to a band time off + *time = nextTxDelay; + return true; + } + // Datarate not supported by any channel + *time = 0; + return false; + } +} + +LoRaMacStatus_t RegionAU915ChannelAdd( ChannelAddParams_t* channelAdd ) +{ + return LORAMAC_STATUS_PARAMETER_INVALID; +} + +bool RegionAU915ChannelsRemove( ChannelRemoveParams_t* channelRemove ) +{ + return LORAMAC_STATUS_PARAMETER_INVALID; +} + +void RegionAU915SetContinuousWave( ContinuousWaveParams_t* continuousWave ) +{ + int8_t txPowerLimited = LimitTxPower( continuousWave->TxPower, Bands[Channels[continuousWave->Channel].Band].TxMaxPower, continuousWave->Datarate, ChannelsMask ); + int8_t phyTxPower = 0; + uint32_t frequency = Channels[continuousWave->Channel].Frequency; + + phyTxPower = TxPowersAU915[txPowerLimited]; + + Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); +} diff --git a/src/mac/region/RegionAU915.h b/src/mac/region/RegionAU915.h new file mode 100644 index 000000000..effb7dc03 --- /dev/null +++ b/src/mac/region/RegionAU915.h @@ -0,0 +1,413 @@ +/*! + * \file RegionAU915.h + * + * \brief Region definition for AU915 + * + * \copyright Revised BSD License, see section \ref LICENSE. + * + * \code + * ______ _ + * / _____) _ | | + * ( (____ _____ ____ _| |_ _____ ____| |__ + * \____ \| ___ | (_ _) ___ |/ ___) _ \ + * _____) ) ____| | | || |_| ____( (___| | | | + * (______/|_____)_|_|_| \__)_____)\____)_| |_| + * (C)2013 Semtech + * + * ___ _____ _ ___ _ _____ ___ ___ ___ ___ + * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| + * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| + * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| + * embedded.connectivity.solutions=============== + * + * \endcode + * + * \author Miguel Luis ( Semtech ) + * + * \author Gregory Cristian ( Semtech ) + * + * \author Daniel Jaeckle ( STACKFORCE ) + * + * \defgroup REGIONAU915 Region AU915 + * Implementation according to LoRaWAN Specification v1.0.2. + * \{ + */ +#ifndef __REGION_AU915_H__ +#define __REGION_AU915_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define AU915_MAX_NB_CHANNELS 72 + +/*! + * Minimal datarate that can be used by the node + */ +#define AU915_TX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define AU915_TX_MAX_DATARATE DR_4 + +/*! + * Minimal datarate that can be used by the node + */ +#define AU915_RX_MIN_DATARATE DR_8 + +/*! + * Maximal datarate that can be used by the node + */ +#define AU915_RX_MAX_DATARATE DR_13 + +/*! + * Default datarate used by the node + */ +#define AU915_DEFAULT_DATARATE DR_0 + +/*! + * Minimal Rx1 receive datarate offset + */ +#define AU915_MIN_RX1_DR_OFFSET 0 + +/*! + * Maximal Rx1 receive datarate offset + */ +#define AU915_MAX_RX1_DR_OFFSET 3 + +/*! + * Default Rx1 receive datarate offset + */ +#define AU915_DEFAULT_RX1_DR_OFFSET 0 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define AU915_MIN_TX_POWER TX_POWER_10 + +/*! + * Maximal Tx output power that can be used by the node + */ +#define AU915_MAX_TX_POWER TX_POWER_0 + +/*! + * Default Tx output power used by the node + */ +#define AU915_DEFAULT_TX_POWER TX_POWER_5 + +/*! + * ADR Ack limit + */ +#define AU915_ADR_ACK_LIMIT 64 + +/*! + * ADR Ack delay + */ +#define AU915_ADR_ACK_DELAY 32 + +/*! + * Enabled or disabled the duty cycle + */ +#define AU915_DUTY_CYCLE_ENABLED 0 + +/*! + * Maximum RX window duration + */ +#define AU915_MAX_RX_WINDOW 3000 + +/*! + * Receive delay 1 + */ +#define AU915_RECEIVE_DELAY1 1000 + +/*! + * Receive delay 2 + */ +#define AU915_RECEIVE_DELAY2 2000 + +/*! + * Join accept delay 1 + */ +#define AU915_JOIN_ACCEPT_DELAY1 5000 + +/*! + * Join accept delay 2 + */ +#define AU915_JOIN_ACCEPT_DELAY2 6000 + +/*! + * Maximum frame counter gap + */ +#define AU915_MAX_FCNT_GAP 16384 + +/*! + * Ack timeout + */ +#define AU915_ACKTIMEOUT 2000 + +/*! + * Random ack timeout limits + */ +#define AU915_ACK_TIMEOUT_RND 1000 + +/*! + * Second reception window channel frequency definition. + */ +#define AU915_RX_WND_2_FREQ 923300000 + +/*! + * Second reception window channel datarate definition. + */ +#define AU915_RX_WND_2_DR DR_8 + +/*! + * LoRaMac maximum number of bands + */ +#define AU915_MAX_NB_BANDS 1 + +/*! + * Band 0 definition + * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define AU915_BAND0 { 1, AU915_DEFAULT_TX_POWER, 0, 0 } // 100.0 % + +/*! + * Defines the first channel for RX window 1 for US band + */ +#define AU915_FIRST_RX1_CHANNEL ( (uint32_t) 923.3e6 ) + +/*! + * Defines the last channel for RX window 1 for US band + */ +#define AU915_LAST_RX1_CHANNEL ( (uint32_t) 927.5e6 ) + +/*! + * Defines the step width of the channels for RX window 1 + */ +#define AU915_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 600e3 ) + +/*! + * Data rates table definition + */ +static const uint8_t DataratesAU915[] = { 10, 9, 8, 7, 8, 0, 0, 0, 12, 11, 10, 9, 8, 7, 0, 0 }; + +/*! + * Up/Down link data rates offset definition + */ +static const int8_t DatarateOffsetsAU915[5][4] = +{ + { DR_10, DR_9 , DR_8 , DR_8 }, // DR_0 + { DR_11, DR_10, DR_9 , DR_8 }, // DR_1 + { DR_12, DR_11, DR_10, DR_9 }, // DR_2 + { DR_13, DR_12, DR_11, DR_10 }, // DR_3 + { DR_13, DR_13, DR_12, DR_11 }, // DR_4 +}; + +/*! + * Maximum payload with respect to the datarate index. Cannot operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateAU915[] = { 11, 53, 126, 242, 242, 0, 0, 0, 53, 129, 242, 242, 242, 242, 0, 0 }; + +/*! + * Maximum payload with respect to the datarate index. Can operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateRepeaterAU915[] = { 11, 53, 126, 242, 242, 0, 0, 0, 33, 109, 222, 222, 222, 222, 0, 0 }; + +/*! + * Tx output powers table definition + */ +static const int8_t TxPowersAU915[] = { 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10 }; + + + +/*! + * \brief The function gets a value of a specific phy attribute. + * + * \param [IN] getPhy Pointer to the function parameters. + */ +void RegionAU915GetPhyParam( GetPhyParams_t* getPhy ); + +/*! + * \brief Updates the last TX done parameters of the current channel. + * + * \param [IN] txDone Pointer to the function parameters. + */ +void RegionAU915SetBandTxDone( SetBandTxDoneParams_t* txDone ); + +/*! + * \brief Initializes the channels masks and the channels. + * + * \param [IN] type Sets the initialization type. + */ +void RegionAU915InitDefaults( InitType_t type ); + +/*! + * \brief Verifies a parameter. + * + * \param [IN] verify Pointer to the function parameters. + * + * \param [IN] type Sets the initialization type. + * + * \retval Returns true, if the parameter is valid. + */ +bool RegionAU915Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ); + +/*! + * \brief The function parses the input buffer and sets up the channels of the + * CF list. + * + * \param [IN] applyCFList Pointer to the function parameters. + */ +void RegionAU915ApplyCFList( ApplyCFListParams_t* applyCFList ); + +/*! + * \brief Sets a channels mask. + * + * \param [IN] chanMaskSet Pointer to the function parameters. + * + * \retval Returns true, if the channels mask could be set. + */ +bool RegionAU915ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); + +/*! + * \brief Calculates the next datarate to set, when ADR is on or off. + * + * \param [IN] adrNext Pointer to the function parameters. + * + * \param [OUT] drOut The calculated datarate for the next TX. + * + * \param [OUT] txPowOut The TX power for the next TX. + * + * \param [OUT] adrAckCounter The calculated ADR acknowledgement counter. + * + * \retval Returns true, if an ADR request should be performed. + */ +bool RegionAU915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); + +/*! + * \brief Configuration of the RX windows. + * + * \param [IN] rxConfig Pointer to the function parameters. + * + * \param [OUT] datarate The datarate index which was set. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionAU915RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ); + +/*! + * \brief TX configuration. + * + * \param [IN] txConfig Pointer to the function parameters. + * + * \param [OUT] txPower The tx power index which was set. + * + * \param [OUT] txTimeOnAir The time-on-air of the frame. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionAU915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ); + +/*! + * \brief The function processes a Link ADR Request. + * + * \param [IN] linkAdrReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionAU915LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ); + +/*! + * \brief The function processes a RX Parameter Setup Request. + * + * \param [IN] rxParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionAU915RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ); + +/*! + * \brief The function processes a Channel Request. + * + * \param [IN] newChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionAU915NewChannelReq( NewChannelReqParams_t* newChannelReq ); + +/*! + * \brief The function processes a TX ParamSetup Request. + * + * \param [IN] txParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + * Returns -1, if the functionality is not implemented. In this case, the end node + * shall not process the command. + */ +int8_t RegionAU915TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ); + +/*! + * \brief The function processes a DlChannel Request. + * + * \param [IN] dlChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionAU915DlChannelReq( DlChannelReqParams_t* dlChannelReq ); + +/* + * \brief Alternates the datarate of the channel for the join request. + * + * \param [IN] alternateDr Pointer to the function parameters. + * + * \retval Datarate to apply. + */ +int8_t RegionAU915AlternateDr( AlternateDrParams_t* alternateDr ); + +/*! + * \brief Calculates the back-off time. + * + * \param [IN] calcBackOff Pointer to the function parameters. + */ +void RegionAU915CalcBackOff( CalcBackOffParams_t* calcBackOff ); + +/*! + * \brief Searches and set the next random available channel + * + * \param [OUT] channel Next channel to use for TX. + * + * \param [OUT] time Time to wait for the next transmission according to the duty + * cycle. + * + * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] + */ +bool RegionAU915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); + +/*! + * \brief Adds a channel. + * + * \param [IN] channelAdd Pointer to the function parameters. + * + * \retval Status of the operation. + */ +LoRaMacStatus_t RegionAU915ChannelAdd( ChannelAddParams_t* channelAdd ); + +/*! + * \brief Removes a channel. + * + * \param [IN] channelRemove Pointer to the function parameters. + * + * \retval Returns true, if the channel was removed successfully. + */ +bool RegionAU915ChannelsRemove( ChannelRemoveParams_t* channelRemove ); + +/*! + * \brief Sets the radio into continuous wave mode. + * + * \param [IN] continuousWave Pointer to the function parameters. + */ +void RegionAU915SetContinuousWave( ContinuousWaveParams_t* continuousWave ); + +/*! \} defgroup REGIONAU915 */ + +#endif // __REGION_AU915_H__ diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c new file mode 100644 index 000000000..41ea1bf73 --- /dev/null +++ b/src/mac/region/RegionCN470.c @@ -0,0 +1,753 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + ___ _____ _ ___ _ _____ ___ ___ ___ ___ +/ __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| +\__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| +|___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| +embedded.connectivity.solutions=============== + +Description: LoRa MAC region CN470 implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) +*/ +#include +#include +#include + +#include "radio.h" +#include "timer.h" +#include "LoRaMac.h" + +#include "utilities.h" + +#include "Region.h" +#include "RegionCommon.h" +#include "RegionCN470.h" + + + +// Definitions +#define CHANNELS_MASK_SIZE 6 + + + +// Global attributes +/*! + * LoRaMAC channels + */ +static ChannelParams_t Channels[CN470_MAX_NB_CHANNELS]; + +/*! + * LoRaMac bands + */ +static Band_t Bands[CN470_MAX_NB_BANDS] = +{ + CN470_BAND0 +}; + +/*! + * LoRaMac channels mask + */ +static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; + +/*! + * LoRaMac channels default mask + */ +static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; + + + +// Static functions +static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) +{ + int8_t datarate = dr - drOffset; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} + +static uint16_t GetSymbTimeout( int8_t dr ) +{ + uint16_t symbolTimeout = 5; + + // For higher datarates, we increase the number of symbols generating a Rx Timeout + if( ( dr == DR_3 ) || ( dr == DR_4 ) ) + { + symbolTimeout = 8; + } + else if( dr == DR_5 ) + { + symbolTimeout = 10; + } + return symbolTimeout; +} + +static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) +{ + int8_t txPowerResult = txPower; + + // Limit tx power to the band max + txPowerResult = MAX( txPower, maxBandTxPower ); + + return txPowerResult; +} + +static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMask, ChannelParams_t* channels, Band_t* bands, uint8_t* enabledChannels, uint8_t* delayTx ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTransmission = 0; + + for( uint8_t i = 0, k = 0; i < CN470_MAX_NB_CHANNELS; i += 16, k++ ) + { + for( uint8_t j = 0; j < 16; j++ ) + { + if( ( channelsMask[k] & ( 1 << j ) ) != 0 ) + { + if( channels[i + j].Frequency == 0 ) + { // Check if the channel is enabled + continue; + } + if( RegionCommonValueInRange( datarate, channels[i + j].DrRange.Fields.Min, + channels[i + j].DrRange.Fields.Max ) == false ) + { // Check if the current channel selection supports the given datarate + continue; + } + if( bands[channels[i + j].Band].TimeOff > 0 ) + { // Check if the band is available for transmission + delayTransmission++; + continue; + } + enabledChannels[nbEnabledChannels++] = i + j; + } + } + } + + *delayTx = delayTransmission; + return nbEnabledChannels; +} + + + +void RegionCN470GetPhyParam( GetPhyParams_t* getPhy ) +{ + switch( getPhy->Attribute ) + { + case PHY_MIN_DR: + { + getPhy->Param.Value = CN470_TX_MIN_DATARATE; + break; + } + case PHY_DEF_TX_DR: + { + getPhy->Param.Value = CN470_DEFAULT_DATARATE; + break; + } + case PHY_DEF_TX_POWER: + { + getPhy->Param.Value = CN470_DEFAULT_TX_POWER; + break; + } + case PHY_MAX_PAYLOAD: + { + getPhy->Param.Value = MaxPayloadOfDatarateCN470[getPhy->Datarate]; + break; + } + case PHY_MAX_PAYLOAD_REPEATER: + { + getPhy->Param.Value = MaxPayloadOfDatarateRepeaterCN470[getPhy->Datarate]; + break; + } + case PHY_DUTY_CYCLE: + { + getPhy->Param.Value = CN470_DUTY_CYCLE_ENABLED; + break; + } + case PHY_MAX_RX_WINDOW: + { + getPhy->Param.Value = CN470_MAX_RX_WINDOW; + break; + } + case PHY_RECEIVE_DELAY1: + { + getPhy->Param.Value = CN470_RECEIVE_DELAY1; + break; + } + case PHY_RECEIVE_DELAY2: + { + getPhy->Param.Value = CN470_RECEIVE_DELAY2; + break; + } + case PHY_JOIN_ACCEPT_DELAY1: + { + getPhy->Param.Value = CN470_JOIN_ACCEPT_DELAY1; + break; + } + case PHY_JOIN_ACCEPT_DELAY2: + { + getPhy->Param.Value = CN470_JOIN_ACCEPT_DELAY2; + break; + } + case PHY_MAX_FCNT_GAP: + { + getPhy->Param.Value = CN470_MAX_FCNT_GAP; + break; + } + case PHY_ACK_TIMEOUT: + { + getPhy->Param.Value = ( CN470_ACKTIMEOUT + randr( -CN470_ACK_TIMEOUT_RND, CN470_ACK_TIMEOUT_RND ) ); + break; + } + case PHY_DEF_DR1_OFFSET: + { + getPhy->Param.Value = CN470_DEFAULT_RX1_DR_OFFSET; + break; + } + case PHY_DEF_RX2_FREQUENCY: + { + getPhy->Param.Value = CN470_RX_WND_2_FREQ; + break; + } + case PHY_DEF_RX2_DR: + { + getPhy->Param.Value = CN470_RX_WND_2_DR; + break; + } + case PHY_CHANNELS_MASK: + { + getPhy->Param.ChannelsMask = ChannelsMask; + break; + } + case PHY_CHANNELS_DEFAULT_MASK: + { + getPhy->Param.ChannelsMask = ChannelsDefaultMask; + break; + } + case PHY_MAX_NB_CHANNELS: + { + getPhy->Param.Value = CN470_MAX_NB_CHANNELS; + break; + } + case PHY_CHANNELS: + { + getPhy->Param.Channels = Channels; + break; + } + case PHY_DEF_UPLINK_DWELL_TIME: + case PHY_DEF_DOWNLINK_DWELL_TIME: + case PHY_DEF_MAX_EIRP: + { + getPhy->Param.Value = 0; + break; + } + case PHY_NB_JOIN_TRIALS: + case PHY_DEF_NB_JOIN_TRIALS: + { + getPhy->Param.Value = 48; + break; + } + default: + { + return; + } + } +} + +void RegionCN470SetBandTxDone( SetBandTxDoneParams_t* txDone ) +{ + RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); +} + +void RegionCN470InitDefaults( InitType_t type ) +{ + switch( type ) + { + case INIT_TYPE_INIT: + { + // Channels + // 125 kHz channels + for( uint8_t i = 0; i < CN470_MAX_NB_CHANNELS; i++ ) + { + Channels[i].Frequency = 470.3e6 + i * 200e3; + Channels[i].DrRange.Value = ( DR_5 << 4 ) | DR_0; + Channels[i].Band = 0; + } + + // Initialize the channels default mask + ChannelsDefaultMask[0] = 0xFFFF; + ChannelsDefaultMask[1] = 0xFFFF; + ChannelsDefaultMask[2] = 0xFFFF; + ChannelsDefaultMask[3] = 0xFFFF; + ChannelsDefaultMask[4] = 0xFFFF; + ChannelsDefaultMask[5] = 0xFFFF; + + // Update the channels mask + RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 6 ); + break; + } + case INIT_TYPE_RESTORE: + { + // Restore channels default mask + RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 6 ); + break; + } + default: + { + break; + } + } +} + +bool RegionCN470Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) +{ + switch( phyAttribute ) + { + case PHY_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, CN470_TX_MIN_DATARATE, CN470_TX_MAX_DATARATE ); + } + case PHY_DEF_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + } + case PHY_DEF_TX_POWER: + case PHY_TX_POWER: + { + // Remark: switched min and max! + return RegionCommonValueInRange( verify->TxPower, CN470_MAX_TX_POWER, CN470_MIN_TX_POWER ); + } + case PHY_DUTY_CYCLE: + { + return CN470_DUTY_CYCLE_ENABLED; + } + case PHY_NB_JOIN_TRIALS: + { + if( verify->NbJoinTrials < 48 ) + { + return false; + } + break; + } + default: + return false; + } + return true; +} + +void RegionCN470ApplyCFList( ApplyCFListParams_t* applyCFList ) +{ + return; +} + +bool RegionCN470ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ) +{ + switch( chanMaskSet->ChannelsMaskType ) + { + case CHANNELS_MASK: + { + RegionCommonChanMaskCopy( ChannelsMask, chanMaskSet->ChannelsMaskIn, 6 ); + break; + } + case CHANNELS_DEFAULT_MASK: + { + RegionCommonChanMaskCopy( ChannelsDefaultMask, chanMaskSet->ChannelsMaskIn, 6 ); + break; + } + default: + return false; + } + return true; +} + +bool RegionCN470AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ) +{ + bool adrAckReq = false; + int8_t datarate = adrNext->Datarate; + int8_t txPower = adrNext->TxPower; + + // Report back the adr ack counter + *adrAckCounter = adrNext->AdrAckCounter; + + if( adrNext->AdrEnabled == true ) + { + if( datarate == CN470_TX_MIN_DATARATE ) + { + *adrAckCounter = 0; + adrAckReq = false; + } + else + { + if( adrNext->AdrAckCounter >= CN470_ADR_ACK_LIMIT ) + { + adrAckReq = true; + txPower = CN470_MAX_TX_POWER; + } + else + { + adrAckReq = false; + } + if( adrNext->AdrAckCounter >= ( CN470_ADR_ACK_LIMIT + CN470_ADR_ACK_DELAY ) ) + { + if( ( adrNext->AdrAckCounter % CN470_ADR_ACK_DELAY ) == 0 ) + { + if( datarate > CN470_TX_MIN_DATARATE ) + { + datarate--; + } + + if( datarate == CN470_TX_MIN_DATARATE ) + { + if( adrNext->UpdateChanMask == true ) + { + // Re-enable default channels + ChannelsMask[0] = 0xFFFF; + ChannelsMask[1] = 0xFFFF; + ChannelsMask[2] = 0xFFFF; + ChannelsMask[3] = 0xFFFF; + ChannelsMask[4] = 0xFFFF; + ChannelsMask[5] = 0xFFFF; + } + } + } + } + } + } + + *drOut = datarate; + *txPowOut = txPower; + return adrAckReq; +} + +bool RegionCN470RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) +{ + int8_t dr = rxConfig->Datarate; + uint8_t maxPayload = 0; + uint16_t symbTimeout = 0; + int8_t phyDr = 0; + uint32_t frequency = rxConfig->Frequency; + + if( Radio.GetStatus( ) != RF_IDLE ) + { + return false; + } + + if( rxConfig->Window == 0 ) + { + // Apply the datarate offset for RX window 1 + dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + // Apply window 1 frequency + frequency = CN470_FIRST_RX1_CHANNEL + ( rxConfig->Channel % 48 ) * CN470_STEPWIDTH_RX1_CHANNEL; + } + symbTimeout = GetSymbTimeout( dr ); + // Read the physical datarate from the datarates table + phyDr = DataratesCN470[dr]; + + Radio.SetChannel( frequency ); + + Radio.SetRxConfig( MODEM_LORA, 0, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + + if( rxConfig->RepeaterSupport == true ) + { + maxPayload = MaxPayloadOfDatarateRepeaterCN470[dr]; + } + else + { + maxPayload = MaxPayloadOfDatarateCN470[dr]; + } + Radio.SetMaxPayloadLength( MODEM_LORA, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); + + *datarate = (uint8_t) dr; + return true; +} + +bool RegionCN470TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) +{ + int8_t phyDr = DataratesCN470[txConfig->Datarate]; + int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band].TxMaxPower, txConfig->Datarate, ChannelsMask ); + int8_t phyTxPower = 0; + + phyTxPower = TxPowersCN470[txPowerLimited]; + + // Setup the radio frequency + Radio.SetChannel( Channels[txConfig->Channel].Frequency ); + + // Setup maximum payload lenght of the radio driver + Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); + Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, 0, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + // Get the time-on-air of the next tx frame + *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); + + *txPower = txConfig->TxPower; + return true; +} + +uint8_t RegionCN470LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) +{ + uint8_t status = 0x07; + LinkAdrParams_t linkAdrParams; + uint8_t nextIndex = 0; + uint8_t bytesProcessed = 0; + uint16_t channelsMask[6] = { 0, 0, 0, 0, 0, 0 }; + + // Initialize local copy of channels mask + RegionCommonChanMaskCopy( channelsMask, ChannelsMask, 6 ); + + while( bytesProcessed < linkAdrReq->PayloadSize ) + { + // Get ADR request parameters + nextIndex = RegionCommonParseLinkAdrReq( &( linkAdrReq->Payload[bytesProcessed] ), &linkAdrParams ); + + if( nextIndex == 0 ) + break; // break loop, since no more request has been found + + // Update bytes processed + bytesProcessed += nextIndex; + + // Revert status, as we only check the last ADR request for the channel mask KO + status = 0x07; + + if( linkAdrParams.ChMaskCtrl == 6 ) + { + // Enable all 125 kHz channels + channelsMask[0] = 0xFFFF; + channelsMask[1] = 0xFFFF; + channelsMask[2] = 0xFFFF; + channelsMask[3] = 0xFFFF; + channelsMask[4] = 0xFFFF; + channelsMask[5] = 0xFFFF; + } + else if( linkAdrParams.ChMaskCtrl == 7 ) + { + status &= 0xFE; // Channel mask KO + } + else + { + for( uint8_t i = 0; i < 16; i++ ) + { + if( ( ( linkAdrParams.ChMask & ( 1 << i ) ) != 0 ) && + ( Channels[linkAdrParams.ChMaskCtrl * 16 + i].Frequency == 0 ) ) + {// Trying to enable an undefined channel + status &= 0xFE; // Channel mask KO + } + } + channelsMask[linkAdrParams.ChMaskCtrl] = linkAdrParams.ChMask; + } + } + + // Verify datarate + if( RegionCommonChanVerifyDr( CN470_MAX_NB_CHANNELS, channelsMask, linkAdrParams.Datarate, CN470_TX_MIN_DATARATE, CN470_TX_MAX_DATARATE, Channels ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify tx power + if( RegionCommonValueInRange( linkAdrParams.TxPower, CN470_MAX_TX_POWER, CN470_MIN_TX_POWER ) == 0 ) + { + // Verify if the maximum TX power is exceeded + if( CN470_MAX_TX_POWER > linkAdrParams.TxPower ) + { // Apply maximum TX power. Accept TX power. + linkAdrParams.TxPower = CN470_MAX_TX_POWER; + } + else + { + status &= 0xFB; // TxPower KO + } + } + + // Update channelsMask if everything is correct + if( status == 0x07 ) + { + if( linkAdrParams.NbRep == 0 ) + { // Value of 0 is not allowed, revert to default. + linkAdrParams.NbRep = 1; + } + + // Copy Mask + RegionCommonChanMaskCopy( ChannelsMask, channelsMask, 6 ); + } + + // Update status variables + *drOut = linkAdrParams.Datarate; + *txPowOut = linkAdrParams.TxPower; + *nbRepOut = linkAdrParams.NbRep; + *nbBytesParsed = bytesProcessed; + + return status; +} + +uint8_t RegionCN470RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) +{ + uint8_t status = 0x07; + uint32_t freq = rxParamSetupReq->Frequency; + + // Verify radio frequency + if( ( Radio.CheckRfFrequency( freq ) == false ) || + ( freq < CN470_FIRST_RX1_CHANNEL ) || + ( freq > CN470_LAST_RX1_CHANNEL ) || + ( ( ( freq - ( uint32_t ) CN470_FIRST_RX1_CHANNEL ) % ( uint32_t ) CN470_STEPWIDTH_RX1_CHANNEL ) != 0 ) ) + { + status &= 0xFE; // Channel frequency KO + } + + // Verify datarate + if( RegionCommonValueInRange( rxParamSetupReq->Datarate, CN470_RX_MIN_DATARATE, CN470_RX_MAX_DATARATE ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify datarate offset + if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, CN470_MIN_RX1_DR_OFFSET, CN470_MAX_RX1_DR_OFFSET ) == false ) + { + status &= 0xFB; // Rx1DrOffset range KO + } + + return status; +} + +uint8_t RegionCN470NewChannelReq( NewChannelReqParams_t* newChannelReq ) +{ + // Datarate and frequency KO + return 0; +} + +int8_t RegionCN470TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ) +{ + return -1; +} + +uint8_t RegionCN470DlChannelReq( DlChannelReqParams_t* dlChannelReq ) +{ + return 0; +} + +int8_t RegionCN470AlternateDr( AlternateDrParams_t* alternateDr ) +{ + int8_t datarate = 0; + + if( ( alternateDr->NbTrials % 48 ) == 0 ) + { + datarate = DR_0; + } + else if( ( alternateDr->NbTrials % 32 ) == 0 ) + { + datarate = DR_1; + } + else if( ( alternateDr->NbTrials % 24 ) == 0 ) + { + datarate = DR_2; + } + else if( ( alternateDr->NbTrials % 16 ) == 0 ) + { + datarate = DR_3; + } + else if( ( alternateDr->NbTrials % 8 ) == 0 ) + { + datarate = DR_4; + } + else + { + datarate = DR_5; + } + return datarate; +} + +void RegionCN470CalcBackOff( CalcBackOffParams_t* calcBackOff ) +{ + uint8_t channel = calcBackOff->Channel; + uint16_t joinDutyCycle = 0; + + if( calcBackOff->Joined == false ) + { + // Get the join duty cycle + joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); + // Apply band time-off. + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * joinDutyCycle - calcBackOff->TxTimeOnAir; + } + else + { + Bands[Channels[channel].Band].TimeOff = 0; + } +} + +bool RegionCN470NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTx = 0; + uint8_t enabledChannels[CN470_MAX_NB_CHANNELS] = { 0 }; + TimerTime_t nextTxDelay = ( TimerTime_t )( -1 ); + + // Count 125kHz channels + if( RegionCommonCountChannels( ChannelsMask, 0, 6 ) == 0 ) + { // Reactivate default channels + ChannelsMask[0] = 0xFFFF; + ChannelsMask[1] = 0xFFFF; + ChannelsMask[2] = 0xFFFF; + ChannelsMask[3] = 0xFFFF; + ChannelsMask[4] = 0xFFFF; + ChannelsMask[5] = 0xFFFF; + } + + if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) + { + // Search how many channels are enabled + nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, + ChannelsMask, Channels, + Bands, enabledChannels, &delayTx ); + } + else + { + delayTx++; + nextTxDelay = nextChanParams->AggrTimeOff - TimerGetElapsedTime( nextChanParams->LastAggrTx ); + } + + if( nbEnabledChannels > 0 ) + { + // We found a valid channel + *channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; + + *time = 0; + return true; + } + else + { + if( delayTx > 0 ) + { + // Delay transmission due to AggregatedTimeOff or to a band time off + *time = nextTxDelay; + return true; + } + // Datarate not supported by any channel + *time = 0; + return false; + } +} + +LoRaMacStatus_t RegionCN470ChannelAdd( ChannelAddParams_t* channelAdd ) +{ + return LORAMAC_STATUS_PARAMETER_INVALID; +} + +bool RegionCN470ChannelsRemove( ChannelRemoveParams_t* channelRemove ) +{ + return LORAMAC_STATUS_PARAMETER_INVALID; +} + +void RegionCN470SetContinuousWave( ContinuousWaveParams_t* continuousWave ) +{ + int8_t txPowerLimited = LimitTxPower( continuousWave->TxPower, Bands[Channels[continuousWave->Channel].Band].TxMaxPower, continuousWave->Datarate, ChannelsMask ); + int8_t phyTxPower = 0; + uint32_t frequency = Channels[continuousWave->Channel].Frequency; + + phyTxPower = TxPowersCN470[txPowerLimited]; + + Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); +} diff --git a/src/mac/region/RegionCN470.h b/src/mac/region/RegionCN470.h new file mode 100644 index 000000000..3784b9c67 --- /dev/null +++ b/src/mac/region/RegionCN470.h @@ -0,0 +1,401 @@ +/*! + * \file RegionCN470.h + * + * \brief Region definition for CN470 + * + * \copyright Revised BSD License, see section \ref LICENSE. + * + * \code + * ______ _ + * / _____) _ | | + * ( (____ _____ ____ _| |_ _____ ____| |__ + * \____ \| ___ | (_ _) ___ |/ ___) _ \ + * _____) ) ____| | | || |_| ____( (___| | | | + * (______/|_____)_|_|_| \__)_____)\____)_| |_| + * (C)2013 Semtech + * + * ___ _____ _ ___ _ _____ ___ ___ ___ ___ + * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| + * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| + * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| + * embedded.connectivity.solutions=============== + * + * \endcode + * + * \author Miguel Luis ( Semtech ) + * + * \author Gregory Cristian ( Semtech ) + * + * \author Daniel Jaeckle ( STACKFORCE ) + * + * \defgroup REGIONCN470 Region CN470 + * Implementation according to LoRaWAN Specification v1.0.2. + * \{ + */ +#ifndef __REGION_CN470_H__ +#define __REGION_CN470_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define CN470_MAX_NB_CHANNELS 96 + +/*! + * Minimal datarate that can be used by the node + */ +#define CN470_TX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define CN470_TX_MAX_DATARATE DR_5 + +/*! + * Minimal datarate that can be used by the node + */ +#define CN470_RX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define CN470_RX_MAX_DATARATE DR_5 + +/*! + * Default datarate used by the node + */ +#define CN470_DEFAULT_DATARATE DR_0 + +/*! + * Minimal Rx1 receive datarate offset + */ +#define CN470_MIN_RX1_DR_OFFSET 0 + +/*! + * Maximal Rx1 receive datarate offset + */ +#define CN470_MAX_RX1_DR_OFFSET 3 + +/*! + * Default Rx1 receive datarate offset + */ +#define CN470_DEFAULT_RX1_DR_OFFSET 0 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define CN470_MIN_TX_POWER TX_POWER_7 + +/*! + * Maximal Tx output power that can be used by the node + */ +#define CN470_MAX_TX_POWER TX_POWER_0 + +/*! + * Default Tx output power used by the node + */ +#define CN470_DEFAULT_TX_POWER TX_POWER_2 + +/*! + * ADR Ack limit + */ +#define CN470_ADR_ACK_LIMIT 64 + +/*! + * ADR Ack delay + */ +#define CN470_ADR_ACK_DELAY 32 + +/*! + * Enabled or disabled the duty cycle + */ +#define CN470_DUTY_CYCLE_ENABLED 0 + +/*! + * Maximum RX window duration + */ +#define CN470_MAX_RX_WINDOW 3000 + +/*! + * Receive delay 1 + */ +#define CN470_RECEIVE_DELAY1 1000 + +/*! + * Receive delay 2 + */ +#define CN470_RECEIVE_DELAY2 2000 + +/*! + * Join accept delay 1 + */ +#define CN470_JOIN_ACCEPT_DELAY1 5000 + +/*! + * Join accept delay 2 + */ +#define CN470_JOIN_ACCEPT_DELAY2 6000 + +/*! + * Maximum frame counter gap + */ +#define CN470_MAX_FCNT_GAP 16384 + +/*! + * Ack timeout + */ +#define CN470_ACKTIMEOUT 2000 + +/*! + * Random ack timeout limits + */ +#define CN470_ACK_TIMEOUT_RND 1000 + +/*! + * Second reception window channel frequency definition. + */ +#define CN470_RX_WND_2_FREQ 505300000 + +/*! + * Second reception window channel datarate definition. + */ +#define CN470_RX_WND_2_DR DR_0 + +/*! + * LoRaMac maximum number of bands + */ +#define CN470_MAX_NB_BANDS 1 + +/*! + * Band 0 definition + * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define CN470_BAND0 { 1, CN470_DEFAULT_TX_POWER, 0, 0 } // 100.0 % + +/*! + * Defines the first channel for RX window 1 for CN470 band + */ +#define CN470_FIRST_RX1_CHANNEL ( (uint32_t) 500.3e6 ) + +/*! + * Defines the last channel for RX window 1 for CN470 band + */ +#define CN470_LAST_RX1_CHANNEL ( (uint32_t) 509.7e6 ) + +/*! + * Defines the step width of the channels for RX window 1 + */ +#define CN470_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 200e3 ) + +/*! + * Data rates table definition + */ +static const uint8_t DataratesCN470[] = { 12, 11, 10, 9, 8, 7 }; + +/*! + * Maximum payload with respect to the datarate index. Cannot operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateCN470[] = { 51, 51, 51, 115, 222, 222 }; + +/*! + * Maximum payload with respect to the datarate index. Can operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateRepeaterCN470[] = { 51, 51, 51, 115, 222, 222 }; + +/*! + * Tx output powers table definition + */ +static const int8_t TxPowersCN470[] = { 17, 16, 14, 12, 10, 7, 5, 2 }; + + + +/*! + * \brief The function gets a value of a specific phy attribute. + * + * \param [IN] getPhy Pointer to the function parameters. + */ +void RegionCN470GetPhyParam( GetPhyParams_t* getPhy ); + +/*! + * \brief Updates the last TX done parameters of the current channel. + * + * \param [IN] txDone Pointer to the function parameters. + */ +void RegionCN470SetBandTxDone( SetBandTxDoneParams_t* txDone ); + +/*! + * \brief Initializes the channels masks and the channels. + * + * \param [IN] type Sets the initialization type. + */ +void RegionCN470InitDefaults( InitType_t type ); + +/*! + * \brief Verifies a parameter. + * + * \param [IN] verify Pointer to the function parameters. + * + * \param [IN] type Sets the initialization type. + * + * \retval Returns true, if the parameter is valid. + */ +bool RegionCN470Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ); + +/*! + * \brief The function parses the input buffer and sets up the channels of the + * CF list. + * + * \param [IN] applyCFList Pointer to the function parameters. + */ +void RegionCN470ApplyCFList( ApplyCFListParams_t* applyCFList ); + +/*! + * \brief Sets a channels mask. + * + * \param [IN] chanMaskSet Pointer to the function parameters. + * + * \retval Returns true, if the channels mask could be set. + */ +bool RegionCN470ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); + +/*! + * \brief Calculates the next datarate to set, when ADR is on or off. + * + * \param [IN] adrNext Pointer to the function parameters. + * + * \param [OUT] drOut The calculated datarate for the next TX. + * + * \param [OUT] txPowOut The TX power for the next TX. + * + * \param [OUT] adrAckCounter The calculated ADR acknowledgement counter. + * + * \retval Returns true, if an ADR request should be performed. + */ +bool RegionCN470AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); + +/*! + * \brief Configuration of the RX windows. + * + * \param [IN] rxConfig Pointer to the function parameters. + * + * \param [OUT] datarate The datarate index which was set. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionCN470RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ); + +/*! + * \brief TX configuration. + * + * \param [IN] txConfig Pointer to the function parameters. + * + * \param [OUT] txPower The tx power index which was set. + * + * \param [OUT] txTimeOnAir The time-on-air of the frame. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionCN470TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ); + +/*! + * \brief The function processes a Link ADR Request. + * + * \param [IN] linkAdrReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionCN470LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ); + +/*! + * \brief The function processes a RX Parameter Setup Request. + * + * \param [IN] rxParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionCN470RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ); + +/*! + * \brief The function processes a Channel Request. + * + * \param [IN] newChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionCN470NewChannelReq( NewChannelReqParams_t* newChannelReq ); + +/*! + * \brief The function processes a TX ParamSetup Request. + * + * \param [IN] txParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + * Returns -1, if the functionality is not implemented. In this case, the end node + * shall not process the command. + */ +int8_t RegionCN470TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ); + +/*! + * \brief The function processes a DlChannel Request. + * + * \param [IN] dlChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionCN470DlChannelReq( DlChannelReqParams_t* dlChannelReq ); + +/* + * \brief Alternates the datarate of the channel for the join request. + * + * \param [IN] alternateDr Pointer to the function parameters. + * + * \retval Datarate to apply. + */ +int8_t RegionCN470AlternateDr( AlternateDrParams_t* alternateDr ); + +/*! + * \brief Calculates the back-off time. + * + * \param [IN] calcBackOff Pointer to the function parameters. + */ +void RegionCN470CalcBackOff( CalcBackOffParams_t* calcBackOff ); + +/*! + * \brief Searches and set the next random available channel + * + * \param [OUT] channel Next channel to use for TX. + * + * \param [OUT] time Time to wait for the next transmission according to the duty + * cycle. + * + * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] + */ +bool RegionCN470NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); + +/*! + * \brief Adds a channel. + * + * \param [IN] channelAdd Pointer to the function parameters. + * + * \retval Status of the operation. + */ +LoRaMacStatus_t RegionCN470ChannelAdd( ChannelAddParams_t* channelAdd ); + +/*! + * \brief Removes a channel. + * + * \param [IN] channelRemove Pointer to the function parameters. + * + * \retval Returns true, if the channel was removed successfully. + */ +bool RegionCN470ChannelsRemove( ChannelRemoveParams_t* channelRemove ); + +/*! + * \brief Sets the radio into continuous wave mode. + * + * \param [IN] continuousWave Pointer to the function parameters. + */ +void RegionCN470SetContinuousWave( ContinuousWaveParams_t* continuousWave ); + +/*! \} defgroup REGIONCN470 */ + +#endif // __REGION_CN470_H__ diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c new file mode 100644 index 000000000..a53b2e63c --- /dev/null +++ b/src/mac/region/RegionCN779.c @@ -0,0 +1,1001 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + ___ _____ _ ___ _ _____ ___ ___ ___ ___ +/ __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| +\__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| +|___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| +embedded.connectivity.solutions=============== + +Description: LoRa MAC region CN779 implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) +*/ +#include +#include +#include + +#include "radio.h" +#include "timer.h" +#include "LoRaMac.h" + +#include "utilities.h" + +#include "Region.h" +#include "RegionCommon.h" +#include "RegionCN779.h" + + + +// Definitions +#define CHANNELS_MASK_SIZE 1 + + + +// Global attributes +/*! + * LoRaMAC channels + */ +static ChannelParams_t Channels[CN779_MAX_NB_CHANNELS]; + +/*! + * LoRaMac bands + */ +static Band_t Bands[CN779_MAX_NB_BANDS] = +{ + CN779_BAND0 +}; + +/*! + * LoRaMac channels mask + */ +static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; + +/*! + * LoRaMac channels default mask + */ +static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; + + + +// Static functions +static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) +{ + int8_t datarate = dr - drOffset; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} + +static uint16_t GetSymbTimeout( int8_t dr ) +{ + uint16_t symbolTimeout = 5; + + // For higher datarates, we increase the number of symbols generating a Rx Timeout + if( ( dr == DR_3 ) || ( dr == DR_4 ) ) + { + symbolTimeout = 8; + } + else if( dr == DR_5 ) + { + symbolTimeout = 10; + } + else if( dr == DR_6 ) + { + symbolTimeout = 14; + } + return symbolTimeout; +} + +static uint32_t GetBandwidth( int8_t dr ) +{ + uint32_t bandwidth = 0; + + if( dr == DR_6 ) + { + bandwidth = 1; + } + return bandwidth; +} + +static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) +{ + int8_t txPowerResult = txPower; + + // Limit tx power to the band max + txPowerResult = MAX( txPower, maxBandTxPower ); + + return txPowerResult; +} + +static bool VerifyTxFreq( uint32_t freq ) +{ + // Check radio driver support + if( Radio.CheckRfFrequency( freq ) == false ) + { + return false; + } + + if( ( freq < 779500000 ) || ( freq > 786500000 ) ) + { + return false; + } + return true; +} + +static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t* channelsMask, ChannelParams_t* channels, Band_t* bands, uint8_t* enabledChannels, uint8_t* delayTx ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTransmission = 0; + + for( uint8_t i = 0, k = 0; i < CN779_MAX_NB_CHANNELS; i += 16, k++ ) + { + for( uint8_t j = 0; j < 16; j++ ) + { + if( ( channelsMask[k] & ( 1 << j ) ) != 0 ) + { + if( channels[i + j].Frequency == 0 ) + { // Check if the channel is enabled + continue; + } + if( joined == false ) + { + if( ( CN779_JOIN_CHANNELS & ( 1 << j ) ) == 0 ) + { + continue; + } + } + if( RegionCommonValueInRange( datarate, channels[i + j].DrRange.Fields.Min, + channels[i + j].DrRange.Fields.Max ) == false ) + { // Check if the current channel selection supports the given datarate + continue; + } + if( bands[channels[i + j].Band].TimeOff > 0 ) + { // Check if the band is available for transmission + delayTransmission++; + continue; + } + enabledChannels[nbEnabledChannels++] = i + j; + } + } + } + + *delayTx = delayTransmission; + return nbEnabledChannels; +} + + + +void RegionCN779GetPhyParam( GetPhyParams_t* getPhy ) +{ + switch( getPhy->Attribute ) + { + case PHY_MIN_DR: + { + getPhy->Param.Value = CN779_TX_MIN_DATARATE; + break; + } + case PHY_DEF_TX_DR: + { + getPhy->Param.Value = CN779_DEFAULT_DATARATE; + break; + } + case PHY_DEF_TX_POWER: + { + getPhy->Param.Value = CN779_DEFAULT_TX_POWER; + break; + } + case PHY_MAX_PAYLOAD: + { + getPhy->Param.Value = MaxPayloadOfDatarateCN779[getPhy->Datarate]; + break; + } + case PHY_MAX_PAYLOAD_REPEATER: + { + getPhy->Param.Value = MaxPayloadOfDatarateRepeaterCN779[getPhy->Datarate]; + break; + } + case PHY_DUTY_CYCLE: + { + getPhy->Param.Value = CN779_DUTY_CYCLE_ENABLED; + break; + } + case PHY_MAX_RX_WINDOW: + { + getPhy->Param.Value = CN779_MAX_RX_WINDOW; + break; + } + case PHY_RECEIVE_DELAY1: + { + getPhy->Param.Value = CN779_RECEIVE_DELAY1; + break; + } + case PHY_RECEIVE_DELAY2: + { + getPhy->Param.Value = CN779_RECEIVE_DELAY2; + break; + } + case PHY_JOIN_ACCEPT_DELAY1: + { + getPhy->Param.Value = CN779_JOIN_ACCEPT_DELAY1; + break; + } + case PHY_JOIN_ACCEPT_DELAY2: + { + getPhy->Param.Value = CN779_JOIN_ACCEPT_DELAY2; + break; + } + case PHY_MAX_FCNT_GAP: + { + getPhy->Param.Value = CN779_MAX_FCNT_GAP; + break; + } + case PHY_ACK_TIMEOUT: + { + getPhy->Param.Value = ( CN779_ACKTIMEOUT + randr( -CN779_ACK_TIMEOUT_RND, CN779_ACK_TIMEOUT_RND ) ); + break; + } + case PHY_DEF_DR1_OFFSET: + { + getPhy->Param.Value = CN779_DEFAULT_RX1_DR_OFFSET; + break; + } + case PHY_DEF_RX2_FREQUENCY: + { + getPhy->Param.Value = CN779_RX_WND_2_FREQ; + break; + } + case PHY_DEF_RX2_DR: + { + getPhy->Param.Value = CN779_RX_WND_2_DR; + break; + } + case PHY_CHANNELS_MASK: + { + getPhy->Param.ChannelsMask = ChannelsMask; + break; + } + case PHY_CHANNELS_DEFAULT_MASK: + { + getPhy->Param.ChannelsMask = ChannelsDefaultMask; + break; + } + case PHY_MAX_NB_CHANNELS: + { + getPhy->Param.Value = CN779_MAX_NB_CHANNELS; + break; + } + case PHY_CHANNELS: + { + getPhy->Param.Channels = Channels; + break; + } + case PHY_DEF_UPLINK_DWELL_TIME: + case PHY_DEF_DOWNLINK_DWELL_TIME: + case PHY_DEF_MAX_EIRP: + { + getPhy->Param.Value = 0; + break; + } + case PHY_NB_JOIN_TRIALS: + case PHY_DEF_NB_JOIN_TRIALS: + { + getPhy->Param.Value = 48; + break; + } + default: + { + return; + } + } +} + +void RegionCN779SetBandTxDone( SetBandTxDoneParams_t* txDone ) +{ + RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); +} + +void RegionCN779InitDefaults( InitType_t type ) +{ + switch( type ) + { + case INIT_TYPE_INIT: + { + // Channels + Channels[0] = ( ChannelParams_t ) CN779_LC1; + Channels[1] = ( ChannelParams_t ) CN779_LC2; + Channels[2] = ( ChannelParams_t ) CN779_LC3; + + // Initialize the channels default mask + ChannelsDefaultMask[0] = LC( 1 ) + LC( 2 ) + LC( 3 ); + // Update the channels mask + RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 1 ); + break; + } + case INIT_TYPE_RESTORE: + { + // Restore channels default mask + ChannelsMask[0] |= ChannelsDefaultMask[0]; + break; + } + default: + { + break; + } + } +} + +bool RegionCN779Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) +{ + switch( phyAttribute ) + { + case PHY_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, CN779_TX_MIN_DATARATE, CN779_TX_MAX_DATARATE ); + } + case PHY_DEF_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + } + case PHY_DEF_TX_POWER: + case PHY_TX_POWER: + { + // Remark: switched min and max! + return RegionCommonValueInRange( verify->TxPower, CN779_MAX_TX_POWER, CN779_MIN_TX_POWER ); + } + case PHY_DUTY_CYCLE: + { + return CN779_DUTY_CYCLE_ENABLED; + } + case PHY_NB_JOIN_TRIALS: + { + if( verify->NbJoinTrials < 48 ) + { + return false; + } + break; + } + default: + return false; + } + return true; +} + +void RegionCN779ApplyCFList( ApplyCFListParams_t* applyCFList ) +{ + ChannelParams_t newChannel; + ChannelAddParams_t channelAdd; + ChannelRemoveParams_t channelRemove; + + // Setup default datarate range + newChannel.DrRange.Value = ( DR_5 << 4 ) | DR_0; + + // Size of the optional CF list + if( applyCFList->Size != 16 ) + { + return; + } + + // Last byte is RFU, don't take it into account + for( uint8_t i = 0, chanIdx = CN779_NUMB_DEFAULT_CHANNELS; i < 15; i+=3, chanIdx++ ) + { + // Channel frequency + newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); + newChannel.Frequency *= 100; + + // Initialize alternative frequency to 0 + newChannel.Rx1Frequency = 0; + + if( newChannel.Frequency != 0 ) + { + channelAdd.NewChannel = &newChannel; + channelAdd.ChannelId = chanIdx; + + // Try to add all channels + RegionCN779ChannelAdd( &channelAdd ); + } + else + { + channelRemove.ChannelId = chanIdx; + + RegionCN779ChannelsRemove( &channelRemove ); + } + } +} + +bool RegionCN779ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ) +{ + switch( chanMaskSet->ChannelsMaskType ) + { + case CHANNELS_MASK: + { + RegionCommonChanMaskCopy( ChannelsMask, chanMaskSet->ChannelsMaskIn, 1 ); + break; + } + case CHANNELS_DEFAULT_MASK: + { + RegionCommonChanMaskCopy( ChannelsDefaultMask, chanMaskSet->ChannelsMaskIn, 1 ); + break; + } + default: + return false; + } + return true; +} + +bool RegionCN779AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ) +{ + bool adrAckReq = false; + int8_t datarate = adrNext->Datarate; + int8_t txPower = adrNext->TxPower; + + // Report back the adr ack counter + *adrAckCounter = adrNext->AdrAckCounter; + + if( adrNext->AdrEnabled == true ) + { + if( datarate == CN779_TX_MIN_DATARATE ) + { + *adrAckCounter = 0; + adrAckReq = false; + } + else + { + if( adrNext->AdrAckCounter >= CN779_ADR_ACK_LIMIT ) + { + adrAckReq = true; + txPower = CN779_MAX_TX_POWER; + } + else + { + adrAckReq = false; + } + if( adrNext->AdrAckCounter >= ( CN779_ADR_ACK_LIMIT + CN779_ADR_ACK_DELAY ) ) + { + if( ( adrNext->AdrAckCounter % CN779_ADR_ACK_DELAY ) == 0 ) + { + if( datarate > CN779_TX_MIN_DATARATE ) + { + datarate--; + } + + if( datarate == CN779_TX_MIN_DATARATE ) + { + if( adrNext->UpdateChanMask == true ) + { + // Re-enable default channels + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + } + } + } + } + } + } + + *drOut = datarate; + *txPowOut = txPower; + return adrAckReq; +} + +// ToDo get phy datarate afterwards +bool RegionCN779RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) +{ + RadioModems_t modem; + int8_t dr = rxConfig->Datarate; + uint8_t maxPayload = 0; + uint16_t symbTimeout = 0; + uint32_t bandwidth = 0; + int8_t phyDr = 0; + uint32_t frequency = rxConfig->Frequency; + + if( Radio.GetStatus( ) != RF_IDLE ) + { + return false; + } + + if( rxConfig->Window == 0 ) + { + // Apply the datarate offset for RX window 1 + dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + // Apply window 1 frequency + frequency = Channels[rxConfig->Channel].Frequency; + // Apply the alternative RX 1 window frequency, if it is available + if( Channels[rxConfig->Channel].Rx1Frequency != 0 ) + { + frequency = Channels[rxConfig->Channel].Rx1Frequency; + } + } + symbTimeout = GetSymbTimeout( dr ); + bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table + phyDr = DataratesCN779[dr]; + + Radio.SetChannel( frequency ); + + if( dr == DR_7 ) + { + modem = MODEM_FSK; + Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, 0, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + } + else + { + modem = MODEM_LORA; + Radio.SetRxConfig( modem, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + } + + if( rxConfig->RepeaterSupport == true ) + { + maxPayload = MaxPayloadOfDatarateRepeaterCN779[dr]; + } + else + { + maxPayload = MaxPayloadOfDatarateCN779[dr]; + } + Radio.SetMaxPayloadLength( modem, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); + + *datarate = (uint8_t) dr; + return true; +} + +bool RegionCN779TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) +{ + RadioModems_t modem; + int8_t phyDr = DataratesCN779[txConfig->Datarate]; + int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band].TxMaxPower, txConfig->Datarate, ChannelsMask ); + uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); + int8_t phyTxPower = 0; + + phyTxPower = TxPowersCN779[txPowerLimited]; + + // Setup the radio frequency + Radio.SetChannel( Channels[txConfig->Channel].Frequency ); + + if( txConfig->Datarate == DR_7 ) + { // High Speed FSK channel + modem = MODEM_FSK; + Radio.SetTxConfig( modem, phyTxPower, 25e3, bandwidth, phyDr * 1e3, 0, 5, false, true, 0, 0, false, 3e3 ); + } + else + { + modem = MODEM_LORA; + Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + } + // Setup maximum payload lenght of the radio driver + Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); + // Get the time-on-air of the next tx frame + *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); + + *txPower = txConfig->TxPower; + return true; +} + +uint8_t RegionCN779LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) +{ + uint8_t status = 0x07; + LinkAdrParams_t linkAdrParams; + uint8_t nextIndex = 0; + uint8_t bytesProcessed = 0; + uint16_t chMask = 0; + + while( bytesProcessed < linkAdrReq->PayloadSize ) + { + // Get ADR request parameters + nextIndex = RegionCommonParseLinkAdrReq( &( linkAdrReq->Payload[bytesProcessed] ), &linkAdrParams ); + + if( nextIndex == 0 ) + break; // break loop, since no more request has been found + + // Update bytes processed + bytesProcessed += nextIndex; + + // Revert status, as we only check the last ADR request for the channel mask KO + status = 0x07; + + // Setup temporary channels mask + chMask = linkAdrParams.ChMask; + + // Verify channels mask + if( ( linkAdrParams.ChMaskCtrl == 0 ) && ( chMask == 0 ) ) + { + status &= 0xFE; // Channel mask KO + } + else if( ( ( linkAdrParams.ChMaskCtrl >= 1 ) && ( linkAdrParams.ChMaskCtrl <= 5 )) || + ( linkAdrParams.ChMaskCtrl >= 7 ) ) + { + // RFU + status &= 0xFE; // Channel mask KO + } + else + { + for( uint8_t i = 0; i < CN779_MAX_NB_CHANNELS; i++ ) + { + if( linkAdrParams.ChMaskCtrl == 6 ) + { + if( Channels[i].Frequency != 0 ) + { + chMask |= 1 << i; + } + } + else + { + if( ( ( chMask & ( 1 << i ) ) != 0 ) && + ( Channels[i].Frequency == 0 ) ) + {// Trying to enable an undefined channel + status &= 0xFE; // Channel mask KO + } + } + } + } + } + + // Verify datarate + if( RegionCommonChanVerifyDr( CN779_MAX_NB_CHANNELS, &chMask, linkAdrParams.Datarate, CN779_TX_MIN_DATARATE, CN779_TX_MAX_DATARATE, Channels ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify tx power + if( RegionCommonValueInRange( linkAdrParams.TxPower, CN779_MAX_TX_POWER, CN779_MIN_TX_POWER ) == 0 ) + { + // Verify if the maximum TX power is exceeded + if( CN779_MAX_TX_POWER > linkAdrParams.TxPower ) + { // Apply maximum TX power. Accept TX power. + linkAdrParams.TxPower = CN779_MAX_TX_POWER; + } + else + { + status &= 0xFB; // TxPower KO + } + } + + // Update channelsMask if everything is correct + if( status == 0x07 ) + { + if( linkAdrParams.NbRep == 0 ) + { // Value of 0 is not allowed, revert to default. + linkAdrParams.NbRep = 1; + } + + // Set the channels mask to a default value + memset( ChannelsMask, 0, sizeof( ChannelsMask ) ); + // Update the channels mask + ChannelsMask[0] = chMask; + } + + // Update status variables + *drOut = linkAdrParams.Datarate; + *txPowOut = linkAdrParams.TxPower; + *nbRepOut = linkAdrParams.NbRep; + *nbBytesParsed = bytesProcessed; + + return status; +} + +uint8_t RegionCN779RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) +{ + uint8_t status = 0x07; + + // Verify radio frequency + if( Radio.CheckRfFrequency( rxParamSetupReq->Frequency ) == false ) + { + status &= 0xFE; // Channel frequency KO + } + + // Verify datarate + if( RegionCommonValueInRange( rxParamSetupReq->Datarate, CN779_RX_MIN_DATARATE, CN779_RX_MAX_DATARATE ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify datarate offset + if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, CN779_MIN_RX1_DR_OFFSET, CN779_MAX_RX1_DR_OFFSET ) == false ) + { + status &= 0xFB; // Rx1DrOffset range KO + } + + return status; +} + +uint8_t RegionCN779NewChannelReq( NewChannelReqParams_t* newChannelReq ) +{ + uint8_t status = 0x03; + ChannelAddParams_t channelAdd; + ChannelRemoveParams_t channelRemove; + + if( newChannelReq->NewChannel->Frequency == 0 ) + { + channelRemove.ChannelId = newChannelReq->ChannelId; + + // Remove + if( RegionCN779ChannelsRemove( &channelRemove ) == false ) + { + status &= 0xFC; + } + } + else + { + channelAdd.NewChannel = newChannelReq->NewChannel; + channelAdd.ChannelId = newChannelReq->ChannelId; + + switch( RegionCN779ChannelAdd( &channelAdd ) ) + { + case LORAMAC_STATUS_OK: + { + break; + } + case LORAMAC_STATUS_FREQUENCY_INVALID: + { + status &= 0xFE; + break; + } + case LORAMAC_STATUS_DATARATE_INVALID: + { + status &= 0xFD; + break; + } + case LORAMAC_STATUS_FREQ_AND_DR_INVALID: + { + status &= 0xFC; + break; + } + default: + { + status &= 0xFC; + break; + } + } + } + + return status; +} + +int8_t RegionCN779TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ) +{ + return -1; +} + +uint8_t RegionCN779DlChannelReq( DlChannelReqParams_t* dlChannelReq ) +{ + uint8_t status = 0x03; + + // Verify if the frequency is supported + if( VerifyTxFreq( dlChannelReq->Rx1Frequency ) == false ) + { + status &= 0xFE; + } + + // Verify if an uplink frequency exists + if( Channels[dlChannelReq->ChannelId].Frequency == 0 ) + { + status &= 0xFD; + } + + // Apply Rx1 frequency, if the status is OK + if( status == 0x03 ) + { + Channels[dlChannelReq->ChannelId].Rx1Frequency = dlChannelReq->Rx1Frequency; + } + + return status; +} + +int8_t RegionCN779AlternateDr( AlternateDrParams_t* alternateDr ) +{ + int8_t datarate = 0; + + if( ( alternateDr->NbTrials % 48 ) == 0 ) + { + datarate = DR_0; + } + else if( ( alternateDr->NbTrials % 32 ) == 0 ) + { + datarate = DR_1; + } + else if( ( alternateDr->NbTrials % 24 ) == 0 ) + { + datarate = DR_2; + } + else if( ( alternateDr->NbTrials % 16 ) == 0 ) + { + datarate = DR_3; + } + else if( ( alternateDr->NbTrials % 8 ) == 0 ) + { + datarate = DR_4; + } + else + { + datarate = DR_5; + } + return datarate; +} + +void RegionCN779CalcBackOff( CalcBackOffParams_t* calcBackOff ) +{ + uint8_t channel = calcBackOff->Channel; + uint16_t dutyCycle = Bands[Channels[channel].Band].DCycle; + uint16_t joinDutyCycle = 0; + + // Reset time-off to initial value. + Bands[Channels[channel].Band].TimeOff = 0; + + if( calcBackOff->Joined == false ) + { + // Get the join duty cycle + joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); + // Apply the most restricting duty cycle + dutyCycle = MAX( dutyCycle, joinDutyCycle ); + // Apply band time-off. + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; + } + else + { + if( calcBackOff->DutyCycleEnabled == true ) + { + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; + } + } +} + +bool RegionCN779NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTx = 0; + uint8_t enabledChannels[CN779_MAX_NB_CHANNELS] = { 0 }; + TimerTime_t nextTxDelay = 0; + + if( RegionCommonCountChannels( ChannelsMask, 0, 1 ) == 0 ) + { // Reactivate default channels + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + } + + if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) + { + // Update bands Time OFF + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, CN779_MAX_NB_BANDS ); + + // Search how many channels are enabled + nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Joined, nextChanParams->Datarate, + ChannelsMask, Channels, + Bands, enabledChannels, &delayTx ); + } + else + { + delayTx++; + nextTxDelay = nextChanParams->AggrTimeOff - TimerGetElapsedTime( nextChanParams->LastAggrTx ); + } + + if( nbEnabledChannels > 0 ) + { + // We found a valid channel + *channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; + + *time = 0; + return true; + } + else + { + if( delayTx > 0 ) + { + // Delay transmission due to AggregatedTimeOff or to a band time off + *time = nextTxDelay; + return true; + } + // Datarate not supported by any channel, restore defaults + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + *time = 0; + return false; + } +} + +LoRaMacStatus_t RegionCN779ChannelAdd( ChannelAddParams_t* channelAdd ) +{ + uint8_t band = 0; + bool drInvalid = false; + bool freqInvalid = false; + uint8_t id = channelAdd->ChannelId; + + if( id >= CN779_MAX_NB_CHANNELS ) + { + return LORAMAC_STATUS_PARAMETER_INVALID; + } + + // Validate the datarate range + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Min, CN779_TX_MIN_DATARATE, CN779_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, CN779_TX_MIN_DATARATE, CN779_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + if( channelAdd->NewChannel->DrRange.Fields.Min > channelAdd->NewChannel->DrRange.Fields.Max ) + { + drInvalid = true; + } + + // Default channels don't accept all values + if( id < CN779_NUMB_DEFAULT_CHANNELS ) + { + // Validate the datarate range for min: must be DR_0 + if( channelAdd->NewChannel->DrRange.Fields.Min > DR_0 ) + { + drInvalid = true; + } + // Validate the datarate range for max: must be DR_5 <= Max <= TX_MAX_DATARATE + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, DR_5, CN779_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + // We are not allowed to change the frequency + if( channelAdd->NewChannel->Frequency != Channels[id].Frequency ) + { + freqInvalid = true; + } + } + + // Check frequency + if( freqInvalid == false ) + { + if( VerifyTxFreq( channelAdd->NewChannel->Frequency ) == false ) + { + freqInvalid = true; + } + } + + // Check status + if( ( drInvalid == true ) && ( freqInvalid == true ) ) + { + return LORAMAC_STATUS_FREQ_AND_DR_INVALID; + } + if( drInvalid == true ) + { + return LORAMAC_STATUS_DATARATE_INVALID; + } + if( freqInvalid == true ) + { + return LORAMAC_STATUS_FREQUENCY_INVALID; + } + + memcpy( &(Channels[id]), channelAdd->NewChannel, sizeof( Channels[id] ) ); + Channels[id].Band = band; + ChannelsMask[0] |= ( 1 << id ); + return LORAMAC_STATUS_OK; +} + +bool RegionCN779ChannelsRemove( ChannelRemoveParams_t* channelRemove ) +{ + uint8_t id = channelRemove->ChannelId; + + if( id < CN779_NUMB_DEFAULT_CHANNELS ) + { + return false; + } + + // Remove the channel from the list of channels + Channels[id] = ( ChannelParams_t ){ 0, 0, { 0 }, 0 }; + + return RegionCommonChanDisable( ChannelsMask, id, CN779_MAX_NB_CHANNELS ); +} + +void RegionCN779SetContinuousWave( ContinuousWaveParams_t* continuousWave ) +{ + int8_t txPowerLimited = LimitTxPower( continuousWave->TxPower, Bands[Channels[continuousWave->Channel].Band].TxMaxPower, continuousWave->Datarate, ChannelsMask ); + int8_t phyTxPower = 0; + uint32_t frequency = Channels[continuousWave->Channel].Frequency; + + phyTxPower = TxPowersCN779[txPowerLimited]; + + Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); +} diff --git a/src/mac/region/RegionCN779.h b/src/mac/region/RegionCN779.h new file mode 100644 index 000000000..0cfb66075 --- /dev/null +++ b/src/mac/region/RegionCN779.h @@ -0,0 +1,420 @@ +/*! + * \file RegionCN779.h + * + * \brief Region definition for CN779 + * + * \copyright Revised BSD License, see section \ref LICENSE. + * + * \code + * ______ _ + * / _____) _ | | + * ( (____ _____ ____ _| |_ _____ ____| |__ + * \____ \| ___ | (_ _) ___ |/ ___) _ \ + * _____) ) ____| | | || |_| ____( (___| | | | + * (______/|_____)_|_|_| \__)_____)\____)_| |_| + * (C)2013 Semtech + * + * ___ _____ _ ___ _ _____ ___ ___ ___ ___ + * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| + * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| + * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| + * embedded.connectivity.solutions=============== + * + * \endcode + * + * \author Miguel Luis ( Semtech ) + * + * \author Gregory Cristian ( Semtech ) + * + * \author Daniel Jaeckle ( STACKFORCE ) + * + * \defgroup REGIONCN779 Region CN779 + * Implementation according to LoRaWAN Specification v1.0.2. + * \{ + */ +#ifndef __REGION_CN779_H__ +#define __REGION_CN779_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define CN779_MAX_NB_CHANNELS 16 + +/*! + * Number of default channels + */ +#define CN779_NUMB_DEFAULT_CHANNELS 3 + +/*! + * Minimal datarate that can be used by the node + */ +#define CN779_TX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define CN779_TX_MAX_DATARATE DR_7 + +/*! + * Minimal datarate that can be used by the node + */ +#define CN779_RX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define CN779_RX_MAX_DATARATE DR_7 + +/*! + * Default datarate used by the node + */ +#define CN779_DEFAULT_DATARATE DR_0 + +/*! + * Minimal Rx1 receive datarate offset + */ +#define CN779_MIN_RX1_DR_OFFSET 0 + +/*! + * Maximal Rx1 receive datarate offset + */ +#define CN779_MAX_RX1_DR_OFFSET 5 + +/*! + * Default Rx1 receive datarate offset + */ +#define CN779_DEFAULT_RX1_DR_OFFSET 0 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define CN779_MIN_TX_POWER TX_POWER_5 + +/*! + * Maximal Tx output power that can be used by the node + */ +#define CN779_MAX_TX_POWER TX_POWER_0 + +/*! + * Default Tx output power used by the node + */ +#define CN779_DEFAULT_TX_POWER TX_POWER_0 + +/*! + * ADR Ack limit + */ +#define CN779_ADR_ACK_LIMIT 64 + +/*! + * ADR Ack delay + */ +#define CN779_ADR_ACK_DELAY 32 + +/*! + * Enabled or disabled the duty cycle + */ +#define CN779_DUTY_CYCLE_ENABLED 1 + +/*! + * Maximum RX window duration + */ +#define CN779_MAX_RX_WINDOW 3000 + +/*! + * Receive delay 1 + */ +#define CN779_RECEIVE_DELAY1 1000 + +/*! + * Receive delay 2 + */ +#define CN779_RECEIVE_DELAY2 2000 + +/*! + * Join accept delay 1 + */ +#define CN779_JOIN_ACCEPT_DELAY1 5000 + +/*! + * Join accept delay 2 + */ +#define CN779_JOIN_ACCEPT_DELAY2 6000 + +/*! + * Maximum frame counter gap + */ +#define CN779_MAX_FCNT_GAP 16384 + +/*! + * Ack timeout + */ +#define CN779_ACKTIMEOUT 2000 + +/*! + * Random ack timeout limits + */ +#define CN779_ACK_TIMEOUT_RND 1000 + +/*! + * Verification of default datarate + */ +#if ( CN779_DEFAULT_DATARATE > DR_5 ) +#error "A default DR higher than DR_5 may lead to connectivity loss." +#endif + +/*! + * Second reception window channel frequency definition. + */ +#define CN779_RX_WND_2_FREQ 786000000 + +/*! + * Second reception window channel datarate definition. + */ +#define CN779_RX_WND_2_DR DR_0 + +/*! + * LoRaMac maximum number of bands + */ +#define CN779_MAX_NB_BANDS 1 + +/*! + * Band 0 definition + * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define CN779_BAND0 { 100, CN779_DEFAULT_TX_POWER, 0, 0 } // 1.0 % + +/*! + * LoRaMac default channel 1 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define CN779_LC1 { 779500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +/*! + * LoRaMac default channel 2 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define CN779_LC2 { 779700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } + +/*! + * LoRaMac default channel 3 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define CN779_LC3 { 779900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } + +/*! + * LoRaMac channels which are allowed for the join procedure + */ +#define CN779_JOIN_CHANNELS ( uint16_t )( LC( 1 ) | LC( 2 ) | LC( 3 ) ) + +/*! + * Data rates table definition + */ +static const uint8_t DataratesCN779[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; + +/*! + * Maximum payload with respect to the datarate index. Cannot operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateCN779[] = { 51, 51, 51, 115, 242, 242, 242, 242 }; + +/*! + * Maximum payload with respect to the datarate index. Can operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateRepeaterCN779[] = { 51, 51, 51, 115, 222, 222, 222, 222 }; + +/*! + * Tx output powers table definition + */ +static const int8_t TxPowersCN779[] = { 10, 7, 4, 1, -2, -5 }; + + + +/*! + * \brief The function gets a value of a specific phy attribute. + * + * \param [IN] getPhy Pointer to the function parameters. + */ +void RegionCN779GetPhyParam( GetPhyParams_t* getPhy ); + +/*! + * \brief Updates the last TX done parameters of the current channel. + * + * \param [IN] txDone Pointer to the function parameters. + */ +void RegionCN779SetBandTxDone( SetBandTxDoneParams_t* txDone ); + +/*! + * \brief Initializes the channels masks and the channels. + * + * \param [IN] type Sets the initialization type. + */ +void RegionCN779InitDefaults( InitType_t type ); + +/*! + * \brief Verifies a parameter. + * + * \param [IN] verify Pointer to the function parameters. + * + * \param [IN] type Sets the initialization type. + * + * \retval Returns true, if the parameter is valid. + */ +bool RegionCN779Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ); + +/*! + * \brief The function parses the input buffer and sets up the channels of the + * CF list. + * + * \param [IN] applyCFList Pointer to the function parameters. + */ +void RegionCN779ApplyCFList( ApplyCFListParams_t* applyCFList ); + +/*! + * \brief Sets a channels mask. + * + * \param [IN] chanMaskSet Pointer to the function parameters. + * + * \retval Returns true, if the channels mask could be set. + */ +bool RegionCN779ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); + +/*! + * \brief Calculates the next datarate to set, when ADR is on or off. + * + * \param [IN] adrNext Pointer to the function parameters. + * + * \param [OUT] drOut The calculated datarate for the next TX. + * + * \param [OUT] txPowOut The TX power for the next TX. + * + * \param [OUT] adrAckCounter The calculated ADR acknowledgement counter. + * + * \retval Returns true, if an ADR request should be performed. + */ +bool RegionCN779AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); + +/*! + * \brief Configuration of the RX windows. + * + * \param [IN] rxConfig Pointer to the function parameters. + * + * \param [OUT] datarate The datarate index which was set. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionCN779RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ); + +/*! + * \brief TX configuration. + * + * \param [IN] txConfig Pointer to the function parameters. + * + * \param [OUT] txPower The tx power index which was set. + * + * \param [OUT] txTimeOnAir The time-on-air of the frame. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionCN779TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ); + +/*! + * \brief The function processes a Link ADR Request. + * + * \param [IN] linkAdrReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionCN779LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ); + +/*! + * \brief The function processes a RX Parameter Setup Request. + * + * \param [IN] rxParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionCN779RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ); + +/*! + * \brief The function processes a Channel Request. + * + * \param [IN] newChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionCN779NewChannelReq( NewChannelReqParams_t* newChannelReq ); + +/*! + * \brief The function processes a TX ParamSetup Request. + * + * \param [IN] txParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + * Returns -1, if the functionality is not implemented. In this case, the end node + * shall not process the command. + */ +int8_t RegionCN779TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ); + +/*! + * \brief The function processes a DlChannel Request. + * + * \param [IN] dlChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionCN779DlChannelReq( DlChannelReqParams_t* dlChannelReq ); + +/* + * \brief Alternates the datarate of the channel for the join request. + * + * \param [IN] alternateDr Pointer to the function parameters. + * + * \retval Datarate to apply. + */ +int8_t RegionCN779AlternateDr( AlternateDrParams_t* alternateDr ); + +/*! + * \brief Calculates the back-off time. + * + * \param [IN] calcBackOff Pointer to the function parameters. + */ +void RegionCN779CalcBackOff( CalcBackOffParams_t* calcBackOff ); + +/*! + * \brief Searches and set the next random available channel + * + * \param [OUT] channel Next channel to use for TX. + * + * \param [OUT] time Time to wait for the next transmission according to the duty + * cycle. + * + * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] + */ +bool RegionCN779NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); + +/*! + * \brief Adds a channel. + * + * \param [IN] channelAdd Pointer to the function parameters. + * + * \retval Status of the operation. + */ +LoRaMacStatus_t RegionCN779ChannelAdd( ChannelAddParams_t* channelAdd ); + +/*! + * \brief Removes a channel. + * + * \param [IN] channelRemove Pointer to the function parameters. + * + * \retval Returns true, if the channel was removed successfully. + */ +bool RegionCN779ChannelsRemove( ChannelRemoveParams_t* channelRemove ); + +/*! + * \brief Sets the radio into continuous wave mode. + * + * \param [IN] continuousWave Pointer to the function parameters. + */ +void RegionCN779SetContinuousWave( ContinuousWaveParams_t* continuousWave ); + +/*! \} defgroup REGIONCN779 */ + +#endif // __REGION_CN779_H__ diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c new file mode 100644 index 000000000..829ea4c6c --- /dev/null +++ b/src/mac/region/RegionEU433.c @@ -0,0 +1,1001 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + ___ _____ _ ___ _ _____ ___ ___ ___ ___ +/ __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| +\__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| +|___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| +embedded.connectivity.solutions=============== + +Description: LoRa MAC region EU433 implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) +*/ +#include +#include +#include + +#include "radio.h" +#include "timer.h" +#include "LoRaMac.h" + +#include "utilities.h" + +#include "Region.h" +#include "RegionCommon.h" +#include "RegionEU433.h" + + + +// Definitions +#define CHANNELS_MASK_SIZE 1 + + + +// Global attributes +/*! + * LoRaMAC channels + */ +static ChannelParams_t Channels[EU433_MAX_NB_CHANNELS]; + +/*! + * LoRaMac bands + */ +static Band_t Bands[EU433_MAX_NB_BANDS] = +{ + EU433_BAND0 +}; + +/*! + * LoRaMac channels mask + */ +static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; + +/*! + * LoRaMac channels default mask + */ +static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; + + + +// Static functions +static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) +{ + int8_t datarate = dr - drOffset; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} + +static uint16_t GetSymbTimeout( int8_t dr ) +{ + uint16_t symbolTimeout = 5; + + // For higher datarates, we increase the number of symbols generating a Rx Timeout + if( ( dr == DR_3 ) || ( dr == DR_4 ) ) + { + symbolTimeout = 8; + } + else if( dr == DR_5 ) + { + symbolTimeout = 10; + } + else if( dr == DR_6 ) + { + symbolTimeout = 14; + } + return symbolTimeout; +} + +static uint32_t GetBandwidth( int8_t dr ) +{ + uint32_t bandwidth = 0; + + if( dr == DR_6 ) + { + bandwidth = 1; + } + return bandwidth; +} + +static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) +{ + int8_t txPowerResult = txPower; + + // Limit tx power to the band max + txPowerResult = MAX( txPower, maxBandTxPower ); + + return txPowerResult; +} + +static bool VerifyTxFreq( uint32_t freq ) +{ + // Check radio driver support + if( Radio.CheckRfFrequency( freq ) == false ) + { + return false; + } + + if( ( freq < 433175000 ) || ( freq > 434665000 ) ) + { + return false; + } + return true; +} + +static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t* channelsMask, ChannelParams_t* channels, Band_t* bands, uint8_t* enabledChannels, uint8_t* delayTx ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTransmission = 0; + + for( uint8_t i = 0, k = 0; i < EU433_MAX_NB_CHANNELS; i += 16, k++ ) + { + for( uint8_t j = 0; j < 16; j++ ) + { + if( ( channelsMask[k] & ( 1 << j ) ) != 0 ) + { + if( channels[i + j].Frequency == 0 ) + { // Check if the channel is enabled + continue; + } + if( joined == false ) + { + if( ( EU433_JOIN_CHANNELS & ( 1 << j ) ) == 0 ) + { + continue; + } + } + if( RegionCommonValueInRange( datarate, channels[i + j].DrRange.Fields.Min, + channels[i + j].DrRange.Fields.Max ) == false ) + { // Check if the current channel selection supports the given datarate + continue; + } + if( bands[channels[i + j].Band].TimeOff > 0 ) + { // Check if the band is available for transmission + delayTransmission++; + continue; + } + enabledChannels[nbEnabledChannels++] = i + j; + } + } + } + + *delayTx = delayTransmission; + return nbEnabledChannels; +} + + + +void RegionEU433GetPhyParam( GetPhyParams_t* getPhy ) +{ + switch( getPhy->Attribute ) + { + case PHY_MIN_DR: + { + getPhy->Param.Value = EU433_TX_MIN_DATARATE; + break; + } + case PHY_DEF_TX_DR: + { + getPhy->Param.Value = EU433_DEFAULT_DATARATE; + break; + } + case PHY_DEF_TX_POWER: + { + getPhy->Param.Value = EU433_DEFAULT_TX_POWER; + break; + } + case PHY_MAX_PAYLOAD: + { + getPhy->Param.Value = MaxPayloadOfDatarateEU433[getPhy->Datarate]; + break; + } + case PHY_MAX_PAYLOAD_REPEATER: + { + getPhy->Param.Value = MaxPayloadOfDatarateRepeaterEU433[getPhy->Datarate]; + break; + } + case PHY_DUTY_CYCLE: + { + getPhy->Param.Value = EU433_DUTY_CYCLE_ENABLED; + break; + } + case PHY_MAX_RX_WINDOW: + { + getPhy->Param.Value = EU433_MAX_RX_WINDOW; + break; + } + case PHY_RECEIVE_DELAY1: + { + getPhy->Param.Value = EU433_RECEIVE_DELAY1; + break; + } + case PHY_RECEIVE_DELAY2: + { + getPhy->Param.Value = EU433_RECEIVE_DELAY2; + break; + } + case PHY_JOIN_ACCEPT_DELAY1: + { + getPhy->Param.Value = EU433_JOIN_ACCEPT_DELAY1; + break; + } + case PHY_JOIN_ACCEPT_DELAY2: + { + getPhy->Param.Value = EU433_JOIN_ACCEPT_DELAY2; + break; + } + case PHY_MAX_FCNT_GAP: + { + getPhy->Param.Value = EU433_MAX_FCNT_GAP; + break; + } + case PHY_ACK_TIMEOUT: + { + getPhy->Param.Value = ( EU433_ACKTIMEOUT + randr( -EU433_ACK_TIMEOUT_RND, EU433_ACK_TIMEOUT_RND ) ); + break; + } + case PHY_DEF_DR1_OFFSET: + { + getPhy->Param.Value = EU433_DEFAULT_RX1_DR_OFFSET; + break; + } + case PHY_DEF_RX2_FREQUENCY: + { + getPhy->Param.Value = EU433_RX_WND_2_FREQ; + break; + } + case PHY_DEF_RX2_DR: + { + getPhy->Param.Value = EU433_RX_WND_2_DR; + break; + } + case PHY_CHANNELS_MASK: + { + getPhy->Param.ChannelsMask = ChannelsMask; + break; + } + case PHY_CHANNELS_DEFAULT_MASK: + { + getPhy->Param.ChannelsMask = ChannelsDefaultMask; + break; + } + case PHY_MAX_NB_CHANNELS: + { + getPhy->Param.Value = EU433_MAX_NB_CHANNELS; + break; + } + case PHY_CHANNELS: + { + getPhy->Param.Channels = Channels; + break; + } + case PHY_DEF_UPLINK_DWELL_TIME: + case PHY_DEF_DOWNLINK_DWELL_TIME: + case PHY_DEF_MAX_EIRP: + { + getPhy->Param.Value = 0; + break; + } + case PHY_NB_JOIN_TRIALS: + case PHY_DEF_NB_JOIN_TRIALS: + { + getPhy->Param.Value = 48; + break; + } + default: + { + return; + } + } +} + +void RegionEU433SetBandTxDone( SetBandTxDoneParams_t* txDone ) +{ + RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); +} + +void RegionEU433InitDefaults( InitType_t type ) +{ + switch( type ) + { + case INIT_TYPE_INIT: + { + // Channels + Channels[0] = ( ChannelParams_t ) EU433_LC1; + Channels[1] = ( ChannelParams_t ) EU433_LC2; + Channels[2] = ( ChannelParams_t ) EU433_LC3; + + // Initialize the channels default mask + ChannelsDefaultMask[0] = LC( 1 ) + LC( 2 ) + LC( 3 ); + // Update the channels mask + RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 1 ); + break; + } + case INIT_TYPE_RESTORE: + { + // Restore channels default mask + ChannelsMask[0] |= ChannelsDefaultMask[0]; + break; + } + default: + { + break; + } + } +} + +bool RegionEU433Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) +{ + switch( phyAttribute ) + { + case PHY_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, EU433_TX_MIN_DATARATE, EU433_TX_MAX_DATARATE ); + } + case PHY_DEF_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + } + case PHY_DEF_TX_POWER: + case PHY_TX_POWER: + { + // Remark: switched min and max! + return RegionCommonValueInRange( verify->TxPower, EU433_MAX_TX_POWER, EU433_MIN_TX_POWER ); + } + case PHY_DUTY_CYCLE: + { + return EU433_DUTY_CYCLE_ENABLED; + } + case PHY_NB_JOIN_TRIALS: + { + if( verify->NbJoinTrials < 48 ) + { + return false; + } + break; + } + default: + return false; + } + return true; +} + +void RegionEU433ApplyCFList( ApplyCFListParams_t* applyCFList ) +{ + ChannelParams_t newChannel; + ChannelAddParams_t channelAdd; + ChannelRemoveParams_t channelRemove; + + // Setup default datarate range + newChannel.DrRange.Value = ( DR_5 << 4 ) | DR_0; + + // Size of the optional CF list + if( applyCFList->Size != 16 ) + { + return; + } + + // Last byte is RFU, don't take it into account + for( uint8_t i = 0, chanIdx = EU433_NUMB_DEFAULT_CHANNELS; i < 15; i+=3, chanIdx++ ) + { + // Channel frequency + newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); + newChannel.Frequency *= 100; + + // Initialize alternative frequency to 0 + newChannel.Rx1Frequency = 0; + + if( newChannel.Frequency != 0 ) + { + channelAdd.NewChannel = &newChannel; + channelAdd.ChannelId = chanIdx; + + // Try to add all channels + RegionEU433ChannelAdd( &channelAdd ); + } + else + { + channelRemove.ChannelId = chanIdx; + + RegionEU433ChannelsRemove( &channelRemove ); + } + } +} + +bool RegionEU433ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ) +{ + switch( chanMaskSet->ChannelsMaskType ) + { + case CHANNELS_MASK: + { + RegionCommonChanMaskCopy( ChannelsMask, chanMaskSet->ChannelsMaskIn, 1 ); + break; + } + case CHANNELS_DEFAULT_MASK: + { + RegionCommonChanMaskCopy( ChannelsDefaultMask, chanMaskSet->ChannelsMaskIn, 1 ); + break; + } + default: + return false; + } + return true; +} + +bool RegionEU433AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ) +{ + bool adrAckReq = false; + int8_t datarate = adrNext->Datarate; + int8_t txPower = adrNext->TxPower; + + // Report back the adr ack counter + *adrAckCounter = adrNext->AdrAckCounter; + + if( adrNext->AdrEnabled == true ) + { + if( datarate == EU433_TX_MIN_DATARATE ) + { + *adrAckCounter = 0; + adrAckReq = false; + } + else + { + if( adrNext->AdrAckCounter >= EU433_ADR_ACK_LIMIT ) + { + adrAckReq = true; + txPower = EU433_MAX_TX_POWER; + } + else + { + adrAckReq = false; + } + if( adrNext->AdrAckCounter >= ( EU433_ADR_ACK_LIMIT + EU433_ADR_ACK_DELAY ) ) + { + if( ( adrNext->AdrAckCounter % EU433_ADR_ACK_DELAY ) == 0 ) + { + if( datarate > EU433_TX_MIN_DATARATE ) + { + datarate--; + } + + if( datarate == EU433_TX_MIN_DATARATE ) + { + if( adrNext->UpdateChanMask == true ) + { + // Re-enable default channels + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + } + } + } + } + } + } + + *drOut = datarate; + *txPowOut = txPower; + return adrAckReq; +} + +// ToDo get phy datarate afterwards +bool RegionEU433RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) +{ + RadioModems_t modem; + int8_t dr = rxConfig->Datarate; + uint8_t maxPayload = 0; + uint16_t symbTimeout = 0; + uint32_t bandwidth = 0; + int8_t phyDr = 0; + uint32_t frequency = rxConfig->Frequency; + + if( Radio.GetStatus( ) != RF_IDLE ) + { + return false; + } + + if( rxConfig->Window == 0 ) + { + // Apply the datarate offset for RX window 1 + dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + // Apply window 1 frequency + frequency = Channels[rxConfig->Channel].Frequency; + // Apply the alternative RX 1 window frequency, if it is available + if( Channels[rxConfig->Channel].Rx1Frequency != 0 ) + { + frequency = Channels[rxConfig->Channel].Rx1Frequency; + } + } + symbTimeout = GetSymbTimeout( dr ); + bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table + phyDr = DataratesEU433[dr]; + + Radio.SetChannel( frequency ); + + if( dr == DR_7 ) + { + modem = MODEM_FSK; + Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, 0, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + } + else + { + modem = MODEM_LORA; + Radio.SetRxConfig( modem, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + } + + if( rxConfig->RepeaterSupport == true ) + { + maxPayload = MaxPayloadOfDatarateRepeaterEU433[dr]; + } + else + { + maxPayload = MaxPayloadOfDatarateEU433[dr]; + } + Radio.SetMaxPayloadLength( modem, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); + + *datarate = (uint8_t) dr; + return true; +} + +bool RegionEU433TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) +{ + RadioModems_t modem; + int8_t phyDr = DataratesEU433[txConfig->Datarate]; + int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band].TxMaxPower, txConfig->Datarate, ChannelsMask ); + uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); + int8_t phyTxPower = 0; + + phyTxPower = TxPowersEU433[txPowerLimited]; + + // Setup the radio frequency + Radio.SetChannel( Channels[txConfig->Channel].Frequency ); + + if( txConfig->Datarate == DR_7 ) + { // High Speed FSK channel + modem = MODEM_FSK; + Radio.SetTxConfig( modem, phyTxPower, 25e3, bandwidth, phyDr * 1e3, 0, 5, false, true, 0, 0, false, 3e3 ); + } + else + { + modem = MODEM_LORA; + Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + } + // Setup maximum payload lenght of the radio driver + Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); + // Get the time-on-air of the next tx frame + *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); + + *txPower = txConfig->TxPower; + return true; +} + +uint8_t RegionEU433LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) +{ + uint8_t status = 0x07; + LinkAdrParams_t linkAdrParams; + uint8_t nextIndex = 0; + uint8_t bytesProcessed = 0; + uint16_t chMask = 0; + + while( bytesProcessed < linkAdrReq->PayloadSize ) + { + // Get ADR request parameters + nextIndex = RegionCommonParseLinkAdrReq( &( linkAdrReq->Payload[bytesProcessed] ), &linkAdrParams ); + + if( nextIndex == 0 ) + break; // break loop, since no more request has been found + + // Update bytes processed + bytesProcessed += nextIndex; + + // Revert status, as we only check the last ADR request for the channel mask KO + status = 0x07; + + // Setup temporary channels mask + chMask = linkAdrParams.ChMask; + + // Verify channels mask + if( ( linkAdrParams.ChMaskCtrl == 0 ) && ( chMask == 0 ) ) + { + status &= 0xFE; // Channel mask KO + } + else if( ( ( linkAdrParams.ChMaskCtrl >= 1 ) && ( linkAdrParams.ChMaskCtrl <= 5 )) || + ( linkAdrParams.ChMaskCtrl >= 7 ) ) + { + // RFU + status &= 0xFE; // Channel mask KO + } + else + { + for( uint8_t i = 0; i < EU433_MAX_NB_CHANNELS; i++ ) + { + if( linkAdrParams.ChMaskCtrl == 6 ) + { + if( Channels[i].Frequency != 0 ) + { + chMask |= 1 << i; + } + } + else + { + if( ( ( chMask & ( 1 << i ) ) != 0 ) && + ( Channels[i].Frequency == 0 ) ) + {// Trying to enable an undefined channel + status &= 0xFE; // Channel mask KO + } + } + } + } + } + + // Verify datarate + if( RegionCommonChanVerifyDr( EU433_MAX_NB_CHANNELS, &chMask, linkAdrParams.Datarate, EU433_TX_MIN_DATARATE, EU433_TX_MAX_DATARATE, Channels ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify tx power + if( RegionCommonValueInRange( linkAdrParams.TxPower, EU433_MAX_TX_POWER, EU433_MIN_TX_POWER ) == 0 ) + { + // Verify if the maximum TX power is exceeded + if( EU433_MAX_TX_POWER > linkAdrParams.TxPower ) + { // Apply maximum TX power. Accept TX power. + linkAdrParams.TxPower = EU433_MAX_TX_POWER; + } + else + { + status &= 0xFB; // TxPower KO + } + } + + // Update channelsMask if everything is correct + if( status == 0x07 ) + { + if( linkAdrParams.NbRep == 0 ) + { // Value of 0 is not allowed, revert to default. + linkAdrParams.NbRep = 1; + } + + // Set the channels mask to a default value + memset( ChannelsMask, 0, sizeof( ChannelsMask ) ); + // Update the channels mask + ChannelsMask[0] = chMask; + } + + // Update status variables + *drOut = linkAdrParams.Datarate; + *txPowOut = linkAdrParams.TxPower; + *nbRepOut = linkAdrParams.NbRep; + *nbBytesParsed = bytesProcessed; + + return status; +} + +uint8_t RegionEU433RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) +{ + uint8_t status = 0x07; + + // Verify radio frequency + if( Radio.CheckRfFrequency( rxParamSetupReq->Frequency ) == false ) + { + status &= 0xFE; // Channel frequency KO + } + + // Verify datarate + if( RegionCommonValueInRange( rxParamSetupReq->Datarate, EU433_RX_MIN_DATARATE, EU433_RX_MAX_DATARATE ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify datarate offset + if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, EU433_MIN_RX1_DR_OFFSET, EU433_MAX_RX1_DR_OFFSET ) == false ) + { + status &= 0xFB; // Rx1DrOffset range KO + } + + return status; +} + +uint8_t RegionEU433NewChannelReq( NewChannelReqParams_t* newChannelReq ) +{ + uint8_t status = 0x03; + ChannelAddParams_t channelAdd; + ChannelRemoveParams_t channelRemove; + + if( newChannelReq->NewChannel->Frequency == 0 ) + { + channelRemove.ChannelId = newChannelReq->ChannelId; + + // Remove + if( RegionEU433ChannelsRemove( &channelRemove ) == false ) + { + status &= 0xFC; + } + } + else + { + channelAdd.NewChannel = newChannelReq->NewChannel; + channelAdd.ChannelId = newChannelReq->ChannelId; + + switch( RegionEU433ChannelAdd( &channelAdd ) ) + { + case LORAMAC_STATUS_OK: + { + break; + } + case LORAMAC_STATUS_FREQUENCY_INVALID: + { + status &= 0xFE; + break; + } + case LORAMAC_STATUS_DATARATE_INVALID: + { + status &= 0xFD; + break; + } + case LORAMAC_STATUS_FREQ_AND_DR_INVALID: + { + status &= 0xFC; + break; + } + default: + { + status &= 0xFC; + break; + } + } + } + + return status; +} + +int8_t RegionEU433TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ) +{ + return -1; +} + +uint8_t RegionEU433DlChannelReq( DlChannelReqParams_t* dlChannelReq ) +{ + uint8_t status = 0x03; + + // Verify if the frequency is supported + if( VerifyTxFreq( dlChannelReq->Rx1Frequency ) == false ) + { + status &= 0xFE; + } + + // Verify if an uplink frequency exists + if( Channels[dlChannelReq->ChannelId].Frequency == 0 ) + { + status &= 0xFD; + } + + // Apply Rx1 frequency, if the status is OK + if( status == 0x03 ) + { + Channels[dlChannelReq->ChannelId].Rx1Frequency = dlChannelReq->Rx1Frequency; + } + + return status; +} + +int8_t RegionEU433AlternateDr( AlternateDrParams_t* alternateDr ) +{ + int8_t datarate = 0; + + if( ( alternateDr->NbTrials % 48 ) == 0 ) + { + datarate = DR_0; + } + else if( ( alternateDr->NbTrials % 32 ) == 0 ) + { + datarate = DR_1; + } + else if( ( alternateDr->NbTrials % 24 ) == 0 ) + { + datarate = DR_2; + } + else if( ( alternateDr->NbTrials % 16 ) == 0 ) + { + datarate = DR_3; + } + else if( ( alternateDr->NbTrials % 8 ) == 0 ) + { + datarate = DR_4; + } + else + { + datarate = DR_5; + } + return datarate; +} + +void RegionEU433CalcBackOff( CalcBackOffParams_t* calcBackOff ) +{ + uint8_t channel = calcBackOff->Channel; + uint16_t dutyCycle = Bands[Channels[channel].Band].DCycle; + uint16_t joinDutyCycle = 0; + + // Reset time-off to initial value. + Bands[Channels[channel].Band].TimeOff = 0; + + if( calcBackOff->Joined == false ) + { + // Get the join duty cycle + joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); + // Apply the most restricting duty cycle + dutyCycle = MAX( dutyCycle, joinDutyCycle ); + // Apply band time-off. + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; + } + else + { + if( calcBackOff->DutyCycleEnabled == true ) + { + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; + } + } +} + +bool RegionEU433NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTx = 0; + uint8_t enabledChannels[EU433_MAX_NB_CHANNELS] = { 0 }; + TimerTime_t nextTxDelay = 0; + + if( RegionCommonCountChannels( ChannelsMask, 0, 1 ) == 0 ) + { // Reactivate default channels + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + } + + if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) + { + // Update bands Time OFF + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, EU433_MAX_NB_BANDS ); + + // Search how many channels are enabled + nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Joined, nextChanParams->Datarate, + ChannelsMask, Channels, + Bands, enabledChannels, &delayTx ); + } + else + { + delayTx++; + nextTxDelay = nextChanParams->AggrTimeOff - TimerGetElapsedTime( nextChanParams->LastAggrTx ); + } + + if( nbEnabledChannels > 0 ) + { + // We found a valid channel + *channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; + + *time = 0; + return true; + } + else + { + if( delayTx > 0 ) + { + // Delay transmission due to AggregatedTimeOff or to a band time off + *time = nextTxDelay; + return true; + } + // Datarate not supported by any channel, restore defaults + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + *time = 0; + return false; + } +} + +LoRaMacStatus_t RegionEU433ChannelAdd( ChannelAddParams_t* channelAdd ) +{ + uint8_t band = 0; + bool drInvalid = false; + bool freqInvalid = false; + uint8_t id = channelAdd->ChannelId; + + if( id >= EU433_MAX_NB_CHANNELS ) + { + return LORAMAC_STATUS_PARAMETER_INVALID; + } + + // Validate the datarate range + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Min, EU433_TX_MIN_DATARATE, EU433_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, EU433_TX_MIN_DATARATE, EU433_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + if( channelAdd->NewChannel->DrRange.Fields.Min > channelAdd->NewChannel->DrRange.Fields.Max ) + { + drInvalid = true; + } + + // Default channels don't accept all values + if( id < EU433_NUMB_DEFAULT_CHANNELS ) + { + // Validate the datarate range for min: must be DR_0 + if( channelAdd->NewChannel->DrRange.Fields.Min > DR_0 ) + { + drInvalid = true; + } + // Validate the datarate range for max: must be DR_5 <= Max <= TX_MAX_DATARATE + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, DR_5, EU433_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + // We are not allowed to change the frequency + if( channelAdd->NewChannel->Frequency != Channels[id].Frequency ) + { + freqInvalid = true; + } + } + + // Check frequency + if( freqInvalid == false ) + { + if( VerifyTxFreq( channelAdd->NewChannel->Frequency ) == false ) + { + freqInvalid = true; + } + } + + // Check status + if( ( drInvalid == true ) && ( freqInvalid == true ) ) + { + return LORAMAC_STATUS_FREQ_AND_DR_INVALID; + } + if( drInvalid == true ) + { + return LORAMAC_STATUS_DATARATE_INVALID; + } + if( freqInvalid == true ) + { + return LORAMAC_STATUS_FREQUENCY_INVALID; + } + + memcpy( &(Channels[id]), channelAdd->NewChannel, sizeof( Channels[id] ) ); + Channels[id].Band = band; + ChannelsMask[0] |= ( 1 << id ); + return LORAMAC_STATUS_OK; +} + +bool RegionEU433ChannelsRemove( ChannelRemoveParams_t* channelRemove ) +{ + uint8_t id = channelRemove->ChannelId; + + if( id < EU433_NUMB_DEFAULT_CHANNELS ) + { + return false; + } + + // Remove the channel from the list of channels + Channels[id] = ( ChannelParams_t ){ 0, 0, { 0 }, 0 }; + + return RegionCommonChanDisable( ChannelsMask, id, EU433_MAX_NB_CHANNELS ); +} + +void RegionEU433SetContinuousWave( ContinuousWaveParams_t* continuousWave ) +{ + int8_t txPowerLimited = LimitTxPower( continuousWave->TxPower, Bands[Channels[continuousWave->Channel].Band].TxMaxPower, continuousWave->Datarate, ChannelsMask ); + int8_t phyTxPower = 0; + uint32_t frequency = Channels[continuousWave->Channel].Frequency; + + phyTxPower = TxPowersEU433[txPowerLimited]; + + Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); +} diff --git a/src/mac/region/RegionEU433.h b/src/mac/region/RegionEU433.h new file mode 100644 index 000000000..9f75155e2 --- /dev/null +++ b/src/mac/region/RegionEU433.h @@ -0,0 +1,423 @@ +/*! + * \file RegionEU433.h + * + * \brief Region definition for EU433 + * + * \copyright Revised BSD License, see section \ref LICENSE. + * + * \code + * ______ _ + * / _____) _ | | + * ( (____ _____ ____ _| |_ _____ ____| |__ + * \____ \| ___ | (_ _) ___ |/ ___) _ \ + * _____) ) ____| | | || |_| ____( (___| | | | + * (______/|_____)_|_|_| \__)_____)\____)_| |_| + * (C)2013 Semtech + * + * ___ _____ _ ___ _ _____ ___ ___ ___ ___ + * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| + * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| + * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| + * embedded.connectivity.solutions=============== + * + * \endcode + * + * \author Miguel Luis ( Semtech ) + * + * \author Gregory Cristian ( Semtech ) + * + * \author Daniel Jaeckle ( STACKFORCE ) + * + * \defgroup REGIONEU433 Region EU433 + * Implementation according to LoRaWAN Specification v1.0.2. + * \{ + */ +#ifndef __REGION_EU433_H__ +#define __REGION_EU433_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define EU433_MAX_NB_CHANNELS 16 + +/*! + * Number of default channels + */ +#define EU433_NUMB_DEFAULT_CHANNELS 3 + +/*! + * Minimal datarate that can be used by the node + */ +#define EU433_TX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define EU433_TX_MAX_DATARATE DR_7 + +/*! + * Minimal datarate that can be used by the node + */ +#define EU433_RX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define EU433_RX_MAX_DATARATE DR_7 + +/*! + * Default datarate used by the node + */ +#define EU433_DEFAULT_DATARATE DR_0 + +/*! + * Minimal Rx1 receive datarate offset + */ +#define EU433_MIN_RX1_DR_OFFSET 0 + +/*! + * Maximal Rx1 receive datarate offset + */ +#define EU433_MAX_RX1_DR_OFFSET 5 + +/*! + * Default Rx1 receive datarate offset + */ +#define EU433_DEFAULT_RX1_DR_OFFSET 0 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define EU433_MIN_TX_POWER TX_POWER_5 + +/*! + * Maximal Tx output power that can be used by the node + */ +#define EU433_MAX_TX_POWER TX_POWER_0 + +/*! + * Default Tx output power used by the node + */ +#define EU433_DEFAULT_TX_POWER TX_POWER_0 + +/*! + * ADR Ack limit + */ +#define EU433_ADR_ACK_LIMIT 64 + +/*! + * ADR Ack delay + */ +#define EU433_ADR_ACK_DELAY 32 + +/*! + * Enabled or disabled the duty cycle + */ +#define EU433_DUTY_CYCLE_ENABLED 1 + +/*! + * Maximum RX window duration + */ +#define EU433_MAX_RX_WINDOW 3000 + +/*! + * Receive delay 1 + */ +#define EU433_RECEIVE_DELAY1 1000 + +/*! + * Receive delay 2 + */ +#define EU433_RECEIVE_DELAY2 2000 + +/*! + * Join accept delay 1 + */ +#define EU433_JOIN_ACCEPT_DELAY1 5000 + +/*! + * Join accept delay 2 + */ +#define EU433_JOIN_ACCEPT_DELAY2 6000 + +/*! + * Maximum frame counter gap + */ +#define EU433_MAX_FCNT_GAP 16384 + +/*! + * Ack timeout + */ +#define EU433_ACKTIMEOUT 2000 + +/*! + * Random ack timeout limits + */ +#define EU433_ACK_TIMEOUT_RND 1000 + +/*! + * Verification of default datarate + */ +#if ( EU433_DEFAULT_DATARATE > DR_5 ) +#error "A default DR higher than DR_5 may lead to connectivity loss." +#endif + +/*! + * Second reception window channel frequency definition. + */ +#define EU433_RX_WND_2_FREQ 434665000 + +/*! + * Second reception window channel datarate definition. + */ +#define EU433_RX_WND_2_DR DR_0 + +/*! + * LoRaMac maximum number of bands + */ +#define EU433_MAX_NB_BANDS 1 + +/*! + * Band 0 definition + * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define EU433_BAND0 { 100, EU433_DEFAULT_TX_POWER, 0, 0 } // 1.0 % + +/*! + * LoRaMac default channel 1 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define EU433_LC1 { 433175000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } + +/*! + * LoRaMac default channel 2 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define EU433_LC2 { 433375000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } + +/*! + * LoRaMac default channel 3 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define EU433_LC3 { 433575000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } + +/*! + * LoRaMac channels which are allowed for the join procedure + */ +#define EU433_JOIN_CHANNELS ( uint16_t )( LC( 1 ) | LC( 2 ) | LC( 3 ) ) + +/*! + * Data rates table definition + */ +static const uint8_t DataratesEU433[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; + +/*! + * Maximum payload with respect to the datarate index. Cannot operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateEU433[] = { 51, 51, 51, 115, 242, 242, 242, 242 }; + +/*! + * Maximum payload with respect to the datarate index. Can operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateRepeaterEU433[] = { 51, 51, 51, 115, 222, 222, 222, 222 }; + +/*! + * Tx output powers table definition + */ +static const int8_t TxPowersEU433[] = { 10, 7, 4, 1, -2, -5 }; + + + +/*! + * \brief The function gets a value of a specific phy attribute. + * + * \param [IN] getPhy Pointer to the function parameters. + */ +void RegionEU433GetPhyParam( GetPhyParams_t* getPhy ); + +/*! + * \brief Updates the last TX done parameters of the current channel. + * + * \param [IN] txDone Pointer to the function parameters. + */ +void RegionEU433SetBandTxDone( SetBandTxDoneParams_t* txDone ); + +/*! + * \brief Initializes the channels masks and the channels. + * + * \param [IN] type Sets the initialization type. + */ +void RegionEU433InitDefaults( InitType_t type ); + +/*! + * \brief Verifies a parameter. + * + * \param [IN] verify Pointer to the function parameters. + * + * \param [IN] type Sets the initialization type. + * + * \retval Returns true, if the parameter is valid. + */ +bool RegionEU433Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ); + +/*! + * \brief The function parses the input buffer and sets up the channels of the + * CF list. + * + * \param [IN] applyCFList Pointer to the function parameters. + */ +void RegionEU433ApplyCFList( ApplyCFListParams_t* applyCFList ); + +/*! + * \brief Sets a channels mask. + * + * \param [IN] chanMaskSet Pointer to the function parameters. + * + * \retval Returns true, if the channels mask could be set. + */ +bool RegionEU433ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); + +/*! + * \brief Calculates the next datarate to set, when ADR is on or off. + * + * \param [IN] adrNext Pointer to the function parameters. + * + * \param [OUT] drOut The calculated datarate for the next TX. + * + * \param [OUT] txPowOut The TX power for the next TX. + * + * \param [OUT] adrAckCounter The calculated ADR acknowledgement counter. + * + * \retval Returns true, if an ADR request should be performed. + */ +bool RegionEU433AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); + +/*! + * \brief TX configuration. + * + * \param [IN] txConfig Pointer to the function parameters. + * + * \param [OUT] txPower The tx power index which was set. + * + * \param [OUT] txTimeOnAir The time-on-air of the frame. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionEU433RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ); + +/*! + * \brief TX configuration. + * + * \param [IN] txConfig Pointer to the function parameters. + * + * \param [OUT] txPower The tx power index which was set. + * + * \param [OUT] txTimeOnAir The time-on-air of the frame. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionEU433TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ); + +/*! + * \brief The function processes a Link ADR Request. + * + * \param [IN] linkAdrReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionEU433LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ); + +/*! + * \brief The function processes a RX Parameter Setup Request. + * + * \param [IN] rxParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionEU433RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ); + +/*! + * \brief The function processes a Channel Request. + * + * \param [IN] newChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionEU433NewChannelReq( NewChannelReqParams_t* newChannelReq ); + +/*! + * \brief The function processes a TX ParamSetup Request. + * + * \param [IN] txParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + * Returns -1, if the functionality is not implemented. In this case, the end node + * shall not process the command. + */ +int8_t RegionEU433TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ); + +/*! + * \brief The function processes a DlChannel Request. + * + * \param [IN] dlChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionEU433DlChannelReq( DlChannelReqParams_t* dlChannelReq ); + +/* + * \brief Alternates the datarate of the channel for the join request. + * + * \param [IN] alternateDr Pointer to the function parameters. + * + * \retval Datarate to apply. + */ +int8_t RegionEU433AlternateDr( AlternateDrParams_t* alternateDr ); + +/*! + * \brief Calculates the back-off time. + * + * \param [IN] calcBackOff Pointer to the function parameters. + */ +void RegionEU433CalcBackOff( CalcBackOffParams_t* calcBackOff ); + +/*! + * \brief Searches and set the next random available channel + * + * \param [OUT] channel Next channel to use for TX. + * + * \param [OUT] time Time to wait for the next transmission according to the duty + * cycle. + * + * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] + */ +bool RegionEU433NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); + +/*! + * \brief Adds a channel. + * + * \param [IN] channelAdd Pointer to the function parameters. + * + * \retval Status of the operation. + */ +LoRaMacStatus_t RegionEU433ChannelAdd( ChannelAddParams_t* channelAdd ); + +/*! + * \brief Removes a channel. + * + * \param [IN] channelRemove Pointer to the function parameters. + * + * \retval Returns true, if the channel was removed successfully. + */ +bool RegionEU433ChannelsRemove( ChannelRemoveParams_t* channelRemove ); + +/*! + * \brief Sets the radio into continuous wave mode. + * + * \param [IN] continuousWave Pointer to the function parameters. + */ +void RegionEU433SetContinuousWave( ContinuousWaveParams_t* continuousWave ); + +/*! \} defgroup REGIONEU433 */ + +#endif // __REGION_EU433_H__ diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c new file mode 100644 index 000000000..ab5a1ea98 --- /dev/null +++ b/src/mac/region/RegionEU868.c @@ -0,0 +1,1031 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + ___ _____ _ ___ _ _____ ___ ___ ___ ___ +/ __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| +\__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| +|___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| +embedded.connectivity.solutions=============== + +Description: LoRa MAC region EU868 implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) +*/ +#include +#include +#include + +#include "radio.h" +#include "timer.h" +#include "LoRaMac.h" + +#include "utilities.h" + +#include "Region.h" +#include "RegionCommon.h" +#include "RegionEU868.h" + + + +// Definitions +#define CHANNELS_MASK_SIZE 1 + + + +// Global attributes +/*! + * LoRaMAC channels + */ +static ChannelParams_t Channels[EU868_MAX_NB_CHANNELS]; + +/*! + * LoRaMac bands + */ +static Band_t Bands[EU868_MAX_NB_BANDS] = +{ + EU868_BAND0, + EU868_BAND1, + EU868_BAND2, + EU868_BAND3, + EU868_BAND4, +}; + +/*! + * LoRaMac channels mask + */ +static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; + +/*! + * LoRaMac channels default mask + */ +static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; + + + +// Static functions +static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) +{ + int8_t datarate = dr - drOffset; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} + +static uint16_t GetSymbTimeout( int8_t dr ) +{ + uint16_t symbolTimeout = 5; + + // For higher datarates, we increase the number of symbols generating a Rx Timeout + if( ( dr == DR_3 ) || ( dr == DR_4 ) ) + { + symbolTimeout = 8; + } + else if( dr == DR_5 ) + { + symbolTimeout = 10; + } + else if( dr == DR_6 ) + { + symbolTimeout = 14; + } + return symbolTimeout; +} + +static uint32_t GetBandwidth( int8_t dr ) +{ + uint32_t bandwidth = 0; + + if( dr == DR_6 ) + { + bandwidth = 1; + } + return bandwidth; +} + +static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) +{ + int8_t txPowerResult = txPower; + + // Limit tx power to the band max + txPowerResult = MAX( txPower, maxBandTxPower ); + + return txPowerResult; +} + +static bool VerifyTxFreq( uint32_t freq, uint8_t *band ) +{ + // Check radio driver support + if( Radio.CheckRfFrequency( freq ) == false ) + { + return false; + } + + // Check frequency bands + if( ( freq >= 863000000 ) && ( freq < 865000000 ) ) + { + *band = 2; + } + else if( ( freq >= 865000000 ) && ( freq <= 868000000 ) ) + { + *band = 0; + } + else if( ( freq > 868000000 ) && ( freq <= 868600000 ) ) + { + *band = 1; + } + else if( ( freq >= 868700000 ) && ( freq <= 869200000 ) ) + { + *band = 2; + } + else if( ( freq >= 869400000 ) && ( freq <= 869650000 ) ) + { + *band = 3; + } + else if( ( freq >= 869700000 ) && ( freq <= 870000000 ) ) + { + *band = 4; + } + else + { + return false; + } + return true; +} + +static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t* channelsMask, ChannelParams_t* channels, Band_t* bands, uint8_t* enabledChannels, uint8_t* delayTx ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTransmission = 0; + + for( uint8_t i = 0, k = 0; i < EU868_MAX_NB_CHANNELS; i += 16, k++ ) + { + for( uint8_t j = 0; j < 16; j++ ) + { + if( ( channelsMask[k] & ( 1 << j ) ) != 0 ) + { + if( channels[i + j].Frequency == 0 ) + { // Check if the channel is enabled + continue; + } + if( joined == false ) + { + if( ( EU868_JOIN_CHANNELS & ( 1 << j ) ) == 0 ) + { + continue; + } + } + if( RegionCommonValueInRange( datarate, channels[i + j].DrRange.Fields.Min, + channels[i + j].DrRange.Fields.Max ) == false ) + { // Check if the current channel selection supports the given datarate + continue; + } + if( bands[channels[i + j].Band].TimeOff > 0 ) + { // Check if the band is available for transmission + delayTransmission++; + continue; + } + enabledChannels[nbEnabledChannels++] = i + j; + } + } + } + + *delayTx = delayTransmission; + return nbEnabledChannels; +} + + + +void RegionEU868GetPhyParam( GetPhyParams_t* getPhy ) +{ + switch( getPhy->Attribute ) + { + case PHY_MIN_DR: + { + getPhy->Param.Value = EU868_TX_MIN_DATARATE; + break; + } + case PHY_DEF_TX_DR: + { + getPhy->Param.Value = EU868_DEFAULT_DATARATE; + break; + } + case PHY_DEF_TX_POWER: + { + getPhy->Param.Value = EU868_DEFAULT_TX_POWER; + break; + } + case PHY_MAX_PAYLOAD: + { + getPhy->Param.Value = MaxPayloadOfDatarateEU868[getPhy->Datarate]; + break; + } + case PHY_MAX_PAYLOAD_REPEATER: + { + getPhy->Param.Value = MaxPayloadOfDatarateRepeaterEU868[getPhy->Datarate]; + break; + } + case PHY_DUTY_CYCLE: + { + getPhy->Param.Value = EU868_DUTY_CYCLE_ENABLED; + break; + } + case PHY_MAX_RX_WINDOW: + { + getPhy->Param.Value = EU868_MAX_RX_WINDOW; + break; + } + case PHY_RECEIVE_DELAY1: + { + getPhy->Param.Value = EU868_RECEIVE_DELAY1; + break; + } + case PHY_RECEIVE_DELAY2: + { + getPhy->Param.Value = EU868_RECEIVE_DELAY2; + break; + } + case PHY_JOIN_ACCEPT_DELAY1: + { + getPhy->Param.Value = EU868_JOIN_ACCEPT_DELAY1; + break; + } + case PHY_JOIN_ACCEPT_DELAY2: + { + getPhy->Param.Value = EU868_JOIN_ACCEPT_DELAY2; + break; + } + case PHY_MAX_FCNT_GAP: + { + getPhy->Param.Value = EU868_MAX_FCNT_GAP; + break; + } + case PHY_ACK_TIMEOUT: + { + getPhy->Param.Value = ( EU868_ACKTIMEOUT + randr( -EU868_ACK_TIMEOUT_RND, EU868_ACK_TIMEOUT_RND ) ); + break; + } + case PHY_DEF_DR1_OFFSET: + { + getPhy->Param.Value = EU868_DEFAULT_RX1_DR_OFFSET; + break; + } + case PHY_DEF_RX2_FREQUENCY: + { + getPhy->Param.Value = EU868_RX_WND_2_FREQ; + break; + } + case PHY_DEF_RX2_DR: + { + getPhy->Param.Value = EU868_RX_WND_2_DR; + break; + } + case PHY_CHANNELS_MASK: + { + getPhy->Param.ChannelsMask = ChannelsMask; + break; + } + case PHY_CHANNELS_DEFAULT_MASK: + { + getPhy->Param.ChannelsMask = ChannelsDefaultMask; + break; + } + case PHY_MAX_NB_CHANNELS: + { + getPhy->Param.Value = EU868_MAX_NB_CHANNELS; + break; + } + case PHY_CHANNELS: + { + getPhy->Param.Channels = Channels; + break; + } + case PHY_DEF_UPLINK_DWELL_TIME: + case PHY_DEF_DOWNLINK_DWELL_TIME: + case PHY_DEF_MAX_EIRP: + { + getPhy->Param.Value = 0; + break; + } + case PHY_NB_JOIN_TRIALS: + case PHY_DEF_NB_JOIN_TRIALS: + { + getPhy->Param.Value = 48; + break; + } + default: + { + return; + } + } +} + +void RegionEU868SetBandTxDone( SetBandTxDoneParams_t* txDone ) +{ + RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); +} + +void RegionEU868InitDefaults( InitType_t type ) +{ + switch( type ) + { + case INIT_TYPE_INIT: + { + // Channels + Channels[0] = ( ChannelParams_t ) EU868_LC1; + Channels[1] = ( ChannelParams_t ) EU868_LC2; + Channels[2] = ( ChannelParams_t ) EU868_LC3; + + // Initialize the channels default mask + ChannelsDefaultMask[0] = LC( 1 ) + LC( 2 ) + LC( 3 ); + // Update the channels mask + RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 1 ); + break; + } + case INIT_TYPE_RESTORE: + { + // Restore channels default mask + ChannelsMask[0] |= ChannelsDefaultMask[0]; + break; + } + default: + { + break; + } + } +} + +bool RegionEU868Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) +{ + switch( phyAttribute ) + { + case PHY_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, EU868_TX_MIN_DATARATE, EU868_TX_MAX_DATARATE ); + } + case PHY_DEF_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + } + case PHY_DEF_TX_POWER: + case PHY_TX_POWER: + { + // Remark: switched min and max! + return RegionCommonValueInRange( verify->TxPower, EU868_MAX_TX_POWER, EU868_MIN_TX_POWER ); + } + case PHY_DUTY_CYCLE: + { + return EU868_DUTY_CYCLE_ENABLED; + } + case PHY_NB_JOIN_TRIALS: + { + if( verify->NbJoinTrials < 48 ) + { + return false; + } + break; + } + default: + return false; + } + return true; +} + +void RegionEU868ApplyCFList( ApplyCFListParams_t* applyCFList ) +{ + ChannelParams_t newChannel; + ChannelAddParams_t channelAdd; + ChannelRemoveParams_t channelRemove; + + // Setup default datarate range + newChannel.DrRange.Value = ( DR_5 << 4 ) | DR_0; + + // Size of the optional CF list + if( applyCFList->Size != 16 ) + { + return; + } + + // Last byte is RFU, don't take it into account + for( uint8_t i = 0, chanIdx = EU868_NUMB_DEFAULT_CHANNELS; i < 15; i+=3, chanIdx++ ) + { + // Channel frequency + newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); + newChannel.Frequency *= 100; + + // Initialize alternative frequency to 0 + newChannel.Rx1Frequency = 0; + + if( newChannel.Frequency != 0 ) + { + channelAdd.NewChannel = &newChannel; + channelAdd.ChannelId = chanIdx; + + // Try to add all channels + RegionEU868ChannelAdd( &channelAdd ); + } + else + { + channelRemove.ChannelId = chanIdx; + + RegionEU868ChannelsRemove( &channelRemove ); + } + } +} + +bool RegionEU868ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ) +{ + switch( chanMaskSet->ChannelsMaskType ) + { + case CHANNELS_MASK: + { + RegionCommonChanMaskCopy( ChannelsMask, chanMaskSet->ChannelsMaskIn, 1 ); + break; + } + case CHANNELS_DEFAULT_MASK: + { + RegionCommonChanMaskCopy( ChannelsDefaultMask, chanMaskSet->ChannelsMaskIn, 1 ); + break; + } + default: + return false; + } + return true; +} + +bool RegionEU868AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ) +{ + bool adrAckReq = false; + int8_t datarate = adrNext->Datarate; + int8_t txPower = adrNext->TxPower; + + // Report back the adr ack counter + *adrAckCounter = adrNext->AdrAckCounter; + + if( adrNext->AdrEnabled == true ) + { + if( datarate == EU868_TX_MIN_DATARATE ) + { + *adrAckCounter = 0; + adrAckReq = false; + } + else + { + if( adrNext->AdrAckCounter >= EU868_ADR_ACK_LIMIT ) + { + adrAckReq = true; + txPower = EU868_MAX_TX_POWER; + } + else + { + adrAckReq = false; + } + if( adrNext->AdrAckCounter >= ( EU868_ADR_ACK_LIMIT + EU868_ADR_ACK_DELAY ) ) + { + if( ( adrNext->AdrAckCounter % EU868_ADR_ACK_DELAY ) == 0 ) + { + if( datarate > EU868_TX_MIN_DATARATE ) + { + datarate--; + } + + if( datarate == EU868_TX_MIN_DATARATE ) + { + if( adrNext->UpdateChanMask == true ) + { + // Re-enable default channels + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + } + } + } + } + } + } + + *drOut = datarate; + *txPowOut = txPower; + return adrAckReq; +} + +// ToDo get phy datarate afterwards +bool RegionEU868RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) +{ + RadioModems_t modem; + int8_t dr = rxConfig->Datarate; + uint8_t maxPayload = 0; + uint16_t symbTimeout = 0; + uint32_t bandwidth = 0; + int8_t phyDr = 0; + uint32_t frequency = rxConfig->Frequency; + + if( Radio.GetStatus( ) != RF_IDLE ) + { + return false; + } + + if( rxConfig->Window == 0 ) + { + // Apply the datarate offset for RX window 1 + dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + // Apply window 1 frequency + frequency = Channels[rxConfig->Channel].Frequency; + // Apply the alternative RX 1 window frequency, if it is available + if( Channels[rxConfig->Channel].Rx1Frequency != 0 ) + { + frequency = Channels[rxConfig->Channel].Rx1Frequency; + } + } + symbTimeout = GetSymbTimeout( dr ); + bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table + phyDr = DataratesEU868[dr]; + + Radio.SetChannel( frequency ); + + if( dr == DR_7 ) + { + modem = MODEM_FSK; + Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, 0, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + } + else + { + modem = MODEM_LORA; + Radio.SetRxConfig( modem, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + } + + if( rxConfig->RepeaterSupport == true ) + { + maxPayload = MaxPayloadOfDatarateRepeaterEU868[dr]; + } + else + { + maxPayload = MaxPayloadOfDatarateEU868[dr]; + } + Radio.SetMaxPayloadLength( modem, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); + + *datarate = (uint8_t) dr; + return true; +} + +bool RegionEU868TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) +{ + RadioModems_t modem; + int8_t phyDr = DataratesEU868[txConfig->Datarate]; + int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band].TxMaxPower, txConfig->Datarate, ChannelsMask ); + uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); + int8_t phyTxPower = 0; + + phyTxPower = TxPowersEU868[txPowerLimited]; + + // Setup the radio frequency + Radio.SetChannel( Channels[txConfig->Channel].Frequency ); + + if( txConfig->Datarate == DR_7 ) + { // High Speed FSK channel + modem = MODEM_FSK; + Radio.SetTxConfig( modem, phyTxPower, 25e3, bandwidth, phyDr * 1e3, 0, 5, false, true, 0, 0, false, 3e3 ); + } + else + { + modem = MODEM_LORA; + Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + } + // Setup maximum payload lenght of the radio driver + Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); + // Get the time-on-air of the next tx frame + *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); + + *txPower = txConfig->TxPower; + return true; +} + +uint8_t RegionEU868LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) +{ + uint8_t status = 0x07; + LinkAdrParams_t linkAdrParams; + uint8_t nextIndex = 0; + uint8_t bytesProcessed = 0; + uint16_t chMask = 0; + + while( bytesProcessed < linkAdrReq->PayloadSize ) + { + // Get ADR request parameters + nextIndex = RegionCommonParseLinkAdrReq( &( linkAdrReq->Payload[bytesProcessed] ), &linkAdrParams ); + + if( nextIndex == 0 ) + break; // break loop, since no more request has been found + + // Update bytes processed + bytesProcessed += nextIndex; + + // Revert status, as we only check the last ADR request for the channel mask KO + status = 0x07; + + // Setup temporary channels mask + chMask = linkAdrParams.ChMask; + + // Verify channels mask + if( ( linkAdrParams.ChMaskCtrl == 0 ) && ( chMask == 0 ) ) + { + status &= 0xFE; // Channel mask KO + } + else if( ( ( linkAdrParams.ChMaskCtrl >= 1 ) && ( linkAdrParams.ChMaskCtrl <= 5 )) || + ( linkAdrParams.ChMaskCtrl >= 7 ) ) + { + // RFU + status &= 0xFE; // Channel mask KO + } + else + { + for( uint8_t i = 0; i < EU868_MAX_NB_CHANNELS; i++ ) + { + if( linkAdrParams.ChMaskCtrl == 6 ) + { + if( Channels[i].Frequency != 0 ) + { + chMask |= 1 << i; + } + } + else + { + if( ( ( chMask & ( 1 << i ) ) != 0 ) && + ( Channels[i].Frequency == 0 ) ) + {// Trying to enable an undefined channel + status &= 0xFE; // Channel mask KO + } + } + } + } + } + + // Verify datarate + if( RegionCommonChanVerifyDr( EU868_MAX_NB_CHANNELS, &chMask, linkAdrParams.Datarate, EU868_TX_MIN_DATARATE, EU868_TX_MAX_DATARATE, Channels ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify tx power + if( RegionCommonValueInRange( linkAdrParams.TxPower, EU868_MAX_TX_POWER, EU868_MIN_TX_POWER ) == 0 ) + { + // Verify if the maximum TX power is exceeded + if( EU868_MAX_TX_POWER > linkAdrParams.TxPower ) + { // Apply maximum TX power. Accept TX power. + linkAdrParams.TxPower = EU868_MAX_TX_POWER; + } + else + { + status &= 0xFB; // TxPower KO + } + } + + // Update channelsMask if everything is correct + if( status == 0x07 ) + { + if( linkAdrParams.NbRep == 0 ) + { // Value of 0 is not allowed, revert to default. + linkAdrParams.NbRep = 1; + } + + // Set the channels mask to a default value + memset( ChannelsMask, 0, sizeof( ChannelsMask ) ); + // Update the channels mask + ChannelsMask[0] = chMask; + } + + // Update status variables + *drOut = linkAdrParams.Datarate; + *txPowOut = linkAdrParams.TxPower; + *nbRepOut = linkAdrParams.NbRep; + *nbBytesParsed = bytesProcessed; + + return status; +} + +uint8_t RegionEU868RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) +{ + uint8_t status = 0x07; + + // Verify radio frequency + if( Radio.CheckRfFrequency( rxParamSetupReq->Frequency ) == false ) + { + status &= 0xFE; // Channel frequency KO + } + + // Verify datarate + if( RegionCommonValueInRange( rxParamSetupReq->Datarate, EU868_RX_MIN_DATARATE, EU868_RX_MAX_DATARATE ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify datarate offset + if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, EU868_MIN_RX1_DR_OFFSET, EU868_MAX_RX1_DR_OFFSET ) == false ) + { + status &= 0xFB; // Rx1DrOffset range KO + } + + return status; +} + +uint8_t RegionEU868NewChannelReq( NewChannelReqParams_t* newChannelReq ) +{ + uint8_t status = 0x03; + ChannelAddParams_t channelAdd; + ChannelRemoveParams_t channelRemove; + + if( newChannelReq->NewChannel->Frequency == 0 ) + { + channelRemove.ChannelId = newChannelReq->ChannelId; + + // Remove + if( RegionEU868ChannelsRemove( &channelRemove ) == false ) + { + status &= 0xFC; + } + } + else + { + channelAdd.NewChannel = newChannelReq->NewChannel; + channelAdd.ChannelId = newChannelReq->ChannelId; + + switch( RegionEU868ChannelAdd( &channelAdd ) ) + { + case LORAMAC_STATUS_OK: + { + break; + } + case LORAMAC_STATUS_FREQUENCY_INVALID: + { + status &= 0xFE; + break; + } + case LORAMAC_STATUS_DATARATE_INVALID: + { + status &= 0xFD; + break; + } + case LORAMAC_STATUS_FREQ_AND_DR_INVALID: + { + status &= 0xFC; + break; + } + default: + { + status &= 0xFC; + break; + } + } + } + + return status; +} + +int8_t RegionEU868TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ) +{ + return -1; +} + +uint8_t RegionEU868DlChannelReq( DlChannelReqParams_t* dlChannelReq ) +{ + uint8_t status = 0x03; + uint8_t band = 0; + + // Verify if the frequency is supported + if( VerifyTxFreq( dlChannelReq->Rx1Frequency, &band ) == false ) + { + status &= 0xFE; + } + + // Verify if an uplink frequency exists + if( Channels[dlChannelReq->ChannelId].Frequency == 0 ) + { + status &= 0xFD; + } + + // Apply Rx1 frequency, if the status is OK + if( status == 0x03 ) + { + Channels[dlChannelReq->ChannelId].Rx1Frequency = dlChannelReq->Rx1Frequency; + } + + return status; +} + +int8_t RegionEU868AlternateDr( AlternateDrParams_t* alternateDr ) +{ + int8_t datarate = 0; + + if( ( alternateDr->NbTrials % 48 ) == 0 ) + { + datarate = DR_0; + } + else if( ( alternateDr->NbTrials % 32 ) == 0 ) + { + datarate = DR_1; + } + else if( ( alternateDr->NbTrials % 24 ) == 0 ) + { + datarate = DR_2; + } + else if( ( alternateDr->NbTrials % 16 ) == 0 ) + { + datarate = DR_3; + } + else if( ( alternateDr->NbTrials % 8 ) == 0 ) + { + datarate = DR_4; + } + else + { + datarate = DR_5; + } + return datarate; +} + +void RegionEU868CalcBackOff( CalcBackOffParams_t* calcBackOff ) +{ + uint8_t channel = calcBackOff->Channel; + uint16_t dutyCycle = Bands[Channels[channel].Band].DCycle; + uint16_t joinDutyCycle = 0; + + // Reset time-off to initial value. + Bands[Channels[channel].Band].TimeOff = 0; + + if( calcBackOff->Joined == false ) + { + // Get the join duty cycle + joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); + // Apply the most restricting duty cycle + dutyCycle = MAX( dutyCycle, joinDutyCycle ); + // Apply band time-off. + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; + } + else + { + if( calcBackOff->DutyCycleEnabled == true ) + { + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; + } + } +} + +bool RegionEU868NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTx = 0; + uint8_t enabledChannels[EU868_MAX_NB_CHANNELS] = { 0 }; + TimerTime_t nextTxDelay = 0; + + if( RegionCommonCountChannels( ChannelsMask, 0, 1 ) == 0 ) + { // Reactivate default channels + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + } + + if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) + { + // Update bands Time OFF + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, EU868_MAX_NB_BANDS ); + + // Search how many channels are enabled + nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Joined, nextChanParams->Datarate, + ChannelsMask, Channels, + Bands, enabledChannels, &delayTx ); + } + else + { + delayTx++; + nextTxDelay = nextChanParams->AggrTimeOff - TimerGetElapsedTime( nextChanParams->LastAggrTx ); + } + + if( nbEnabledChannels > 0 ) + { + // We found a valid channel + *channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; + + *time = 0; + return true; + } + else + { + if( delayTx > 0 ) + { + // Delay transmission due to AggregatedTimeOff or to a band time off + *time = nextTxDelay; + return true; + } + // Datarate not supported by any channel, restore defaults + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + *time = 0; + return false; + } +} + +LoRaMacStatus_t RegionEU868ChannelAdd( ChannelAddParams_t* channelAdd ) +{ + uint8_t band = 0; + bool drInvalid = false; + bool freqInvalid = false; + uint8_t id = channelAdd->ChannelId; + + if( id >= EU868_MAX_NB_CHANNELS ) + { + return LORAMAC_STATUS_PARAMETER_INVALID; + } + + // Validate the datarate range + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Min, EU868_TX_MIN_DATARATE, EU868_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, EU868_TX_MIN_DATARATE, EU868_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + if( channelAdd->NewChannel->DrRange.Fields.Min > channelAdd->NewChannel->DrRange.Fields.Max ) + { + drInvalid = true; + } + + // Default channels don't accept all values + if( id < EU868_NUMB_DEFAULT_CHANNELS ) + { + // Validate the datarate range for min: must be DR_0 + if( channelAdd->NewChannel->DrRange.Fields.Min > DR_0 ) + { + drInvalid = true; + } + // Validate the datarate range for max: must be DR_5 <= Max <= TX_MAX_DATARATE + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, DR_5, EU868_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + // We are not allowed to change the frequency + if( channelAdd->NewChannel->Frequency != Channels[id].Frequency ) + { + freqInvalid = true; + } + } + + // Check frequency + if( freqInvalid == false ) + { + if( VerifyTxFreq( channelAdd->NewChannel->Frequency, &band ) == false ) + { + freqInvalid = true; + } + } + + // Check status + if( ( drInvalid == true ) && ( freqInvalid == true ) ) + { + return LORAMAC_STATUS_FREQ_AND_DR_INVALID; + } + if( drInvalid == true ) + { + return LORAMAC_STATUS_DATARATE_INVALID; + } + if( freqInvalid == true ) + { + return LORAMAC_STATUS_FREQUENCY_INVALID; + } + + memcpy( &(Channels[id]), channelAdd->NewChannel, sizeof( Channels[id] ) ); + Channels[id].Band = band; + ChannelsMask[0] |= ( 1 << id ); + return LORAMAC_STATUS_OK; +} + +bool RegionEU868ChannelsRemove( ChannelRemoveParams_t* channelRemove ) +{ + uint8_t id = channelRemove->ChannelId; + + if( id < EU868_NUMB_DEFAULT_CHANNELS ) + { + return false; + } + + // Remove the channel from the list of channels + Channels[id] = ( ChannelParams_t ){ 0, 0, { 0 }, 0 }; + + return RegionCommonChanDisable( ChannelsMask, id, EU868_MAX_NB_CHANNELS ); +} + +void RegionEU868SetContinuousWave( ContinuousWaveParams_t* continuousWave ) +{ + int8_t txPowerLimited = LimitTxPower( continuousWave->TxPower, Bands[Channels[continuousWave->Channel].Band].TxMaxPower, continuousWave->Datarate, ChannelsMask ); + int8_t phyTxPower = 0; + uint32_t frequency = Channels[continuousWave->Channel].Frequency; + + phyTxPower = TxPowersEU868[txPowerLimited]; + + Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); +} diff --git a/src/mac/region/RegionEU868.h b/src/mac/region/RegionEU868.h new file mode 100644 index 000000000..9f24314f3 --- /dev/null +++ b/src/mac/region/RegionEU868.h @@ -0,0 +1,443 @@ +/*! + * \file RegionEU868.h + * + * \brief Region definition for EU868 + * + * \copyright Revised BSD License, see section \ref LICENSE. + * + * \code + * ______ _ + * / _____) _ | | + * ( (____ _____ ____ _| |_ _____ ____| |__ + * \____ \| ___ | (_ _) ___ |/ ___) _ \ + * _____) ) ____| | | || |_| ____( (___| | | | + * (______/|_____)_|_|_| \__)_____)\____)_| |_| + * (C)2013 Semtech + * + * ___ _____ _ ___ _ _____ ___ ___ ___ ___ + * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| + * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| + * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| + * embedded.connectivity.solutions=============== + * + * \endcode + * + * \author Miguel Luis ( Semtech ) + * + * \author Gregory Cristian ( Semtech ) + * + * \author Daniel Jaeckle ( STACKFORCE ) + * + * \defgroup REGIONEU868 Region EU868 + * Implementation according to LoRaWAN Specification v1.0.2. + * \{ + */ +#ifndef __REGION_EU868_H__ +#define __REGION_EU868_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define EU868_MAX_NB_CHANNELS 16 + +/*! + * Number of default channels + */ +#define EU868_NUMB_DEFAULT_CHANNELS 3 + +/*! + * Minimal datarate that can be used by the node + */ +#define EU868_TX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define EU868_TX_MAX_DATARATE DR_7 + +/*! + * Minimal datarate that can be used by the node + */ +#define EU868_RX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define EU868_RX_MAX_DATARATE DR_7 + +/*! + * Default datarate used by the node + */ +#define EU868_DEFAULT_DATARATE DR_0 + +/*! + * Minimal Rx1 receive datarate offset + */ +#define EU868_MIN_RX1_DR_OFFSET 0 + +/*! + * Maximal Rx1 receive datarate offset + */ +#define EU868_MAX_RX1_DR_OFFSET 5 + +/*! + * Default Rx1 receive datarate offset + */ +#define EU868_DEFAULT_RX1_DR_OFFSET 0 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define EU868_MIN_TX_POWER TX_POWER_5 + +/*! + * Maximal Tx output power that can be used by the node + */ +#define EU868_MAX_TX_POWER TX_POWER_0 + +/*! + * Default Tx output power used by the node + */ +#define EU868_DEFAULT_TX_POWER TX_POWER_1 + +/*! + * ADR Ack limit + */ +#define EU868_ADR_ACK_LIMIT 64 + +/*! + * ADR Ack delay + */ +#define EU868_ADR_ACK_DELAY 32 + +/*! + * Enabled or disabled the duty cycle + */ +#define EU868_DUTY_CYCLE_ENABLED 1 + +/*! + * Maximum RX window duration + */ +#define EU868_MAX_RX_WINDOW 3000 + +/*! + * Receive delay 1 + */ +#define EU868_RECEIVE_DELAY1 1000 + +/*! + * Receive delay 2 + */ +#define EU868_RECEIVE_DELAY2 2000 + +/*! + * Join accept delay 1 + */ +#define EU868_JOIN_ACCEPT_DELAY1 5000 + +/*! + * Join accept delay 2 + */ +#define EU868_JOIN_ACCEPT_DELAY2 6000 + +/*! + * Maximum frame counter gap + */ +#define EU868_MAX_FCNT_GAP 16384 + +/*! + * Ack timeout + */ +#define EU868_ACKTIMEOUT 2000 + +/*! + * Random ack timeout limits + */ +#define EU868_ACK_TIMEOUT_RND 1000 + +#if ( EU868_DEFAULT_DATARATE > DR_5 ) +#error "A default DR higher than DR_5 may lead to connectivity loss." +#endif + +/*! + * Second reception window channel frequency definition. + */ +#define EU868_RX_WND_2_FREQ 869525000 + +/*! + * Second reception window channel datarate definition. + */ +#define EU868_RX_WND_2_DR DR_0 + +/*! + * Maximum number of bands + */ +#define EU868_MAX_NB_BANDS 5 + +/*! + * Band 0 definition + * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define EU868_BAND0 { 100 , TX_POWER_1, 0, 0 } // 1.0 % + +/*! + * Band 1 definition + * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define EU868_BAND1 { 100 , TX_POWER_1, 0, 0 } // 1.0 % + +/*! + * Band 2 definition + * Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define EU868_BAND2 { 1000, TX_POWER_1, 0, 0 } // 0.1 % + +/*! + * Band 2 definition + * Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define EU868_BAND3 { 10 , TX_POWER_1, 0, 0 } // 10.0 % + +/*! + * Band 2 definition + * Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define EU868_BAND4 { 100 , TX_POWER_1, 0, 0 } // 1.0 % + +/*! + * LoRaMac default channel 1 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define EU868_LC1 { 868100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 } + +/*! + * LoRaMac default channel 2 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define EU868_LC2 { 868300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 } + +/*! + * LoRaMac default channel 3 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define EU868_LC3 { 868500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 } + +/*! + * LoRaMac channels which are allowed for the join procedure + */ +#define EU868_JOIN_CHANNELS ( uint16_t )( LC( 1 ) | LC( 2 ) | LC( 3 ) ) + +/*! + * Data rates table definition + */ +static const uint8_t DataratesEU868[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; + +/*! + * Maximum payload with respect to the datarate index. Cannot operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateEU868[] = { 51, 51, 51, 115, 242, 242, 242, 242 }; + +/*! + * Maximum payload with respect to the datarate index. Can operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateRepeaterEU868[] = { 51, 51, 51, 115, 222, 222, 222, 222 }; + +/*! + * Tx output powers table definition + */ +static const int8_t TxPowersEU868[] = { 20, 14, 11, 8, 5, 2 }; + + + + +/*! + * \brief The function gets a value of a specific phy attribute. + * + * \param [IN] getPhy Pointer to the function parameters. + */ +void RegionEU868GetPhyParam( GetPhyParams_t* getPhy ); + +/*! + * \brief Updates the last TX done parameters of the current channel. + * + * \param [IN] txDone Pointer to the function parameters. + */ +void RegionEU868SetBandTxDone( SetBandTxDoneParams_t* txDone ); + +/*! + * \brief Initializes the channels masks and the channels. + * + * \param [IN] type Sets the initialization type. + */ +void RegionEU868InitDefaults( InitType_t type ); + +/*! + * \brief Verifies a parameter. + * + * \param [IN] verify Pointer to the function parameters. + * + * \param [IN] type Sets the initialization type. + * + * \retval Returns true, if the parameter is valid. + */ +bool RegionEU868Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ); + +/*! + * \brief The function parses the input buffer and sets up the channels of the + * CF list. + * + * \param [IN] applyCFList Pointer to the function parameters. + */ +void RegionEU868ApplyCFList( ApplyCFListParams_t* applyCFList ); + +/*! + * \brief Sets a channels mask. + * + * \param [IN] chanMaskSet Pointer to the function parameters. + * + * \retval Returns true, if the channels mask could be set. + */ +bool RegionEU868ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); + +/*! + * \brief Calculates the next datarate to set, when ADR is on or off. + * + * \param [IN] adrNext Pointer to the function parameters. + * + * \param [OUT] drOut The calculated datarate for the next TX. + * + * \param [OUT] txPowOut The TX power for the next TX. + * + * \param [OUT] adrAckCounter The calculated ADR acknowledgement counter. + * + * \retval Returns true, if an ADR request should be performed. + */ +bool RegionEU868AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); + +/*! + * \brief Configuration of the RX windows. + * + * \param [IN] rxConfig Pointer to the function parameters. + * + * \param [OUT] datarate The datarate index which was set. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionEU868RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ); + +/*! + * \brief TX configuration. + * + * \param [IN] txConfig Pointer to the function parameters. + * + * \param [OUT] txPower The tx power index which was set. + * + * \param [OUT] txTimeOnAir The time-on-air of the frame. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionEU868TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ); + +/*! + * \brief The function processes a Link ADR Request. + * + * \param [IN] linkAdrReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionEU868LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ); + +/*! + * \brief The function processes a RX Parameter Setup Request. + * + * \param [IN] rxParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionEU868RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ); + +/*! + * \brief The function processes a Channel Request. + * + * \param [IN] newChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionEU868NewChannelReq( NewChannelReqParams_t* newChannelReq ); + +/*! + * \brief The function processes a TX ParamSetup Request. + * + * \param [IN] txParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + * Returns -1, if the functionality is not implemented. In this case, the end node + * shall not process the command. + */ +int8_t RegionEU868TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ); + +/*! + * \brief The function processes a DlChannel Request. + * + * \param [IN] dlChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionEU868DlChannelReq( DlChannelReqParams_t* dlChannelReq ); + +/* + * \brief Alternates the datarate of the channel for the join request. + * + * \param [IN] alternateDr Pointer to the function parameters. + * + * \retval Datarate to apply. + */ +int8_t RegionEU868AlternateDr( AlternateDrParams_t* alternateDr ); + +/*! + * \brief Calculates the back-off time. + * + * \param [IN] calcBackOff Pointer to the function parameters. + */ +void RegionEU868CalcBackOff( CalcBackOffParams_t* calcBackOff ); + +/*! + * \brief Searches and set the next random available channel + * + * \param [OUT] channel Next channel to use for TX. + * + * \param [OUT] time Time to wait for the next transmission according to the duty + * cycle. + * + * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] + */ +bool RegionEU868NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); + +/*! + * \brief Adds a channel. + * + * \param [IN] channelAdd Pointer to the function parameters. + * + * \retval Status of the operation. + */ +LoRaMacStatus_t RegionEU868ChannelAdd( ChannelAddParams_t* channelAdd ); + +/*! + * \brief Removes a channel. + * + * \param [IN] channelRemove Pointer to the function parameters. + * + * \retval Returns true, if the channel was removed successfully. + */ +bool RegionEU868ChannelsRemove( ChannelRemoveParams_t* channelRemove ); + +/*! + * \brief Sets the radio into continuous wave mode. + * + * \param [IN] continuousWave Pointer to the function parameters. + */ +void RegionEU868SetContinuousWave( ContinuousWaveParams_t* continuousWave ); + +/*! \} defgroup REGIONEU868 */ + +#endif // __REGION_EU868_H__ diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c new file mode 100644 index 000000000..4d22f4ec1 --- /dev/null +++ b/src/mac/region/RegionIN865.c @@ -0,0 +1,996 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + ___ _____ _ ___ _ _____ ___ ___ ___ ___ +/ __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| +\__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| +|___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| +embedded.connectivity.solutions=============== + +Description: LoRa MAC region IN865 implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) +*/ +#include +#include +#include + +#include "radio.h" +#include "timer.h" +#include "LoRaMac.h" + +#include "utilities.h" + +#include "Region.h" +#include "RegionCommon.h" +#include "RegionIN865.h" + + + +// Definitions +#define CHANNELS_MASK_SIZE 1 + + + +// Global attributes +/*! + * LoRaMAC channels + */ +static ChannelParams_t Channels[IN865_MAX_NB_CHANNELS]; + +/*! + * LoRaMac bands + */ +static Band_t Bands[IN865_MAX_NB_BANDS] = +{ + IN865_BAND0 +}; + +/*! + * LoRaMac channels mask + */ +static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; + +/*! + * LoRaMac channels default mask + */ +static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; + + + +// Static functions +static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) +{ + // Apply offset formula + return MIN( DR_5, MAX( DR_0, dr - EffectiveRx1DrOffsetIN865[dr] ) ); +} + +static uint16_t GetSymbTimeout( int8_t dr ) +{ + uint16_t symbolTimeout = 5; + + if( ( dr == DR_3 ) || ( dr == DR_4 ) ) + { + symbolTimeout = 8; + } + else if( dr == DR_5 ) + { + symbolTimeout = 10; + } + else if( dr == DR_6 ) + { + symbolTimeout = 14; + } + return symbolTimeout; +} + +static uint32_t GetBandwidth( int8_t dr ) +{ + uint32_t bandwidth = 0; + + if( dr == DR_6 ) + { + bandwidth = 1; + } + return bandwidth; +} + +static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) +{ + int8_t txPowerResult = txPower; + + // Limit tx power to the band max + txPowerResult = MAX( txPower, maxBandTxPower ); + + return txPowerResult; +} + +static bool VerifyTxFreq( uint32_t freq, uint8_t *band ) +{ + // Check radio driver support + if( Radio.CheckRfFrequency( freq ) == false ) + { + return false; + } + + if( ( freq < 865000000 ) || ( freq > 867000000 ) ) + { + return false; + } + return true; +} + +static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t* channelsMask, ChannelParams_t* channels, Band_t* bands, uint8_t* enabledChannels, uint8_t* delayTx ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTransmission = 0; + + for( uint8_t i = 0, k = 0; i < IN865_MAX_NB_CHANNELS; i += 16, k++ ) + { + for( uint8_t j = 0; j < 16; j++ ) + { + if( ( channelsMask[k] & ( 1 << j ) ) != 0 ) + { + if( channels[i + j].Frequency == 0 ) + { // Check if the channel is enabled + continue; + } + if( joined == false ) + { + if( ( IN865_JOIN_CHANNELS & ( 1 << j ) ) == 0 ) + { + continue; + } + } + if( RegionCommonValueInRange( datarate, channels[i + j].DrRange.Fields.Min, + channels[i + j].DrRange.Fields.Max ) == false ) + { // Check if the current channel selection supports the given datarate + continue; + } + if( bands[channels[i + j].Band].TimeOff > 0 ) + { // Check if the band is available for transmission + delayTransmission++; + continue; + } + enabledChannels[nbEnabledChannels++] = i + j; + } + } + } + + *delayTx = delayTransmission; + return nbEnabledChannels; +} + + + +void RegionIN865GetPhyParam( GetPhyParams_t* getPhy ) +{ + switch( getPhy->Attribute ) + { + case PHY_MIN_DR: + { + getPhy->Param.Value = IN865_TX_MIN_DATARATE; + break; + } + case PHY_DEF_TX_DR: + { + getPhy->Param.Value = IN865_DEFAULT_DATARATE; + break; + } + case PHY_DEF_TX_POWER: + { + getPhy->Param.Value = IN865_DEFAULT_TX_POWER; + break; + } + case PHY_MAX_PAYLOAD: + { + getPhy->Param.Value = MaxPayloadOfDatarateIN865[getPhy->Datarate]; + break; + } + case PHY_MAX_PAYLOAD_REPEATER: + { + getPhy->Param.Value = MaxPayloadOfDatarateRepeaterIN865[getPhy->Datarate]; + break; + } + case PHY_DUTY_CYCLE: + { + getPhy->Param.Value = IN865_DUTY_CYCLE_ENABLED; + break; + } + case PHY_MAX_RX_WINDOW: + { + getPhy->Param.Value = IN865_MAX_RX_WINDOW; + break; + } + case PHY_RECEIVE_DELAY1: + { + getPhy->Param.Value = IN865_RECEIVE_DELAY1; + break; + } + case PHY_RECEIVE_DELAY2: + { + getPhy->Param.Value = IN865_RECEIVE_DELAY2; + break; + } + case PHY_JOIN_ACCEPT_DELAY1: + { + getPhy->Param.Value = IN865_JOIN_ACCEPT_DELAY1; + break; + } + case PHY_JOIN_ACCEPT_DELAY2: + { + getPhy->Param.Value = IN865_JOIN_ACCEPT_DELAY2; + break; + } + case PHY_MAX_FCNT_GAP: + { + getPhy->Param.Value = IN865_MAX_FCNT_GAP; + break; + } + case PHY_ACK_TIMEOUT: + { + getPhy->Param.Value = ( IN865_ACKTIMEOUT + randr( -IN865_ACK_TIMEOUT_RND, IN865_ACK_TIMEOUT_RND ) ); + break; + } + case PHY_DEF_DR1_OFFSET: + { + getPhy->Param.Value = IN865_DEFAULT_RX1_DR_OFFSET; + break; + } + case PHY_DEF_RX2_FREQUENCY: + { + getPhy->Param.Value = IN865_RX_WND_2_FREQ; + break; + } + case PHY_DEF_RX2_DR: + { + getPhy->Param.Value = IN865_RX_WND_2_DR; + break; + } + case PHY_CHANNELS_MASK: + { + getPhy->Param.ChannelsMask = ChannelsMask; + break; + } + case PHY_CHANNELS_DEFAULT_MASK: + { + getPhy->Param.ChannelsMask = ChannelsDefaultMask; + break; + } + case PHY_MAX_NB_CHANNELS: + { + getPhy->Param.Value = IN865_MAX_NB_CHANNELS; + break; + } + case PHY_CHANNELS: + { + getPhy->Param.Channels = Channels; + break; + } + case PHY_DEF_UPLINK_DWELL_TIME: + case PHY_DEF_DOWNLINK_DWELL_TIME: + case PHY_DEF_MAX_EIRP: + { + getPhy->Param.Value = 0; + break; + } + case PHY_NB_JOIN_TRIALS: + case PHY_DEF_NB_JOIN_TRIALS: + { + getPhy->Param.Value = 48; + break; + } + default: + { + return; + } + } +} + +void RegionIN865SetBandTxDone( SetBandTxDoneParams_t* txDone ) +{ + RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); +} + +void RegionIN865InitDefaults( InitType_t type ) +{ + switch( type ) + { + case INIT_TYPE_INIT: + { + // Channels + Channels[0] = ( ChannelParams_t ) IN865_LC1; + Channels[1] = ( ChannelParams_t ) IN865_LC2; + Channels[2] = ( ChannelParams_t ) IN865_LC3; + + // Initialize the channels default mask + ChannelsDefaultMask[0] = LC( 1 ) + LC( 2 ) + LC( 3 ); + // Update the channels mask + RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 1 ); + break; + } + case INIT_TYPE_RESTORE: + { + // Restore channels default mask + ChannelsMask[0] |= ChannelsDefaultMask[0]; + break; + } + default: + { + break; + } + } +} + +bool RegionIN865Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) +{ + switch( phyAttribute ) + { + case PHY_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, IN865_TX_MIN_DATARATE, IN865_TX_MAX_DATARATE ); + } + case PHY_DEF_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + } + case PHY_DEF_TX_POWER: + case PHY_TX_POWER: + { + // Remark: switched min and max! + return RegionCommonValueInRange( verify->TxPower, IN865_MAX_TX_POWER, IN865_MIN_TX_POWER ); + } + case PHY_DUTY_CYCLE: + { + return IN865_DUTY_CYCLE_ENABLED; + } + case PHY_NB_JOIN_TRIALS: + { + if( verify->NbJoinTrials < 48 ) + { + return false; + } + break; + } + default: + return false; + } + return true; +} + +void RegionIN865ApplyCFList( ApplyCFListParams_t* applyCFList ) +{ + ChannelParams_t newChannel; + ChannelAddParams_t channelAdd; + ChannelRemoveParams_t channelRemove; + + // Setup default datarate range + newChannel.DrRange.Value = ( DR_5 << 4 ) | DR_0; + + // Size of the optional CF list + if( applyCFList->Size != 16 ) + { + return; + } + + // Last byte is RFU, don't take it into account + for( uint8_t i = 0, chanIdx = IN865_NUMB_DEFAULT_CHANNELS; i < 15; i+=3, chanIdx++ ) + { + // Channel frequency + newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); + newChannel.Frequency *= 100; + + // Initialize alternative frequency to 0 + newChannel.Rx1Frequency = 0; + + if( newChannel.Frequency != 0 ) + { + channelAdd.NewChannel = &newChannel; + channelAdd.ChannelId = chanIdx; + + // Try to add all channels + RegionIN865ChannelAdd( &channelAdd ); + } + else + { + channelRemove.ChannelId = chanIdx; + + RegionIN865ChannelsRemove( &channelRemove ); + } + } +} + +bool RegionIN865ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ) +{ + switch( chanMaskSet->ChannelsMaskType ) + { + case CHANNELS_MASK: + { + RegionCommonChanMaskCopy( ChannelsMask, chanMaskSet->ChannelsMaskIn, 1 ); + break; + } + case CHANNELS_DEFAULT_MASK: + { + RegionCommonChanMaskCopy( ChannelsDefaultMask, chanMaskSet->ChannelsMaskIn, 1 ); + break; + } + default: + return false; + } + return true; +} + +bool RegionIN865AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ) +{ + bool adrAckReq = false; + int8_t datarate = adrNext->Datarate; + int8_t txPower = adrNext->TxPower; + + // Report back the adr ack counter + *adrAckCounter = adrNext->AdrAckCounter; + + if( adrNext->AdrEnabled == true ) + { + if( datarate == IN865_TX_MIN_DATARATE ) + { + *adrAckCounter = 0; + adrAckReq = false; + } + else + { + if( adrNext->AdrAckCounter >= IN865_ADR_ACK_LIMIT ) + { + adrAckReq = true; + txPower = IN865_MAX_TX_POWER; + } + else + { + adrAckReq = false; + } + if( adrNext->AdrAckCounter >= ( IN865_ADR_ACK_LIMIT + IN865_ADR_ACK_DELAY ) ) + { + if( ( adrNext->AdrAckCounter % IN865_ADR_ACK_DELAY ) == 0 ) + { + if( datarate > IN865_TX_MIN_DATARATE ) + { + datarate--; + } + + if( datarate == IN865_TX_MIN_DATARATE ) + { + if( adrNext->UpdateChanMask == true ) + { + // Re-enable default channels + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + } + } + } + } + } + } + + *drOut = datarate; + *txPowOut = txPower; + return adrAckReq; +} + +// ToDo get phy datarate afterwards +bool RegionIN865RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) +{ + RadioModems_t modem; + int8_t dr = rxConfig->Datarate; + uint8_t maxPayload = 0; + uint16_t symbTimeout = 0; + uint32_t bandwidth = 0; + int8_t phyDr = 0; + uint32_t frequency = rxConfig->Frequency; + + if( Radio.GetStatus( ) != RF_IDLE ) + { + return false; + } + + if( rxConfig->Window == 0 ) + { + // Apply the datarate offset for RX window 1 + dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + // Apply window 1 frequency + frequency = Channels[rxConfig->Channel].Frequency; + // Apply the alternative RX 1 window frequency, if it is available + if( Channels[rxConfig->Channel].Rx1Frequency != 0 ) + { + frequency = Channels[rxConfig->Channel].Rx1Frequency; + } + } + symbTimeout = GetSymbTimeout( dr ); + bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table + phyDr = DataratesIN865[dr]; + + Radio.SetChannel( frequency ); + + if( dr == DR_7 ) + { + modem = MODEM_FSK; + Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, 0, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + } + else + { + modem = MODEM_LORA; + Radio.SetRxConfig( modem, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + } + + if( rxConfig->RepeaterSupport == true ) + { + maxPayload = MaxPayloadOfDatarateRepeaterIN865[dr]; + } + else + { + maxPayload = MaxPayloadOfDatarateIN865[dr]; + } + Radio.SetMaxPayloadLength( modem, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); + + *datarate = (uint8_t) dr; + return true; +} + +bool RegionIN865TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) +{ + RadioModems_t modem; + int8_t phyDr = DataratesIN865[txConfig->Datarate]; + int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band].TxMaxPower, txConfig->Datarate, ChannelsMask ); + uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); + int8_t phyTxPower = 0; + + phyTxPower = TxPowersIN865[txPowerLimited]; + + // Setup the radio frequency + Radio.SetChannel( Channels[txConfig->Channel].Frequency ); + + if( txConfig->Datarate == DR_7 ) + { // High Speed FSK channel + modem = MODEM_FSK; + Radio.SetTxConfig( modem, phyTxPower, 25e3, bandwidth, phyDr * 1e3, 0, 5, false, true, 0, 0, false, 3e3 ); + } + else + { + modem = MODEM_LORA; + Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + } + // Setup maximum payload lenght of the radio driver + Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); + // Get the time-on-air of the next tx frame + *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); + + *txPower = txConfig->TxPower; + return true; +} + +uint8_t RegionIN865LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) +{ + uint8_t status = 0x07; + LinkAdrParams_t linkAdrParams; + uint8_t nextIndex = 0; + uint8_t bytesProcessed = 0; + uint16_t chMask = 0; + + while( bytesProcessed < linkAdrReq->PayloadSize ) + { + // Get ADR request parameters + nextIndex = RegionCommonParseLinkAdrReq( &( linkAdrReq->Payload[bytesProcessed] ), &linkAdrParams ); + + if( nextIndex == 0 ) + break; // break loop, since no more request has been found + + // Update bytes processed + bytesProcessed += nextIndex; + + // Revert status, as we only check the last ADR request for the channel mask KO + status = 0x07; + + // Setup temporary channels mask + chMask = linkAdrParams.ChMask; + + // Verify channels mask + if( ( linkAdrParams.ChMaskCtrl == 0 ) && ( chMask == 0 ) ) + { + status &= 0xFE; // Channel mask KO + } + else if( ( ( linkAdrParams.ChMaskCtrl >= 1 ) && ( linkAdrParams.ChMaskCtrl <= 5 )) || + ( linkAdrParams.ChMaskCtrl >= 7 ) ) + { + // RFU + status &= 0xFE; // Channel mask KO + } + else + { + for( uint8_t i = 0; i < IN865_MAX_NB_CHANNELS; i++ ) + { + if( linkAdrParams.ChMaskCtrl == 6 ) + { + if( Channels[i].Frequency != 0 ) + { + chMask |= 1 << i; + } + } + else + { + if( ( ( chMask & ( 1 << i ) ) != 0 ) && + ( Channels[i].Frequency == 0 ) ) + {// Trying to enable an undefined channel + status &= 0xFE; // Channel mask KO + } + } + } + } + } + + // Verify datarate + if( RegionCommonChanVerifyDr( IN865_MAX_NB_CHANNELS, &chMask, linkAdrParams.Datarate, IN865_TX_MIN_DATARATE, IN865_TX_MAX_DATARATE, Channels ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify tx power + if( RegionCommonValueInRange( linkAdrParams.TxPower, IN865_MAX_TX_POWER, IN865_MIN_TX_POWER ) == 0 ) + { + // Verify if the maximum TX power is exceeded + if( IN865_MAX_TX_POWER > linkAdrParams.TxPower ) + { // Apply maximum TX power. Accept TX power. + linkAdrParams.TxPower = IN865_MAX_TX_POWER; + } + else + { + status &= 0xFB; // TxPower KO + } + } + + // Update channelsMask if everything is correct + if( status == 0x07 ) + { + if( linkAdrParams.NbRep == 0 ) + { // Value of 0 is not allowed, revert to default. + linkAdrParams.NbRep = 1; + } + + // Set the channels mask to a default value + memset( ChannelsMask, 0, sizeof( ChannelsMask ) ); + // Update the channels mask + ChannelsMask[0] = chMask; + } + + // Update status variables + *drOut = linkAdrParams.Datarate; + *txPowOut = linkAdrParams.TxPower; + *nbRepOut = linkAdrParams.NbRep; + *nbBytesParsed = bytesProcessed; + + return status; +} + +uint8_t RegionIN865RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) +{ + uint8_t status = 0x07; + + // Verify radio frequency + if( Radio.CheckRfFrequency( rxParamSetupReq->Frequency ) == false ) + { + status &= 0xFE; // Channel frequency KO + } + + // Verify datarate + if( RegionCommonValueInRange( rxParamSetupReq->Datarate, IN865_RX_MIN_DATARATE, IN865_RX_MAX_DATARATE ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify datarate offset + if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, IN865_MIN_RX1_DR_OFFSET, IN865_MAX_RX1_DR_OFFSET ) == false ) + { + status &= 0xFB; // Rx1DrOffset range KO + } + + return status; +} + +uint8_t RegionIN865NewChannelReq( NewChannelReqParams_t* newChannelReq ) +{ + uint8_t status = 0x03; + ChannelAddParams_t channelAdd; + ChannelRemoveParams_t channelRemove; + + if( newChannelReq->NewChannel->Frequency == 0 ) + { + channelRemove.ChannelId = newChannelReq->ChannelId; + + // Remove + if( RegionIN865ChannelsRemove( &channelRemove ) == false ) + { + status &= 0xFC; + } + } + else + { + channelAdd.NewChannel = newChannelReq->NewChannel; + channelAdd.ChannelId = newChannelReq->ChannelId; + + switch( RegionIN865ChannelAdd( &channelAdd ) ) + { + case LORAMAC_STATUS_OK: + { + break; + } + case LORAMAC_STATUS_FREQUENCY_INVALID: + { + status &= 0xFE; + break; + } + case LORAMAC_STATUS_DATARATE_INVALID: + { + status &= 0xFD; + break; + } + case LORAMAC_STATUS_FREQ_AND_DR_INVALID: + { + status &= 0xFC; + break; + } + default: + { + status &= 0xFC; + break; + } + } + } + + return status; +} + +int8_t RegionIN865TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ) +{ + return -1; +} + +uint8_t RegionIN865DlChannelReq( DlChannelReqParams_t* dlChannelReq ) +{ + uint8_t status = 0x03; + uint8_t band = 0; + + // Verify if the frequency is supported + if( VerifyTxFreq( dlChannelReq->Rx1Frequency, &band ) == false ) + { + status &= 0xFE; + } + + // Verify if an uplink frequency exists + if( Channels[dlChannelReq->ChannelId].Frequency == 0 ) + { + status &= 0xFD; + } + + // Apply Rx1 frequency, if the status is OK + if( status == 0x03 ) + { + Channels[dlChannelReq->ChannelId].Rx1Frequency = dlChannelReq->Rx1Frequency; + } + + return status; +} + +int8_t RegionIN865AlternateDr( AlternateDrParams_t* alternateDr ) +{ + int8_t datarate = 0; + + if( ( alternateDr->NbTrials % 48 ) == 0 ) + { + datarate = DR_0; + } + else if( ( alternateDr->NbTrials % 32 ) == 0 ) + { + datarate = DR_1; + } + else if( ( alternateDr->NbTrials % 24 ) == 0 ) + { + datarate = DR_2; + } + else if( ( alternateDr->NbTrials % 16 ) == 0 ) + { + datarate = DR_3; + } + else if( ( alternateDr->NbTrials % 8 ) == 0 ) + { + datarate = DR_4; + } + else + { + datarate = DR_5; + } + return datarate; +} + +void RegionIN865CalcBackOff( CalcBackOffParams_t* calcBackOff ) +{ + uint8_t channel = calcBackOff->Channel; + uint16_t dutyCycle = Bands[Channels[channel].Band].DCycle; + uint16_t joinDutyCycle = 0; + + // Reset time-off to initial value. + Bands[Channels[channel].Band].TimeOff = 0; + + if( calcBackOff->Joined == false ) + { + // Get the join duty cycle + joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); + // Apply the most restricting duty cycle + dutyCycle = MAX( dutyCycle, joinDutyCycle ); + // Apply band time-off. + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; + } + else + { + if( calcBackOff->DutyCycleEnabled == true ) + { + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; + } + } +} + +bool RegionIN865NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTx = 0; + uint8_t enabledChannels[IN865_MAX_NB_CHANNELS] = { 0 }; + TimerTime_t nextTxDelay = 0; + + if( RegionCommonCountChannels( ChannelsMask, 0, 1 ) == 0 ) + { // Reactivate default channels + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + } + + if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) + { + // Update bands Time OFF + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, IN865_MAX_NB_BANDS ); + + // Search how many channels are enabled + nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Joined, nextChanParams->Datarate, + ChannelsMask, Channels, + Bands, enabledChannels, &delayTx ); + } + else + { + delayTx++; + nextTxDelay = nextChanParams->AggrTimeOff - TimerGetElapsedTime( nextChanParams->LastAggrTx ); + } + + if( nbEnabledChannels > 0 ) + { + // We found a valid channel + *channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; + + *time = 0; + return true; + } + else + { + if( delayTx > 0 ) + { + // Delay transmission due to AggregatedTimeOff or to a band time off + *time = nextTxDelay; + return true; + } + // Datarate not supported by any channel, restore defaults + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + *time = 0; + return false; + } +} + +LoRaMacStatus_t RegionIN865ChannelAdd( ChannelAddParams_t* channelAdd ) +{ + uint8_t band = 0; + bool drInvalid = false; + bool freqInvalid = false; + uint8_t id = channelAdd->ChannelId; + + if( id >= IN865_MAX_NB_CHANNELS ) + { + return LORAMAC_STATUS_PARAMETER_INVALID; + } + + // Validate the datarate range + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Min, IN865_TX_MIN_DATARATE, IN865_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, IN865_TX_MIN_DATARATE, IN865_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + if( channelAdd->NewChannel->DrRange.Fields.Min > channelAdd->NewChannel->DrRange.Fields.Max ) + { + drInvalid = true; + } + + // Default channels don't accept all values + if( id < IN865_NUMB_DEFAULT_CHANNELS ) + { + // Validate the datarate range for min: must be DR_0 + if( channelAdd->NewChannel->DrRange.Fields.Min > DR_0 ) + { + drInvalid = true; + } + // Validate the datarate range for max: must be DR_5 <= Max <= TX_MAX_DATARATE + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, DR_5, IN865_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + // We are not allowed to change the frequency + if( channelAdd->NewChannel->Frequency != Channels[id].Frequency ) + { + freqInvalid = true; + } + } + + // Check frequency + if( freqInvalid == false ) + { + if( VerifyTxFreq( channelAdd->NewChannel->Frequency, &band ) == false ) + { + freqInvalid = true; + } + } + + // Check status + if( ( drInvalid == true ) && ( freqInvalid == true ) ) + { + return LORAMAC_STATUS_FREQ_AND_DR_INVALID; + } + if( drInvalid == true ) + { + return LORAMAC_STATUS_DATARATE_INVALID; + } + if( freqInvalid == true ) + { + return LORAMAC_STATUS_FREQUENCY_INVALID; + } + + memcpy( &(Channels[id]), channelAdd->NewChannel, sizeof( Channels[id] ) ); + Channels[id].Band = band; + ChannelsMask[0] |= ( 1 << id ); + return LORAMAC_STATUS_OK; +} + +bool RegionIN865ChannelsRemove( ChannelRemoveParams_t* channelRemove ) +{ + uint8_t id = channelRemove->ChannelId; + + if( id < IN865_NUMB_DEFAULT_CHANNELS ) + { + return false; + } + + // Remove the channel from the list of channels + Channels[id] = ( ChannelParams_t ){ 0, 0, { 0 }, 0 }; + + return RegionCommonChanDisable( ChannelsMask, id, IN865_MAX_NB_CHANNELS ); +} + +void RegionIN865SetContinuousWave( ContinuousWaveParams_t* continuousWave ) +{ + int8_t txPowerLimited = LimitTxPower( continuousWave->TxPower, Bands[Channels[continuousWave->Channel].Band].TxMaxPower, continuousWave->Datarate, ChannelsMask ); + int8_t phyTxPower = 0; + uint32_t frequency = Channels[continuousWave->Channel].Frequency; + + phyTxPower = TxPowersIN865[txPowerLimited]; + + Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); +} diff --git a/src/mac/region/RegionIN865.h b/src/mac/region/RegionIN865.h new file mode 100644 index 000000000..6fd85fb5f --- /dev/null +++ b/src/mac/region/RegionIN865.h @@ -0,0 +1,421 @@ +/*! + * \file RegionIN865.h + * + * \brief Region definition for IN865 + * + * \copyright Revised BSD License, see section \ref LICENSE. + * + * \code + * ______ _ + * / _____) _ | | + * ( (____ _____ ____ _| |_ _____ ____| |__ + * \____ \| ___ | (_ _) ___ |/ ___) _ \ + * _____) ) ____| | | || |_| ____( (___| | | | + * (______/|_____)_|_|_| \__)_____)\____)_| |_| + * (C)2013 Semtech + * + * ___ _____ _ ___ _ _____ ___ ___ ___ ___ + * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| + * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| + * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| + * embedded.connectivity.solutions=============== + * + * \endcode + * + * \author Miguel Luis ( Semtech ) + * + * \author Gregory Cristian ( Semtech ) + * + * \author Daniel Jaeckle ( STACKFORCE ) + * + * \defgroup REGIONIN865 Region IN865 + * Implementation according to LoRaWAN Specification v1.0.2. + * \{ + */ +#ifndef __REGION_IN865_H__ +#define __REGION_IN865_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define IN865_MAX_NB_CHANNELS 16 + +/*! + * Number of default channels + */ +#define IN865_NUMB_DEFAULT_CHANNELS 3 + +/*! + * Minimal datarate that can be used by the node + */ +#define IN865_TX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define IN865_TX_MAX_DATARATE DR_7 + +/*! + * Minimal datarate that can be used by the node + */ +#define IN865_RX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define IN865_RX_MAX_DATARATE DR_7 + +/*! + * Default datarate used by the node + */ +#define IN865_DEFAULT_DATARATE DR_0 + +/*! + * Minimal Rx1 receive datarate offset + */ +#define IN865_MIN_RX1_DR_OFFSET 0 + +/*! + * Maximal Rx1 receive datarate offset + */ +#define IN865_MAX_RX1_DR_OFFSET 7 + +/*! + * Default Rx1 receive datarate offset + */ +#define IN865_DEFAULT_RX1_DR_OFFSET 0 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define IN865_MIN_TX_POWER TX_POWER_10 + +/*! + * Maximal Tx output power that can be used by the node + */ +#define IN865_MAX_TX_POWER TX_POWER_0 + +/*! + * Default Tx output power used by the node + */ +#define IN865_DEFAULT_TX_POWER TX_POWER_0 + +/*! + * ADR Ack limit + */ +#define IN865_ADR_ACK_LIMIT 64 + +/*! + * ADR Ack delay + */ +#define IN865_ADR_ACK_DELAY 32 + +/*! + * Enabled or disabled the duty cycle + */ +#define IN865_DUTY_CYCLE_ENABLED 1 + +/*! + * Maximum RX window duration + */ +#define IN865_MAX_RX_WINDOW 3000 + +/*! + * Receive delay 1 + */ +#define IN865_RECEIVE_DELAY1 1000 + +/*! + * Receive delay 2 + */ +#define IN865_RECEIVE_DELAY2 2000 + +/*! + * Join accept delay 1 + */ +#define IN865_JOIN_ACCEPT_DELAY1 5000 + +/*! + * Join accept delay 2 + */ +#define IN865_JOIN_ACCEPT_DELAY2 6000 + +/*! + * Maximum frame counter gap + */ +#define IN865_MAX_FCNT_GAP 16384 + +/*! + * Ack timeout + */ +#define IN865_ACKTIMEOUT 2000 + +/*! + * Random ack timeout limits + */ +#define IN865_ACK_TIMEOUT_RND 1000 + +#if ( IN865_DEFAULT_DATARATE > DR_5 ) +#error "A default DR higher than DR_5 may lead to connectivity loss." +#endif + +/*! + * Second reception window channel frequency definition. + */ +#define IN865_RX_WND_2_FREQ 866550000 + +/*! + * Second reception window channel datarate definition. + */ +#define IN865_RX_WND_2_DR DR_2 + +/*! + * Maximum number of bands + */ +#define IN865_MAX_NB_BANDS 1 + +/*! + * Band 0 definition + * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define IN865_BAND0 { 1 , IN865_DEFAULT_TX_POWER, 0, 0 } // 100.0 % + +/*! + * LoRaMac default channel 1 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define IN865_LC1 { 865062500, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 } + +/*! + * LoRaMac default channel 2 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define IN865_LC2 { 865402500, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 } + +/*! + * LoRaMac default channel 3 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define IN865_LC3 { 865985000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 } + +/*! + * LoRaMac channels which are allowed for the join procedure + */ +#define IN865_JOIN_CHANNELS ( uint16_t )( LC( 1 ) | LC( 2 ) | LC( 3 ) ) + +/*! + * Data rates table definition + */ +static const uint8_t DataratesIN865[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; + +/*! + * Maximum payload with respect to the datarate index. Cannot operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateIN865[] = { 51, 51, 51, 115, 242, 242, 242, 242 }; + +/*! + * Maximum payload with respect to the datarate index. Can operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateRepeaterIN865[] = { 51, 51, 51, 115, 222, 222, 222, 222 }; + +/*! + * Tx output powers table definition + */ +static const int8_t TxPowersIN865[] = { 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0 }; + +/*! + * Effective datarate offsets for receive window 1. + */ +static const int8_t EffectiveRx1DrOffsetIN865[] = { 0, 1, 2, 3, 4, 5, -1, -2 }; + +/*! + * \brief The function gets a value of a specific phy attribute. + * + * \param [IN] getPhy Pointer to the function parameters. + */ +void RegionIN865GetPhyParam( GetPhyParams_t* getPhy ); + +/*! + * \brief Updates the last TX done parameters of the current channel. + * + * \param [IN] txDone Pointer to the function parameters. + */ +void RegionIN865SetBandTxDone( SetBandTxDoneParams_t* txDone ); + +/*! + * \brief Initializes the channels masks and the channels. + * + * \param [IN] type Sets the initialization type. + */ +void RegionIN865InitDefaults( InitType_t type ); + +/*! + * \brief Verifies a parameter. + * + * \param [IN] verify Pointer to the function parameters. + * + * \param [IN] type Sets the initialization type. + * + * \retval Returns true, if the parameter is valid. + */ +bool RegionIN865Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ); + +/*! + * \brief The function parses the input buffer and sets up the channels of the + * CF list. + * + * \param [IN] applyCFList Pointer to the function parameters. + */ +void RegionIN865ApplyCFList( ApplyCFListParams_t* applyCFList ); + +/*! + * \brief Sets a channels mask. + * + * \param [IN] chanMaskSet Pointer to the function parameters. + * + * \retval Returns true, if the channels mask could be set. + */ +bool RegionIN865ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); + +/*! + * \brief Calculates the next datarate to set, when ADR is on or off. + * + * \param [IN] adrNext Pointer to the function parameters. + * + * \param [OUT] drOut The calculated datarate for the next TX. + * + * \param [OUT] txPowOut The TX power for the next TX. + * + * \param [OUT] adrAckCounter The calculated ADR acknowledgement counter. + * + * \retval Returns true, if an ADR request should be performed. + */ +bool RegionIN865AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); + +/*! + * \brief Configuration of the RX windows. + * + * \param [IN] rxConfig Pointer to the function parameters. + * + * \param [OUT] datarate The datarate index which was set. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionIN865RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ); + +/*! + * \brief TX configuration. + * + * \param [IN] txConfig Pointer to the function parameters. + * + * \param [OUT] txPower The tx power index which was set. + * + * \param [OUT] txTimeOnAir The time-on-air of the frame. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionIN865TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ); + +/*! + * \brief The function processes a Link ADR Request. + * + * \param [IN] linkAdrReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionIN865LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ); + +/*! + * \brief The function processes a RX Parameter Setup Request. + * + * \param [IN] rxParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionIN865RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ); + +/*! + * \brief The function processes a Channel Request. + * + * \param [IN] newChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionIN865NewChannelReq( NewChannelReqParams_t* newChannelReq ); + +/*! + * \brief The function processes a TX ParamSetup Request. + * + * \param [IN] txParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + * Returns -1, if the functionality is not implemented. In this case, the end node + * shall not process the command. + */ +int8_t RegionIN865TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ); + +/*! + * \brief The function processes a DlChannel Request. + * + * \param [IN] dlChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionIN865DlChannelReq( DlChannelReqParams_t* dlChannelReq ); + +/* + * \brief Alternates the datarate of the channel for the join request. + * + * \param [IN] alternateDr Pointer to the function parameters. + * + * \retval Datarate to apply. + */ +int8_t RegionIN865AlternateDr( AlternateDrParams_t* alternateDr ); + +/*! + * \brief Calculates the back-off time. + * + * \param [IN] calcBackOff Pointer to the function parameters. + */ +void RegionIN865CalcBackOff( CalcBackOffParams_t* calcBackOff ); + +/*! + * \brief Searches and set the next random available channel + * + * \param [OUT] channel Next channel to use for TX. + * + * \param [OUT] time Time to wait for the next transmission according to the duty + * cycle. + * + * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] + */ +bool RegionIN865NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); + +/*! + * \brief Adds a channel. + * + * \param [IN] channelAdd Pointer to the function parameters. + * + * \retval Status of the operation. + */ +LoRaMacStatus_t RegionIN865ChannelAdd( ChannelAddParams_t* channelAdd ); + +/*! + * \brief Removes a channel. + * + * \param [IN] channelRemove Pointer to the function parameters. + * + * \retval Returns true, if the channel was removed successfully. + */ +bool RegionIN865ChannelsRemove( ChannelRemoveParams_t* channelRemove ); + +/*! + * \brief Sets the radio into continuous wave mode. + * + * \param [IN] continuousWave Pointer to the function parameters. + */ +void RegionIN865SetContinuousWave( ContinuousWaveParams_t* continuousWave ); + +/*! \} defgroup REGIONIN865 */ + +#endif // __REGION_IN865_H__ diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c new file mode 100644 index 000000000..42c231c7c --- /dev/null +++ b/src/mac/region/RegionKR920.c @@ -0,0 +1,986 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + ___ _____ _ ___ _ _____ ___ ___ ___ ___ +/ __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| +\__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| +|___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| +embedded.connectivity.solutions=============== + +Description: LoRa MAC region KR920 implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) +*/ +#include +#include +#include + +#include "radio.h" +#include "timer.h" +#include "LoRaMac.h" + +#include "utilities.h" + +#include "Region.h" +#include "RegionCommon.h" +#include "RegionKR920.h" + + + +// Definitions +#define CHANNELS_MASK_SIZE 1 + + + +// Global attributes +/*! + * LoRaMAC channels + */ +static ChannelParams_t Channels[KR920_MAX_NB_CHANNELS]; + +/*! + * LoRaMac bands + */ +static Band_t Bands[KR920_MAX_NB_BANDS] = +{ + KR920_BAND0 +}; + +/*! + * LoRaMac channels mask + */ +static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; + +/*! + * LoRaMac channels default mask + */ +static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; + + + +// Static functions +static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) +{ + int8_t datarate = dr - drOffset; + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} + +static uint16_t GetSymbTimeout( int8_t dr ) +{ + uint16_t symbolTimeout = 5; + + if( ( dr == DR_3 ) || ( dr == DR_4 ) ) + { + symbolTimeout = 8; + } + else if( dr == DR_5 ) + { + symbolTimeout = 10; + } + return symbolTimeout; +} + +static uint32_t GetBandwidth( int8_t dr ) +{ + // All channels use BW = 0 + return 0; +} + +static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) +{ + int8_t txPowerResult = txPower; + + // Limit tx power to the band max + txPowerResult = MAX( txPower, maxBandTxPower ); + + return txPowerResult; +} + +static bool VerifyTxFreq( uint32_t freq ) +{ + uint32_t tmpFreq = freq; + + // Check radio driver support + if( Radio.CheckRfFrequency( tmpFreq ) == false ) + { + return false; + } + + // Verify if the frequency is valid. The frequency must be in a specified + // range and can be set to specific values. + if( ( tmpFreq >= 920900000 ) && ( tmpFreq <=923300000 ) ) + { + // Range ok, check for specific value + tmpFreq -= 920900000; + if( ( tmpFreq % 200000 ) == 0 ) + { + return true; + } + } + return false; +} + +static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t* channelsMask, ChannelParams_t* channels, Band_t* bands, uint8_t* enabledChannels, uint8_t* delayTx ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTransmission = 0; + + for( uint8_t i = 0, k = 0; i < KR920_MAX_NB_CHANNELS; i += 16, k++ ) + { + for( uint8_t j = 0; j < 16; j++ ) + { + if( ( channelsMask[k] & ( 1 << j ) ) != 0 ) + { + if( channels[i + j].Frequency == 0 ) + { // Check if the channel is enabled + continue; + } + if( joined == false ) + { + if( ( KR920_JOIN_CHANNELS & ( 1 << j ) ) == 0 ) + { + continue; + } + } + if( RegionCommonValueInRange( datarate, channels[i + j].DrRange.Fields.Min, + channels[i + j].DrRange.Fields.Max ) == false ) + { // Check if the current channel selection supports the given datarate + continue; + } + if( bands[channels[i + j].Band].TimeOff > 0 ) + { // Check if the band is available for transmission + delayTransmission++; + continue; + } + enabledChannels[nbEnabledChannels++] = i + j; + } + } + } + + *delayTx = delayTransmission; + return nbEnabledChannels; +} + + + +void RegionKR920GetPhyParam( GetPhyParams_t* getPhy ) +{ + switch( getPhy->Attribute ) + { + case PHY_MIN_DR: + { + getPhy->Param.Value = KR920_TX_MIN_DATARATE; + break; + } + case PHY_DEF_TX_DR: + { + getPhy->Param.Value = KR920_DEFAULT_DATARATE; + break; + } + case PHY_DEF_TX_POWER: + { + getPhy->Param.Value = KR920_DEFAULT_TX_POWER; + break; + } + case PHY_MAX_PAYLOAD: + case PHY_MAX_PAYLOAD_REPEATER: + { + getPhy->Param.Value = MaxPayloadOfDatarateKR920[getPhy->Datarate]; + break; + } + case PHY_DUTY_CYCLE: + { + getPhy->Param.Value = KR920_DUTY_CYCLE_ENABLED; + break; + } + case PHY_MAX_RX_WINDOW: + { + getPhy->Param.Value = KR920_MAX_RX_WINDOW; + break; + } + case PHY_RECEIVE_DELAY1: + { + getPhy->Param.Value = KR920_RECEIVE_DELAY1; + break; + } + case PHY_RECEIVE_DELAY2: + { + getPhy->Param.Value = KR920_RECEIVE_DELAY2; + break; + } + case PHY_JOIN_ACCEPT_DELAY1: + { + getPhy->Param.Value = KR920_JOIN_ACCEPT_DELAY1; + break; + } + case PHY_JOIN_ACCEPT_DELAY2: + { + getPhy->Param.Value = KR920_JOIN_ACCEPT_DELAY2; + break; + } + case PHY_MAX_FCNT_GAP: + { + getPhy->Param.Value = KR920_MAX_FCNT_GAP; + break; + } + case PHY_ACK_TIMEOUT: + { + getPhy->Param.Value = ( KR920_ACKTIMEOUT + randr( -KR920_ACK_TIMEOUT_RND, KR920_ACK_TIMEOUT_RND ) ); + break; + } + case PHY_DEF_DR1_OFFSET: + { + getPhy->Param.Value = KR920_DEFAULT_RX1_DR_OFFSET; + break; + } + case PHY_DEF_RX2_FREQUENCY: + { + getPhy->Param.Value = KR920_RX_WND_2_FREQ; + break; + } + case PHY_DEF_RX2_DR: + { + getPhy->Param.Value = KR920_RX_WND_2_DR; + break; + } + case PHY_CHANNELS_MASK: + { + getPhy->Param.ChannelsMask = ChannelsMask; + break; + } + case PHY_CHANNELS_DEFAULT_MASK: + { + getPhy->Param.ChannelsMask = ChannelsDefaultMask; + break; + } + case PHY_MAX_NB_CHANNELS: + { + getPhy->Param.Value = KR920_MAX_NB_CHANNELS; + break; + } + case PHY_CHANNELS: + { + getPhy->Param.Channels = Channels; + break; + } + case PHY_DEF_UPLINK_DWELL_TIME: + case PHY_DEF_DOWNLINK_DWELL_TIME: + case PHY_DEF_MAX_EIRP: + { + getPhy->Param.Value = 0; + break; + } + case PHY_NB_JOIN_TRIALS: + case PHY_DEF_NB_JOIN_TRIALS: + { + getPhy->Param.Value = 48; + break; + } + default: + { + return; + } + } +} + +void RegionKR920SetBandTxDone( SetBandTxDoneParams_t* txDone ) +{ + RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); +} + +void RegionKR920InitDefaults( InitType_t type ) +{ + switch( type ) + { + case INIT_TYPE_INIT: + { + // Channels + Channels[0] = ( ChannelParams_t ) KR920_LC1; + Channels[1] = ( ChannelParams_t ) KR920_LC2; + Channels[2] = ( ChannelParams_t ) KR920_LC3; + + // Initialize the channels default mask + ChannelsDefaultMask[0] = LC( 1 ) + LC( 2 ) + LC( 3 ); + // Update the channels mask + RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 1 ); + break; + } + case INIT_TYPE_RESTORE: + { + // Restore channels default mask + ChannelsMask[0] |= ChannelsDefaultMask[0]; + break; + } + default: + { + break; + } + } +} + +bool RegionKR920Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) +{ + switch( phyAttribute ) + { + case PHY_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, KR920_TX_MIN_DATARATE, KR920_TX_MAX_DATARATE ); + } + case PHY_DEF_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + } + case PHY_DEF_TX_POWER: + case PHY_TX_POWER: + { + // Remark: switched min and max! + return RegionCommonValueInRange( verify->TxPower, KR920_MAX_TX_POWER, KR920_MIN_TX_POWER ); + } + case PHY_DUTY_CYCLE: + { + return KR920_DUTY_CYCLE_ENABLED; + } + case PHY_NB_JOIN_TRIALS: + { + if( verify->NbJoinTrials < 48 ) + { + return false; + } + break; + } + default: + return false; + } + return true; +} + +void RegionKR920ApplyCFList( ApplyCFListParams_t* applyCFList ) +{ + ChannelParams_t newChannel; + ChannelAddParams_t channelAdd; + ChannelRemoveParams_t channelRemove; + + // Setup default datarate range + newChannel.DrRange.Value = ( DR_5 << 4 ) | DR_0; + + // Size of the optional CF list + if( applyCFList->Size != 16 ) + { + return; + } + + // Last byte is RFU, don't take it into account + for( uint8_t i = 0, chanIdx = KR920_NUMB_DEFAULT_CHANNELS; i < 15; i+=3, chanIdx++ ) + { + // Channel frequency + newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); + newChannel.Frequency *= 100; + + // Initialize alternative frequency to 0 + newChannel.Rx1Frequency = 0; + + if( newChannel.Frequency != 0 ) + { + channelAdd.NewChannel = &newChannel; + channelAdd.ChannelId = chanIdx; + + // Try to add all channels + RegionKR920ChannelAdd( &channelAdd ); + } + else + { + channelRemove.ChannelId = chanIdx; + + RegionKR920ChannelsRemove( &channelRemove ); + } + } +} + +bool RegionKR920ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ) +{ + switch( chanMaskSet->ChannelsMaskType ) + { + case CHANNELS_MASK: + { + RegionCommonChanMaskCopy( ChannelsMask, chanMaskSet->ChannelsMaskIn, 1 ); + break; + } + case CHANNELS_DEFAULT_MASK: + { + RegionCommonChanMaskCopy( ChannelsDefaultMask, chanMaskSet->ChannelsMaskIn, 1 ); + break; + } + default: + return false; + } + return true; +} + +bool RegionKR920AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ) +{ + bool adrAckReq = false; + int8_t datarate = adrNext->Datarate; + int8_t txPower = adrNext->TxPower; + + // Report back the adr ack counter + *adrAckCounter = adrNext->AdrAckCounter; + + if( adrNext->AdrEnabled == true ) + { + if( datarate == KR920_TX_MIN_DATARATE ) + { + *adrAckCounter = 0; + adrAckReq = false; + } + else + { + if( adrNext->AdrAckCounter >= KR920_ADR_ACK_LIMIT ) + { + adrAckReq = true; + txPower = KR920_MAX_TX_POWER; + } + else + { + adrAckReq = false; + } + if( adrNext->AdrAckCounter >= ( KR920_ADR_ACK_LIMIT + KR920_ADR_ACK_DELAY ) ) + { + if( ( adrNext->AdrAckCounter % KR920_ADR_ACK_DELAY ) == 0 ) + { + if( datarate > KR920_TX_MIN_DATARATE ) + { + datarate--; + } + + if( datarate == KR920_TX_MIN_DATARATE ) + { + if( adrNext->UpdateChanMask == true ) + { + // Re-enable default channels + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + } + } + } + } + } + } + + *drOut = datarate; + *txPowOut = txPower; + return adrAckReq; +} + +// ToDo get phy datarate afterwards +bool RegionKR920RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) +{ + int8_t dr = rxConfig->Datarate; + uint8_t maxPayload = 0; + uint16_t symbTimeout = 0; + uint32_t bandwidth = 0; + int8_t phyDr = 0; + uint32_t frequency = rxConfig->Frequency; + + if( Radio.GetStatus( ) != RF_IDLE ) + { + return false; + } + + if( rxConfig->Window == 0 ) + { + // Apply the datarate offset for RX window 1 + dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + // Apply window 1 frequency + frequency = Channels[rxConfig->Channel].Frequency; + // Apply the alternative RX 1 window frequency, if it is available + if( Channels[rxConfig->Channel].Rx1Frequency != 0 ) + { + frequency = Channels[rxConfig->Channel].Rx1Frequency; + } + } + symbTimeout = GetSymbTimeout( dr ); + bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table + phyDr = DataratesKR920[dr]; + + Radio.SetChannel( frequency ); + + // Radio configuration + Radio.SetRxConfig( MODEM_LORA, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + maxPayload = MaxPayloadOfDatarateKR920[dr]; + Radio.SetMaxPayloadLength( MODEM_LORA, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); + + *datarate = (uint8_t) dr; + return true; +} + +bool RegionKR920TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) +{ + int8_t phyDr = DataratesKR920[txConfig->Datarate]; + int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band].TxMaxPower, txConfig->Datarate, ChannelsMask ); + uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); + int8_t phyTxPower = 0; + + phyTxPower = TxPowersKR920[txPowerLimited]; + + // Setup the radio frequency + Radio.SetChannel( Channels[txConfig->Channel].Frequency ); + + Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + + // Setup maximum payload lenght of the radio driver + Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); + // Get the time-on-air of the next tx frame + *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); + + *txPower = txConfig->TxPower; + return true; +} + +uint8_t RegionKR920LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) +{ + uint8_t status = 0x07; + LinkAdrParams_t linkAdrParams; + uint8_t nextIndex = 0; + uint8_t bytesProcessed = 0; + uint16_t chMask = 0; + + while( bytesProcessed < linkAdrReq->PayloadSize ) + { + // Get ADR request parameters + nextIndex = RegionCommonParseLinkAdrReq( &( linkAdrReq->Payload[bytesProcessed] ), &linkAdrParams ); + + if( nextIndex == 0 ) + break; // break loop, since no more request has been found + + // Update bytes processed + bytesProcessed += nextIndex; + + // Revert status, as we only check the last ADR request for the channel mask KO + status = 0x07; + + // Setup temporary channels mask + chMask = linkAdrParams.ChMask; + + // Verify channels mask + if( ( linkAdrParams.ChMaskCtrl == 0 ) && ( chMask == 0 ) ) + { + status &= 0xFE; // Channel mask KO + } + else if( ( ( linkAdrParams.ChMaskCtrl >= 1 ) && ( linkAdrParams.ChMaskCtrl <= 5 )) || + ( linkAdrParams.ChMaskCtrl >= 7 ) ) + { + // RFU + status &= 0xFE; // Channel mask KO + } + else + { + for( uint8_t i = 0; i < KR920_MAX_NB_CHANNELS; i++ ) + { + if( linkAdrParams.ChMaskCtrl == 6 ) + { + if( Channels[i].Frequency != 0 ) + { + chMask |= 1 << i; + } + } + else + { + if( ( ( chMask & ( 1 << i ) ) != 0 ) && + ( Channels[i].Frequency == 0 ) ) + {// Trying to enable an undefined channel + status &= 0xFE; // Channel mask KO + } + } + } + } + } + + // Verify datarate + if( RegionCommonChanVerifyDr( KR920_MAX_NB_CHANNELS, &chMask, linkAdrParams.Datarate, KR920_TX_MIN_DATARATE, KR920_TX_MAX_DATARATE, Channels ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify tx power + if( RegionCommonValueInRange( linkAdrParams.TxPower, KR920_MAX_TX_POWER, KR920_MIN_TX_POWER ) == 0 ) + { + // Verify if the maximum TX power is exceeded + if( KR920_MAX_TX_POWER > linkAdrParams.TxPower ) + { // Apply maximum TX power. Accept TX power. + linkAdrParams.TxPower = KR920_MAX_TX_POWER; + } + else + { + status &= 0xFB; // TxPower KO + } + } + + // Update channelsMask if everything is correct + if( status == 0x07 ) + { + if( linkAdrParams.NbRep == 0 ) + { // Value of 0 is not allowed, revert to default. + linkAdrParams.NbRep = 1; + } + + // Set the channels mask to a default value + memset( ChannelsMask, 0, sizeof( ChannelsMask ) ); + // Update the channels mask + ChannelsMask[0] = chMask; + } + + // Update status variables + *drOut = linkAdrParams.Datarate; + *txPowOut = linkAdrParams.TxPower; + *nbRepOut = linkAdrParams.NbRep; + *nbBytesParsed = bytesProcessed; + + return status; +} + +uint8_t RegionKR920RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) +{ + uint8_t status = 0x07; + + // Verify radio frequency + if( Radio.CheckRfFrequency( rxParamSetupReq->Frequency ) == false ) + { + status &= 0xFE; // Channel frequency KO + } + + // Verify datarate + if( RegionCommonValueInRange( rxParamSetupReq->Datarate, KR920_RX_MIN_DATARATE, KR920_RX_MAX_DATARATE ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify datarate offset + if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, KR920_MIN_RX1_DR_OFFSET, KR920_MAX_RX1_DR_OFFSET ) == false ) + { + status &= 0xFB; // Rx1DrOffset range KO + } + + return status; +} + +uint8_t RegionKR920NewChannelReq( NewChannelReqParams_t* newChannelReq ) +{ + uint8_t status = 0x03; + ChannelAddParams_t channelAdd; + ChannelRemoveParams_t channelRemove; + + if( newChannelReq->NewChannel->Frequency == 0 ) + { + channelRemove.ChannelId = newChannelReq->ChannelId; + + // Remove + if( RegionKR920ChannelsRemove( &channelRemove ) == false ) + { + status &= 0xFC; + } + } + else + { + channelAdd.NewChannel = newChannelReq->NewChannel; + channelAdd.ChannelId = newChannelReq->ChannelId; + + switch( RegionKR920ChannelAdd( &channelAdd ) ) + { + case LORAMAC_STATUS_OK: + { + break; + } + case LORAMAC_STATUS_FREQUENCY_INVALID: + { + status &= 0xFE; + break; + } + case LORAMAC_STATUS_DATARATE_INVALID: + { + status &= 0xFD; + break; + } + case LORAMAC_STATUS_FREQ_AND_DR_INVALID: + { + status &= 0xFC; + break; + } + default: + { + status &= 0xFC; + break; + } + } + } + + return status; +} + +int8_t RegionKR920TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ) +{ + return -1; +} + +uint8_t RegionKR920DlChannelReq( DlChannelReqParams_t* dlChannelReq ) +{ + uint8_t status = 0x03; + + // Verify if the frequency is supported + if( VerifyTxFreq( dlChannelReq->Rx1Frequency ) == false ) + { + status &= 0xFE; + } + + // Verify if an uplink frequency exists + if( Channels[dlChannelReq->ChannelId].Frequency == 0 ) + { + status &= 0xFD; + } + + // Apply Rx1 frequency, if the status is OK + if( status == 0x03 ) + { + Channels[dlChannelReq->ChannelId].Rx1Frequency = dlChannelReq->Rx1Frequency; + } + + return status; +} + +int8_t RegionKR920AlternateDr( AlternateDrParams_t* alternateDr ) +{ + int8_t datarate = 0; + + if( ( alternateDr->NbTrials % 48 ) == 0 ) + { + datarate = DR_0; + } + else if( ( alternateDr->NbTrials % 32 ) == 0 ) + { + datarate = DR_1; + } + else if( ( alternateDr->NbTrials % 24 ) == 0 ) + { + datarate = DR_2; + } + else if( ( alternateDr->NbTrials % 16 ) == 0 ) + { + datarate = DR_3; + } + else if( ( alternateDr->NbTrials % 8 ) == 0 ) + { + datarate = DR_4; + } + else + { + datarate = DR_5; + } + return datarate; +} + +void RegionKR920CalcBackOff( CalcBackOffParams_t* calcBackOff ) +{ + uint8_t channel = calcBackOff->Channel; + uint16_t dutyCycle = Bands[Channels[channel].Band].DCycle; + uint16_t joinDutyCycle = 0; + + // Reset time-off to initial value. + Bands[Channels[channel].Band].TimeOff = 0; + + if( calcBackOff->Joined == false ) + { + // Get the join duty cycle + joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); + // Apply the most restricting duty cycle + dutyCycle = MAX( dutyCycle, joinDutyCycle ); + // Apply band time-off. + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; + } + else + { + if( calcBackOff->DutyCycleEnabled == true ) + { + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; + } + } +} + +bool RegionKR920NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +{ + uint8_t channelNext = 0; + uint8_t nbEnabledChannels = 0; + uint8_t delayTx = 0; + uint8_t enabledChannels[KR920_MAX_NB_CHANNELS] = { 0 }; + TimerTime_t nextTxDelay = 0; + TimerTime_t carrierSenseTime = 0; + bool channelFree = false; + + if( RegionCommonCountChannels( ChannelsMask, 0, 1 ) == 0 ) + { // Reactivate default channels + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + } + + if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) + { + // Update bands Time OFF + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, KR920_MAX_NB_BANDS ); + + // Search how many channels are enabled + nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Joined, nextChanParams->Datarate, + ChannelsMask, Channels, + Bands, enabledChannels, &delayTx ); + } + else + { + delayTx++; + nextTxDelay = nextChanParams->AggrTimeOff - TimerGetElapsedTime( nextChanParams->LastAggrTx ); + } + + if( nbEnabledChannels > 0 ) + { + for( uint8_t i = 0, j = randr( 0, nbEnabledChannels - 1 ); i < KR920_MAX_NB_CHANNELS; i++ ) + { + channelNext = enabledChannels[j]; + j = ( j + 1 ) % nbEnabledChannels; + + carrierSenseTime = TimerGetCurrentTime( ); + channelFree = true; + + // Perform carrier sense for 6ms + while( TimerGetElapsedTime( carrierSenseTime ) < KR920_CARRIER_SENSE_TIME ) + { + if( Radio.IsChannelFree( MODEM_LORA, Channels[channelNext].Frequency, KR920_RSSI_FREE_TH ) == false ) + { + channelFree = false; + break; + } + } + + // If the channel is free, we can stop the LBT mechanism + if( channelFree == true ) + { + // Free channel found + *channel = channelNext; + *time = 0; + return true; + } + } + return false; + } + else + { + if( delayTx > 0 ) + { + // Delay transmission due to AggregatedTimeOff or to a band time off + *time = nextTxDelay; + return true; + } + // Datarate not supported by any channel, restore defaults + ChannelsMask[0] |= LC( 1 ) + LC( 2 ) + LC( 3 ); + *time = 0; + return false; + } +} + +LoRaMacStatus_t RegionKR920ChannelAdd( ChannelAddParams_t* channelAdd ) +{ + uint8_t band = 0; + bool drInvalid = false; + bool freqInvalid = false; + uint8_t id = channelAdd->ChannelId; + + if( id >= KR920_MAX_NB_CHANNELS ) + { + return LORAMAC_STATUS_PARAMETER_INVALID; + } + + // Validate the datarate range + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Min, KR920_TX_MIN_DATARATE, KR920_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + if( RegionCommonValueInRange( channelAdd->NewChannel->DrRange.Fields.Max, KR920_TX_MIN_DATARATE, KR920_TX_MAX_DATARATE ) == false ) + { + drInvalid = true; + } + if( channelAdd->NewChannel->DrRange.Fields.Min > channelAdd->NewChannel->DrRange.Fields.Max ) + { + drInvalid = true; + } + + // Default channels don't accept all values + if( id < KR920_NUMB_DEFAULT_CHANNELS ) + { + // All datarates are supported + // We are not allowed to change the frequency + if( channelAdd->NewChannel->Frequency != Channels[id].Frequency ) + { + freqInvalid = true; + } + } + + // Check frequency + if( freqInvalid == false ) + { + if( VerifyTxFreq( channelAdd->NewChannel->Frequency ) == false ) + { + freqInvalid = true; + } + } + + // Check status + if( ( drInvalid == true ) && ( freqInvalid == true ) ) + { + return LORAMAC_STATUS_FREQ_AND_DR_INVALID; + } + if( drInvalid == true ) + { + return LORAMAC_STATUS_DATARATE_INVALID; + } + if( freqInvalid == true ) + { + return LORAMAC_STATUS_FREQUENCY_INVALID; + } + + memcpy( &(Channels[id]), channelAdd->NewChannel, sizeof( Channels[id] ) ); + Channels[id].Band = band; + ChannelsMask[0] |= ( 1 << id ); + return LORAMAC_STATUS_OK; +} + +bool RegionKR920ChannelsRemove( ChannelRemoveParams_t* channelRemove ) +{ + uint8_t id = channelRemove->ChannelId; + + if( id < KR920_NUMB_DEFAULT_CHANNELS ) + { + return false; + } + + // Remove the channel from the list of channels + Channels[id] = ( ChannelParams_t ){ 0, 0, { 0 }, 0 }; + + return RegionCommonChanDisable( ChannelsMask, id, KR920_MAX_NB_CHANNELS ); +} + +void RegionKR920SetContinuousWave( ContinuousWaveParams_t* continuousWave ) +{ + int8_t txPowerLimited = LimitTxPower( continuousWave->TxPower, Bands[Channels[continuousWave->Channel].Band].TxMaxPower, continuousWave->Datarate, ChannelsMask ); + int8_t phyTxPower = 0; + uint32_t frequency = Channels[continuousWave->Channel].Frequency; + + phyTxPower = TxPowersKR920[txPowerLimited]; + + Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); +} diff --git a/src/mac/region/RegionKR920.h b/src/mac/region/RegionKR920.h new file mode 100644 index 000000000..7cad3927e --- /dev/null +++ b/src/mac/region/RegionKR920.h @@ -0,0 +1,424 @@ +/*! + * \file RegionKR920.h + * + * \brief Region definition for KR920 + * + * \copyright Revised BSD License, see section \ref LICENSE. + * + * \code + * ______ _ + * / _____) _ | | + * ( (____ _____ ____ _| |_ _____ ____| |__ + * \____ \| ___ | (_ _) ___ |/ ___) _ \ + * _____) ) ____| | | || |_| ____( (___| | | | + * (______/|_____)_|_|_| \__)_____)\____)_| |_| + * (C)2013 Semtech + * + * ___ _____ _ ___ _ _____ ___ ___ ___ ___ + * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| + * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| + * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| + * embedded.connectivity.solutions=============== + * + * \endcode + * + * \author Miguel Luis ( Semtech ) + * + * \author Gregory Cristian ( Semtech ) + * + * \author Daniel Jaeckle ( STACKFORCE ) + * + * \defgroup REGIONKR920 Region KR920 + * Implementation according to LoRaWAN Specification v1.0.2. + * \{ + */ +#ifndef __REGION_KR920_H__ +#define __REGION_KR920_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define KR920_MAX_NB_CHANNELS 16 + +/*! + * Number of default channels + */ +#define KR920_NUMB_DEFAULT_CHANNELS 3 + +/*! + * Minimal datarate that can be used by the node + */ +#define KR920_TX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define KR920_TX_MAX_DATARATE DR_5 + +/*! + * Minimal datarate that can be used by the node + */ +#define KR920_RX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define KR920_RX_MAX_DATARATE DR_5 + +/*! + * Default datarate used by the node + */ +#define KR920_DEFAULT_DATARATE DR_0 + +/*! + * Minimal Rx1 receive datarate offset + */ +#define KR920_MIN_RX1_DR_OFFSET 0 + +/*! + * Maximal Rx1 receive datarate offset + */ +#define KR920_MAX_RX1_DR_OFFSET 5 + +/*! + * Default Rx1 receive datarate offset + */ +#define KR920_DEFAULT_RX1_DR_OFFSET 0 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define KR920_MIN_TX_POWER TX_POWER_6 + +/*! + * Maximal Tx output power that can be used by the node + */ +#define KR920_MAX_TX_POWER TX_POWER_0 + +/*! + * Default Tx output power used by the node + */ +#define KR920_DEFAULT_TX_POWER TX_POWER_1 + +/*! + * ADR Ack limit + */ +#define KR920_ADR_ACK_LIMIT 64 + +/*! + * ADR Ack delay + */ +#define KR920_ADR_ACK_DELAY 32 + +/*! + * Enabled or disabled the duty cycle + */ +#define KR920_DUTY_CYCLE_ENABLED 0 + +/*! + * Maximum RX window duration + */ +#define KR920_MAX_RX_WINDOW 3000 + +/*! + * Receive delay 1 + */ +#define KR920_RECEIVE_DELAY1 1000 + +/*! + * Receive delay 2 + */ +#define KR920_RECEIVE_DELAY2 2000 + +/*! + * Join accept delay 1 + */ +#define KR920_JOIN_ACCEPT_DELAY1 5000 + +/*! + * Join accept delay 2 + */ +#define KR920_JOIN_ACCEPT_DELAY2 6000 + +/*! + * Maximum frame counter gap + */ +#define KR920_MAX_FCNT_GAP 16384 + +/*! + * Ack timeout + */ +#define KR920_ACKTIMEOUT 2000 + +/*! + * Random ack timeout limits + */ +#define KR920_ACK_TIMEOUT_RND 1000 + +#if ( KR920_DEFAULT_DATARATE > DR_5 ) +#error "A default DR higher than DR_5 may lead to connectivity loss." +#endif + +/*! + * Second reception window channel frequency definition. + */ +#define KR920_RX_WND_2_FREQ 921900000 + +/*! + * Second reception window channel datarate definition. + */ +#define KR920_RX_WND_2_DR DR_0 + +/*! + * Maximum number of bands + */ +#define KR920_MAX_NB_BANDS 1 + +/*! + * Band 0 definition + * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define KR920_BAND0 { 1 , KR920_DEFAULT_TX_POWER, 0, 0 } // 100.0 % + +/*! + * LoRaMac default channel 1 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define KR920_LC1 { 922100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } + +/*! + * LoRaMac default channel 2 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define KR920_LC2 { 922300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } + +/*! + * LoRaMac default channel 3 + * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } + */ +#define KR920_LC3 { 922500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } + +/*! + * LoRaMac channels which are allowed for the join procedure + */ +#define KR920_JOIN_CHANNELS ( uint16_t )( LC( 1 ) | LC( 2 ) | LC( 3 ) ) + +/*! + * RSSI threshold for a free channel [dBm] + */ +#define KR920_RSSI_FREE_TH -65 + +/*! + * Specifies the time the node performs a carrier sense + */ +#define KR920_CARRIER_SENSE_TIME 6 + +/*! + * Data rates table definition + */ +static const uint8_t DataratesKR920[] = { 12, 11, 10, 9, 8, 7 }; + +/*! + * Maximum payload with respect to the datarate index. Can operate with and without a repeater. + */ +static const uint8_t MaxPayloadOfDatarateKR920[] = { 65, 151, 242, 242, 242, 242 }; + +/*! + * Tx output powers table definition + */ +static const int8_t TxPowersKR920[] = { 20, 14, 10, 8, 5, 2, 0 }; + + + + +/*! + * \brief The function gets a value of a specific phy attribute. + * + * \param [IN] getPhy Pointer to the function parameters. + */ +void RegionKR920GetPhyParam( GetPhyParams_t* getPhy ); + +/*! + * \brief Updates the last TX done parameters of the current channel. + * + * \param [IN] txDone Pointer to the function parameters. + */ +void RegionKR920SetBandTxDone( SetBandTxDoneParams_t* txDone ); + +/*! + * \brief Initializes the channels masks and the channels. + * + * \param [IN] type Sets the initialization type. + */ +void RegionKR920InitDefaults( InitType_t type ); + +/*! + * \brief Verifies a parameter. + * + * \param [IN] verify Pointer to the function parameters. + * + * \param [IN] type Sets the initialization type. + * + * \retval Returns true, if the parameter is valid. + */ +bool RegionKR920Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ); + +/*! + * \brief The function parses the input buffer and sets up the channels of the + * CF list. + * + * \param [IN] applyCFList Pointer to the function parameters. + */ +void RegionKR920ApplyCFList( ApplyCFListParams_t* applyCFList ); + +/*! + * \brief Sets a channels mask. + * + * \param [IN] chanMaskSet Pointer to the function parameters. + * + * \retval Returns true, if the channels mask could be set. + */ +bool RegionKR920ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); + +/*! + * \brief Calculates the next datarate to set, when ADR is on or off. + * + * \param [IN] adrNext Pointer to the function parameters. + * + * \param [OUT] drOut The calculated datarate for the next TX. + * + * \param [OUT] txPowOut The TX power for the next TX. + * + * \param [OUT] adrAckCounter The calculated ADR acknowledgement counter. + * + * \retval Returns true, if an ADR request should be performed. + */ +bool RegionKR920AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); + +/*! + * \brief Configuration of the RX windows. + * + * \param [IN] rxConfig Pointer to the function parameters. + * + * \param [OUT] datarate The datarate index which was set. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionKR920RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ); + +/*! + * \brief TX configuration. + * + * \param [IN] txConfig Pointer to the function parameters. + * + * \param [OUT] txPower The tx power index which was set. + * + * \param [OUT] txTimeOnAir The time-on-air of the frame. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionKR920TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ); + +/*! + * \brief The function processes a Link ADR Request. + * + * \param [IN] linkAdrReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionKR920LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ); + +/*! + * \brief The function processes a RX Parameter Setup Request. + * + * \param [IN] rxParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionKR920RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ); + +/*! + * \brief The function processes a Channel Request. + * + * \param [IN] newChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionKR920NewChannelReq( NewChannelReqParams_t* newChannelReq ); + +/*! + * \brief The function processes a TX ParamSetup Request. + * + * \param [IN] txParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + * Returns -1, if the functionality is not implemented. In this case, the end node + * shall not process the command. + */ +int8_t RegionKR920TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ); + +/*! + * \brief The function processes a DlChannel Request. + * + * \param [IN] dlChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionKR920DlChannelReq( DlChannelReqParams_t* dlChannelReq ); + +/* + * \brief Alternates the datarate of the channel for the join request. + * + * \param [IN] alternateDr Pointer to the function parameters. + * + * \retval Datarate to apply. + */ +int8_t RegionKR920AlternateDr( AlternateDrParams_t* alternateDr ); + +/*! + * \brief Calculates the back-off time. + * + * \param [IN] calcBackOff Pointer to the function parameters. + */ +void RegionKR920CalcBackOff( CalcBackOffParams_t* calcBackOff ); + +/*! + * \brief Searches and set the next random available channel + * + * \param [OUT] channel Next channel to use for TX. + * + * \param [OUT] time Time to wait for the next transmission according to the duty + * cycle. + * + * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] + */ +bool RegionKR920NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); + +/*! + * \brief Adds a channel. + * + * \param [IN] channelAdd Pointer to the function parameters. + * + * \retval Status of the operation. + */ +LoRaMacStatus_t RegionKR920ChannelAdd( ChannelAddParams_t* channelAdd ); + +/*! + * \brief Removes a channel. + * + * \param [IN] channelRemove Pointer to the function parameters. + * + * \retval Returns true, if the channel was removed successfully. + */ +bool RegionKR920ChannelsRemove( ChannelRemoveParams_t* channelRemove ); + +/*! + * \brief Sets the radio into continuous wave mode. + * + * \param [IN] continuousWave Pointer to the function parameters. + */ +void RegionKR920SetContinuousWave( ContinuousWaveParams_t* continuousWave ); + +/*! \} defgroup REGIONKR920 */ + +#endif // __REGION_KR920_H__ diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c new file mode 100644 index 000000000..92795c135 --- /dev/null +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -0,0 +1,944 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + ___ _____ _ ___ _ _____ ___ ___ ___ ___ +/ __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| +\__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| +|___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| +embedded.connectivity.solutions=============== + +Description: LoRa MAC region US915 Hybrid implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) +*/ +#include +#include +#include + +#include "radio.h" +#include "timer.h" +#include "LoRaMac.h" + +#include "utilities.h" + +#include "Region.h" +#include "RegionCommon.h" +#include "RegionUS915-Hybrid.h" + + + +// Definitions +#define CHANNELS_MASK_SIZE 6 + + + +// Global attributes +/*! + * LoRaMAC channels + */ +static ChannelParams_t Channels[US915_HYBRID_MAX_NB_CHANNELS]; + +/*! + * LoRaMac bands + */ +static Band_t Bands[US915_HYBRID_MAX_NB_BANDS] = +{ + US915_HYBRID_BAND0 +}; + +/*! + * LoRaMac channels mask + */ +static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; + +/*! + * LoRaMac channels remaining + */ +static uint16_t ChannelsMaskRemaining[CHANNELS_MASK_SIZE]; + +/*! + * LoRaMac channels default mask + */ +static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; + + + +// Static functions +static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) +{ + int8_t datarate = DatarateOffsetsUS915_HYBRID[dr][drOffset]; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} + +static uint16_t GetSymbTimeout( int8_t dr ) +{ + uint16_t symbolTimeout = 5; + + switch( dr ) + { + case DR_0: // SF10 - BW125 + { + symbolTimeout = 5; + break; + } + case DR_1: // SF9 - BW125 + case DR_2: // SF8 - BW125 + case DR_8: // SF12 - BW500 + case DR_9: // SF11 - BW500 + case DR_10: // SF10 - BW500 + { + symbolTimeout = 8; + break; + } + case DR_3: // SF7 - BW125 + case DR_11: // SF9 - BW500 + { + symbolTimeout = 10; + break; + } + case DR_4: // SF8 - BW500 + case DR_12: // SF8 - BW500 + { + symbolTimeout = 14; + break; + } + case DR_13: // SF7 - BW500 + { + symbolTimeout = 16; + break; + } + } + return symbolTimeout; +} + +static uint32_t GetBandwidth( int8_t dr ) +{ + uint32_t bandwidth = 0; + + if( dr > DR_4 ) + { // LoRa 500 kHz + bandwidth = 2; + } + return bandwidth; +} + +static void ReenableChannels( uint16_t mask, uint16_t* channelsMask ) +{ + uint16_t blockMask = mask; + + for( uint8_t i = 0, j = 0; i < 4; i++, j += 2 ) + { + channelsMask[i] = 0; + if( ( blockMask & ( 1 << j ) ) != 0 ) + { + channelsMask[i] |= 0x00FF; + } + if( ( blockMask & ( 1 << ( j + 1 ) ) ) != 0 ) + { + channelsMask[i] |= 0xFF00; + } + } + channelsMask[4] = blockMask; + channelsMask[5] = 0x0000; +} + +static uint8_t CountBits( uint16_t mask, uint8_t nbBits ) +{ + uint8_t nbActiveBits = 0; + + for( uint8_t j = 0; j < nbBits; j++ ) + { + if( ( mask & ( 1 << j ) ) == ( 1 << j ) ) + { + nbActiveBits++; + } + } + return nbActiveBits; +} + +static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) +{ + int8_t txPowerResult = txPower; + + // Limit tx power to the band max + txPowerResult = MAX( txPower, maxBandTxPower ); + + if( ( datarate == DR_4 ) || ( ( datarate >= DR_8 ) && ( datarate <= DR_13 ) ) ) + {// Limit tx power to max 26dBm + txPowerResult = MAX( txPower, TX_POWER_2 ); + } + else + { + if( RegionCommonCountChannels( channelsMask, 0, 4 ) < 50 ) + {// Limit tx power to max 21dBm + txPowerResult = MAX( txPower, TX_POWER_5 ); + } + } + return txPowerResult; +} + +static bool ValidateChannelsMask( uint16_t* channelsMask ) +{ + bool chanMaskState = false; + uint16_t block1 = 0; + uint16_t block2 = 0; + uint8_t index = 0; + uint16_t channelsMaskCpy[6]; + + // Copy channels mask to not change the input + for( uint8_t i = 0; i < 4; i++ ) + { + channelsMaskCpy[i] = channelsMask[i]; + } + + for( uint8_t i = 0; i < 4; i++ ) + { + block1 = channelsMaskCpy[i] & 0x00FF; + block2 = channelsMaskCpy[i] & 0xFF00; + + if( CountBits( block1, 16 ) > 5 ) + { + channelsMaskCpy[i] &= block1; + channelsMaskCpy[4] = 1 << ( i * 2 ); + chanMaskState = true; + index = i; + break; + } + else if( CountBits( block2, 16 ) > 5 ) + { + channelsMaskCpy[i] &= block2; + channelsMaskCpy[4] = 1 << ( i * 2 + 1 ); + chanMaskState = true; + index = i; + break; + } + } + + // Do only change the channel mask, if we have found a valid block. + if( chanMaskState == true ) + { + // Copy channels mask back again + for( uint8_t i = 0; i < 4; i++ ) + { + channelsMask[i] = channelsMaskCpy[i]; + + if( i != index ) + { + channelsMask[i] = 0; + } + } + channelsMask[4] = channelsMaskCpy[4]; + } + return chanMaskState; +} + +static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMask, ChannelParams_t* channels, Band_t* bands, uint8_t* enabledChannels, uint8_t* delayTx ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTransmission = 0; + + for( uint8_t i = 0, k = 0; i < US915_HYBRID_MAX_NB_CHANNELS; i += 16, k++ ) + { + for( uint8_t j = 0; j < 16; j++ ) + { + if( ( channelsMask[k] & ( 1 << j ) ) != 0 ) + { + if( channels[i + j].Frequency == 0 ) + { // Check if the channel is enabled + continue; + } + if( RegionCommonValueInRange( datarate, channels[i + j].DrRange.Fields.Min, + channels[i + j].DrRange.Fields.Max ) == false ) + { // Check if the current channel selection supports the given datarate + continue; + } + if( bands[channels[i + j].Band].TimeOff > 0 ) + { // Check if the band is available for transmission + delayTransmission++; + continue; + } + enabledChannels[nbEnabledChannels++] = i + j; + } + } + } + + *delayTx = delayTransmission; + return nbEnabledChannels; +} + + +void RegionUS915HybridGetPhyParam( GetPhyParams_t* getPhy ) +{ + switch( getPhy->Attribute ) + { + case PHY_MIN_DR: + { + getPhy->Param.Value = US915_HYBRID_TX_MIN_DATARATE; + break; + } + case PHY_DEF_TX_DR: + { + getPhy->Param.Value = US915_HYBRID_DEFAULT_DATARATE; + break; + } + case PHY_DEF_TX_POWER: + { + getPhy->Param.Value = US915_HYBRID_DEFAULT_TX_POWER; + break; + } + case PHY_MAX_PAYLOAD: + { + getPhy->Param.Value = MaxPayloadOfDatarateUS915_HYBRID[getPhy->Datarate]; + break; + } + case PHY_MAX_PAYLOAD_REPEATER: + { + getPhy->Param.Value = MaxPayloadOfDatarateRepeaterUS915_HYBRID[getPhy->Datarate]; + break; + } + case PHY_DUTY_CYCLE: + { + getPhy->Param.Value = US915_HYBRID_DUTY_CYCLE_ENABLED; + break; + } + case PHY_MAX_RX_WINDOW: + { + getPhy->Param.Value = US915_HYBRID_MAX_RX_WINDOW; + break; + } + case PHY_RECEIVE_DELAY1: + { + getPhy->Param.Value = US915_HYBRID_RECEIVE_DELAY1; + break; + } + case PHY_RECEIVE_DELAY2: + { + getPhy->Param.Value = US915_HYBRID_RECEIVE_DELAY2; + break; + } + case PHY_JOIN_ACCEPT_DELAY1: + { + getPhy->Param.Value = US915_HYBRID_JOIN_ACCEPT_DELAY1; + break; + } + case PHY_JOIN_ACCEPT_DELAY2: + { + getPhy->Param.Value = US915_HYBRID_JOIN_ACCEPT_DELAY2; + break; + } + case PHY_MAX_FCNT_GAP: + { + getPhy->Param.Value = US915_HYBRID_MAX_FCNT_GAP; + break; + } + case PHY_ACK_TIMEOUT: + { + getPhy->Param.Value = ( US915_HYBRID_ACKTIMEOUT + randr( -US915_HYBRID_ACK_TIMEOUT_RND, US915_HYBRID_ACK_TIMEOUT_RND ) ); + break; + } + case PHY_DEF_DR1_OFFSET: + { + getPhy->Param.Value = US915_HYBRID_DEFAULT_RX1_DR_OFFSET; + break; + } + case PHY_DEF_RX2_FREQUENCY: + { + getPhy->Param.Value = US915_HYBRID_RX_WND_2_FREQ; + break; + } + case PHY_DEF_RX2_DR: + { + getPhy->Param.Value = US915_HYBRID_RX_WND_2_DR; + break; + } + case PHY_CHANNELS_MASK: + { + getPhy->Param.ChannelsMask = ChannelsMask; + break; + } + case PHY_CHANNELS_DEFAULT_MASK: + { + getPhy->Param.ChannelsMask = ChannelsDefaultMask; + break; + } + case PHY_MAX_NB_CHANNELS: + { + getPhy->Param.Value = US915_HYBRID_MAX_NB_CHANNELS; + break; + } + case PHY_CHANNELS: + { + getPhy->Param.Channels = Channels; + break; + } + case PHY_DEF_UPLINK_DWELL_TIME: + case PHY_DEF_DOWNLINK_DWELL_TIME: + case PHY_DEF_MAX_EIRP: + { + getPhy->Param.Value = 0; + break; + } + case PHY_NB_JOIN_TRIALS: + case PHY_DEF_NB_JOIN_TRIALS: + { + getPhy->Param.Value = 2; + break; + } + default: + { + return; + } + } +} + +void RegionUS915HybridSetBandTxDone( SetBandTxDoneParams_t* txDone ) +{ + RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); +} + +void RegionUS915HybridInitDefaults( InitType_t type ) +{ + switch( type ) + { + case INIT_TYPE_INIT: + { + // Channels + // 125 kHz channels + for( uint8_t i = 0; i < US915_HYBRID_MAX_NB_CHANNELS - 8; i++ ) + { + Channels[i].Frequency = 902.3e6 + i * 200e3; + Channels[i].DrRange.Value = ( DR_3 << 4 ) | DR_0; + Channels[i].Band = 0; + } + // 500 kHz channels + for( uint8_t i = US915_HYBRID_MAX_NB_CHANNELS - 8; i < US915_HYBRID_MAX_NB_CHANNELS; i++ ) + { + Channels[i].Frequency = 903.0e6 + ( i - ( US915_HYBRID_MAX_NB_CHANNELS - 8 ) ) * 1.6e6; + Channels[i].DrRange.Value = ( DR_4 << 4 ) | DR_4; + Channels[i].Band = 0; + } + + // ChannelsMask + ChannelsDefaultMask[0] = 0x00FF; + ChannelsDefaultMask[1] = 0x0000; + ChannelsDefaultMask[2] = 0x0000; + ChannelsDefaultMask[3] = 0x0000; + ChannelsDefaultMask[4] = 0x0001; + ChannelsDefaultMask[5] = 0x0000; + + // Copy channels default mask + RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 6 ); + + // Copy into channels mask remaining + RegionCommonChanMaskCopy( ChannelsMaskRemaining, ChannelsMask, 6 ); + break; + } + case INIT_TYPE_RESTORE: + { + ReenableChannels( ChannelsDefaultMask[4], ChannelsMask ); + + for( uint8_t i = 0; i < 6; i++ ) + { // Copy-And the channels mask + ChannelsMaskRemaining[i] &= ChannelsMask[i]; + } + } + default: + { + break; + } + } +} + +bool RegionUS915HybridVerify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) +{ + switch( phyAttribute ) + { + case PHY_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, US915_HYBRID_TX_MIN_DATARATE, US915_HYBRID_TX_MAX_DATARATE ); + } + case PHY_DEF_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + } + case PHY_DEF_TX_POWER: + case PHY_TX_POWER: + { + // Remark: switched min and max! + return RegionCommonValueInRange( verify->TxPower, US915_HYBRID_MAX_TX_POWER, US915_HYBRID_MIN_TX_POWER ); + } + case PHY_DUTY_CYCLE: + { + return US915_HYBRID_DUTY_CYCLE_ENABLED; + } + case PHY_NB_JOIN_TRIALS: + { + if( verify->NbJoinTrials < 2 ) + { + return false; + } + break; + } + default: + return false; + } + return true; +} + +void RegionUS915HybridApplyCFList( ApplyCFListParams_t* applyCFList ) +{ + return; +} + +bool RegionUS915HybridChanMaskSet( ChanMaskSetParams_t* chanMaskSet ) +{ + uint8_t nbChannels = RegionCommonCountChannels( chanMaskSet->ChannelsMaskIn, 0, 4 ); + + // Check the number of active channels + if( ( nbChannels < 2 ) && + ( nbChannels > 0 ) ) + { + return false; + } + + // Validate the channels mask + if( ValidateChannelsMask( chanMaskSet->ChannelsMaskIn ) == false ) + { + return false; + } + + switch( chanMaskSet->ChannelsMaskType ) + { + case CHANNELS_MASK: + { + RegionCommonChanMaskCopy( ChannelsMask, chanMaskSet->ChannelsMaskIn, 6 ); + + for( uint8_t i = 0; i < 6; i++ ) + { // Copy-And the channels mask + ChannelsMaskRemaining[i] &= ChannelsMask[i]; + } + break; + } + case CHANNELS_DEFAULT_MASK: + { + RegionCommonChanMaskCopy( ChannelsDefaultMask, chanMaskSet->ChannelsMaskIn, 6 ); + break; + } + default: + return false; + } + return true; +} + +bool RegionUS915HybridAdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ) +{ + bool adrAckReq = false; + int8_t datarate = adrNext->Datarate; + int8_t txPower = adrNext->TxPower; + + // Report back the adr ack counter + *adrAckCounter = adrNext->AdrAckCounter; + + if( adrNext->AdrEnabled == true ) + { + if( datarate == US915_HYBRID_TX_MIN_DATARATE ) + { + *adrAckCounter = 0; + adrAckReq = false; + } + else + { + if( adrNext->AdrAckCounter >= US915_HYBRID_ADR_ACK_LIMIT ) + { + adrAckReq = true; + txPower = US915_HYBRID_MAX_TX_POWER; + } + else + { + adrAckReq = false; + } + if( adrNext->AdrAckCounter >= ( US915_HYBRID_ADR_ACK_LIMIT + US915_HYBRID_ADR_ACK_DELAY ) ) + { + if( ( adrNext->AdrAckCounter % US915_HYBRID_ADR_ACK_DELAY ) == 0 ) + { + if( ( datarate > US915_HYBRID_TX_MIN_DATARATE ) && ( datarate == DR_8 ) ) + { + datarate = DR_4; + } + else if( datarate > US915_HYBRID_TX_MIN_DATARATE ) + { + datarate--; + } + + if( datarate == US915_HYBRID_TX_MIN_DATARATE ) + { + if( adrNext->UpdateChanMask == true ) + { + // Re-enable default channels + ReenableChannels( ChannelsMask[4], ChannelsMask ); + } + } + } + } + } + } + + *drOut = datarate; + *txPowOut = txPower; + return adrAckReq; +} + +bool RegionUS915HybridRxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) +{ + int8_t dr = rxConfig->Datarate; + uint8_t maxPayload = 0; + uint16_t symbTimeout = 0; + uint32_t bandwidth = 0; + int8_t phyDr = 0; + uint32_t frequency = rxConfig->Frequency; + + if( Radio.GetStatus( ) != RF_IDLE ) + { + return false; + } + + if( rxConfig->Window == 0 ) + { + // Apply the datarate offset for RX window 1 + dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + // Apply window 1 frequency + frequency = US915_HYBRID_FIRST_RX1_CHANNEL + ( rxConfig->Channel % 8 ) * US915_HYBRID_STEPWIDTH_RX1_CHANNEL; + } + symbTimeout = GetSymbTimeout( dr ); + bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table + phyDr = DataratesUS915_HYBRID[dr]; + + Radio.SetChannel( frequency ); + + Radio.SetRxConfig( MODEM_LORA, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + + if( rxConfig->RepeaterSupport == true ) + { + maxPayload = MaxPayloadOfDatarateRepeaterUS915_HYBRID[dr]; + } + else + { + maxPayload = MaxPayloadOfDatarateUS915_HYBRID[dr]; + } + Radio.SetMaxPayloadLength( MODEM_LORA, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); + + *datarate = (uint8_t) dr; + return true; +} + +// ToDo get tx power afterwards +bool RegionUS915HybridTxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) +{ + int8_t phyDr = DataratesUS915_HYBRID[txConfig->Datarate]; + int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band].TxMaxPower, txConfig->Datarate, ChannelsMask ); + uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); + int8_t phyTxPower = 0; + + phyTxPower = TxPowersUS915_HYBRID[txPowerLimited]; + + Radio.SetChannel( Channels[txConfig->Channel].Frequency ); + + Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); + Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + + *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); + *txPower = txPowerLimited; + + return true; +} + +uint8_t RegionUS915HybridLinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) +{ + uint8_t status = 0x07; + LinkAdrParams_t linkAdrParams; + uint8_t nextIndex = 0; + uint8_t bytesProcessed = 0; + uint16_t channelsMask[6] = { 0, 0, 0, 0, 0, 0 }; + + // Initialize local copy of channels mask + RegionCommonChanMaskCopy( channelsMask, ChannelsMask, 6 ); + + while( bytesProcessed < linkAdrReq->PayloadSize ) + { + nextIndex = RegionCommonParseLinkAdrReq( &( linkAdrReq->Payload[bytesProcessed] ), &linkAdrParams ); + + if( nextIndex == 0 ) + break; // break loop, since no more request has been found + + // Update bytes processed + bytesProcessed += nextIndex; + + // Revert status, as we only check the last ADR request for the channel mask KO + status = 0x07; + + if( linkAdrParams.ChMaskCtrl == 6 ) + { + // Enable all 125 kHz channels + channelsMask[0] = 0xFFFF; + channelsMask[1] = 0xFFFF; + channelsMask[2] = 0xFFFF; + channelsMask[3] = 0xFFFF; + // Apply chMask to channels 64 to 71 + channelsMask[4] = linkAdrParams.ChMask; + } + else if( linkAdrParams.ChMaskCtrl == 7 ) + { + // Disable all 125 kHz channels + channelsMask[0] = 0x0000; + channelsMask[1] = 0x0000; + channelsMask[2] = 0x0000; + channelsMask[3] = 0x0000; + // Apply chMask to channels 64 to 71 + channelsMask[4] = linkAdrParams.ChMask; + } + else if( linkAdrParams.ChMaskCtrl == 5 ) + { + // RFU + status &= 0xFE; // Channel mask KO + } + else + { + channelsMask[linkAdrParams.ChMaskCtrl] = linkAdrParams.ChMask; + } + } + + // FCC 15.247 paragraph F mandates to hop on at least 2 125 kHz channels + if( ( linkAdrParams.Datarate < DR_4 ) && ( RegionCommonCountChannels( channelsMask, 0, 4 ) < 2 ) ) + { + status &= 0xFE; // Channel mask KO + } + + if( ValidateChannelsMask( channelsMask ) == false ) + { + status &= 0xFE; // Channel mask KO + } + + // Verify datarate + if( RegionCommonChanVerifyDr( US915_HYBRID_MAX_NB_CHANNELS, channelsMask, linkAdrParams.Datarate, US915_HYBRID_TX_MIN_DATARATE, US915_HYBRID_TX_MAX_DATARATE, Channels ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify tx power + if( RegionCommonValueInRange( linkAdrParams.TxPower, US915_HYBRID_MAX_TX_POWER, US915_HYBRID_MIN_TX_POWER ) == 0 ) + { + // Verify if the maximum TX power is exceeded + if( US915_HYBRID_MAX_TX_POWER > linkAdrParams.TxPower ) + { // Apply maximum TX power. Accept TX power. + linkAdrParams.TxPower = US915_HYBRID_MAX_TX_POWER; + } + else + { + status &= 0xFB; // TxPower KO + } + } + + // Update channelsMask if everything is correct + if( status == 0x07 ) + { + if( linkAdrParams.NbRep == 0 ) + { // Value of 0 is not allowed, revert to default. + linkAdrParams.NbRep = 1; + } + + // Copy Mask + RegionCommonChanMaskCopy( ChannelsMask, channelsMask, 6 ); + + ChannelsMaskRemaining[0] &= ChannelsMask[0]; + ChannelsMaskRemaining[1] &= ChannelsMask[1]; + ChannelsMaskRemaining[2] &= ChannelsMask[2]; + ChannelsMaskRemaining[3] &= ChannelsMask[3]; + ChannelsMaskRemaining[4] = ChannelsMask[4]; + ChannelsMaskRemaining[5] = ChannelsMask[5]; + } + + // Update status variables + *drOut = linkAdrParams.Datarate; + *txPowOut = linkAdrParams.TxPower; + *nbRepOut = linkAdrParams.NbRep; + *nbBytesParsed = bytesProcessed; + + return status; +} + +uint8_t RegionUS915HybridRxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) +{ + uint8_t status = 0x07; + uint32_t freq = rxParamSetupReq->Frequency; + + // Verify radio frequency + if( ( Radio.CheckRfFrequency( freq ) == false ) || + ( freq < US915_HYBRID_FIRST_RX1_CHANNEL ) || + ( freq > US915_HYBRID_LAST_RX1_CHANNEL ) || + ( ( ( freq - ( uint32_t ) US915_HYBRID_FIRST_RX1_CHANNEL ) % ( uint32_t ) US915_HYBRID_STEPWIDTH_RX1_CHANNEL ) != 0 ) ) + { + status &= 0xFE; // Channel frequency KO + } + + // Verify datarate + if( RegionCommonValueInRange( rxParamSetupReq->Datarate, US915_HYBRID_RX_MIN_DATARATE, US915_HYBRID_RX_MAX_DATARATE ) == false ) + { + status &= 0xFD; // Datarate KO + } + if( ( RegionCommonValueInRange( rxParamSetupReq->Datarate, DR_5, DR_7 ) == true ) || + ( rxParamSetupReq->Datarate > DR_13 ) ) + { + status &= 0xFD; // Datarate KO + } + + // Verify datarate offset + if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, US915_HYBRID_MIN_RX1_DR_OFFSET, US915_HYBRID_MAX_RX1_DR_OFFSET ) == false ) + { + status &= 0xFB; // Rx1DrOffset range KO + } + + return status; +} + +uint8_t RegionUS915HybridNewChannelReq( NewChannelReqParams_t* newChannelReq ) +{ + // Datarate and frequency KO + return 0; +} + +int8_t RegionUS915HybridTxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ) +{ + return -1; +} + +uint8_t RegionUS915HybridDlChannelReq( DlChannelReqParams_t* dlChannelReq ) +{ + return 0; +} + +int8_t RegionUS915HybridAlternateDr( AlternateDrParams_t* alternateDr ) +{ + int8_t datarate = 0; + + // Re-enable 500 kHz default channels + ReenableChannels( ChannelsMask[4], ChannelsMask ); + + if( ( alternateDr->NbTrials & 0x01 ) == 0x01 ) + { + datarate = DR_4; + } + else + { + datarate = DR_0; + } + return datarate; +} + +void RegionUS915HybridCalcBackOff( CalcBackOffParams_t* calcBackOff ) +{ + uint8_t channel = calcBackOff->Channel; + uint16_t joinDutyCycle = 0; + + if( calcBackOff->Joined == false ) + { + // Get the join duty cycle + joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); + // Apply band time-off. + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * joinDutyCycle - calcBackOff->TxTimeOnAir; + } + else + { + Bands[Channels[channel].Band].TimeOff = 0; + } +} + +bool RegionUS915HybridNextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTx = 0; + uint8_t enabledChannels[US915_HYBRID_MAX_NB_CHANNELS] = { 0 }; + TimerTime_t nextTxDelay = ( TimerTime_t )( -1 ); + + // Count 125kHz channels + if( RegionCommonCountChannels( ChannelsMaskRemaining, 0, 4 ) == 0 ) + { // Reactivate default channels + RegionCommonChanMaskCopy( ChannelsMaskRemaining, ChannelsMask, 4 ); + } + // Check other channels + if( nextChanParams->Datarate >= DR_4 ) + { + if( ( ChannelsMaskRemaining[4] & 0x00FF ) == 0 ) + { + ChannelsMaskRemaining[4] = ChannelsMask[4]; + } + } + + if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) + { + // Search how many channels are enabled + nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, + ChannelsMask, Channels, + Bands, enabledChannels, &delayTx ); + } + else + { + delayTx++; + nextTxDelay = nextChanParams->AggrTimeOff - TimerGetElapsedTime( nextChanParams->LastAggrTx ); + } + + if( nbEnabledChannels > 0 ) + { + // We found a valid channel + *channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; + // Disable the channel in the mask + RegionCommonChanDisable( ChannelsMaskRemaining, *channel, US915_HYBRID_MAX_NB_CHANNELS - 8 ); + + *time = 0; + return true; + } + else + { + if( delayTx > 0 ) + { + // Delay transmission due to AggregatedTimeOff or to a band time off + *time = nextTxDelay; + return true; + } + // Datarate not supported by any channel + *time = 0; + return false; + } +} + +LoRaMacStatus_t RegionUS915HybridChannelAdd( ChannelAddParams_t* channelAdd ) +{ + return LORAMAC_STATUS_PARAMETER_INVALID; +} + +bool RegionUS915HybridChannelsRemove( ChannelRemoveParams_t* channelRemove ) +{ + return LORAMAC_STATUS_PARAMETER_INVALID; +} + +void RegionUS915HybridSetContinuousWave( ContinuousWaveParams_t* continuousWave ) +{ + int8_t txPowerLimited = LimitTxPower( continuousWave->TxPower, Bands[Channels[continuousWave->Channel].Band].TxMaxPower, continuousWave->Datarate, ChannelsMask ); + int8_t phyTxPower = 0; + uint32_t frequency = Channels[continuousWave->Channel].Frequency; + + phyTxPower = TxPowersUS915_HYBRID[txPowerLimited]; + + Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); +} diff --git a/src/mac/region/RegionUS915-Hybrid.h b/src/mac/region/RegionUS915-Hybrid.h new file mode 100644 index 000000000..7f84f0d19 --- /dev/null +++ b/src/mac/region/RegionUS915-Hybrid.h @@ -0,0 +1,413 @@ +/*! + * \file RegionUS915Hybrid-Hybrid.h + * + * \brief Region definition for US915 + * + * \copyright Revised BSD License, see section \ref LICENSE. + * + * \code + * ______ _ + * / _____) _ | | + * ( (____ _____ ____ _| |_ _____ ____| |__ + * \____ \| ___ | (_ _) ___ |/ ___) _ \ + * _____) ) ____| | | || |_| ____( (___| | | | + * (______/|_____)_|_|_| \__)_____)\____)_| |_| + * (C)2013 Semtech + * + * ___ _____ _ ___ _ _____ ___ ___ ___ ___ + * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| + * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| + * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| + * embedded.connectivity.solutions=============== + * + * \endcode + * + * \author Miguel Luis ( Semtech ) + * + * \author Gregory Cristian ( Semtech ) + * + * \author Daniel Jaeckle ( STACKFORCE ) + * + * \defgroup REGIONUS915HYB Region US915 in hybrid mode + * This is a hybrid implementation for US915, supporting 16 uplink channels only. + * \{ + */ +#ifndef __REGION_US915_HYBRID_H__ +#define __REGION_US915_HYBRID_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define US915_HYBRID_MAX_NB_CHANNELS 72 + +/*! + * Minimal datarate that can be used by the node + */ +#define US915_HYBRID_TX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define US915_HYBRID_TX_MAX_DATARATE DR_4 + +/*! + * Minimal datarate that can be used by the node + */ +#define US915_HYBRID_RX_MIN_DATARATE DR_8 + +/*! + * Maximal datarate that can be used by the node + */ +#define US915_HYBRID_RX_MAX_DATARATE DR_13 + +/*! + * Default datarate used by the node + */ +#define US915_HYBRID_DEFAULT_DATARATE DR_0 + +/*! + * Minimal Rx1 receive datarate offset + */ +#define US915_HYBRID_MIN_RX1_DR_OFFSET 0 + +/*! + * Maximal Rx1 receive datarate offset + */ +#define US915_HYBRID_MAX_RX1_DR_OFFSET 3 + +/*! + * Default Rx1 receive datarate offset + */ +#define US915_HYBRID_DEFAULT_RX1_DR_OFFSET 0 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define US915_HYBRID_MIN_TX_POWER TX_POWER_10 + +/*! + * Maximal Tx output power that can be used by the node + */ +#define US915_HYBRID_MAX_TX_POWER TX_POWER_0 + +/*! + * Default Tx output power used by the node + */ +#define US915_HYBRID_DEFAULT_TX_POWER TX_POWER_5 + +/*! + * ADR Ack limit + */ +#define US915_HYBRID_ADR_ACK_LIMIT 64 + +/*! + * ADR Ack delay + */ +#define US915_HYBRID_ADR_ACK_DELAY 32 + +/*! + * Enabled or disabled the duty cycle + */ +#define US915_HYBRID_DUTY_CYCLE_ENABLED 0 + +/*! + * Maximum RX window duration + */ +#define US915_HYBRID_MAX_RX_WINDOW 3000 + +/*! + * Receive delay 1 + */ +#define US915_HYBRID_RECEIVE_DELAY1 1000 + +/*! + * Receive delay 2 + */ +#define US915_HYBRID_RECEIVE_DELAY2 2000 + +/*! + * Join accept delay 1 + */ +#define US915_HYBRID_JOIN_ACCEPT_DELAY1 5000 + +/*! + * Join accept delay 2 + */ +#define US915_HYBRID_JOIN_ACCEPT_DELAY2 6000 + +/*! + * Maximum frame counter gap + */ +#define US915_HYBRID_MAX_FCNT_GAP 16384 + +/*! + * Ack timeout + */ +#define US915_HYBRID_ACKTIMEOUT 2000 + +/*! + * Random ack timeout limits + */ +#define US915_HYBRID_ACK_TIMEOUT_RND 1000 + +/*! + * Second reception window channel frequency definition. + */ +#define US915_HYBRID_RX_WND_2_FREQ 923300000 + +/*! + * Second reception window channel datarate definition. + */ +#define US915_HYBRID_RX_WND_2_DR DR_8 + +/*! + * LoRaMac maximum number of bands + */ +#define US915_HYBRID_MAX_NB_BANDS 1 + +/*! + * Band 0 definition + * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define US915_HYBRID_BAND0 { 1, US915_HYBRID_DEFAULT_TX_POWER, 0, 0 } // 100.0 % + +/*! + * Defines the first channel for RX window 1 for US band + */ +#define US915_HYBRID_FIRST_RX1_CHANNEL ( (uint32_t) 923.3e6 ) + +/*! + * Defines the last channel for RX window 1 for US band + */ +#define US915_HYBRID_LAST_RX1_CHANNEL ( (uint32_t) 927.5e6 ) + +/*! + * Defines the step width of the channels for RX window 1 + */ +#define US915_HYBRID_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 600e3 ) + +/*! + * Data rates table definition + */ +static const uint8_t DataratesUS915_HYBRID[] = { 10, 9, 8, 7, 8, 0, 0, 0, 12, 11, 10, 9, 8, 7, 0, 0 }; + +/*! + * Up/Down link data rates offset definition + */ +static const int8_t DatarateOffsetsUS915_HYBRID[5][4] = +{ + { DR_10, DR_9 , DR_8 , DR_8 }, // DR_0 + { DR_11, DR_10, DR_9 , DR_8 }, // DR_1 + { DR_12, DR_11, DR_10, DR_9 }, // DR_2 + { DR_13, DR_12, DR_11, DR_10 }, // DR_3 + { DR_13, DR_13, DR_12, DR_11 }, // DR_4 +}; + +/*! + * Maximum payload with respect to the datarate index. Cannot operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateUS915_HYBRID[] = { 11, 53, 125, 242, 242, 0, 0, 0, 53, 129, 242, 242, 242, 242, 0, 0 }; + +/*! + * Maximum payload with respect to the datarate index. Can operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateRepeaterUS915_HYBRID[] = { 11, 53, 125, 242, 242, 0, 0, 0, 33, 109, 222, 222, 222, 222, 0, 0 }; + +/*! + * Tx output powers table definition + */ +static const int8_t TxPowersUS915_HYBRID[] = { 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10 }; + + + +/*! + * \brief The function gets a value of a specific phy attribute. + * + * \param [IN] getPhy Pointer to the function parameters. + */ +void RegionUS915HybridGetPhyParam( GetPhyParams_t* getPhy ); + +/*! + * \brief Updates the last TX done parameters of the current channel. + * + * \param [IN] txDone Pointer to the function parameters. + */ +void RegionUS915HybridSetBandTxDone( SetBandTxDoneParams_t* txDone ); + +/*! + * \brief Initializes the channels masks and the channels. + * + * \param [IN] type Sets the initialization type. + */ +void RegionUS915HybridInitDefaults( InitType_t type ); + +/*! + * \brief Verifies a parameter. + * + * \param [IN] verify Pointer to the function parameters. + * + * \param [IN] type Sets the initialization type. + * + * \retval Returns true, if the parameter is valid. + */ +bool RegionUS915HybridVerify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ); + +/*! + * \brief The function parses the input buffer and sets up the channels of the + * CF list. + * + * \param [IN] applyCFList Pointer to the function parameters. + */ +void RegionUS915HybridApplyCFList( ApplyCFListParams_t* applyCFList ); + +/*! + * \brief Sets a channels mask. + * + * \param [IN] chanMaskSet Pointer to the function parameters. + * + * \retval Returns true, if the channels mask could be set. + */ +bool RegionUS915HybridChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); + +/*! + * \brief Calculates the next datarate to set, when ADR is on or off. + * + * \param [IN] adrNext Pointer to the function parameters. + * + * \param [OUT] drOut The calculated datarate for the next TX. + * + * \param [OUT] txPowOut The TX power for the next TX. + * + * \param [OUT] adrAckCounter The calculated ADR acknowledgement counter. + * + * \retval Returns true, if an ADR request should be performed. + */ +bool RegionUS915HybridAdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); + +/*! + * \brief Configuration of the RX windows. + * + * \param [IN] rxConfig Pointer to the function parameters. + * + * \param [OUT] datarate The datarate index which was set. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionUS915HybridRxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ); + +/*! + * \brief TX configuration. + * + * \param [IN] txConfig Pointer to the function parameters. + * + * \param [OUT] txPower The tx power index which was set. + * + * \param [OUT] txTimeOnAir The time-on-air of the frame. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionUS915HybridTxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ); + +/*! + * \brief The function processes a Link ADR Request. + * + * \param [IN] linkAdrReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionUS915HybridLinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ); + +/*! + * \brief The function processes a RX Parameter Setup Request. + * + * \param [IN] rxParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionUS915HybridRxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ); + +/*! + * \brief The function processes a Channel Request. + * + * \param [IN] newChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionUS915HybridNewChannelReq( NewChannelReqParams_t* newChannelReq ); + +/*! + * \brief The function processes a TX ParamSetup Request. + * + * \param [IN] txParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + * Returns -1, if the functionality is not implemented. In this case, the end node + * shall not process the command. + */ +int8_t RegionUS915HybridTxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ); + +/*! + * \brief The function processes a DlChannel Request. + * + * \param [IN] dlChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionUS915HybridDlChannelReq( DlChannelReqParams_t* dlChannelReq ); + +/* + * \brief Alternates the datarate of the channel for the join request. + * + * \param [IN] alternateDr Pointer to the function parameters. + * + * \retval Datarate to apply. + */ +int8_t RegionUS915HybridAlternateDr( AlternateDrParams_t* alternateDr ); + +/*! + * \brief Calculates the back-off time. + * + * \param [IN] calcBackOff Pointer to the function parameters. + */ +void RegionUS915HybridCalcBackOff( CalcBackOffParams_t* calcBackOff ); + +/*! + * \brief Searches and set the next random available channel + * + * \param [OUT] channel Next channel to use for TX. + * + * \param [OUT] time Time to wait for the next transmission according to the duty + * cycle. + * + * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] + */ +bool RegionUS915HybridNextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); + +/*! + * \brief Adds a channel. + * + * \param [IN] channelAdd Pointer to the function parameters. + * + * \retval Status of the operation. + */ +LoRaMacStatus_t RegionUS915HybridChannelAdd( ChannelAddParams_t* channelAdd ); + +/*! + * \brief Removes a channel. + * + * \param [IN] channelRemove Pointer to the function parameters. + * + * \retval Returns true, if the channel was removed successfully. + */ +bool RegionUS915HybridChannelsRemove( ChannelRemoveParams_t* channelRemove ); + +/*! + * \brief Sets the radio into continuous wave mode. + * + * \param [IN] continuousWave Pointer to the function parameters. + */ +void RegionUS915HybridSetContinuousWave( ContinuousWaveParams_t* continuousWave ); + +/*! \} defgroup REGIONUS915HYB */ + +#endif // __REGION_US915_HYBRID_H__ diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c new file mode 100644 index 000000000..860848cd7 --- /dev/null +++ b/src/mac/region/RegionUS915.c @@ -0,0 +1,850 @@ +/* + / _____) _ | | +( (____ _____ ____ _| |_ _____ ____| |__ + \____ \| ___ | (_ _) ___ |/ ___) _ \ + _____) ) ____| | | || |_| ____( (___| | | | +(______/|_____)_|_|_| \__)_____)\____)_| |_| + (C)2013 Semtech + ___ _____ _ ___ _ _____ ___ ___ ___ ___ +/ __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| +\__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| +|___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| +embedded.connectivity.solutions=============== + +Description: LoRa MAC region US915 implementation + +License: Revised BSD License, see LICENSE.TXT file include in the project + +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) +*/ +#include +#include +#include + +#include "radio.h" +#include "timer.h" +#include "LoRaMac.h" + +#include "utilities.h" + +#include "Region.h" +#include "RegionCommon.h" +#include "RegionUS915.h" + + + +// Definitions +#define CHANNELS_MASK_SIZE 6 + + + +// Global attributes +/*! + * LoRaMAC channels + */ +static ChannelParams_t Channels[US915_MAX_NB_CHANNELS]; + +/*! + * LoRaMac bands + */ +static Band_t Bands[US915_MAX_NB_BANDS] = +{ + US915_BAND0 +}; + +/*! + * LoRaMac channels mask + */ +static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; + +/*! + * LoRaMac channels remaining + */ +static uint16_t ChannelsMaskRemaining[CHANNELS_MASK_SIZE]; + +/*! + * LoRaMac channels default mask + */ +static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; + + + +// Static functions +static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) +{ + int8_t datarate = DatarateOffsetsUS915[dr][drOffset]; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} + +static uint16_t GetSymbTimeout( int8_t dr ) +{ + uint16_t symbolTimeout = 5; + + switch( dr ) + { + case DR_0: // SF10 - BW125 + { + symbolTimeout = 5; + break; + } + case DR_1: // SF9 - BW125 + case DR_2: // SF8 - BW125 + case DR_8: // SF12 - BW500 + case DR_9: // SF11 - BW500 + case DR_10: // SF10 - BW500 + { + symbolTimeout = 8; + break; + } + case DR_3: // SF7 - BW125 + case DR_11: // SF9 - BW500 + { + symbolTimeout = 10; + break; + } + case DR_4: // SF8 - BW500 + case DR_12: // SF8 - BW500 + { + symbolTimeout = 14; + break; + } + case DR_13: // SF7 - BW500 + { + symbolTimeout = 16; + break; + } + } + return symbolTimeout; +} + +static uint32_t GetBandwidth( int8_t dr ) +{ + uint32_t bandwidth = 0; + + if( dr > DR_4 ) + { // LoRa 500 kHz + bandwidth = 2; + } + return bandwidth; +} + +static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) +{ + int8_t txPowerResult = txPower; + + // Limit tx power to the band max + txPowerResult = MAX( txPower, maxBandTxPower ); + + if( ( datarate == DR_4 ) || ( ( datarate >= DR_8 ) && ( datarate <= DR_13 ) ) ) + {// Limit tx power to max 26dBm + txPowerResult = MAX( txPower, TX_POWER_2 ); + } + else + { + if( RegionCommonCountChannels( channelsMask, 0, 4 ) < 50 ) + {// Limit tx power to max 21dBm + txPowerResult = MAX( txPower, TX_POWER_5 ); + } + } + return txPowerResult; +} + +static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMask, ChannelParams_t* channels, Band_t* bands, uint8_t* enabledChannels, uint8_t* delayTx ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTransmission = 0; + + for( uint8_t i = 0, k = 0; i < US915_MAX_NB_CHANNELS; i += 16, k++ ) + { + for( uint8_t j = 0; j < 16; j++ ) + { + if( ( channelsMask[k] & ( 1 << j ) ) != 0 ) + { + if( channels[i + j].Frequency == 0 ) + { // Check if the channel is enabled + continue; + } + if( RegionCommonValueInRange( datarate, channels[i + j].DrRange.Fields.Min, + channels[i + j].DrRange.Fields.Max ) == false ) + { // Check if the current channel selection supports the given datarate + continue; + } + if( bands[channels[i + j].Band].TimeOff > 0 ) + { // Check if the band is available for transmission + delayTransmission++; + continue; + } + enabledChannels[nbEnabledChannels++] = i + j; + } + } + } + + *delayTx = delayTransmission; + return nbEnabledChannels; +} + + +void RegionUS915GetPhyParam( GetPhyParams_t* getPhy ) +{ + switch( getPhy->Attribute ) + { + case PHY_MIN_DR: + { + getPhy->Param.Value = US915_TX_MIN_DATARATE; + break; + } + case PHY_DEF_TX_DR: + { + getPhy->Param.Value = US915_DEFAULT_DATARATE; + break; + } + case PHY_DEF_TX_POWER: + { + getPhy->Param.Value = US915_DEFAULT_TX_POWER; + break; + } + case PHY_MAX_PAYLOAD: + { + getPhy->Param.Value = MaxPayloadOfDatarateUS915[getPhy->Datarate]; + break; + } + case PHY_MAX_PAYLOAD_REPEATER: + { + getPhy->Param.Value = MaxPayloadOfDatarateRepeaterUS915[getPhy->Datarate]; + break; + } + case PHY_DUTY_CYCLE: + { + getPhy->Param.Value = US915_DUTY_CYCLE_ENABLED; + break; + } + case PHY_MAX_RX_WINDOW: + { + getPhy->Param.Value = US915_MAX_RX_WINDOW; + break; + } + case PHY_RECEIVE_DELAY1: + { + getPhy->Param.Value = US915_RECEIVE_DELAY1; + break; + } + case PHY_RECEIVE_DELAY2: + { + getPhy->Param.Value = US915_RECEIVE_DELAY2; + break; + } + case PHY_JOIN_ACCEPT_DELAY1: + { + getPhy->Param.Value = US915_JOIN_ACCEPT_DELAY1; + break; + } + case PHY_JOIN_ACCEPT_DELAY2: + { + getPhy->Param.Value = US915_JOIN_ACCEPT_DELAY2; + break; + } + case PHY_MAX_FCNT_GAP: + { + getPhy->Param.Value = US915_MAX_FCNT_GAP; + break; + } + case PHY_ACK_TIMEOUT: + { + getPhy->Param.Value = ( US915_ACKTIMEOUT + randr( -US915_ACK_TIMEOUT_RND, US915_ACK_TIMEOUT_RND ) ); + break; + } + case PHY_DEF_DR1_OFFSET: + { + getPhy->Param.Value = US915_DEFAULT_RX1_DR_OFFSET; + break; + } + case PHY_DEF_RX2_FREQUENCY: + { + getPhy->Param.Value = US915_RX_WND_2_FREQ; + break; + } + case PHY_DEF_RX2_DR: + { + getPhy->Param.Value = US915_RX_WND_2_DR; + break; + } + case PHY_CHANNELS_MASK: + { + getPhy->Param.ChannelsMask = ChannelsMask; + break; + } + case PHY_CHANNELS_DEFAULT_MASK: + { + getPhy->Param.ChannelsMask = ChannelsDefaultMask; + break; + } + case PHY_MAX_NB_CHANNELS: + { + getPhy->Param.Value = US915_MAX_NB_CHANNELS; + break; + } + case PHY_CHANNELS: + { + getPhy->Param.Channels = Channels; + break; + } + case PHY_DEF_UPLINK_DWELL_TIME: + case PHY_DEF_DOWNLINK_DWELL_TIME: + case PHY_DEF_MAX_EIRP: + { + getPhy->Param.Value = 0; + break; + } + case PHY_NB_JOIN_TRIALS: + case PHY_DEF_NB_JOIN_TRIALS: + { + getPhy->Param.Value = 2; + break; + } + default: + { + return; + } + } +} + +void RegionUS915SetBandTxDone( SetBandTxDoneParams_t* txDone ) +{ + RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); +} + +void RegionUS915InitDefaults( InitType_t type ) +{ + switch( type ) + { + case INIT_TYPE_INIT: + { + // Channels + // 125 kHz channels + for( uint8_t i = 0; i < US915_MAX_NB_CHANNELS - 8; i++ ) + { + Channels[i].Frequency = 902.3e6 + i * 200e3; + Channels[i].DrRange.Value = ( DR_3 << 4 ) | DR_0; + Channels[i].Band = 0; + } + // 500 kHz channels + for( uint8_t i = US915_MAX_NB_CHANNELS - 8; i < US915_MAX_NB_CHANNELS; i++ ) + { + Channels[i].Frequency = 903.0e6 + ( i - ( US915_MAX_NB_CHANNELS - 8 ) ) * 1.6e6; + Channels[i].DrRange.Value = ( DR_4 << 4 ) | DR_4; + Channels[i].Band = 0; + } + + // ChannelsMask + ChannelsDefaultMask[0] = 0xFFFF; + ChannelsDefaultMask[1] = 0xFFFF; + ChannelsDefaultMask[2] = 0xFFFF; + ChannelsDefaultMask[3] = 0xFFFF; + ChannelsDefaultMask[4] = 0x00FF; + ChannelsDefaultMask[5] = 0x0000; + + // Copy channels default mask + RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 6 ); + + // Copy into channels mask remaining + RegionCommonChanMaskCopy( ChannelsMaskRemaining, ChannelsMask, 6 ); + break; + } + case INIT_TYPE_RESTORE: + { + // Copy channels default mask + RegionCommonChanMaskCopy( ChannelsMask, ChannelsDefaultMask, 6 ); + + for( uint8_t i = 0; i < 6; i++ ) + { // Copy-And the channels mask + ChannelsMaskRemaining[i] &= ChannelsMask[i]; + } + break; + } + default: + { + break; + } + } +} + +bool RegionUS915Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) +{ + switch( phyAttribute ) + { + case PHY_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, US915_TX_MIN_DATARATE, US915_TX_MAX_DATARATE ); + } + case PHY_DEF_TX_DR: + { + return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + } + case PHY_DEF_TX_POWER: + case PHY_TX_POWER: + { + // Remark: switched min and max! + return RegionCommonValueInRange( verify->TxPower, US915_MAX_TX_POWER, US915_MIN_TX_POWER ); + } + case PHY_DUTY_CYCLE: + { + return US915_DUTY_CYCLE_ENABLED; + } + case PHY_NB_JOIN_TRIALS: + { + if( verify->NbJoinTrials < 2 ) + { + return false; + } + break; + } + default: + return false; + } + return true; +} + +void RegionUS915ApplyCFList( ApplyCFListParams_t* applyCFList ) +{ + return; +} + +bool RegionUS915ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ) +{ + uint8_t nbChannels = RegionCommonCountChannels( chanMaskSet->ChannelsMaskIn, 0, 4 ); + + // Check the number of active channels + if( ( nbChannels < 2 ) && + ( nbChannels > 0 ) ) + { + return false; + } + + switch( chanMaskSet->ChannelsMaskType ) + { + case CHANNELS_MASK: + { + RegionCommonChanMaskCopy( ChannelsMask, chanMaskSet->ChannelsMaskIn, 6 ); + + for( uint8_t i = 0; i < 6; i++ ) + { // Copy-And the channels mask + ChannelsMaskRemaining[i] &= ChannelsMask[i]; + } + break; + } + case CHANNELS_DEFAULT_MASK: + { + RegionCommonChanMaskCopy( ChannelsDefaultMask, chanMaskSet->ChannelsMaskIn, 6 ); + break; + } + default: + return false; + } + return true; +} + +bool RegionUS915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ) +{ + bool adrAckReq = false; + int8_t datarate = adrNext->Datarate; + int8_t txPower = adrNext->TxPower; + + // Report back the adr ack counter + *adrAckCounter = adrNext->AdrAckCounter; + + if( adrNext->AdrEnabled == true ) + { + if( datarate == US915_TX_MIN_DATARATE ) + { + *adrAckCounter = 0; + adrAckReq = false; + } + else + { + if( adrNext->AdrAckCounter >= US915_ADR_ACK_LIMIT ) + { + adrAckReq = true; + txPower = US915_MAX_TX_POWER; + } + else + { + adrAckReq = false; + } + if( adrNext->AdrAckCounter >= ( US915_ADR_ACK_LIMIT + US915_ADR_ACK_DELAY ) ) + { + if( ( adrNext->AdrAckCounter % US915_ADR_ACK_DELAY ) == 0 ) + { + if( ( datarate > US915_TX_MIN_DATARATE ) && ( datarate == DR_8 ) ) + { + datarate = DR_4; + } + else if( datarate > US915_TX_MIN_DATARATE ) + { + datarate--; + } + + if( datarate == US915_TX_MIN_DATARATE ) + { + if( adrNext->UpdateChanMask == true ) + { + // Re-enable default channels + ChannelsMask[0] = 0xFFFF; + ChannelsMask[1] = 0xFFFF; + ChannelsMask[2] = 0xFFFF; + ChannelsMask[3] = 0xFFFF; + ChannelsMask[4] = 0x00FF; + ChannelsMask[5] = 0x0000; + } + } + } + } + } + } + + *drOut = datarate; + *txPowOut = txPower; + return adrAckReq; +} + +bool RegionUS915RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) +{ + int8_t dr = rxConfig->Datarate; + uint8_t maxPayload = 0; + uint16_t symbTimeout = 0; + uint32_t bandwidth = 0; + int8_t phyDr = 0; + uint32_t frequency = rxConfig->Frequency; + + if( Radio.GetStatus( ) != RF_IDLE ) + { + return false; + } + + if( rxConfig->Window == 0 ) + { + // Apply the datarate offset for RX window 1 + dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + // Apply window 1 frequency + frequency = US915_FIRST_RX1_CHANNEL + ( rxConfig->Channel % 8 ) * US915_STEPWIDTH_RX1_CHANNEL; + } + symbTimeout = GetSymbTimeout( dr ); + bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table + phyDr = DataratesUS915[dr]; + + Radio.SetChannel( frequency ); + + Radio.SetRxConfig( MODEM_LORA, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + + if( rxConfig->RepeaterSupport == true ) + { + maxPayload = MaxPayloadOfDatarateRepeaterUS915[dr]; + } + else + { + maxPayload = MaxPayloadOfDatarateUS915[dr]; + } + Radio.SetMaxPayloadLength( MODEM_LORA, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); + + *datarate = (uint8_t) dr; + return true; +} + +bool RegionUS915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) +{ + int8_t phyDr = DataratesUS915[txConfig->Datarate]; + int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band].TxMaxPower, txConfig->Datarate, ChannelsMask ); + uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); + int8_t phyTxPower = 0; + + phyTxPower = TxPowersUS915[txPowerLimited]; + + Radio.SetChannel( Channels[txConfig->Channel].Frequency ); + + Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); + Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + + *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); + *txPower = txPowerLimited; + + return true; +} + +uint8_t RegionUS915LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) +{ + uint8_t status = 0x07; + LinkAdrParams_t linkAdrParams; + uint8_t nextIndex = 0; + uint8_t bytesProcessed = 0; + uint16_t channelsMask[6] = { 0, 0, 0, 0, 0, 0 }; + + // Initialize local copy of channels mask + RegionCommonChanMaskCopy( channelsMask, ChannelsMask, 6 ); + + while( bytesProcessed < linkAdrReq->PayloadSize ) + { + nextIndex = RegionCommonParseLinkAdrReq( &( linkAdrReq->Payload[bytesProcessed] ), &linkAdrParams ); + + if( nextIndex == 0 ) + break; // break loop, since no more request has been found + + // Update bytes processed + bytesProcessed += nextIndex; + + // Revert status, as we only check the last ADR request for the channel mask KO + status = 0x07; + + if( linkAdrParams.ChMaskCtrl == 6 ) + { + // Enable all 125 kHz channels + channelsMask[0] = 0xFFFF; + channelsMask[1] = 0xFFFF; + channelsMask[2] = 0xFFFF; + channelsMask[3] = 0xFFFF; + // Apply chMask to channels 64 to 71 + channelsMask[4] = linkAdrParams.ChMask; + } + else if( linkAdrParams.ChMaskCtrl == 7 ) + { + // Disable all 125 kHz channels + channelsMask[0] = 0x0000; + channelsMask[1] = 0x0000; + channelsMask[2] = 0x0000; + channelsMask[3] = 0x0000; + // Apply chMask to channels 64 to 71 + channelsMask[4] = linkAdrParams.ChMask; + } + else if( linkAdrParams.ChMaskCtrl == 5 ) + { + // RFU + status &= 0xFE; // Channel mask KO + } + else + { + channelsMask[linkAdrParams.ChMaskCtrl] = linkAdrParams.ChMask; + } + } + + // FCC 15.247 paragraph F mandates to hop on at least 2 125 kHz channels + if( ( linkAdrParams.Datarate < DR_4 ) && ( RegionCommonCountChannels( channelsMask, 0, 4 ) < 2 ) ) + { + status &= 0xFE; // Channel mask KO + } + + // Verify datarate + if( RegionCommonChanVerifyDr( US915_MAX_NB_CHANNELS, channelsMask, linkAdrParams.Datarate, US915_TX_MIN_DATARATE, US915_TX_MAX_DATARATE, Channels ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify tx power + if( RegionCommonValueInRange( linkAdrParams.TxPower, US915_MAX_TX_POWER, US915_MIN_TX_POWER ) == 0 ) + { + // Verify if the maximum TX power is exceeded + if( US915_MAX_TX_POWER > linkAdrParams.TxPower ) + { // Apply maximum TX power. Accept TX power. + linkAdrParams.TxPower = US915_MAX_TX_POWER; + } + else + { + status &= 0xFB; // TxPower KO + } + } + + // Update channelsMask if everything is correct + if( status == 0x07 ) + { + if( linkAdrParams.NbRep == 0 ) + { // Value of 0 is not allowed, revert to default. + linkAdrParams.NbRep = 1; + } + + // Copy Mask + RegionCommonChanMaskCopy( ChannelsMask, channelsMask, 6 ); + + ChannelsMaskRemaining[0] &= ChannelsMask[0]; + ChannelsMaskRemaining[1] &= ChannelsMask[1]; + ChannelsMaskRemaining[2] &= ChannelsMask[2]; + ChannelsMaskRemaining[3] &= ChannelsMask[3]; + ChannelsMaskRemaining[4] = ChannelsMask[4]; + ChannelsMaskRemaining[5] = ChannelsMask[5]; + } + + // Update status variables + *drOut = linkAdrParams.Datarate; + *txPowOut = linkAdrParams.TxPower; + *nbRepOut = linkAdrParams.NbRep; + *nbBytesParsed = bytesProcessed; + + return status; +} + +uint8_t RegionUS915RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) +{ + uint8_t status = 0x07; + uint32_t freq = rxParamSetupReq->Frequency; + + // Verify radio frequency + if( ( Radio.CheckRfFrequency( freq ) == false ) || + ( freq < US915_FIRST_RX1_CHANNEL ) || + ( freq > US915_LAST_RX1_CHANNEL ) || + ( ( ( freq - ( uint32_t ) US915_FIRST_RX1_CHANNEL ) % ( uint32_t ) US915_STEPWIDTH_RX1_CHANNEL ) != 0 ) ) + { + status &= 0xFE; // Channel frequency KO + } + + // Verify datarate + if( RegionCommonValueInRange( rxParamSetupReq->Datarate, US915_RX_MIN_DATARATE, US915_RX_MAX_DATARATE ) == false ) + { + status &= 0xFD; // Datarate KO + } + if( ( RegionCommonValueInRange( rxParamSetupReq->Datarate, DR_5, DR_7 ) == true ) || + ( rxParamSetupReq->Datarate > DR_13 ) ) + { + status &= 0xFD; // Datarate KO + } + + // Verify datarate offset + if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, US915_MIN_RX1_DR_OFFSET, US915_MAX_RX1_DR_OFFSET ) == false ) + { + status &= 0xFB; // Rx1DrOffset range KO + } + + return status; +} + +uint8_t RegionUS915NewChannelReq( NewChannelReqParams_t* newChannelReq ) +{ + // Datarate and frequency KO + return 0; +} + +int8_t RegionUS915TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ) +{ + return -1; +} + +uint8_t RegionUS915DlChannelReq( DlChannelReqParams_t* dlChannelReq ) +{ + return 0; +} + +int8_t RegionUS915AlternateDr( AlternateDrParams_t* alternateDr ) +{ + int8_t datarate = 0; + + // Re-enable 500 kHz default channels + ChannelsMask[4] = 0x00FF; + + if( ( alternateDr->NbTrials & 0x01 ) == 0x01 ) + { + datarate = DR_4; + } + else + { + datarate = DR_0; + } + return datarate; +} + +void RegionUS915CalcBackOff( CalcBackOffParams_t* calcBackOff ) +{ + uint8_t channel = calcBackOff->Channel; + uint16_t joinDutyCycle = 0; + + if( calcBackOff->Joined == false ) + { + // Get the join duty cycle + joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); + // Apply band time-off. + Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * joinDutyCycle - calcBackOff->TxTimeOnAir; + } + else + { + Bands[Channels[channel].Band].TimeOff = 0; + } +} + +bool RegionUS915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +{ + uint8_t nbEnabledChannels = 0; + uint8_t delayTx = 0; + uint8_t enabledChannels[US915_MAX_NB_CHANNELS] = { 0 }; + TimerTime_t nextTxDelay = ( TimerTime_t )( -1 ); + + // Count 125kHz channels + if( RegionCommonCountChannels( ChannelsMaskRemaining, 0, 4 ) == 0 ) + { // Reactivate default channels + RegionCommonChanMaskCopy( ChannelsMaskRemaining, ChannelsMask, 4 ); + } + // Check other channels + if( nextChanParams->Datarate >= DR_4 ) + { + if( ( ChannelsMaskRemaining[4] & 0x00FF ) == 0 ) + { + ChannelsMaskRemaining[4] = ChannelsMask[4]; + } + } + + if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) + { + // Search how many channels are enabled + nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, + ChannelsMask, Channels, + Bands, enabledChannels, &delayTx ); + } + else + { + delayTx++; + nextTxDelay = nextChanParams->AggrTimeOff - TimerGetElapsedTime( nextChanParams->LastAggrTx ); + } + + if( nbEnabledChannels > 0 ) + { + // We found a valid channel + *channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; + // Disable the channel in the mask + RegionCommonChanDisable( ChannelsMaskRemaining, *channel, US915_MAX_NB_CHANNELS - 8 ); + + *time = 0; + return true; + } + else + { + if( delayTx > 0 ) + { + // Delay transmission due to AggregatedTimeOff or to a band time off + *time = nextTxDelay; + return true; + } + // Datarate not supported by any channel + *time = 0; + return false; + } +} + +LoRaMacStatus_t RegionUS915ChannelAdd( ChannelAddParams_t* channelAdd ) +{ + return LORAMAC_STATUS_PARAMETER_INVALID; +} + +bool RegionUS915ChannelsRemove( ChannelRemoveParams_t* channelRemove ) +{ + return LORAMAC_STATUS_PARAMETER_INVALID; +} + +void RegionUS915SetContinuousWave( ContinuousWaveParams_t* continuousWave ) +{ + int8_t txPowerLimited = LimitTxPower( continuousWave->TxPower, Bands[Channels[continuousWave->Channel].Band].TxMaxPower, continuousWave->Datarate, ChannelsMask ); + int8_t phyTxPower = 0; + uint32_t frequency = Channels[continuousWave->Channel].Frequency; + + phyTxPower = TxPowersUS915[txPowerLimited]; + + Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); +} diff --git a/src/mac/region/RegionUS915.h b/src/mac/region/RegionUS915.h new file mode 100644 index 000000000..cc9f13c10 --- /dev/null +++ b/src/mac/region/RegionUS915.h @@ -0,0 +1,413 @@ +/*! + * \file RegionUS915.h + * + * \brief Region definition for US915 + * + * \copyright Revised BSD License, see section \ref LICENSE. + * + * \code + * ______ _ + * / _____) _ | | + * ( (____ _____ ____ _| |_ _____ ____| |__ + * \____ \| ___ | (_ _) ___ |/ ___) _ \ + * _____) ) ____| | | || |_| ____( (___| | | | + * (______/|_____)_|_|_| \__)_____)\____)_| |_| + * (C)2013 Semtech + * + * ___ _____ _ ___ _ _____ ___ ___ ___ ___ + * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| + * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| + * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| + * embedded.connectivity.solutions=============== + * + * \endcode + * + * \author Miguel Luis ( Semtech ) + * + * \author Gregory Cristian ( Semtech ) + * + * \author Daniel Jaeckle ( STACKFORCE ) + * + * \defgroup REGIONUS915 Region US915 + * Implementation according to LoRaWAN Specification v1.0.2. + * \{ + */ +#ifndef __REGION_US915_H__ +#define __REGION_US915_H__ + +/*! + * LoRaMac maximum number of channels + */ +#define US915_MAX_NB_CHANNELS 72 + +/*! + * Minimal datarate that can be used by the node + */ +#define US915_TX_MIN_DATARATE DR_0 + +/*! + * Maximal datarate that can be used by the node + */ +#define US915_TX_MAX_DATARATE DR_4 + +/*! + * Minimal datarate that can be used by the node + */ +#define US915_RX_MIN_DATARATE DR_8 + +/*! + * Maximal datarate that can be used by the node + */ +#define US915_RX_MAX_DATARATE DR_13 + +/*! + * Default datarate used by the node + */ +#define US915_DEFAULT_DATARATE DR_0 + +/*! + * Minimal Rx1 receive datarate offset + */ +#define US915_MIN_RX1_DR_OFFSET 0 + +/*! + * Maximal Rx1 receive datarate offset + */ +#define US915_MAX_RX1_DR_OFFSET 3 + +/*! + * Default Rx1 receive datarate offset + */ +#define US915_DEFAULT_RX1_DR_OFFSET 0 + +/*! + * Minimal Tx output power that can be used by the node + */ +#define US915_MIN_TX_POWER TX_POWER_10 + +/*! + * Maximal Tx output power that can be used by the node + */ +#define US915_MAX_TX_POWER TX_POWER_0 + +/*! + * Default Tx output power used by the node + */ +#define US915_DEFAULT_TX_POWER TX_POWER_5 + +/*! + * ADR Ack limit + */ +#define US915_ADR_ACK_LIMIT 64 + +/*! + * ADR Ack delay + */ +#define US915_ADR_ACK_DELAY 32 + +/*! + * Enabled or disabled the duty cycle + */ +#define US915_DUTY_CYCLE_ENABLED 0 + +/*! + * Maximum RX window duration + */ +#define US915_MAX_RX_WINDOW 3000 + +/*! + * Receive delay 1 + */ +#define US915_RECEIVE_DELAY1 1000 + +/*! + * Receive delay 2 + */ +#define US915_RECEIVE_DELAY2 2000 + +/*! + * Join accept delay 1 + */ +#define US915_JOIN_ACCEPT_DELAY1 5000 + +/*! + * Join accept delay 2 + */ +#define US915_JOIN_ACCEPT_DELAY2 6000 + +/*! + * Maximum frame counter gap + */ +#define US915_MAX_FCNT_GAP 16384 + +/*! + * Ack timeout + */ +#define US915_ACKTIMEOUT 2000 + +/*! + * Random ack timeout limits + */ +#define US915_ACK_TIMEOUT_RND 1000 + +/*! + * Second reception window channel frequency definition. + */ +#define US915_RX_WND_2_FREQ 923300000 + +/*! + * Second reception window channel datarate definition. + */ +#define US915_RX_WND_2_DR DR_8 + +/*! + * LoRaMac maximum number of bands + */ +#define US915_MAX_NB_BANDS 1 + +/*! + * Band 0 definition + * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } + */ +#define US915_BAND0 { 1, US915_DEFAULT_TX_POWER, 0, 0 } // 100.0 % + +/*! + * Defines the first channel for RX window 1 for US band + */ +#define US915_FIRST_RX1_CHANNEL ( (uint32_t) 923.3e6 ) + +/*! + * Defines the last channel for RX window 1 for US band + */ +#define US915_LAST_RX1_CHANNEL ( (uint32_t) 927.5e6 ) + +/*! + * Defines the step width of the channels for RX window 1 + */ +#define US915_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 600e3 ) + +/*! + * Data rates table definition + */ +static const uint8_t DataratesUS915[] = { 10, 9, 8, 7, 8, 0, 0, 0, 12, 11, 10, 9, 8, 7, 0, 0 }; + +/*! + * Up/Down link data rates offset definition + */ +static const int8_t DatarateOffsetsUS915[5][4] = +{ + { DR_10, DR_9 , DR_8 , DR_8 }, // DR_0 + { DR_11, DR_10, DR_9 , DR_8 }, // DR_1 + { DR_12, DR_11, DR_10, DR_9 }, // DR_2 + { DR_13, DR_12, DR_11, DR_10 }, // DR_3 + { DR_13, DR_13, DR_12, DR_11 }, // DR_4 +}; + +/*! + * Maximum payload with respect to the datarate index. Cannot operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateUS915[] = { 11, 53, 125, 242, 242, 0, 0, 0, 53, 129, 242, 242, 242, 242, 0, 0 }; + +/*! + * Maximum payload with respect to the datarate index. Can operate with repeater. + */ +static const uint8_t MaxPayloadOfDatarateRepeaterUS915[] = { 11, 53, 125, 242, 242, 0, 0, 0, 33, 109, 222, 222, 222, 222, 0, 0 }; + +/*! + * Tx output powers table definition + */ +static const int8_t TxPowersUS915[] = { 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10 }; + + + +/*! + * \brief The function gets a value of a specific phy attribute. + * + * \param [IN] getPhy Pointer to the function parameters. + */ +void RegionUS915GetPhyParam( GetPhyParams_t* getPhy ); + +/*! + * \brief Updates the last TX done parameters of the current channel. + * + * \param [IN] txDone Pointer to the function parameters. + */ +void RegionUS915SetBandTxDone( SetBandTxDoneParams_t* txDone ); + +/*! + * \brief Initializes the channels masks and the channels. + * + * \param [IN] type Sets the initialization type. + */ +void RegionUS915InitDefaults( InitType_t type ); + +/*! + * \brief Verifies a parameter. + * + * \param [IN] verify Pointer to the function parameters. + * + * \param [IN] type Sets the initialization type. + * + * \retval Returns true, if the parameter is valid. + */ +bool RegionUS915Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ); + +/*! + * \brief The function parses the input buffer and sets up the channels of the + * CF list. + * + * \param [IN] applyCFList Pointer to the function parameters. + */ +void RegionUS915ApplyCFList( ApplyCFListParams_t* applyCFList ); + +/*! + * \brief Sets a channels mask. + * + * \param [IN] chanMaskSet Pointer to the function parameters. + * + * \retval Returns true, if the channels mask could be set. + */ +bool RegionUS915ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); + +/*! + * \brief Calculates the next datarate to set, when ADR is on or off. + * + * \param [IN] adrNext Pointer to the function parameters. + * + * \param [OUT] drOut The calculated datarate for the next TX. + * + * \param [OUT] txPowOut The TX power for the next TX. + * + * \param [OUT] adrAckCounter The calculated ADR acknowledgement counter. + * + * \retval Returns true, if an ADR request should be performed. + */ +bool RegionUS915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); + +/*! + * \brief Configuration of the RX windows. + * + * \param [IN] rxConfig Pointer to the function parameters. + * + * \param [OUT] datarate The datarate index which was set. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionUS915RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ); + +/*! + * \brief TX configuration. + * + * \param [IN] txConfig Pointer to the function parameters. + * + * \param [OUT] txPower The tx power index which was set. + * + * \param [OUT] txTimeOnAir The time-on-air of the frame. + * + * \retval Returns true, if the configuration was applied successfully. + */ +bool RegionUS915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ); + +/*! + * \brief The function processes a Link ADR Request. + * + * \param [IN] linkAdrReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionUS915LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ); + +/*! + * \brief The function processes a RX Parameter Setup Request. + * + * \param [IN] rxParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionUS915RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ); + +/*! + * \brief The function processes a Channel Request. + * + * \param [IN] newChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionUS915NewChannelReq( NewChannelReqParams_t* newChannelReq ); + +/*! + * \brief The function processes a TX ParamSetup Request. + * + * \param [IN] txParamSetupReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + * Returns -1, if the functionality is not implemented. In this case, the end node + * shall not process the command. + */ +int8_t RegionUS915TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq ); + +/*! + * \brief The function processes a DlChannel Request. + * + * \param [IN] dlChannelReq Pointer to the function parameters. + * + * \retval Returns the status of the operation, according to the LoRaMAC specification. + */ +uint8_t RegionUS915DlChannelReq( DlChannelReqParams_t* dlChannelReq ); + +/* + * \brief Alternates the datarate of the channel for the join request. + * + * \param [IN] alternateDr Pointer to the function parameters. + * + * \retval Datarate to apply. + */ +int8_t RegionUS915AlternateDr( AlternateDrParams_t* alternateDr ); + +/*! + * \brief Calculates the back-off time. + * + * \param [IN] calcBackOff Pointer to the function parameters. + */ +void RegionUS915CalcBackOff( CalcBackOffParams_t* calcBackOff ); + +/*! + * \brief Searches and set the next random available channel + * + * \param [OUT] channel Next channel to use for TX. + * + * \param [OUT] time Time to wait for the next transmission according to the duty + * cycle. + * + * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] + */ +bool RegionUS915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); + +/*! + * \brief Adds a channel. + * + * \param [IN] channelAdd Pointer to the function parameters. + * + * \retval Status of the operation. + */ +LoRaMacStatus_t RegionUS915ChannelAdd( ChannelAddParams_t* channelAdd ); + +/*! + * \brief Removes a channel. + * + * \param [IN] channelRemove Pointer to the function parameters. + * + * \retval Returns true, if the channel was removed successfully. + */ +bool RegionUS915ChannelsRemove( ChannelRemoveParams_t* channelRemove ); + +/*! + * \brief Sets the radio into continuous wave mode. + * + * \param [IN] continuousWave Pointer to the function parameters. + */ +void RegionUS915SetContinuousWave( ContinuousWaveParams_t* continuousWave ); + +/*! \} defgroup REGIONUS915 */ + +#endif // __REGION_US915_H__ From 0f528ea20e42cd31d8c2d68c36a6d54d1643fa3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 004/161] Remove deprecated file LoRaMac-definitions.h. --- src/mac/LoRaMac-definitions.h | 608 ---------------------------------- src/mac/LoRaMac.h | 3 - 2 files changed, 611 deletions(-) delete mode 100644 src/mac/LoRaMac-definitions.h diff --git a/src/mac/LoRaMac-definitions.h b/src/mac/LoRaMac-definitions.h deleted file mode 100644 index fa06fc758..000000000 --- a/src/mac/LoRaMac-definitions.h +++ /dev/null @@ -1,608 +0,0 @@ -/* - / _____) _ | | -( (____ _____ ____ _| |_ _____ ____| |__ - \____ \| ___ | (_ _) ___ |/ ___) _ \ - _____) ) ____| | | || |_| ____( (___| | | | -(______/|_____)_|_|_| \__)_____)\____)_| |_| - (C)2013 Semtech - -Description: LoRa MAC layer global definitions - -License: Revised BSD License, see LICENSE.TXT file include in the project - -Maintainer: Miguel Luis and Gregory Cristian -*/ -#ifndef __LORAMAC_BOARD_H__ -#define __LORAMAC_BOARD_H__ - -/*! - * Returns individual channel mask - * - * \param[IN] channelIndex Channel index 1 based - * \retval channelMask - */ -#define LC( channelIndex ) ( uint16_t )( 1 << ( channelIndex - 1 ) ) - -#if defined( USE_BAND_433 ) - -/*! - * LoRaMac maximum number of channels - */ -#define LORA_MAX_NB_CHANNELS 16 - -/*! - * Minimal datarate that can be used by the node - */ -#define LORAMAC_TX_MIN_DATARATE DR_0 - -/*! - * Maximal datarate that can be used by the node - */ -#define LORAMAC_TX_MAX_DATARATE DR_7 - -/*! - * Minimal datarate that can be used by the node - */ -#define LORAMAC_RX_MIN_DATARATE DR_0 - -/*! - * Maximal datarate that can be used by the node - */ -#define LORAMAC_RX_MAX_DATARATE DR_7 - -/*! - * Default datarate used by the node - */ -#define LORAMAC_DEFAULT_DATARATE DR_0 - -/*! - * Minimal Rx1 receive datarate offset - */ -#define LORAMAC_MIN_RX1_DR_OFFSET 0 - -/*! - * Maximal Rx1 receive datarate offset - */ -#define LORAMAC_MAX_RX1_DR_OFFSET 5 - -/*! - * Minimal Tx output power that can be used by the node - */ -#define LORAMAC_MIN_TX_POWER TX_POWER_M5_DBM - -/*! - * Maximal Tx output power that can be used by the node - */ -#define LORAMAC_MAX_TX_POWER TX_POWER_10_DBM - -/*! - * Default Tx output power used by the node - */ -#define LORAMAC_DEFAULT_TX_POWER TX_POWER_10_DBM - -/*! - * LoRaMac TxPower definition - */ -#define TX_POWER_10_DBM 0 -#define TX_POWER_07_DBM 1 -#define TX_POWER_04_DBM 2 -#define TX_POWER_01_DBM 3 -#define TX_POWER_M2_DBM 4 -#define TX_POWER_M5_DBM 5 - -/*! - * LoRaMac datarates definition - */ -#define DR_0 0 // SF12 - BW125 -#define DR_1 1 // SF11 - BW125 -#define DR_2 2 // SF10 - BW125 -#define DR_3 3 // SF9 - BW125 -#define DR_4 4 // SF8 - BW125 -#define DR_5 5 // SF7 - BW125 -#define DR_6 6 // SF7 - BW250 -#define DR_7 7 // FSK - -/*! - * Verification of default datarate - */ -#if ( LORAMAC_DEFAULT_DATARATE > DR_5 ) -#error "A default DR higher than DR_5 may lead to connectivity loss." -#endif - -/*! - * Second reception window channel definition. - */ -// Channel = { Frequency [Hz], Datarate } -#define RX_WND_2_CHANNEL { 434665000, DR_0 } - -/*! - * LoRaMac maximum number of bands - */ -#define LORA_MAX_NB_BANDS 1 - -// Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } -#define BAND0 { 100, TX_POWER_10_DBM, 0, 0 } // 1.0 % - -/*! - * LoRaMac default channels - */ -// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } -#define LC1 { 433175000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC2 { 433375000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC3 { 433575000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } - -/*! - * LoRaMac channels which are allowed for the join procedure - */ -#define JOIN_CHANNELS ( uint16_t )( LC( 1 ) | LC( 2 ) | LC( 3 ) ) - -#elif defined( USE_BAND_470 ) - -/*! - * LoRaMac maximum number of channels - */ -#define LORA_MAX_NB_CHANNELS 96 - -/*! - * Minimal datarate that can be used by the node - */ -#define LORAMAC_TX_MIN_DATARATE DR_0 - -/*! - * Maximal datarate that can be used by the node - */ -#define LORAMAC_TX_MAX_DATARATE DR_5 - -/*! - * Minimal datarate that can be used by the node - */ -#define LORAMAC_RX_MIN_DATARATE DR_0 - -/*! - * Maximal datarate that can be used by the node - */ -#define LORAMAC_RX_MAX_DATARATE DR_5 - -/*! - * Default datarate used by the node - */ -#define LORAMAC_DEFAULT_DATARATE DR_0 - -/*! - * Minimal Rx1 receive datarate offset - */ -#define LORAMAC_MIN_RX1_DR_OFFSET 0 - -/*! - * Maximal Rx1 receive datarate offset - */ -#define LORAMAC_MAX_RX1_DR_OFFSET 3 - -/*! - * Minimal Tx output power that can be used by the node - */ -#define LORAMAC_MIN_TX_POWER TX_POWER_2_DBM - -/*! - * Maximal Tx output power that can be used by the node - */ -#define LORAMAC_MAX_TX_POWER TX_POWER_17_DBM - -/*! - * Default Tx output power used by the node - */ -#define LORAMAC_DEFAULT_TX_POWER TX_POWER_14_DBM - -/*! - * LoRaMac TxPower definition - */ -#define TX_POWER_17_DBM 0 -#define TX_POWER_16_DBM 1 -#define TX_POWER_14_DBM 2 -#define TX_POWER_12_DBM 3 -#define TX_POWER_10_DBM 4 -#define TX_POWER_7_DBM 5 -#define TX_POWER_5_DBM 6 -#define TX_POWER_2_DBM 7 - - -/*! - * LoRaMac datarates definition - */ -#define DR_0 0 // SF12 - BW125 | -#define DR_1 1 // SF11 - BW125 | -#define DR_2 2 // SF10 - BW125 | -#define DR_3 3 // SF9 - BW125 | -#define DR_4 4 // SF8 - BW125 | -#define DR_5 5 // SF7 - BW125 | - -/*! - * Second reception window channel definition. - */ -// Channel = { Frequency [Hz], Datarate } -#define RX_WND_2_CHANNEL { 505300000, DR_0 } - -/*! - * LoRaMac maximum number of bands - */ -#define LORA_MAX_NB_BANDS 1 - -// Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } -#define BAND0 { 1, TX_POWER_17_DBM, 0, 0 } // 100.0 % - -#elif defined( USE_BAND_780 ) - -/*! - * LoRaMac maximum number of channels - */ -#define LORA_MAX_NB_CHANNELS 16 - -/*! - * Minimal datarate that can be used by the node - */ -#define LORAMAC_TX_MIN_DATARATE DR_0 - -/*! - * Maximal datarate that can be used by the node - */ -#define LORAMAC_TX_MAX_DATARATE DR_7 - -/*! - * Minimal datarate that can be used by the node - */ -#define LORAMAC_RX_MIN_DATARATE DR_0 - -/*! - * Maximal datarate that can be used by the node - */ -#define LORAMAC_RX_MAX_DATARATE DR_7 - -/*! - * Default datarate used by the node - */ -#define LORAMAC_DEFAULT_DATARATE DR_0 - -/*! - * Minimal Rx1 receive datarate offset - */ -#define LORAMAC_MIN_RX1_DR_OFFSET 0 - -/*! - * Maximal Rx1 receive datarate offset - */ -#define LORAMAC_MAX_RX1_DR_OFFSET 5 - -/*! - * Minimal Tx output power that can be used by the node - */ -#define LORAMAC_MIN_TX_POWER TX_POWER_M5_DBM - -/*! - * Maximal Tx output power that can be used by the node - */ -#define LORAMAC_MAX_TX_POWER TX_POWER_10_DBM - -/*! - * Default Tx output power used by the node - */ -#define LORAMAC_DEFAULT_TX_POWER TX_POWER_10_DBM - -/*! - * LoRaMac TxPower definition - */ -#define TX_POWER_10_DBM 0 -#define TX_POWER_07_DBM 1 -#define TX_POWER_04_DBM 2 -#define TX_POWER_01_DBM 3 -#define TX_POWER_M2_DBM 4 -#define TX_POWER_M5_DBM 5 - -/*! - * LoRaMac datarates definition - */ -#define DR_0 0 // SF12 - BW125 -#define DR_1 1 // SF11 - BW125 -#define DR_2 2 // SF10 - BW125 -#define DR_3 3 // SF9 - BW125 -#define DR_4 4 // SF8 - BW125 -#define DR_5 5 // SF7 - BW125 -#define DR_6 6 // SF7 - BW250 -#define DR_7 7 // FSK - -/*! - * Verification of default datarate - */ -#if ( LORAMAC_DEFAULT_DATARATE > DR_5 ) -#error "A default DR higher than DR_5 may lead to connectivity loss." -#endif - -/*! - * Second reception window channel definition. - */ -// Channel = { Frequency [Hz], Datarate } -#define RX_WND_2_CHANNEL { 786000000, DR_0 } - -/*! - * LoRaMac maximum number of bands - */ -#define LORA_MAX_NB_BANDS 1 - -// Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } -#define BAND0 { 100, TX_POWER_10_DBM, 0, 0 } // 1.0 % - -/*! - * LoRaMac default channels - */ -// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } -#define LC1 { 779500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC2 { 779700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC3 { 779900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } - -/*! - * LoRaMac channels which are allowed for the join procedure - */ -#define JOIN_CHANNELS ( uint16_t )( LC( 1 ) | LC( 2 ) | LC( 3 ) ) - -#elif defined( USE_BAND_868 ) - -/*! - * LoRaMac maximum number of channels - */ -#define LORA_MAX_NB_CHANNELS 16 - -/*! - * Minimal datarate that can be used by the node - */ -#define LORAMAC_TX_MIN_DATARATE DR_0 - -/*! - * Maximal datarate that can be used by the node - */ -#define LORAMAC_TX_MAX_DATARATE DR_7 - -/*! - * Minimal datarate that can be used by the node - */ -#define LORAMAC_RX_MIN_DATARATE DR_0 - -/*! - * Maximal datarate that can be used by the node - */ -#define LORAMAC_RX_MAX_DATARATE DR_7 - -/*! - * Default datarate used by the node - */ -#define LORAMAC_DEFAULT_DATARATE DR_0 - -/*! - * Minimal Rx1 receive datarate offset - */ -#define LORAMAC_MIN_RX1_DR_OFFSET 0 - -/*! - * Maximal Rx1 receive datarate offset - */ -#define LORAMAC_MAX_RX1_DR_OFFSET 5 - -/*! - * Minimal Tx output power that can be used by the node - */ -#define LORAMAC_MIN_TX_POWER TX_POWER_02_DBM - -/*! - * Maximal Tx output power that can be used by the node - */ -#define LORAMAC_MAX_TX_POWER TX_POWER_20_DBM - -/*! - * Default Tx output power used by the node - */ -#define LORAMAC_DEFAULT_TX_POWER TX_POWER_14_DBM - -/*! - * LoRaMac TxPower definition - */ -#define TX_POWER_20_DBM 0 -#define TX_POWER_14_DBM 1 -#define TX_POWER_11_DBM 2 -#define TX_POWER_08_DBM 3 -#define TX_POWER_05_DBM 4 -#define TX_POWER_02_DBM 5 - -/*! - * LoRaMac datarates definition - */ -#define DR_0 0 // SF12 - BW125 -#define DR_1 1 // SF11 - BW125 -#define DR_2 2 // SF10 - BW125 -#define DR_3 3 // SF9 - BW125 -#define DR_4 4 // SF8 - BW125 -#define DR_5 5 // SF7 - BW125 -#define DR_6 6 // SF7 - BW250 -#define DR_7 7 // FSK - -/*! - * Verification of default datarate - */ -#if ( LORAMAC_DEFAULT_DATARATE > DR_5 ) -#error "A default DR higher than DR_5 may lead to connectivity loss." -#endif - -/*! - * Second reception window channel definition. - */ -// Channel = { Frequency [Hz], Datarate } -#define RX_WND_2_CHANNEL { 869525000, DR_0 } - -/*! - * LoRaMac maximum number of bands - */ -#define LORA_MAX_NB_BANDS 5 - -/*! - * LoRaMac EU868 default bands - */ -typedef enum -{ - BAND_G1_0, - BAND_G1_1, - BAND_G1_2, - BAND_G1_3, - BAND_G1_4, -}BandId_t; - -// Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } -#define BAND0 { 100 , TX_POWER_14_DBM, 0, 0 } // 1.0 % -#define BAND1 { 100 , TX_POWER_14_DBM, 0, 0 } // 1.0 % -#define BAND2 { 1000, TX_POWER_14_DBM, 0, 0 } // 0.1 % -#define BAND3 { 10 , TX_POWER_14_DBM, 0, 0 } // 10.0 % -#define BAND4 { 100 , TX_POWER_14_DBM, 0, 0 } // 1.0 % - -/*! - * LoRaMac default channels - */ -// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } -#define LC1 { 868100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 } -#define LC2 { 868300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 } -#define LC3 { 868500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 } - -/*! - * LoRaMac channels which are allowed for the join procedure - */ -#define JOIN_CHANNELS ( uint16_t )( LC( 1 ) | LC( 2 ) | LC( 3 ) ) - -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - -/*! - * LoRaMac maximum number of channels - */ -#define LORA_MAX_NB_CHANNELS 72 - -/*! - * Minimal datarate that can be used by the node - */ -#define LORAMAC_TX_MIN_DATARATE DR_0 - -/*! - * Maximal datarate that can be used by the node - */ -#define LORAMAC_TX_MAX_DATARATE DR_4 - -/*! - * Minimal datarate that can be used by the node - */ -#define LORAMAC_RX_MIN_DATARATE DR_8 - -/*! - * Maximal datarate that can be used by the node - */ -#define LORAMAC_RX_MAX_DATARATE DR_13 - -/*! - * Default datarate used by the node - */ -#define LORAMAC_DEFAULT_DATARATE DR_0 - -/*! - * Minimal Rx1 receive datarate offset - */ -#define LORAMAC_MIN_RX1_DR_OFFSET 0 - -/*! - * Maximal Rx1 receive datarate offset - */ -#define LORAMAC_MAX_RX1_DR_OFFSET 3 - -/*! - * Minimal Tx output power that can be used by the node - */ -#define LORAMAC_MIN_TX_POWER TX_POWER_10_DBM - -/*! - * Maximal Tx output power that can be used by the node - */ -#define LORAMAC_MAX_TX_POWER TX_POWER_30_DBM - -/*! - * Default Tx output power used by the node - */ -#define LORAMAC_DEFAULT_TX_POWER TX_POWER_20_DBM - -/*! - * LoRaMac TxPower definition - */ -#define TX_POWER_30_DBM 0 -#define TX_POWER_28_DBM 1 -#define TX_POWER_26_DBM 2 -#define TX_POWER_24_DBM 3 -#define TX_POWER_22_DBM 4 -#define TX_POWER_20_DBM 5 -#define TX_POWER_18_DBM 6 -#define TX_POWER_16_DBM 7 -#define TX_POWER_14_DBM 8 -#define TX_POWER_12_DBM 9 -#define TX_POWER_10_DBM 10 - -/*! - * LoRaMac datarates definition - */ -#define DR_0 0 // SF10 - BW125 | -#define DR_1 1 // SF9 - BW125 | -#define DR_2 2 // SF8 - BW125 +-> Up link -#define DR_3 3 // SF7 - BW125 | -#define DR_4 4 // SF8 - BW500 | -#define DR_5 5 // RFU -#define DR_6 6 // RFU -#define DR_7 7 // RFU -#define DR_8 8 // SF12 - BW500 | -#define DR_9 9 // SF11 - BW500 | -#define DR_10 10 // SF10 - BW500 | -#define DR_11 11 // SF9 - BW500 | -#define DR_12 12 // SF8 - BW500 +-> Down link -#define DR_13 13 // SF7 - BW500 | -#define DR_14 14 // RFU | -#define DR_15 15 // RFU | - -/*! - * Second reception window channel definition. - */ -// Channel = { Frequency [Hz], Datarate } -#define RX_WND_2_CHANNEL { 923300000, DR_8 } - -/*! - * LoRaMac maximum number of bands - */ -#define LORA_MAX_NB_BANDS 1 - -// Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } -#define BAND0 { 1, TX_POWER_20_DBM, 0, 0 } // 100.0 % - -/*! - * LoRaMac default channels - */ -// Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } -/* - * US band channels are initialized using a loop in LoRaMacInit function - * \code - * // 125 kHz channels - * for( uint8_t i = 0; i < LORA_MAX_NB_CHANNELS - 8; i++ ) - * { - * Channels[i].Frequency = 902.3e6 + i * 200e3; - * Channels[i].DrRange.Value = ( DR_3 << 4 ) | DR_0; - * Channels[i].Band = 0; - * } - * // 500 kHz channels - * for( uint8_t i = LORA_MAX_NB_CHANNELS - 8; i < LORA_MAX_NB_CHANNELS; i++ ) - * { - * Channels[i].Frequency = 903.0e6 + ( i - ( LORA_MAX_NB_CHANNELS - 8 ) ) * 1.6e6; - * Channels[i].DrRange.Value = ( DR_4 << 4 ) | DR_4; - * Channels[i].Band = 0; - * } - * \endcode - */ -#else - #error "Please define a frequency band in the compiler options." -#endif - -#endif // __LORAMAC_BOARD_H__ diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index 240093c6b..f1adfae4a 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -46,9 +46,6 @@ #ifndef __LORAMAC_H__ #define __LORAMAC_H__ -// Includes board dependent definitions such as channels frequencies -#include "LoRaMac-definitions.h" - /*! * Beacon interval in ms */ From 0d8a722a85b8ce8829d0aaa89c9ceba1e07621e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 005/161] Update file header comments. --- src/mac/LoRaMac.c | 2 +- src/mac/LoRaMac.h | 2 +- src/mac/LoRaMacCrypto.c | 2 +- src/mac/LoRaMacCrypto.h | 2 +- src/mac/LoRaMacTest.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index ad68aa120..879eb68a9 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -15,7 +15,7 @@ Description: LoRa MAC layer implementation License: Revised BSD License, see LICENSE.TXT file include in the project -Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jäckle ( STACKFORCE ) +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) */ #include "board.h" diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index f1adfae4a..6482c09e6 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -26,7 +26,7 @@ * * \author Gregory Cristian ( Semtech ) * - * \author Daniel Jäckle ( STACKFORCE ) + * \author Daniel Jaeckle ( STACKFORCE ) * * \defgroup LORAMAC LoRa MAC layer implementation * This module specifies the API implementation of the LoRaMAC layer. diff --git a/src/mac/LoRaMacCrypto.c b/src/mac/LoRaMacCrypto.c index 0eedf73f1..94026c4c6 100644 --- a/src/mac/LoRaMacCrypto.c +++ b/src/mac/LoRaMacCrypto.c @@ -15,7 +15,7 @@ Description: LoRa MAC layer implementation License: Revised BSD License, see LICENSE.TXT file include in the project -Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jäckle ( STACKFORCE ) +Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) */ #include #include diff --git a/src/mac/LoRaMacCrypto.h b/src/mac/LoRaMacCrypto.h index f5f4c95d2..b4780ce24 100644 --- a/src/mac/LoRaMacCrypto.h +++ b/src/mac/LoRaMacCrypto.h @@ -26,7 +26,7 @@ * * \author Gregory Cristian ( Semtech ) * - * \author Daniel Jäckle ( STACKFORCE ) + * \author Daniel Jaeckle ( STACKFORCE ) * * \defgroup LORAMAC_CRYPTO LoRa MAC layer cryptography implementation * This module covers the implementation of cryptographic functions diff --git a/src/mac/LoRaMacTest.h b/src/mac/LoRaMacTest.h index 016dfcfc9..e1a04c43b 100644 --- a/src/mac/LoRaMacTest.h +++ b/src/mac/LoRaMacTest.h @@ -26,7 +26,7 @@ * * \author Gregory Cristian ( Semtech ) * - * \author Daniel Jäckle ( STACKFORCE ) + * \author Daniel Jaeckle ( STACKFORCE ) * * \defgroup LORAMACTEST LoRa MAC layer test function implementation * This module specifies the API implementation of test function of the LoRaMAC layer. From a06acff115f0d599187adb66beb17b38c408434b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 006/161] Remove region specific definitions from MAC. --- src/mac/LoRaMac.c | 238 ---------------------------------------------- src/mac/LoRaMac.h | 54 ----------- 2 files changed, 292 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 879eb68a9..861dc3567 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -220,244 +220,6 @@ static uint8_t MacCommandsBuffer[LORA_MAC_COMMAND_MAX_LENGTH]; */ static uint8_t MacCommandsBufferToRepeat[LORA_MAC_COMMAND_MAX_LENGTH]; -#if defined( USE_BAND_433 ) -/*! - * Data rates table definition - */ -const uint8_t Datarates[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; - -/*! - * Maximum payload with respect to the datarate index. Cannot operate with repeater. - */ -const uint8_t MaxPayloadOfDatarate[] = { 51, 51, 51, 115, 242, 242, 242, 242 }; - -/*! - * Maximum payload with respect to the datarate index. Can operate with repeater. - */ -const uint8_t MaxPayloadOfDatarateRepeater[] = { 51, 51, 51, 115, 222, 222, 222, 222 }; - -/*! - * Tx output powers table definition - */ -const int8_t TxPowers[] = { 10, 7, 4, 1, -2, -5 }; - -/*! - * LoRaMac bands - */ -static Band_t Bands[LORA_MAX_NB_BANDS] = -{ - BAND0, -}; - -/*! - * LoRaMAC channels - */ -static ChannelParams_t Channels[LORA_MAX_NB_CHANNELS] = -{ - LC1, - LC2, - LC3, -}; -#elif defined( USE_BAND_470 ) - -/*! - * Data rates table definition - */ -const uint8_t Datarates[] = { 12, 11, 10, 9, 8, 7 }; - -/*! - * Maximum payload with respect to the datarate index. Cannot operate with repeater. - */ -const uint8_t MaxPayloadOfDatarate[] = { 51, 51, 51, 115, 222, 222 }; - -/*! - * Maximum payload with respect to the datarate index. Can operate with repeater. - */ -const uint8_t MaxPayloadOfDatarateRepeater[] = { 51, 51, 51, 115, 222, 222 }; - -/*! - * Tx output powers table definition - */ -const int8_t TxPowers[] = { 17, 16, 14, 12, 10, 7, 5, 2 }; - -/*! - * LoRaMac bands - */ -static Band_t Bands[LORA_MAX_NB_BANDS] = -{ - BAND0, -}; - -/*! - * LoRaMAC channels - */ -static ChannelParams_t Channels[LORA_MAX_NB_CHANNELS]; - -/*! - * Defines the first channel for RX window 1 for CN470 band - */ -#define LORAMAC_FIRST_RX1_CHANNEL ( (uint32_t) 500.3e6 ) - -/*! - * Defines the last channel for RX window 1 for CN470 band - */ -#define LORAMAC_LAST_RX1_CHANNEL ( (uint32_t) 509.7e6 ) - -/*! - * Defines the step width of the channels for RX window 1 - */ -#define LORAMAC_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 200e3 ) - -#elif defined( USE_BAND_780 ) -/*! - * Data rates table definition - */ -const uint8_t Datarates[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; - -/*! - * Maximum payload with respect to the datarate index. Cannot operate with repeater. - */ -const uint8_t MaxPayloadOfDatarate[] = { 51, 51, 51, 115, 242, 242, 242, 242 }; - -/*! - * Maximum payload with respect to the datarate index. Can operate with repeater. - */ -const uint8_t MaxPayloadOfDatarateRepeater[] = { 51, 51, 51, 115, 222, 222, 222, 222 }; - -/*! - * Tx output powers table definition - */ -const int8_t TxPowers[] = { 10, 7, 4, 1, -2, -5 }; - -/*! - * LoRaMac bands - */ -static Band_t Bands[LORA_MAX_NB_BANDS] = -{ - BAND0, -}; - -/*! - * LoRaMAC channels - */ -static ChannelParams_t Channels[LORA_MAX_NB_CHANNELS] = -{ - LC1, - LC2, - LC3, -}; -#elif defined( USE_BAND_868 ) -/*! - * Data rates table definition - */ -const uint8_t Datarates[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; - -/*! - * Maximum payload with respect to the datarate index. Cannot operate with repeater. - */ -const uint8_t MaxPayloadOfDatarate[] = { 51, 51, 51, 115, 242, 242, 242, 242 }; - -/*! - * Maximum payload with respect to the datarate index. Can operate with repeater. - */ -const uint8_t MaxPayloadOfDatarateRepeater[] = { 51, 51, 51, 115, 222, 222, 222, 222 }; - -/*! - * Tx output powers table definition - */ -const int8_t TxPowers[] = { 20, 14, 11, 8, 5, 2 }; - -/*! - * LoRaMac bands - */ -static Band_t Bands[LORA_MAX_NB_BANDS] = -{ - BAND0, - BAND1, - BAND2, - BAND3, - BAND4, -}; - -/*! - * LoRaMAC channels - */ -static ChannelParams_t Channels[LORA_MAX_NB_CHANNELS] = -{ - LC1, - LC2, - LC3, -}; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) -/*! - * Data rates table definition - */ -const uint8_t Datarates[] = { 10, 9, 8, 7, 8, 0, 0, 0, 12, 11, 10, 9, 8, 7, 0, 0 }; - -/*! - * Up/Down link data rates offset definition - */ -const int8_t datarateOffsets[5][4] = -{ - { DR_10, DR_9 , DR_8 , DR_8 }, // DR_0 - { DR_11, DR_10, DR_9 , DR_8 }, // DR_1 - { DR_12, DR_11, DR_10, DR_9 }, // DR_2 - { DR_13, DR_12, DR_11, DR_10 }, // DR_3 - { DR_13, DR_13, DR_12, DR_11 }, // DR_4 -}; - -/*! - * Maximum payload with respect to the datarate index. Cannot operate with repeater. - */ -const uint8_t MaxPayloadOfDatarate[] = { 11, 53, 125, 242, 242, 0, 0, 0, 53, 129, 242, 242, 242, 242, 0, 0 }; - -/*! - * Maximum payload with respect to the datarate index. Can operate with repeater. - */ -const uint8_t MaxPayloadOfDatarateRepeater[] = { 11, 53, 125, 242, 242, 0, 0, 0, 33, 109, 222, 222, 222, 222, 0, 0 }; - -/*! - * Tx output powers table definition - */ -const int8_t TxPowers[] = { 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10 }; - -/*! - * LoRaMac bands - */ -static Band_t Bands[LORA_MAX_NB_BANDS] = -{ - BAND0, -}; - -/*! - * LoRaMAC channels - */ -static ChannelParams_t Channels[LORA_MAX_NB_CHANNELS]; - -/*! - * Contains the channels which remain to be applied. - */ -static uint16_t ChannelsMaskRemaining[6]; - -/*! - * Defines the first channel for RX window 1 for US band - */ -#define LORAMAC_FIRST_RX1_CHANNEL ( (uint32_t) 923.3e6 ) - -/*! - * Defines the last channel for RX window 1 for US band - */ -#define LORAMAC_LAST_RX1_CHANNEL ( (uint32_t) 927.5e6 ) - -/*! - * Defines the step width of the channels for RX window 1 - */ -#define LORAMAC_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 600e3 ) - -#else - #error "Please define a frequency band in the compiler options." -#endif - /*! * LoRaMac parameters */ diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index 6482c09e6..88b7d200b 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -51,60 +51,6 @@ */ #define BEACON_INTERVAL 128000 -/*! - * Class A&B receive delay 1 in ms - */ -#define RECEIVE_DELAY1 1000 - -/*! - * Class A&B receive delay 2 in ms - */ -#define RECEIVE_DELAY2 2000 - -/*! - * Join accept receive delay 1 in ms - */ -#define JOIN_ACCEPT_DELAY1 5000 - -/*! - * Join accept receive delay 2 in ms - */ -#define JOIN_ACCEPT_DELAY2 6000 - -/*! - * Class A&B maximum receive window delay in ms - */ -#define MAX_RX_WINDOW 3000 - -/*! - * Maximum allowed gap for the FCNT field - */ -#define MAX_FCNT_GAP 16384 - -/*! - * ADR acknowledgement counter limit - */ -#define ADR_ACK_LIMIT 64 - -/*! - * Number of ADR acknowledgement requests before returning to default datarate - */ -#define ADR_ACK_DELAY 32 - -/*! - * Number of seconds after the start of the second reception window without - * receiving an acknowledge. - * AckTimeout = \ref ACK_TIMEOUT + Random( -\ref ACK_TIMEOUT_RND, \ref ACK_TIMEOUT_RND ) - */ -#define ACK_TIMEOUT 2000 - -/*! - * Random number of seconds after the start of the second reception window without - * receiving an acknowledge - * AckTimeout = \ref ACK_TIMEOUT + Random( -\ref ACK_TIMEOUT_RND, \ref ACK_TIMEOUT_RND ) - */ -#define ACK_TIMEOUT_RND 1000 - /*! * Check the Mac layer state every MAC_STATE_CHECK_TIMEOUT in ms */ From 5b49c0c1f8ac22fbe3df6c850a9bfa91808c798e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 007/161] Move definitions of LORA_MAC_FRMPAYLOAD_OVERHEAD to the MAC header. --- src/mac/LoRaMac.c | 4 ---- src/mac/LoRaMac.h | 7 +++++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 861dc3567..46c7f280a 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -34,11 +34,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define LORA_MAC_COMMAND_MAX_LENGTH 15 /*! - * FRMPayload overhead to be used when setting the Radio.SetMaxPayloadLength - * in RxWindowSetup function. - * Maximum PHYPayload = MaxPayloadOfDatarate/MaxPayloadOfDatarateRepeater + LORA_MAC_FRMPAYLOAD_OVERHEAD */ -#define LORA_MAC_FRMPAYLOAD_OVERHEAD 13 // MHDR(1) + FHDR(7) + Port(1) + MIC(4) /*! * LoRaMac duty cycle for the back-off procedure during the first hour. diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index 88b7d200b..e561998a9 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -82,6 +82,13 @@ */ #define LORAMAC_MFR_LEN 4 +/*! + * FRMPayload overhead to be used when setting the Radio.SetMaxPayloadLength + * in RxWindowSetup function. + * Maximum PHYPayload = MaxPayloadOfDatarate/MaxPayloadOfDatarateRepeater + LORA_MAC_FRMPAYLOAD_OVERHEAD + */ +#define LORA_MAC_FRMPAYLOAD_OVERHEAD 13 // MHDR(1) + FHDR(7) + Port(1) + MIC(4) + /*! * LoRaWAN devices classes definition */ From e59099343ea5a85a3e0a58e1efa41ba8233de91c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 008/161] Update data struct sChannelParams. Add alternative frequency for Rx1 window. --- src/mac/LoRaMac.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index e561998a9..b4940a063 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -179,6 +179,10 @@ typedef struct sChannelParams * Frequency in Hz */ uint32_t Frequency; + /*! + * Alternative frequency for RX window 1 + */ + uint32_t Rx1Frequency; /*! * Data rate definition */ From 0dadb8a755a79bb813523c62ecdea212e40b34ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 009/161] Update data struct sLoRaMacParams. - Remove ChannelsMask - Add uplink and downlink dwell time - Add MaxEirp --- src/mac/LoRaMac.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index b4940a063..cfcd06ff3 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -258,9 +258,17 @@ typedef struct sLoRaMacParams */ Rx2ChannelParams_t Rx2Channel; /*! - * Mask indicating which channels are enabled + * Uplink dwell time configuration. 0: No limit, 1: 400ms */ - uint16_t ChannelsMask[6]; + uint8_t UplinkDwellTime; + /*! + * Downlink dwell time configuration. 0: No limit, 1: 400ms + */ + uint8_t DownlinkDwellTime; + /*! + * Maximum possible EIRP + */ + uint8_t MaxEirp; }LoRaMacParams_t; /*! From 9a5646d61eed10c89d2400964834b90e25ae34ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 010/161] Add new MAC commands for v1.0.2 --- src/mac/LoRaMac.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index cfcd06ff3..c0af0ab99 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -374,6 +374,14 @@ typedef enum eLoRaMacMoteCmd * RXTimingSetupAns */ MOTE_MAC_RX_TIMING_SETUP_ANS = 0x08, + /*! + * TXParamSetupAns + */ + MOTE_MAC_TX_PARAM_SETUP_ANS = 0x09, + /*! + * DlChannelAns + */ + MOTE_MAC_DL_CHANNEL_ANS = 0x0A }LoRaMacMoteCmd_t; /*! @@ -411,6 +419,14 @@ typedef enum eLoRaMacSrvCmd * RXTimingSetupReq */ SRV_MAC_RX_TIMING_SETUP_REQ = 0x08, + /*! + * NewChannelReq + */ + SRV_MAC_TX_PARAM_SETUP_REQ = 0x09, + /*! + * DlChannelReq + */ + SRV_MAC_DL_CHANNEL_REQ = 0x0A, }LoRaMacSrvCmd_t; /*! From 0734e2fcf92862f4e4dc281a0f10aa2f63fe2cab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 011/161] Update API of LoRaMacInitialization. --- src/mac/LoRaMac.h | 63 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 4 deletions(-) diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index c0af0ab99..53c7b93ca 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -1511,8 +1511,60 @@ typedef enum eLoRaMacStatus * Service not started - the device is switched off */ LORAMAC_STATUS_DEVICE_OFF, + /*! + * Service not started - the specified region is not supported + * or not activated with preprocessor definitions. + */ + LORAMAC_STATUS_REGION_NOT_SUPPORTED }LoRaMacStatus_t; +/*! + * LoRaMAC region eunumeration + */ +typedef enum eLoRaMacRegion_t +{ + /*! + * AS band on 923MHz + */ + LORAMAC_REGION_AS923, + /*! + * Australian band on 915MHz + */ + LORAMAC_REGION_AU915, + /*! + * Chinese band on 470MHz + */ + LORAMAC_REGION_CN470, + /*! + * Chinese band on 779MHz + */ + LORAMAC_REGION_CN779, + /*! + * European band on 433MHz + */ + LORAMAC_REGION_EU433, + /*! + * European band on 868MHz + */ + LORAMAC_REGION_EU868, + /*! + * South korean band on 920MHz + */ + LORAMAC_REGION_KR920, + /*! + * India band on 865MHz + */ + LORAMAC_REGION_IN865, + /*! + * North american band on 915MHz + */ + LORAMAC_REGION_US915, + /*! + * North american band on 915MHz with a maximum of 16 channels + */ + LORAMAC_REGION_US915_HYBRID, +}LoRaMacRegion_t; + /*! * LoRaMAC events structure * Used to notify upper layers of MAC events @@ -1560,18 +1612,21 @@ typedef struct sLoRaMacCallback * MLME services. Every data field of \ref LoRaMacPrimitives_t must be * set to a valid callback function. * - * \param [IN] events - Pointer to a structure defining the LoRaMAC - * event functions. Refer to \ref LoRaMacPrimitives_t. + * \param [IN] primitives - Pointer to a structure defining the LoRaMAC + * event functions. Refer to \ref LoRaMacPrimitives_t. * * \param [IN] events - Pointer to a structure defining the LoRaMAC * callback functions. Refer to \ref LoRaMacCallback_t. * + * \param [IN] region - The region to start. + * * \retval LoRaMacStatus_t Status of the operation. Possible returns are: * returns are: * \ref LORAMAC_STATUS_OK, - * \ref LORAMAC_STATUS_PARAMETER_INVALID. + * \ref LORAMAC_STATUS_PARAMETER_INVALID, + * \ref LORAMAC_STATUS_REGION_NOT_SUPPORTED. */ -LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t *primitives, LoRaMacCallback_t *callbacks ); +LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t *primitives, LoRaMacCallback_t *callbacks, LoRaMacRegion_t region ); /*! * \brief Queries the LoRaMAC if it is possible to send the next frame with From c5f4eb308848d5c4167a2fb969ee9ecc1d112b95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 012/161] Add generic EIRP table. --- src/mac/LoRaMac.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index 53c7b93ca..9ab94f516 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -1604,6 +1604,13 @@ typedef struct sLoRaMacCallback uint8_t ( *GetBatteryLevel )( void ); }LoRaMacCallback_t; +/*! + * LoRaMAC Max EIRP (dBm) table + */ +static const uint8_t LoRaMacMaxEirpTable[] = { 8, 10, 12, 13, 14, 16, 18, 20, 21, 24, 26, 27, 29, 30, 33, 36 }; + + + /*! * \brief LoRaMAC layer initialization * From 0661cd1671ec137a8ecced7ca8277e17404d68c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 013/161] Add comment. --- src/mac/LoRaMac.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index 9ab94f516..70d3d4b45 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -1591,6 +1591,9 @@ typedef struct sLoRaMacPrimitives void ( *MacMlmeConfirm )( MlmeConfirm_t *MlmeConfirm ); }LoRaMacPrimitives_t; +/*! + * LoRaMAC callback structure + */ typedef struct sLoRaMacCallback { /*! From b25add51a5d070e4bfd4bb8c8c7a42bc9f904a36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 014/161] Update includes for MAC. --- src/mac/LoRaMac.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 46c7f280a..dc16228f8 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -19,10 +19,13 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae */ #include "board.h" -#include "LoRaMacCrypto.h" #include "LoRaMac.h" +#include "region/Region.h" +#include "LoRaMacCrypto.h" #include "LoRaMacTest.h" + + /*! * Maximum PHY layer payload size */ From d951a75cdd8c7aecc20b32aa9816a9988c842e78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 015/161] Add a variable which holds the current region. --- src/mac/LoRaMac.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index dc16228f8..12903bf12 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -37,7 +37,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define LORA_MAC_COMMAND_MAX_LENGTH 15 /*! + * LoRaMac region. */ +static LoRaMacRegion_t LoRaMacRegion; /*! * LoRaMac duty cycle for the back-off procedure during the first hour. From 13c041a95333fbdfb9da1bb5a070854abaea6b2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 016/161] Update function LoRaMacTestSetDutyCycleOn. --- src/mac/LoRaMac.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 12903bf12..130f6394b 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -4188,11 +4188,14 @@ void LoRaMacTestSetMic( uint16_t txPacketCounter ) void LoRaMacTestSetDutyCycleOn( bool enable ) { -#if ( defined( USE_BAND_868 ) || defined( USE_BAND_433 ) || defined( USE_BAND_780 ) ) - DutyCycleOn = enable; -#else - DutyCycleOn = false; -#endif + VerifyParams_t verify; + + verify.DutyCycle = enable; + + if( RegionVerify( LoRaMacRegion, &verify, PHY_DUTY_CYCLE ) == true ) + { + DutyCycleOn = enable; + } } void LoRaMacTestSetChannel( uint8_t channel ) From e001015e28c62edc173d50dea0df9f366f140e25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 017/161] Update function LoRaMacMcpsRequest. --- src/mac/LoRaMac.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 130f6394b..1320cd6da 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -4084,6 +4084,7 @@ LoRaMacStatus_t LoRaMacMcpsRequest( McpsReq_t *mcpsRequest ) { LoRaMacStatus_t status = LORAMAC_STATUS_SERVICE_UNKNOWN; LoRaMacHeader_t macHdr; + VerifyParams_t verify; uint8_t fPort = 0; void *fBuffer; uint16_t fBufferSize; @@ -4150,9 +4151,11 @@ LoRaMacStatus_t LoRaMacMcpsRequest( McpsReq_t *mcpsRequest ) { if( AdrCtrlOn == false ) { - if( ValueInRange( datarate, LORAMAC_TX_MIN_DATARATE, LORAMAC_TX_MAX_DATARATE ) == true ) + verify.Datarate = datarate; + + if( RegionVerify( LoRaMacRegion, &verify, PHY_TX_DR ) == true ) { - LoRaMacParams.ChannelsDatarate = datarate; + LoRaMacParams.ChannelsDatarate = verify.Datarate; } else { From ba0ccfa86c77c29085e7a44b3de8f4f3515f4aa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 018/161] Update function LoRaMacMlmeRequest. --- src/mac/LoRaMac.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 1320cd6da..e0eeeb0d7 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3983,6 +3983,9 @@ LoRaMacStatus_t LoRaMacMlmeRequest( MlmeReq_t *mlmeRequest ) { LoRaMacStatus_t status = LORAMAC_STATUS_SERVICE_UNKNOWN; LoRaMacHeader_t macHdr; + AlternateDrParams_t altDr; + VerifyParams_t verify; + GetPhyParams_t getPhy; if( mlmeRequest == NULL ) { @@ -4014,19 +4017,16 @@ LoRaMacStatus_t LoRaMacMlmeRequest( MlmeReq_t *mlmeRequest ) return LORAMAC_STATUS_PARAMETER_INVALID; } -#if ( defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) ) - // Enables at least the usage of the 2 datarates. - if( mlmeRequest->Req.Join.NbTrials < 2 ) - { - mlmeRequest->Req.Join.NbTrials = 2; - } -#else - // Enables at least the usage of all datarates. - if( mlmeRequest->Req.Join.NbTrials < 48 ) + // Verify the parameter NbTrials for the join procedure + verify.NbJoinTrials = mlmeRequest->Req.Join.NbTrials; + + if( RegionVerify( LoRaMacRegion, &verify, PHY_NB_JOIN_TRIALS ) == false ) { - mlmeRequest->Req.Join.NbTrials = 48; + // Value not supported, get default + getPhy.Attribute = PHY_DEF_NB_JOIN_TRIALS; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + mlmeRequest->Req.Join.NbTrials = ( uint8_t ) getPhy.Param.Value; } -#endif LoRaMacFlags.Bits.MlmeReq = 1; MlmeConfirm.MlmeRequest = mlmeRequest->Type; @@ -4045,8 +4045,9 @@ LoRaMacStatus_t LoRaMacMlmeRequest( MlmeReq_t *mlmeRequest ) ResetMacParameters( ); - // Add a +1, since we start to count from 0 - LoRaMacParams.ChannelsDatarate = AlternateDatarate( JoinRequestTrials + 1 ); + altDr.NbTrials = JoinRequestTrials + 1; + + LoRaMacParams.ChannelsDatarate = RegionAlternateDr( LoRaMacRegion, &altDr ); status = Send( &macHdr, 0, NULL, 0 ); break; From f7b9d67402c8a41dc4fc3705291df0211440376f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 019/161] Update function LoRaMacChannelRemove. --- src/mac/LoRaMac.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index e0eeeb0d7..b7d74acd5 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3875,7 +3875,8 @@ LoRaMacStatus_t LoRaMacChannelAdd( uint8_t id, ChannelParams_t params ) LoRaMacStatus_t LoRaMacChannelRemove( uint8_t id ) { -#if defined( USE_BAND_433 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) + ChannelRemoveParams_t channelRemove; + if( ( LoRaMacState & LORAMAC_TX_RUNNING ) == LORAMAC_TX_RUNNING ) { if( ( LoRaMacState & LORAMAC_TX_CONFIG ) != LORAMAC_TX_CONFIG ) @@ -3884,25 +3885,13 @@ LoRaMacStatus_t LoRaMacChannelRemove( uint8_t id ) } } - if( ( id < 3 ) || ( id >= LORA_MAX_NB_CHANNELS ) ) + channelRemove.ChannelId = id; + + if( RegionChannelsRemove( LoRaMacRegion, &channelRemove ) == false ) { return LORAMAC_STATUS_PARAMETER_INVALID; } - else - { - // Remove the channel from the list of channels - Channels[id] = ( ChannelParams_t ){ 0, { 0 }, 0 }; - - // Disable the channel as it doesn't exist anymore - if( DisableChannelInMask( id, LoRaMacParams.ChannelsMask ) == false ) - { - return LORAMAC_STATUS_PARAMETER_INVALID; - } - } return LORAMAC_STATUS_OK; -#elif ( defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) || defined( USE_BAND_470 ) ) - return LORAMAC_STATUS_PARAMETER_INVALID; -#endif } LoRaMacStatus_t LoRaMacMulticastChannelLink( MulticastParams_t *channelParam ) From 33b68fa9a7acdb38941c421caab88806b8520b5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 020/161] Update function LoRaMacChannelAdd --- src/mac/LoRaMac.c | 101 ++-------------------------------------------- 1 file changed, 4 insertions(+), 97 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index b7d74acd5..e1f414b64 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3763,18 +3763,8 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) LoRaMacStatus_t LoRaMacChannelAdd( uint8_t id, ChannelParams_t params ) { -#if defined( USE_BAND_470 ) || defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - return LORAMAC_STATUS_PARAMETER_INVALID; -#else - bool datarateInvalid = false; - bool frequencyInvalid = false; - uint8_t band = 0; + ChannelAddParams_t channelAdd; - // The id must not exceed LORA_MAX_NB_CHANNELS - if( id >= LORA_MAX_NB_CHANNELS ) - { - return LORAMAC_STATUS_PARAMETER_INVALID; - } // Validate if the MAC is in a correct state if( ( LoRaMacState & LORAMAC_TX_RUNNING ) == LORAMAC_TX_RUNNING ) { @@ -3783,94 +3773,11 @@ LoRaMacStatus_t LoRaMacChannelAdd( uint8_t id, ChannelParams_t params ) return LORAMAC_STATUS_BUSY; } } - // Validate the datarate - if( ( params.DrRange.Fields.Min > params.DrRange.Fields.Max ) || - ( ValueInRange( params.DrRange.Fields.Min, LORAMAC_TX_MIN_DATARATE, - LORAMAC_TX_MAX_DATARATE ) == false ) || - ( ValueInRange( params.DrRange.Fields.Max, LORAMAC_TX_MIN_DATARATE, - LORAMAC_TX_MAX_DATARATE ) == false ) ) - { - datarateInvalid = true; - } - -#if defined( USE_BAND_433 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) - if( id < 3 ) - { - if( params.Frequency != Channels[id].Frequency ) - { - frequencyInvalid = true; - } - - if( params.DrRange.Fields.Min > DR_0 ) - { - datarateInvalid = true; - } - if( ValueInRange( params.DrRange.Fields.Max, DR_5, LORAMAC_TX_MAX_DATARATE ) == false ) - { - datarateInvalid = true; - } - } -#endif - - // Validate the frequency - if( ( Radio.CheckRfFrequency( params.Frequency ) == true ) && ( params.Frequency > 0 ) && ( frequencyInvalid == false ) ) - { -#if defined( USE_BAND_868 ) - if( ( params.Frequency >= 863000000 ) && ( params.Frequency < 865000000 ) ) - { - band = BAND_G1_2; - } - else if( ( params.Frequency >= 865000000 ) && ( params.Frequency <= 868000000 ) ) - { - band = BAND_G1_0; - } - else if( ( params.Frequency > 868000000 ) && ( params.Frequency <= 868600000 ) ) - { - band = BAND_G1_1; - } - else if( ( params.Frequency >= 868700000 ) && ( params.Frequency <= 869200000 ) ) - { - band = BAND_G1_2; - } - else if( ( params.Frequency >= 869400000 ) && ( params.Frequency <= 869650000 ) ) - { - band = BAND_G1_3; - } - else if( ( params.Frequency >= 869700000 ) && ( params.Frequency <= 870000000 ) ) - { - band = BAND_G1_4; - } - else - { - frequencyInvalid = true; - } -#endif - } - else - { - frequencyInvalid = true; - } - - if( ( datarateInvalid == true ) && ( frequencyInvalid == true ) ) - { - return LORAMAC_STATUS_FREQ_AND_DR_INVALID; - } - if( datarateInvalid == true ) - { - return LORAMAC_STATUS_DATARATE_INVALID; - } - if( frequencyInvalid == true ) - { - return LORAMAC_STATUS_FREQUENCY_INVALID; - } - // Every parameter is valid, activate the channel - Channels[id] = params; - Channels[id].Band = band; - LoRaMacParams.ChannelsMask[0] |= ( 1 << id ); + channelAdd.NewChannel = ¶ms; + channelAdd.ChannelId = id; - return LORAMAC_STATUS_OK; -#endif + return RegionChannelAdd( LoRaMacRegion, &channelAdd ); } LoRaMacStatus_t LoRaMacChannelRemove( uint8_t id ) From c2291591b00aa9bfce315a3cd7312380fedf57e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 021/161] Add new locals for LoRaMacMibSetRequestConfirm. --- src/mac/LoRaMac.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index e1f414b64..9bd5b24fa 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3449,6 +3449,8 @@ LoRaMacStatus_t LoRaMacMibGetRequestConfirm( MibRequestConfirm_t *mibGet ) LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) { LoRaMacStatus_t status = LORAMAC_STATUS_OK; + ChanMaskSetParams_t chanMaskSet; + VerifyParams_t verify; if( mibSet == NULL ) { From efd5f0d699ce66aeb2fb99620b1209d1d91a5cc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 022/161] Update LoRaMacMibSetRequestConfirm, case MIB_CHANNELS_TX_POWER. --- src/mac/LoRaMac.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 9bd5b24fa..0e12cc609 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3734,10 +3734,11 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) } case MIB_CHANNELS_TX_POWER: { - if( ValueInRange( mibSet->Param.ChannelsTxPower, - LORAMAC_MAX_TX_POWER, LORAMAC_MIN_TX_POWER ) ) + verify.TxPower = mibSet->Param.ChannelsTxPower; + + if( RegionVerify( LoRaMacRegion, &verify, PHY_TX_POWER ) == true ) { - LoRaMacParams.ChannelsTxPower = mibSet->Param.ChannelsTxPower; + LoRaMacParams.ChannelsTxPower = verify.TxPower; } else { From 0939c66392542368e6aa62a5cb9ab37a656da821 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 023/161] Update LoRaMacMibSetRequestConfirm, case MIB_CHANNELS_DEFAULT_TX_POWER. --- src/mac/LoRaMac.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 0e12cc609..625284dab 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3721,10 +3721,11 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) } case MIB_CHANNELS_DEFAULT_TX_POWER: { - if( ValueInRange( mibSet->Param.ChannelsDefaultTxPower, - LORAMAC_MAX_TX_POWER, LORAMAC_MIN_TX_POWER ) ) + verify.TxPower = mibSet->Param.ChannelsDefaultTxPower; + + if( RegionVerify( LoRaMacRegion, &verify, PHY_DEF_TX_POWER ) == true ) { - LoRaMacParamsDefaults.ChannelsTxPower = mibSet->Param.ChannelsDefaultTxPower; + LoRaMacParamsDefaults.ChannelsTxPower = verify.TxPower; } else { From 7791c3f475cd20e1c049c1328475b48874ec1558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 024/161] Update LoRaMacMibSetRequestConfirm, case MIB_CHANNELS_DATARATE. --- src/mac/LoRaMac.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 625284dab..05f9dcc89 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3708,10 +3708,11 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) } case MIB_CHANNELS_DATARATE: { - if( ValueInRange( mibSet->Param.ChannelsDatarate, - LORAMAC_TX_MIN_DATARATE, LORAMAC_TX_MAX_DATARATE ) ) + verify.Datarate = mibSet->Param.ChannelsDatarate; + + if( RegionVerify( LoRaMacRegion, &verify, PHY_TX_DR ) == true ) { - LoRaMacParams.ChannelsDatarate = mibSet->Param.ChannelsDatarate; + LoRaMacParams.ChannelsDatarate = verify.Datarate; } else { From 50f3e827d861bdfa719724ad1c02111c61c0efa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 025/161] Update LoRaMacMibSetRequestConfirm, case MIB_CHANNELS_DEFAULT_DATARATE. --- src/mac/LoRaMac.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 05f9dcc89..ea02e1caf 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3687,19 +3687,12 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) } case MIB_CHANNELS_DEFAULT_DATARATE: { -#if defined( USE_BAND_433 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) - if( ValueInRange( mibSet->Param.ChannelsDefaultDatarate, - DR_0, DR_5 ) ) - { - LoRaMacParamsDefaults.ChannelsDatarate = mibSet->Param.ChannelsDefaultDatarate; - } -#else - if( ValueInRange( mibSet->Param.ChannelsDefaultDatarate, - LORAMAC_TX_MIN_DATARATE, LORAMAC_TX_MAX_DATARATE ) ) + verify.Datarate = mibSet->Param.ChannelsDefaultDatarate; + + if( RegionVerify( LoRaMacRegion, &verify, PHY_DEF_TX_DR ) == true ) { - LoRaMacParamsDefaults.ChannelsDatarate = mibSet->Param.ChannelsDefaultDatarate; + LoRaMacParamsDefaults.ChannelsDatarate = verify.Datarate; } -#endif else { status = LORAMAC_STATUS_PARAMETER_INVALID; From 01f12e4559486e6694e9f903c128a9556fb7b891 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 026/161] Update LoRaMacMibSetRequestConfirm, case MIB_CHANNELS_MASK. --- src/mac/LoRaMac.c | 41 +++-------------------------------------- 1 file changed, 3 insertions(+), 38 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index ea02e1caf..57f7d01c1 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3603,45 +3603,10 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) } case MIB_CHANNELS_MASK: { - if( mibSet->Param.ChannelsMask ) - { -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - bool chanMaskState = true; + chanMaskSet.ChannelsMaskIn = mibSet->Param.ChannelsMask; + chanMaskSet.ChannelsMaskType = CHANNELS_MASK; -#if defined( USE_BAND_915_HYBRID ) - chanMaskState = ValidateChannelMask( mibSet->Param.ChannelsMask ); -#endif - if( chanMaskState == true ) - { - if( ( CountNbEnabled125kHzChannels( mibSet->Param.ChannelsMask ) < 2 ) && - ( CountNbEnabled125kHzChannels( mibSet->Param.ChannelsMask ) > 0 ) ) - { - status = LORAMAC_STATUS_PARAMETER_INVALID; - } - else - { - memcpy1( ( uint8_t* ) LoRaMacParams.ChannelsMask, - ( uint8_t* ) mibSet->Param.ChannelsMask, sizeof( LoRaMacParams.ChannelsMask ) ); - for ( uint8_t i = 0; i < sizeof( LoRaMacParams.ChannelsMask ) / 2; i++ ) - { - // Disable channels which are no longer available - ChannelsMaskRemaining[i] &= LoRaMacParams.ChannelsMask[i]; - } - } - } - else - { - status = LORAMAC_STATUS_PARAMETER_INVALID; - } -#elif defined( USE_BAND_470 ) - memcpy1( ( uint8_t* ) LoRaMacParams.ChannelsMask, - ( uint8_t* ) mibSet->Param.ChannelsMask, sizeof( LoRaMacParams.ChannelsMask ) ); -#else - memcpy1( ( uint8_t* ) LoRaMacParams.ChannelsMask, - ( uint8_t* ) mibSet->Param.ChannelsMask, 2 ); -#endif - } - else + if( RegionChanMaskSet( LoRaMacRegion, &chanMaskSet ) == false ) { status = LORAMAC_STATUS_PARAMETER_INVALID; } From 697f0dc141bd77c847f4e9c95318dd4979fc9bcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 027/161] Update LoRaMacMibSetRequestConfirm, case MIB_CHANNELS_DEFAULT_MASK. --- src/mac/LoRaMac.c | 41 +++-------------------------------------- 1 file changed, 3 insertions(+), 38 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 57f7d01c1..f55bdd71c 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3557,45 +3557,10 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) } case MIB_CHANNELS_DEFAULT_MASK: { - if( mibSet->Param.ChannelsDefaultMask ) - { -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - bool chanMaskState = true; + chanMaskSet.ChannelsMaskIn = mibSet->Param.ChannelsMask; + chanMaskSet.ChannelsMaskType = CHANNELS_DEFAULT_MASK; -#if defined( USE_BAND_915_HYBRID ) - chanMaskState = ValidateChannelMask( mibSet->Param.ChannelsDefaultMask ); -#endif - if( chanMaskState == true ) - { - if( ( CountNbEnabled125kHzChannels( mibSet->Param.ChannelsMask ) < 2 ) && - ( CountNbEnabled125kHzChannels( mibSet->Param.ChannelsMask ) > 0 ) ) - { - status = LORAMAC_STATUS_PARAMETER_INVALID; - } - else - { - memcpy1( ( uint8_t* ) LoRaMacParamsDefaults.ChannelsMask, - ( uint8_t* ) mibSet->Param.ChannelsDefaultMask, sizeof( LoRaMacParamsDefaults.ChannelsMask ) ); - for ( uint8_t i = 0; i < sizeof( LoRaMacParamsDefaults.ChannelsMask ) / 2; i++ ) - { - // Disable channels which are no longer available - ChannelsMaskRemaining[i] &= LoRaMacParamsDefaults.ChannelsMask[i]; - } - } - } - else - { - status = LORAMAC_STATUS_PARAMETER_INVALID; - } -#elif defined( USE_BAND_470 ) - memcpy1( ( uint8_t* ) LoRaMacParamsDefaults.ChannelsMask, - ( uint8_t* ) mibSet->Param.ChannelsDefaultMask, sizeof( LoRaMacParamsDefaults.ChannelsMask ) ); -#else - memcpy1( ( uint8_t* ) LoRaMacParamsDefaults.ChannelsMask, - ( uint8_t* ) mibSet->Param.ChannelsDefaultMask, 2 ); -#endif - } - else + if( RegionChanMaskSet( LoRaMacRegion, &chanMaskSet ) == false ) { status = LORAMAC_STATUS_PARAMETER_INVALID; } From d04356aef48746ad0988beceb48b0625f2e0ac62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 028/161] Update LoRaMacMibGetRequestConfirm case MIB_CHANNELS_MASK. --- src/mac/LoRaMac.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index f55bdd71c..61703ce88 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3370,7 +3370,10 @@ LoRaMacStatus_t LoRaMacMibGetRequestConfirm( MibRequestConfirm_t *mibGet ) } case MIB_CHANNELS_MASK: { - mibGet->Param.ChannelsMask = LoRaMacParams.ChannelsMask; + getPhy.Attribute = PHY_CHANNELS_MASK; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + + mibGet->Param.ChannelsMask = getPhy.Param.ChannelsMask; break; } case MIB_CHANNELS_NB_REP: From 8ed30a2e8244a32c79d9bab4f35907be6d5ebb84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 029/161] Update LoRaMacMibGetRequestConfirm case CHANNELS_DEFAULT_MASK. --- src/mac/LoRaMac.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 61703ce88..3df7c85e6 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3365,7 +3365,10 @@ LoRaMacStatus_t LoRaMacMibGetRequestConfirm( MibRequestConfirm_t *mibGet ) } case MIB_CHANNELS_DEFAULT_MASK: { - mibGet->Param.ChannelsDefaultMask = LoRaMacParamsDefaults.ChannelsMask; + getPhy.Attribute = PHY_CHANNELS_DEFAULT_MASK; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + + mibGet->Param.ChannelsDefaultMask = getPhy.Param.ChannelsMask; break; } case MIB_CHANNELS_MASK: From 57fc260b1c8de2e7b3c303ee3fe28c285604351c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 030/161] Update LoRaMacMibGetRequestConfirm case MIB_CHANNELS. --- src/mac/LoRaMac.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 3df7c85e6..de0382e9e 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3350,7 +3350,10 @@ LoRaMacStatus_t LoRaMacMibGetRequestConfirm( MibRequestConfirm_t *mibGet ) } case MIB_CHANNELS: { - mibGet->Param.ChannelList = Channels; + getPhy.Attribute = PHY_CHANNELS; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + + mibGet->Param.ChannelList = getPhy.Param.Channels; break; } case MIB_RX2_CHANNEL: From 1382a09fdb486ba8ed473745a279140e00ce7fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 031/161] Add new local variable to LoRaMacMibGetRequestConfirm. --- src/mac/LoRaMac.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index de0382e9e..ca570d86d 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3295,6 +3295,7 @@ LoRaMacStatus_t LoRaMacQueryTxPossible( uint8_t size, LoRaMacTxInfo_t* txInfo ) LoRaMacStatus_t LoRaMacMibGetRequestConfirm( MibRequestConfirm_t *mibGet ) { LoRaMacStatus_t status = LORAMAC_STATUS_OK; + GetPhyParams_t getPhy; if( mibGet == NULL ) { From d3baa143a6848bf01d69cdd48b82ef34b9a4563f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 032/161] Update function LoRaMacQueryTxPossible. --- src/mac/LoRaMac.c | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index ca570d86d..298a2f1a5 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3251,7 +3251,10 @@ LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t *primitives, LoRaMacC LoRaMacStatus_t LoRaMacQueryTxPossible( uint8_t size, LoRaMacTxInfo_t* txInfo ) { + AdrNextParams_t adrNext; + GetPhyParams_t getPhy; int8_t datarate = LoRaMacParamsDefaults.ChannelsDatarate; + int8_t txPower = LoRaMacParamsDefaults.ChannelsTxPower; uint8_t fOptLen = MacCommandsBufferIndex + MacCommandsBufferToRepeatIndex; if( txInfo == NULL ) @@ -3259,31 +3262,47 @@ LoRaMacStatus_t LoRaMacQueryTxPossible( uint8_t size, LoRaMacTxInfo_t* txInfo ) return LORAMAC_STATUS_PARAMETER_INVALID; } - AdrNextDr( AdrCtrlOn, false, &datarate ); + // Setup ADR request + adrNext.UpdateChanMask = false; + adrNext.AdrEnabled = AdrCtrlOn; + adrNext.AdrAckCounter = AdrAckCounter; + adrNext.Datarate = LoRaMacParams.ChannelsDatarate; + adrNext.TxPower = LoRaMacParams.ChannelsTxPower; + + // We call the function for information purposes only. We don't want to + // apply the datarate, the tx power and the ADR ack counter. + RegionAdrNext( LoRaMacRegion, &adrNext, &datarate, &txPower, &AdrAckCounter ); + + // Setup PHY request + getPhy.Datarate = LoRaMacParams.ChannelsDatarate; + getPhy.Attribute = PHY_MAX_PAYLOAD; + // Change request in case repeater is supported if( RepeaterSupport == true ) { - txInfo->CurrentPayloadSize = MaxPayloadOfDatarateRepeater[datarate]; - } - else - { - txInfo->CurrentPayloadSize = MaxPayloadOfDatarate[datarate]; + getPhy.Attribute = PHY_MAX_PAYLOAD_REPEATER; } + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + txInfo->CurrentPayloadSize = getPhy.Param.Value; + // Verify if the fOpts fit into the maximum payload if( txInfo->CurrentPayloadSize >= fOptLen ) { txInfo->MaxPossiblePayload = txInfo->CurrentPayloadSize - fOptLen; } else { + txInfo->MaxPossiblePayload = 0; return LORAMAC_STATUS_MAC_CMD_LENGTH_ERROR; } + // Verify if the payload fits into the maximum payload if( ValidatePayloadLength( size, datarate, 0 ) == false ) { return LORAMAC_STATUS_LENGTH_ERROR; } + // Verify if the fOpts and the payload fit into the maximum payload if( ValidatePayloadLength( size, datarate, fOptLen ) == false ) { return LORAMAC_STATUS_MAC_CMD_LENGTH_ERROR; From 59683d6151b93487510abcf232592f33ddae2bcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 033/161] Update implementation of LoRaMacInitialization. --- src/mac/LoRaMac.c | 146 ++++++++++++++++++++-------------------------- 1 file changed, 64 insertions(+), 82 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 298a2f1a5..788eeedb0 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3103,8 +3103,10 @@ LoRaMacStatus_t SetTxContinuousWave( uint16_t timeout ) return LORAMAC_STATUS_OK; } -LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t *primitives, LoRaMacCallback_t *callbacks ) +LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t *primitives, LoRaMacCallback_t *callbacks, LoRaMacRegion_t region ) { + GetPhyParams_t getPhy; + if( primitives == NULL ) { return LORAMAC_STATUS_PARAMETER_INVALID; @@ -3116,9 +3118,15 @@ LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t *primitives, LoRaMacC { return LORAMAC_STATUS_PARAMETER_INVALID; } + // Verify if the region is supported + if( RegionIsActive( region ) == false ) + { + return LORAMAC_STATUS_REGION_NOT_SUPPORTED; + } LoRaMacPrimitives = primitives; LoRaMacCallbacks = callbacks; + LoRaMacRegion = region; LoRaMacFlags.Value = 0; @@ -3133,92 +3141,66 @@ LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t *primitives, LoRaMacC AggregatedLastTxDoneTime = 0; AggregatedTimeOff = 0; - // Duty cycle -#if defined( USE_BAND_433 ) - DutyCycleOn = true; -#elif defined( USE_BAND_470 ) - DutyCycleOn = false; -#elif defined( USE_BAND_780 ) - DutyCycleOn = true; -#elif defined( USE_BAND_868 ) - DutyCycleOn = true; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - DutyCycleOn = false; -#else - #error "Please define a frequency band in the compiler options." -#endif - // Reset to defaults - LoRaMacParamsDefaults.ChannelsTxPower = LORAMAC_DEFAULT_TX_POWER; - LoRaMacParamsDefaults.ChannelsDatarate = LORAMAC_DEFAULT_DATARATE; + getPhy.Attribute = PHY_DUTY_CYCLE; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + DutyCycleOn = ( bool ) getPhy.Param.Value; + + getPhy.Attribute = PHY_DEF_TX_POWER; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.ChannelsTxPower = getPhy.Param.Value; + + getPhy.Attribute = PHY_DEF_TX_DR; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.ChannelsDatarate = getPhy.Param.Value; + + getPhy.Attribute = PHY_MAX_RX_WINDOW; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.MaxRxWindow = getPhy.Param.Value; + + getPhy.Attribute = PHY_RECEIVE_DELAY1; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.ReceiveDelay1 = getPhy.Param.Value; + + getPhy.Attribute = PHY_RECEIVE_DELAY2; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.ReceiveDelay2 = getPhy.Param.Value; + + getPhy.Attribute = PHY_JOIN_ACCEPT_DELAY1; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.JoinAcceptDelay1 = getPhy.Param.Value; + + getPhy.Attribute = PHY_JOIN_ACCEPT_DELAY2; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.JoinAcceptDelay2 = getPhy.Param.Value; - LoRaMacParamsDefaults.MaxRxWindow = MAX_RX_WINDOW; - LoRaMacParamsDefaults.ReceiveDelay1 = RECEIVE_DELAY1; - LoRaMacParamsDefaults.ReceiveDelay2 = RECEIVE_DELAY2; - LoRaMacParamsDefaults.JoinAcceptDelay1 = JOIN_ACCEPT_DELAY1; - LoRaMacParamsDefaults.JoinAcceptDelay2 = JOIN_ACCEPT_DELAY2; + getPhy.Attribute = PHY_DEF_DR1_OFFSET; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.Rx1DrOffset = getPhy.Param.Value; + + getPhy.Attribute = PHY_DEF_RX2_FREQUENCY; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.Rx2Channel.Frequency = getPhy.Param.Value; + + getPhy.Attribute = PHY_DEF_RX2_DR; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.Rx2Channel.Datarate = getPhy.Param.Value; + + getPhy.Attribute = PHY_DEF_UPLINK_DWELL_TIME; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.UplinkDwellTime = getPhy.Param.Value; + + getPhy.Attribute = PHY_DEF_DOWNLINK_DWELL_TIME; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.DownlinkDwellTime = getPhy.Param.Value; + + getPhy.Attribute = PHY_DEF_MAX_EIRP; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.MaxEirp = getPhy.Param.Value; LoRaMacParamsDefaults.ChannelsNbRep = 1; - LoRaMacParamsDefaults.Rx1DrOffset = 0; - - LoRaMacParamsDefaults.Rx2Channel = ( Rx2ChannelParams_t )RX_WND_2_CHANNEL; - - // Channel mask -#if defined( USE_BAND_433 ) - LoRaMacParamsDefaults.ChannelsMask[0] = LC( 1 ) + LC( 2 ) + LC( 3 ); -#elif defined ( USE_BAND_470 ) - LoRaMacParamsDefaults.ChannelsMask[0] = 0xFFFF; - LoRaMacParamsDefaults.ChannelsMask[1] = 0xFFFF; - LoRaMacParamsDefaults.ChannelsMask[2] = 0xFFFF; - LoRaMacParamsDefaults.ChannelsMask[3] = 0xFFFF; - LoRaMacParamsDefaults.ChannelsMask[4] = 0xFFFF; - LoRaMacParamsDefaults.ChannelsMask[5] = 0xFFFF; -#elif defined( USE_BAND_780 ) - LoRaMacParamsDefaults.ChannelsMask[0] = LC( 1 ) + LC( 2 ) + LC( 3 ); -#elif defined( USE_BAND_868 ) - LoRaMacParamsDefaults.ChannelsMask[0] = LC( 1 ) + LC( 2 ) + LC( 3 ); -#elif defined( USE_BAND_915 ) - LoRaMacParamsDefaults.ChannelsMask[0] = 0xFFFF; - LoRaMacParamsDefaults.ChannelsMask[1] = 0xFFFF; - LoRaMacParamsDefaults.ChannelsMask[2] = 0xFFFF; - LoRaMacParamsDefaults.ChannelsMask[3] = 0xFFFF; - LoRaMacParamsDefaults.ChannelsMask[4] = 0x00FF; - LoRaMacParamsDefaults.ChannelsMask[5] = 0x0000; -#elif defined( USE_BAND_915_HYBRID ) - LoRaMacParamsDefaults.ChannelsMask[0] = 0x00FF; - LoRaMacParamsDefaults.ChannelsMask[1] = 0x0000; - LoRaMacParamsDefaults.ChannelsMask[2] = 0x0000; - LoRaMacParamsDefaults.ChannelsMask[3] = 0x0000; - LoRaMacParamsDefaults.ChannelsMask[4] = 0x0001; - LoRaMacParamsDefaults.ChannelsMask[5] = 0x0000; -#else - #error "Please define a frequency band in the compiler options." -#endif -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - // 125 kHz channels - for( uint8_t i = 0; i < LORA_MAX_NB_CHANNELS - 8; i++ ) - { - Channels[i].Frequency = 902.3e6 + i * 200e3; - Channels[i].DrRange.Value = ( DR_3 << 4 ) | DR_0; - Channels[i].Band = 0; - } - // 500 kHz channels - for( uint8_t i = LORA_MAX_NB_CHANNELS - 8; i < LORA_MAX_NB_CHANNELS; i++ ) - { - Channels[i].Frequency = 903.0e6 + ( i - ( LORA_MAX_NB_CHANNELS - 8 ) ) * 1.6e6; - Channels[i].DrRange.Value = ( DR_4 << 4 ) | DR_4; - Channels[i].Band = 0; - } -#elif defined( USE_BAND_470 ) - // 125 kHz channels - for( uint8_t i = 0; i < LORA_MAX_NB_CHANNELS; i++ ) - { - Channels[i].Frequency = 470.3e6 + i * 200e3; - Channels[i].DrRange.Value = ( DR_5 << 4 ) | DR_0; - Channels[i].Band = 0; - } -#endif + RegionInitDefaults( LoRaMacRegion, INIT_TYPE_INIT ); ResetMacParameters( ); From 7b16509dd41714890567dc5bb8f1bd5da35a629d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 034/161] Update implementation of SetTxContinuousWave. --- src/mac/LoRaMac.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 788eeedb0..e0432f376 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3086,18 +3086,20 @@ LoRaMacStatus_t SendFrameOnChannel( ChannelParams_t channel ) LoRaMacStatus_t SetTxContinuousWave( uint16_t timeout ) { - int8_t txPowerIndex = 0; - int8_t txPower = 0; + ContinuousWaveParams_t continuousWave; - txPowerIndex = LimitTxPower( LoRaMacParams.ChannelsTxPower, Bands[Channels[Channel].Band].TxMaxPower ); - txPower = TxPowers[txPowerIndex]; + continuousWave.Channel = Channel; + continuousWave.Datarate = LoRaMacParams.ChannelsDatarate; + continuousWave.TxPower = LoRaMacParams.ChannelsTxPower; + continuousWave.MaxEirp = LoRaMacParams.MaxEirp; + continuousWave.Timeout = timeout; + + RegionSetContinuousWave( LoRaMacRegion, &continuousWave ); // Starts the MAC layer status check timer TimerSetValue( &MacStateCheckTimer, MAC_STATE_CHECK_TIMEOUT ); TimerStart( &MacStateCheckTimer ); - Radio.SetTxContinuousWave( Channels[Channel].Frequency, txPower, timeout ); - LoRaMacState |= LORAMAC_TX_RUNNING; return LORAMAC_STATUS_OK; From 7d34d34b57ea17b63c65ba22ebf428d6f554b108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 035/161] Update implementation of SendFrameOnChannel. --- src/mac/LoRaMac.c | 65 ++++++++++------------------------------------- 1 file changed, 13 insertions(+), 52 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index e0432f376..f25ba837a 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -687,10 +687,10 @@ static int8_t AlternateDatarate( uint16_t nbTrials ); * \remark PrepareFrame must be called at least once before calling this * function. * - * \param [IN] channel Channel parameters + * \param [IN] channel Channel to transmit on * \retval status Status of the operation. */ -LoRaMacStatus_t SendFrameOnChannel( ChannelParams_t channel ); +LoRaMacStatus_t SendFrameOnChannel( uint8_t channel ); /*! * \brief Sets the radio in continuous transmission mode @@ -2674,7 +2674,7 @@ static LoRaMacStatus_t ScheduleTx( ) if( dutyCycleTimeOff == 0 ) { // Try to send now - return SendFrameOnChannel( Channels[Channel] ); + return SendFrameOnChannel( Channel ); } else { @@ -3006,62 +3006,23 @@ LoRaMacStatus_t PrepareFrame( LoRaMacHeader_t *macHdr, LoRaMacFrameCtrl_t *fCtrl return LORAMAC_STATUS_OK; } -LoRaMacStatus_t SendFrameOnChannel( ChannelParams_t channel ) +LoRaMacStatus_t SendFrameOnChannel( uint8_t channel ) { - int8_t datarate = Datarates[LoRaMacParams.ChannelsDatarate]; - int8_t txPowerIndex = 0; + TxConfigParams_t txConfig; int8_t txPower = 0; - txPowerIndex = LimitTxPower( LoRaMacParams.ChannelsTxPower, Bands[channel.Band].TxMaxPower ); - txPower = TxPowers[txPowerIndex]; + txConfig.Channel = channel; + txConfig.Datarate = LoRaMacParams.ChannelsDatarate; + txConfig.TxPower = LoRaMacParams.ChannelsTxPower; + txConfig.MaxEirp = LoRaMacParams.MaxEirp; + txConfig.PktLen = LoRaMacBufferPktLen; + + RegionTxConfig( LoRaMacRegion, &txConfig, &txPower, &TxTimeOnAir ); MlmeConfirm.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; McpsConfirm.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; McpsConfirm.Datarate = LoRaMacParams.ChannelsDatarate; - McpsConfirm.TxPower = txPowerIndex; - McpsConfirm.UpLinkFrequency = channel.Frequency; - - Radio.SetChannel( channel.Frequency ); - -#if defined( USE_BAND_433 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) - if( LoRaMacParams.ChannelsDatarate == DR_7 ) - { // High Speed FSK channel - Radio.SetMaxPayloadLength( MODEM_FSK, LoRaMacBufferPktLen ); - Radio.SetTxConfig( MODEM_FSK, txPower, 25e3, 0, datarate * 1e3, 0, 5, false, true, 0, 0, false, 3e3 ); - TxTimeOnAir = Radio.TimeOnAir( MODEM_FSK, LoRaMacBufferPktLen ); - - } - else if( LoRaMacParams.ChannelsDatarate == DR_6 ) - { // High speed LoRa channel - Radio.SetMaxPayloadLength( MODEM_LORA, LoRaMacBufferPktLen ); - Radio.SetTxConfig( MODEM_LORA, txPower, 0, 1, datarate, 1, 8, false, true, 0, 0, false, 3e3 ); - TxTimeOnAir = Radio.TimeOnAir( MODEM_LORA, LoRaMacBufferPktLen ); - } - else - { // Normal LoRa channel - Radio.SetMaxPayloadLength( MODEM_LORA, LoRaMacBufferPktLen ); - Radio.SetTxConfig( MODEM_LORA, txPower, 0, 0, datarate, 1, 8, false, true, 0, 0, false, 3e3 ); - TxTimeOnAir = Radio.TimeOnAir( MODEM_LORA, LoRaMacBufferPktLen ); - } -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - Radio.SetMaxPayloadLength( MODEM_LORA, LoRaMacBufferPktLen ); - if( LoRaMacParams.ChannelsDatarate >= DR_4 ) - { // High speed LoRa channel BW500 kHz - Radio.SetTxConfig( MODEM_LORA, txPower, 0, 2, datarate, 1, 8, false, true, 0, 0, false, 3e3 ); - TxTimeOnAir = Radio.TimeOnAir( MODEM_LORA, LoRaMacBufferPktLen ); - } - else - { // Normal LoRa channel - Radio.SetTxConfig( MODEM_LORA, txPower, 0, 0, datarate, 1, 8, false, true, 0, 0, false, 3e3 ); - TxTimeOnAir = Radio.TimeOnAir( MODEM_LORA, LoRaMacBufferPktLen ); - } -#elif defined( USE_BAND_470 ) - Radio.SetMaxPayloadLength( MODEM_LORA, LoRaMacBufferPktLen ); - Radio.SetTxConfig( MODEM_LORA, txPower, 0, 0, datarate, 1, 8, false, true, 0, 0, false, 3e3 ); - TxTimeOnAir = Radio.TimeOnAir( MODEM_LORA, LoRaMacBufferPktLen ); -#else - #error "Please define a frequency band in the compiler options." -#endif + McpsConfirm.TxPower = txPower; // Store the time on air McpsConfirm.TxTimeOnAir = TxTimeOnAir; From 8b87911b19f486f7790893a1ef2567e794723b2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 036/161] Update implementation of PrepareFrame. --- src/mac/LoRaMac.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index f25ba837a..1b79a636d 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2850,6 +2850,7 @@ static void ResetMacParameters( void ) LoRaMacStatus_t PrepareFrame( LoRaMacHeader_t *macHdr, LoRaMacFrameCtrl_t *fCtrl, uint8_t fPort, void *fBuffer, uint16_t fBufferSize ) { + AdrNextParams_t adrNext; uint16_t i; uint8_t pktHeaderLen = 0; uint32_t mic = 0; @@ -2904,7 +2905,15 @@ LoRaMacStatus_t PrepareFrame( LoRaMacHeader_t *macHdr, LoRaMacFrameCtrl_t *fCtrl return LORAMAC_STATUS_NO_NETWORK_JOINED; // No network has been joined yet } - fCtrl->Bits.AdrAckReq = AdrNextDr( fCtrl->Bits.Adr, true, &LoRaMacParams.ChannelsDatarate ); + // Adr next request + adrNext.UpdateChanMask = true; + adrNext.AdrEnabled = fCtrl->Bits.Adr; + adrNext.AdrAckCounter = AdrAckCounter; + adrNext.Datarate = LoRaMacParams.ChannelsDatarate; + adrNext.TxPower = LoRaMacParams.ChannelsTxPower; + + fCtrl->Bits.AdrAckReq = RegionAdrNext( LoRaMacRegion, &adrNext, + &LoRaMacParams.ChannelsDatarate, &LoRaMacParams.ChannelsTxPower, &AdrAckCounter ); if( ValidatePayloadLength( LoRaMacTxPayloadLen, LoRaMacParams.ChannelsDatarate, MacCommandsBufferIndex ) == false ) { From 161d1530603a2f803288c6c65e1d2ef461a73109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 037/161] Update implementation of ResetMacParameters. --- src/mac/LoRaMac.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 1b79a636d..524fd3085 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2810,24 +2810,17 @@ static void ResetMacParameters( void ) LoRaMacParams.ChannelsTxPower = LoRaMacParamsDefaults.ChannelsTxPower; LoRaMacParams.ChannelsDatarate = LoRaMacParamsDefaults.ChannelsDatarate; - LoRaMacParams.MaxRxWindow = LoRaMacParamsDefaults.MaxRxWindow; LoRaMacParams.ReceiveDelay1 = LoRaMacParamsDefaults.ReceiveDelay1; LoRaMacParams.ReceiveDelay2 = LoRaMacParamsDefaults.ReceiveDelay2; LoRaMacParams.JoinAcceptDelay1 = LoRaMacParamsDefaults.JoinAcceptDelay1; LoRaMacParams.JoinAcceptDelay2 = LoRaMacParamsDefaults.JoinAcceptDelay2; - LoRaMacParams.Rx1DrOffset = LoRaMacParamsDefaults.Rx1DrOffset; LoRaMacParams.ChannelsNbRep = LoRaMacParamsDefaults.ChannelsNbRep; - LoRaMacParams.Rx2Channel = LoRaMacParamsDefaults.Rx2Channel; - - memcpy1( ( uint8_t* ) LoRaMacParams.ChannelsMask, ( uint8_t* ) LoRaMacParamsDefaults.ChannelsMask, sizeof( LoRaMacParams.ChannelsMask ) ); - -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - memcpy1( ( uint8_t* ) ChannelsMaskRemaining, ( uint8_t* ) LoRaMacParamsDefaults.ChannelsMask, sizeof( LoRaMacParams.ChannelsMask ) ); -#endif - + LoRaMacParams.UplinkDwellTime = LoRaMacParamsDefaults.UplinkDwellTime; + LoRaMacParams.DownlinkDwellTime = LoRaMacParamsDefaults.DownlinkDwellTime; + LoRaMacParams.MaxEirp = LoRaMacParamsDefaults.MaxEirp; NodeAckRequested = false; SrvAckRequested = false; @@ -2842,7 +2835,8 @@ static void ResetMacParameters( void ) } // Initialize channel index. - Channel = LORA_MAX_NB_CHANNELS; + // ToDo Check the initialization value + Channel = 0; // Store the current initialization time LoRaMacInitializationTime = TimerGetCurrentTime( ); From aaa129781bbc684ce78bdc8f3beea91c2812a075 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 038/161] Replace function AlternateDatarate. --- src/mac/LoRaMac.c | 63 +++-------------------------------------------- 1 file changed, 4 insertions(+), 59 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 524fd3085..3a20e9e7a 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -673,14 +673,6 @@ static uint16_t JoinDutyCycle( void ); */ static void CalculateBackOff( uint8_t channel ); -/* - * \brief Alternates the datarate of the channel for the join request. - * - * \param [IN] nbTrials Number of performed join requests. - * \retval Datarate to apply - */ -static int8_t AlternateDatarate( uint16_t nbTrials ); - /*! * \brief LoRaMAC layer prepared frame buffer transmission with channel specification * @@ -1436,6 +1428,7 @@ static void OnTxDelayedTimerEvent( void ) { LoRaMacHeader_t macHdr; LoRaMacFrameCtrl_t fCtrl; + AlternateDrParams_t altDr; TimerStop( &TxDelayedTimer ); LoRaMacState &= ~LORAMAC_TX_DELAYED; @@ -1443,8 +1436,9 @@ static void OnTxDelayedTimerEvent( void ) if( ( LoRaMacFlags.Bits.MlmeReq == 1 ) && ( MlmeConfirm.MlmeRequest == MLME_JOIN ) ) { ResetMacParameters( ); - // Add a +1, since we start to count from 0 - LoRaMacParams.ChannelsDatarate = AlternateDatarate( JoinRequestTrials + 1 ); + + altDr.NbTrials = JoinRequestTrials + 1; + LoRaMacParams.ChannelsDatarate = RegionAlternateDr( LoRaMacRegion, &altDr ); macHdr.Value = 0; macHdr.Bits.MType = FRAME_TYPE_JOIN_REQ; @@ -2736,55 +2730,6 @@ static void CalculateBackOff( uint8_t channel ) AggregatedTimeOff = AggregatedTimeOff + ( TxTimeOnAir * AggregatedDCycle - TxTimeOnAir ); } -static int8_t AlternateDatarate( uint16_t nbTrials ) -{ - int8_t datarate = LORAMAC_TX_MIN_DATARATE; -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) -#if defined( USE_BAND_915 ) - // Re-enable 500 kHz default channels - LoRaMacParams.ChannelsMask[4] = 0x00FF; -#else // defined( USE_BAND_915_HYBRID ) - // Re-enable 500 kHz default channels - ReenableChannels( LoRaMacParamsDefaults.ChannelsMask[4], LoRaMacParams.ChannelsMask ); -#endif - - if( ( nbTrials & 0x01 ) == 0x01 ) - { - datarate = DR_4; - } - else - { - datarate = DR_0; - } -#else - if( ( nbTrials % 48 ) == 0 ) - { - datarate = DR_0; - } - else if( ( nbTrials % 32 ) == 0 ) - { - datarate = DR_1; - } - else if( ( nbTrials % 24 ) == 0 ) - { - datarate = DR_2; - } - else if( ( nbTrials % 16 ) == 0 ) - { - datarate = DR_3; - } - else if( ( nbTrials % 8 ) == 0 ) - { - datarate = DR_4; - } - else - { - datarate = DR_5; - } -#endif - return datarate; -} - static void ResetMacParameters( void ) { IsLoRaMacNetworkJoined = false; From f8ad47e4b73370ee1e977866fa1946f274a362aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 039/161] Update function CalculateBackOff. --- src/mac/LoRaMac.c | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 3a20e9e7a..f6154726e 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2703,30 +2703,18 @@ static uint16_t JoinDutyCycle( void ) static void CalculateBackOff( uint8_t channel ) { - uint16_t dutyCycle = Bands[Channels[channel].Band].DCycle; - uint16_t joinDutyCycle = 0; + CalcBackOffParams_t calcBackOff; - // Reset time-off to initial value. - Bands[Channels[channel].Band].TimeOff = 0; + calcBackOff.Joined = IsLoRaMacNetworkJoined; + calcBackOff.DutyCycleEnabled = DutyCycleOn; + calcBackOff.Channel = channel; + calcBackOff.ElapsedTime = TimerGetElapsedTime( LoRaMacInitializationTime ); + calcBackOff.TxTimeOnAir = TxTimeOnAir; - if( IsLoRaMacNetworkJoined == false ) - { - // The node has not joined yet. Apply join duty cycle to all regions. - joinDutyCycle = JoinDutyCycle( ); - dutyCycle = MAX( dutyCycle, joinDutyCycle ); - - // Update Band time-off. - Bands[Channels[channel].Band].TimeOff = TxTimeOnAir * dutyCycle - TxTimeOnAir; - } - else - { - if( DutyCycleOn == true ) - { - Bands[Channels[channel].Band].TimeOff = TxTimeOnAir * dutyCycle - TxTimeOnAir; - } - } + // Update regional back-off + RegionCalcBackOff( LoRaMacRegion, &calcBackOff ); - // Update Aggregated Time OFF + // Update aggregated time-off AggregatedTimeOff = AggregatedTimeOff + ( TxTimeOnAir * AggregatedDCycle - TxTimeOnAir ); } From acbb7ee1a1683e96438ebcf6e079f5fa2dc15391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 040/161] Remove function JoinDutyCycle. --- src/mac/LoRaMac.c | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index f6154726e..d5758db9e 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -659,13 +659,6 @@ LoRaMacStatus_t PrepareFrame( LoRaMacHeader_t *macHdr, LoRaMacFrameCtrl_t *fCtrl */ static LoRaMacStatus_t ScheduleTx( void ); -/* - * \brief Sets the duty cycle for the join procedure. - * - * \retval Duty cycle - */ -static uint16_t JoinDutyCycle( void ); - /* * \brief Calculates the back-off time for the band of a channel. * @@ -2681,26 +2674,6 @@ static LoRaMacStatus_t ScheduleTx( ) } } -static uint16_t JoinDutyCycle( void ) -{ - uint16_t dutyCycle = 0; - TimerTime_t timeElapsed = TimerGetElapsedTime( LoRaMacInitializationTime ); - - if( timeElapsed < 3600e3 ) - { - dutyCycle = BACKOFF_DC_1_HOUR; - } - else if( timeElapsed < ( 3600e3 + 36000e3 ) ) - { - dutyCycle = BACKOFF_DC_10_HOURS; - } - else - { - dutyCycle = BACKOFF_DC_24_HOURS; - } - return dutyCycle; -} - static void CalculateBackOff( uint8_t channel ) { CalcBackOffParams_t calcBackOff; From af3d2c169ef831e92d66791356a3998e9bfe5127 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 041/161] Update function ScheduleTx. --- src/mac/LoRaMac.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index d5758db9e..e54da7ce8 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2634,6 +2634,7 @@ LoRaMacStatus_t Send( LoRaMacHeader_t *macHdr, uint8_t fPort, void *fBuffer, uin static LoRaMacStatus_t ScheduleTx( ) { TimerTime_t dutyCycleTimeOff = 0; + NextChanParams_t nextChan; // Check if the device is off if( MaxDCycle == 255 ) @@ -2645,16 +2646,19 @@ static LoRaMacStatus_t ScheduleTx( ) AggregatedTimeOff = 0; } + nextChan.AggrTimeOff = AggregatedTimeOff; + nextChan.Datarate = LoRaMacParams.ChannelsDatarate; + nextChan.DutyCycleEnabled = DutyCycleOn; + nextChan.Joined = IsLoRaMacNetworkJoined; + nextChan.LastAggrTx = AggregatedLastTxDoneTime; + // Select channel - while( SetNextChannel( &dutyCycleTimeOff ) == false ) + while( RegionNextChannel( LoRaMacRegion, &nextChan, &Channel, &dutyCycleTimeOff ) == false ) { // Set the default datarate LoRaMacParams.ChannelsDatarate = LoRaMacParamsDefaults.ChannelsDatarate; - -#if defined( USE_BAND_433 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) - // Re-enable default channels LC1, LC2, LC3 - LoRaMacParams.ChannelsMask[0] = LoRaMacParams.ChannelsMask[0] | ( LC( 1 ) + LC( 2 ) + LC( 3 ) ); -#endif + // Update datarate in the function parameters + nextChan.Datarate = LoRaMacParams.ChannelsDatarate; } // Schedule transmission of frame From 53674fbf8fc0362f400ae6a1f943772d76e86069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 042/161] Update function ProcessMacCommands, SRV_MAC_NEW_CHANNEL_REQ. --- src/mac/LoRaMac.c | 63 ++++++----------------------------------------- 1 file changed, 8 insertions(+), 55 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index e54da7ce8..b7604d872 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2514,69 +2514,22 @@ static void ProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t comm } case SRV_MAC_NEW_CHANNEL_REQ: { - uint8_t status = 0x03; - -#if defined( USE_BAND_470 ) || defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - status &= 0xFC; // Channel frequency and datarate KO - macIndex += 5; -#else - int8_t channelIndex = 0; + NewChannelReqParams_t newChannelReq; ChannelParams_t chParam; + status = 0x03; + + newChannelReq.ChannelId = payload[macIndex++]; + newChannelReq.NewChannel = &chParam; - channelIndex = payload[macIndex++]; chParam.Frequency = ( uint32_t )payload[macIndex++]; chParam.Frequency |= ( uint32_t )payload[macIndex++] << 8; chParam.Frequency |= ( uint32_t )payload[macIndex++] << 16; chParam.Frequency *= 100; + chParam.Rx1Frequency = 0; chParam.DrRange.Value = payload[macIndex++]; - LoRaMacState |= LORAMAC_TX_CONFIG; - if( chParam.Frequency == 0 ) - { - if( channelIndex < 3 ) - { - status &= 0xFC; - } - else - { - if( LoRaMacChannelRemove( channelIndex ) != LORAMAC_STATUS_OK ) - { - status &= 0xFC; - } - } - } - else - { - switch( LoRaMacChannelAdd( channelIndex, chParam ) ) - { - case LORAMAC_STATUS_OK: - { - break; - } - case LORAMAC_STATUS_FREQUENCY_INVALID: - { - status &= 0xFE; - break; - } - case LORAMAC_STATUS_DATARATE_INVALID: - { - status &= 0xFD; - break; - } - case LORAMAC_STATUS_FREQ_AND_DR_INVALID: - { - status &= 0xFC; - break; - } - default: - { - status &= 0xFC; - break; - } - } - } - LoRaMacState &= ~LORAMAC_TX_CONFIG; -#endif + status = RegionNewChannelReq( LoRaMacRegion, &newChannelReq ); + AddMacCommand( MOTE_MAC_NEW_CHANNEL_ANS, status, 0 ); } break; From c1a8b3fb3b0e2ef4561634fa3b4a524dec8a6469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 043/161] Update function ProcessMacCommands, SRV_MAC_RX_PARAM_SETUP_REQ. --- src/mac/LoRaMac.c | 46 +++++++++++++--------------------------------- 1 file changed, 13 insertions(+), 33 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index b7604d872..02524c619 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2458,46 +2458,26 @@ static void ProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t comm break; case SRV_MAC_RX_PARAM_SETUP_REQ: { - uint8_t status = 0x07; - int8_t datarate = 0; - int8_t drOffset = 0; - uint32_t freq = 0; + RxParamSetupReqParams_t rxParamSetupReq; + status = 0x07; - drOffset = ( payload[macIndex] >> 4 ) & 0x07; - datarate = payload[macIndex] & 0x0F; + rxParamSetupReq.DrOffset = ( payload[macIndex] >> 4 ) & 0x07; + rxParamSetupReq.Datarate = payload[macIndex] & 0x0F; macIndex++; - freq = ( uint32_t )payload[macIndex++]; - freq |= ( uint32_t )payload[macIndex++] << 8; - freq |= ( uint32_t )payload[macIndex++] << 16; - freq *= 100; + rxParamSetupReq.Frequency = ( uint32_t )payload[macIndex++]; + rxParamSetupReq.Frequency |= ( uint32_t )payload[macIndex++] << 8; + rxParamSetupReq.Frequency |= ( uint32_t )payload[macIndex++] << 16; + rxParamSetupReq.Frequency *= 100; - if( Rx2FreqInRange( freq ) == false ) - { - status &= 0xFE; // Channel frequency KO - } - - if( ValueInRange( datarate, LORAMAC_RX_MIN_DATARATE, LORAMAC_RX_MAX_DATARATE ) == false ) - { - status &= 0xFD; // Datarate KO - } -#if ( defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) ) - if( ( ValueInRange( datarate, DR_5, DR_7 ) == true ) || - ( datarate > DR_13 ) ) - { - status &= 0xFD; // Datarate KO - } -#endif - if( ValueInRange( drOffset, LORAMAC_MIN_RX1_DR_OFFSET, LORAMAC_MAX_RX1_DR_OFFSET ) == false ) - { - status &= 0xFB; // Rx1DrOffset range KO - } + // Perform request on region + status = RegionRxParamSetupReq( LoRaMacRegion, &rxParamSetupReq ); if( ( status & 0x07 ) == 0x07 ) { - LoRaMacParams.Rx2Channel.Datarate = datarate; - LoRaMacParams.Rx2Channel.Frequency = freq; - LoRaMacParams.Rx1DrOffset = drOffset; + LoRaMacParams.Rx2Channel.Datarate = rxParamSetupReq.Datarate; + LoRaMacParams.Rx2Channel.Frequency = rxParamSetupReq.Frequency; + LoRaMacParams.Rx1DrOffset = rxParamSetupReq.DrOffset; } AddMacCommand( MOTE_MAC_RX_PARAM_SETUP_ANS, status, 0 ); } From ddb38517002de96dec44f923fae0e27204ad2d16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 044/161] Update function ProcessMacCommands, SRV_MAC_LINK_ADR_REQ. --- src/mac/LoRaMac.c | 199 +++++++--------------------------------------- 1 file changed, 28 insertions(+), 171 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 02524c619..24f8a05ba 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2269,186 +2269,43 @@ static void ProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t comm break; case SRV_MAC_LINK_ADR_REQ: { - uint8_t i; - uint8_t status = 0x07; - uint16_t chMask; - int8_t txPower = 0; - int8_t datarate = 0; - uint8_t nbRep = 0; - uint8_t chMaskCntl = 0; - uint16_t channelsMask[6] = { 0, 0, 0, 0, 0, 0 }; - - // Initialize local copy of the channels mask array - for( i = 0; i < 6; i++ ) - { - channelsMask[i] = LoRaMacParams.ChannelsMask[i]; - } - datarate = payload[macIndex++]; - txPower = datarate & 0x0F; - datarate = ( datarate >> 4 ) & 0x0F; - - if( ( AdrCtrlOn == false ) && - ( ( LoRaMacParams.ChannelsDatarate != datarate ) || ( LoRaMacParams.ChannelsTxPower != txPower ) ) ) - { // ADR disabled don't handle ADR requests if server tries to change datarate or txpower - // Answer the server with fail status - // Power ACK = 0 - // Data rate ACK = 0 - // Channel mask = 0 - AddMacCommand( MOTE_MAC_LINK_ADR_ANS, 0, 0 ); - macIndex += 3; // Skip over the remaining bytes of the request - break; - } - chMask = ( uint16_t )payload[macIndex++]; - chMask |= ( uint16_t )payload[macIndex++] << 8; + LinkAdrReqParams_t linkAdrReq; + int8_t linkAdrDatarate = DR_0; + int8_t linkAdrTxPower = TX_POWER_0; + uint8_t linkAdrNbRep = 0; + uint8_t linkAdrNbBytesParsed = 0; - nbRep = payload[macIndex++]; - chMaskCntl = ( nbRep >> 4 ) & 0x07; - nbRep &= 0x0F; - if( nbRep == 0 ) - { - nbRep = 1; - } -#if defined( USE_BAND_433 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) - if( ( chMaskCntl == 0 ) && ( chMask == 0 ) ) - { - status &= 0xFE; // Channel mask KO - } - else if( ( ( chMaskCntl >= 1 ) && ( chMaskCntl <= 5 )) || - ( chMaskCntl >= 7 ) ) - { - // RFU - status &= 0xFE; // Channel mask KO - } - else - { - for( i = 0; i < LORA_MAX_NB_CHANNELS; i++ ) - { - if( chMaskCntl == 6 ) - { - if( Channels[i].Frequency != 0 ) - { - chMask |= 1 << i; - } - } - else - { - if( ( ( chMask & ( 1 << i ) ) != 0 ) && - ( Channels[i].Frequency == 0 ) ) - {// Trying to enable an undefined channel - status &= 0xFE; // Channel mask KO - } - } - } - channelsMask[0] = chMask; - } -#elif defined( USE_BAND_470 ) - if( chMaskCntl == 6 ) - { - // Enable all 125 kHz channels - for( uint8_t i = 0, k = 0; i < LORA_MAX_NB_CHANNELS; i += 16, k++ ) - { - for( uint8_t j = 0; j < 16; j++ ) - { - if( Channels[i + j].Frequency != 0 ) - { - channelsMask[k] |= 1 << j; - } - } - } - } - else if( chMaskCntl == 7 ) - { - status &= 0xFE; // Channel mask KO - } - else - { - for( uint8_t i = 0; i < 16; i++ ) - { - if( ( ( chMask & ( 1 << i ) ) != 0 ) && - ( Channels[chMaskCntl * 16 + i].Frequency == 0 ) ) - {// Trying to enable an undefined channel - status &= 0xFE; // Channel mask KO - } - } - channelsMask[chMaskCntl] = chMask; - } -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - if( chMaskCntl == 6 ) - { - // Enable all 125 kHz channels - channelsMask[0] = 0xFFFF; - channelsMask[1] = 0xFFFF; - channelsMask[2] = 0xFFFF; - channelsMask[3] = 0xFFFF; - // Apply chMask to channels 64 to 71 - channelsMask[4] = chMask; - } - else if( chMaskCntl == 7 ) - { - // Disable all 125 kHz channels - channelsMask[0] = 0x0000; - channelsMask[1] = 0x0000; - channelsMask[2] = 0x0000; - channelsMask[3] = 0x0000; - // Apply chMask to channels 64 to 71 - channelsMask[4] = chMask; - } - else if( chMaskCntl == 5 ) - { - // RFU - status &= 0xFE; // Channel mask KO - } - else - { - channelsMask[chMaskCntl] = chMask; + // Fill parameter structure + linkAdrReq.Payload = &payload[macIndex - 1]; + linkAdrReq.PayloadSize = commandsSize - ( macIndex - 1 ); - // FCC 15.247 paragraph F mandates to hop on at least 2 125 kHz channels - if( ( datarate < DR_4 ) && ( CountNbEnabled125kHzChannels( channelsMask ) < 2 ) ) - { - status &= 0xFE; // Channel mask KO - } + // Process the ADR requests + status = RegionLinkAdrReq( LoRaMacRegion, &linkAdrReq, &linkAdrDatarate, + &linkAdrTxPower, &linkAdrNbRep, &linkAdrNbBytesParsed ); -#if defined( USE_BAND_915_HYBRID ) - if( ValidateChannelMask( channelsMask ) == false ) + if( ( status & 0x07 ) == 0x07 ) + { + if( ( AdrCtrlOn == false ) && + ( ( LoRaMacParams.ChannelsDatarate != linkAdrDatarate ) || + ( LoRaMacParams.ChannelsTxPower != linkAdrTxPower ) ) ) + { // ADR disabled don't handle ADR requests if server tries to change datarate or tx power + status = 0; + } + else { - status &= 0xFE; // Channel mask KO + LoRaMacParams.ChannelsDatarate = linkAdrDatarate; + LoRaMacParams.ChannelsTxPower = linkAdrTxPower; + LoRaMacParams.ChannelsNbRep = linkAdrNbRep; } -#endif - } -#else - #error "Please define a frequency band in the compiler options." -#endif - if( ValidateDatarate( datarate, channelsMask ) == false ) - { - status &= 0xFD; // Datarate KO } - // - // Remark MaxTxPower = 0 and MinTxPower = 5 - // - if( ValueInRange( txPower, LORAMAC_MAX_TX_POWER, LORAMAC_MIN_TX_POWER ) == false ) - { - status &= 0xFB; // TxPower KO - } - if( ( status & 0x07 ) == 0x07 ) + // Add the answers to the buffer + for( uint8_t i = 0; i < ( linkAdrNbBytesParsed / 5 ); i++ ) { - LoRaMacParams.ChannelsDatarate = datarate; - LoRaMacParams.ChannelsTxPower = txPower; - - memcpy1( ( uint8_t* )LoRaMacParams.ChannelsMask, ( uint8_t* )channelsMask, sizeof( LoRaMacParams.ChannelsMask ) ); - - LoRaMacParams.ChannelsNbRep = nbRep; -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - // Reset ChannelsMaskRemaining to the new ChannelsMask - ChannelsMaskRemaining[0] &= channelsMask[0]; - ChannelsMaskRemaining[1] &= channelsMask[1]; - ChannelsMaskRemaining[2] &= channelsMask[2]; - ChannelsMaskRemaining[3] &= channelsMask[3]; - ChannelsMaskRemaining[4] = channelsMask[4]; - ChannelsMaskRemaining[5] = channelsMask[5]; -#endif + AddMacCommand( MOTE_MAC_LINK_ADR_ANS, status, 0 ); } - AddMacCommand( MOTE_MAC_LINK_ADR_ANS, status, 0 ); + // Update MAC index + macIndex += linkAdrNbBytesParsed - 1; } break; case SRV_MAC_DUTY_CYCLE_REQ: From 9b85a1cc9e13c9d77450baffbc4e0b83ec91e4ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 045/161] Add missing local variable in function ProcessMacCommands. --- src/mac/LoRaMac.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 24f8a05ba..73a923f55 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2257,6 +2257,8 @@ static uint8_t ParseMacCommandsToRepeat( uint8_t* cmdBufIn, uint8_t length, uint static void ProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t commandsSize, uint8_t snr ) { + uint8_t status = 0; + while( macIndex < commandsSize ) { // Decode Frame MAC commands From 296061156b4be938b28997e6d11d33ff5e17c82c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 046/161] Update function ProcessMacCommands, SRV_MAC_DL_CHANNEL_REQ. --- src/mac/LoRaMac.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 73a923f55..e5c139a35 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2385,6 +2385,22 @@ static void ProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t comm AddMacCommand( MOTE_MAC_RX_TIMING_SETUP_ANS, 0, 0 ); } break; + case SRV_MAC_DL_CHANNEL_REQ: + { + DlChannelReqParams_t dlChannelReq; + status = 0x03; + + dlChannelReq.ChannelId = payload[macIndex++]; + dlChannelReq.Rx1Frequency = ( uint32_t )payload[macIndex++]; + dlChannelReq.Rx1Frequency |= ( uint32_t )payload[macIndex++] << 8; + dlChannelReq.Rx1Frequency |= ( uint32_t )payload[macIndex++] << 16; + dlChannelReq.Rx1Frequency *= 100; + + status = RegionDlChannelReq( LoRaMacRegion, &dlChannelReq ); + + AddMacCommand( MOTE_MAC_DL_CHANNEL_ANS, status, 0 ); + } + break; default: // Unknown command. ABORT MAC commands processing return; From 05e5204c5d425f407eff937771cde61df7733734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 047/161] Update function ProcessMacCommands, SRV_MAC_TX_PARAM_SETUP_REQ. --- src/mac/LoRaMac.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index e5c139a35..07b66a789 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2385,6 +2385,36 @@ static void ProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t comm AddMacCommand( MOTE_MAC_RX_TIMING_SETUP_ANS, 0, 0 ); } break; + case SRV_MAC_TX_PARAM_SETUP_REQ: + { + TxParamSetupReqParams_t txParamSetupReq; + uint8_t eirpDwellTime = payload[macIndex++]; + + txParamSetupReq.UplinkDwellTime = 0; + txParamSetupReq.DownlinkDwellTime = 0; + + if( ( eirpDwellTime & 0x20 ) == 0x20 ) + { + txParamSetupReq.UplinkDwellTime = 1; + } + if( ( eirpDwellTime & 0x10 ) == 0x10 ) + { + txParamSetupReq.DownlinkDwellTime = 1; + } + txParamSetupReq.MaxEirp = eirpDwellTime & 0x0F; + + // Check the status for correctness + if( RegionTxParamSetupReq( LoRaMacRegion, &txParamSetupReq ) != -1 ) + { + // Accept command + LoRaMacParams.UplinkDwellTime = txParamSetupReq.UplinkDwellTime; + LoRaMacParams.DownlinkDwellTime = txParamSetupReq.DownlinkDwellTime; + LoRaMacParams.MaxEirp = LoRaMacMaxEirpTable[txParamSetupReq.MaxEirp]; + // Add command response + AddMacCommand( MOTE_MAC_TX_PARAM_SETUP_ANS, 0, 0 ); + } + } + break; case SRV_MAC_DL_CHANNEL_REQ: { DlChannelReqParams_t dlChannelReq; From 0d407916568fc8a9f6d0196abb21c744b9b1bb74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 048/161] Update function ParseMacCommandsToRepeat. Add new commands. --- src/mac/LoRaMac.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 07b66a789..6dabdf117 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2219,14 +2219,15 @@ static uint8_t ParseMacCommandsToRepeat( uint8_t* cmdBufIn, uint8_t length, uint switch( cmdBufIn[i] ) { // STICKY + case MOTE_MAC_DL_CHANNEL_ANS: case MOTE_MAC_RX_PARAM_SETUP_ANS: - { + { // 1 byte payload cmdBufOut[cmdCount++] = cmdBufIn[i++]; cmdBufOut[cmdCount++] = cmdBufIn[i]; break; } case MOTE_MAC_RX_TIMING_SETUP_ANS: - { + { // 0 byte payload cmdBufOut[cmdCount++] = cmdBufIn[i]; break; } @@ -2242,6 +2243,7 @@ static uint8_t ParseMacCommandsToRepeat( uint8_t* cmdBufIn, uint8_t length, uint i++; break; } + case MOTE_MAC_TX_PARAM_SETUP_ANS: case MOTE_MAC_DUTY_CYCLE_ANS: case MOTE_MAC_LINK_CHECK_REQ: { // 0 byte payload From 3e31cca843c656de0dd986c54068805f5244916d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 049/161] Update function AddMacCommand. Add new commands. --- src/mac/LoRaMac.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 6dabdf117..aa405a40a 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2194,6 +2194,23 @@ static LoRaMacStatus_t AddMacCommand( uint8_t cmd, uint8_t p1, uint8_t p2 ) status = LORAMAC_STATUS_OK; } break; + case MOTE_MAC_TX_PARAM_SETUP_ANS: + if( MacCommandsBufferIndex < bufLen ) + { + MacCommandsBuffer[MacCommandsBufferIndex++] = cmd; + // No payload for this answer + status = LORAMAC_STATUS_OK; + } + break; + case MOTE_MAC_DL_CHANNEL_ANS: + if( MacCommandsBufferIndex < bufLen ) + { + MacCommandsBuffer[MacCommandsBufferIndex++] = cmd; + // Status: Uplink frequency exists, Channel frequency OK + MacCommandsBuffer[MacCommandsBufferIndex++] = p1; + status = LORAMAC_STATUS_OK; + } + break; default: return LORAMAC_STATUS_SERVICE_UNKNOWN; } From 0886a569c2b9d69b183e3a94a8fec31c9a37b802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 050/161] Update function ValidatePayloadLength. --- src/mac/LoRaMac.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index aa405a40a..126e51425 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1848,18 +1848,20 @@ static bool Rx2FreqInRange( uint32_t freq ) static bool ValidatePayloadLength( uint8_t lenN, int8_t datarate, uint8_t fOptsLen ) { + GetPhyParams_t getPhy; uint16_t maxN = 0; uint16_t payloadSize = 0; + getPhy.Datarate = datarate; + getPhy.Attribute = PHY_MAX_PAYLOAD; + // Get the maximum payload length if( RepeaterSupport == true ) { - maxN = MaxPayloadOfDatarateRepeater[datarate]; - } - else - { - maxN = MaxPayloadOfDatarate[datarate]; + getPhy.Attribute = PHY_MAX_PAYLOAD_REPEATER; } + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + maxN = getPhy.Param.Value; // Calculate the resulting payload size payloadSize = ( lenN + fOptsLen ); From bf0c2bc639e85aa0cbb8dd0f8bc703cd8b3a9f9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 051/161] Update function OnRxWindow2TimerEvent. --- src/mac/LoRaMac.c | 82 ++++++++--------------------------------------- 1 file changed, 14 insertions(+), 68 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 126e51425..8fde90900 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1550,83 +1550,29 @@ static void OnRxWindow1TimerEvent( void ) static void OnRxWindow2TimerEvent( void ) { - uint16_t symbTimeout = 5; // DR_2, DR_1, DR_0 - uint32_t bandwidth = 0; // LoRa 125 kHz - bool rxContinuousMode = false; + RxConfigParams_t rxConfig; TimerStop( &RxWindowTimer2 ); -#if defined( USE_BAND_433 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) - // For higher datarates, we increase the number of symbols generating a Rx Timeout - if( ( LoRaMacParams.Rx2Channel.Datarate == DR_3 ) || ( LoRaMacParams.Rx2Channel.Datarate == DR_4 ) ) - { // DR_4, DR_3 - symbTimeout = 8; - } - else if( LoRaMacParams.Rx2Channel.Datarate == DR_5 ) + rxConfig.Channel = Channel; + rxConfig.Datarate = LoRaMacParams.Rx2Channel.Datarate; + rxConfig.Frequency = LoRaMacParams.Rx2Channel.Frequency; + rxConfig.RepeaterSupport = RepeaterSupport; + rxConfig.Window = 1; + + if( LoRaMacDeviceClass != CLASS_C ) { - symbTimeout = 10; - } - else if( LoRaMacParams.Rx2Channel.Datarate == DR_6 ) - {// LoRa 250 kHz - bandwidth = 1; - symbTimeout = 14; - } -#elif defined( USE_BAND_470 ) - // For higher datarates, we increase the number of symbols generating a Rx Timeout - if( ( LoRaMacParams.Rx2Channel.Datarate == DR_3 ) || ( LoRaMacParams.Rx2Channel.Datarate == DR_4 ) ) - { // DR_4, DR_3 - symbTimeout = 8; + rxConfig.RxContinuous = false; } - else if( LoRaMacParams.Rx2Channel.Datarate == DR_5 ) + else { - symbTimeout = 10; + rxConfig.RxContinuous = true; } -#elif ( defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) ) - // For higher datarates, we increase the number of symbols generating a Rx Timeout - switch( LoRaMacParams.Rx2Channel.Datarate ) - { - case DR_0: // SF10 - BW125 - symbTimeout = 5; - break; - - case DR_1: // SF9 - BW125 - case DR_2: // SF8 - BW125 - case DR_8: // SF12 - BW500 - case DR_9: // SF11 - BW500 - case DR_10: // SF10 - BW500 - symbTimeout = 8; - break; - - case DR_3: // SF7 - BW125 - case DR_11: // SF9 - BW500 - symbTimeout = 10; - break; - - case DR_4: // SF8 - BW500 - case DR_12: // SF8 - BW500 - symbTimeout = 14; - break; - case DR_13: // SF7 - BW500 - symbTimeout = 16; - break; - default: - break; - } - if( LoRaMacParams.Rx2Channel.Datarate >= DR_4 ) - {// LoRa 500 kHz - bandwidth = 2; - } -#else - #error "Please define a frequency band in the compiler options." -#endif - if( LoRaMacDeviceClass == CLASS_C ) - { - rxContinuousMode = true; - } - if( RxWindowSetup( LoRaMacParams.Rx2Channel.Frequency, LoRaMacParams.Rx2Channel.Datarate, bandwidth, symbTimeout, rxContinuousMode ) == true ) + if( RegionRxConfig( LoRaMacRegion, &rxConfig, ( int8_t* )&McpsIndication.RxDatarate ) == true ) { - RxSlot = 1; + RxWindowSetup( rxConfig.RxContinuous, LoRaMacParams.MaxRxWindow ); + RxSlot = rxConfig.Window; } } From 44936c4b8334712a4adf0bb91cfc426d2b4399f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 052/161] Update function OnRxWindow1TimerEvent. --- src/mac/LoRaMac.c | 97 +++++------------------------------------------ 1 file changed, 10 insertions(+), 87 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 8fde90900..307ebe6f8 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1450,102 +1450,25 @@ static void OnTxDelayedTimerEvent( void ) static void OnRxWindow1TimerEvent( void ) { - uint16_t symbTimeout = 5; // DR_2, DR_1, DR_0 - int8_t datarate = 0; - uint32_t bandwidth = 0; // LoRa 125 kHz + RxConfigParams_t rxConfig; TimerStop( &RxWindowTimer1 ); RxSlot = 0; + rxConfig.Channel = Channel; + rxConfig.Datarate = LoRaMacParams.ChannelsDatarate; + rxConfig.DrOffset = LoRaMacParams.Rx1DrOffset; + rxConfig.RepeaterSupport = RepeaterSupport; + rxConfig.RxContinuous = false; + rxConfig.Window = RxSlot; + if( LoRaMacDeviceClass == CLASS_C ) { Radio.Standby( ); } -#if defined( USE_BAND_433 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) - datarate = LoRaMacParams.ChannelsDatarate - LoRaMacParams.Rx1DrOffset; - if( datarate < 0 ) - { - datarate = DR_0; - } - - // For higher datarates, we increase the number of symbols generating a Rx Timeout - if( ( datarate == DR_3 ) || ( datarate == DR_4 ) ) - { // DR_4, DR_3 - symbTimeout = 8; - } - else if( datarate == DR_5 ) - { - symbTimeout = 10; - } - else if( datarate == DR_6 ) - {// LoRa 250 kHz - bandwidth = 1; - symbTimeout = 14; - } - RxWindowSetup( Channels[Channel].Frequency, datarate, bandwidth, symbTimeout, false ); -#elif defined( USE_BAND_470 ) - datarate = LoRaMacParams.ChannelsDatarate - LoRaMacParams.Rx1DrOffset; - if( datarate < 0 ) - { - datarate = DR_0; - } - - // For higher datarates, we increase the number of symbols generating a Rx Timeout - if( ( datarate == DR_3 ) || ( datarate == DR_4 ) ) - { // DR_4, DR_3 - symbTimeout = 8; - } - else if( datarate == DR_5 ) - { - symbTimeout = 10; - } - RxWindowSetup( LORAMAC_FIRST_RX1_CHANNEL + ( Channel % 48 ) * LORAMAC_STEPWIDTH_RX1_CHANNEL, datarate, bandwidth, symbTimeout, false ); -#elif ( defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) ) - datarate = datarateOffsets[LoRaMacParams.ChannelsDatarate][LoRaMacParams.Rx1DrOffset]; - if( datarate < 0 ) - { - datarate = DR_0; - } - // For higher datarates, we increase the number of symbols generating a Rx Timeout - switch( datarate ) - { - case DR_0: // SF10 - BW125 - symbTimeout = 5; - break; - - case DR_1: // SF9 - BW125 - case DR_2: // SF8 - BW125 - case DR_8: // SF12 - BW500 - case DR_9: // SF11 - BW500 - case DR_10: // SF10 - BW500 - symbTimeout = 8; - break; - - case DR_3: // SF7 - BW125 - case DR_11: // SF9 - BW500 - symbTimeout = 10; - break; - - case DR_4: // SF8 - BW500 - case DR_12: // SF8 - BW500 - symbTimeout = 14; - break; - - case DR_13: // SF7 - BW500 - symbTimeout = 16; - break; - default: - break; - } - if( datarate >= DR_4 ) - {// LoRa 500 kHz - bandwidth = 2; - } - RxWindowSetup( LORAMAC_FIRST_RX1_CHANNEL + ( Channel % 8 ) * LORAMAC_STEPWIDTH_RX1_CHANNEL, datarate, bandwidth, symbTimeout, false ); -#else - #error "Please define a frequency band in the compiler options." -#endif + RegionRxConfig( LoRaMacRegion, &rxConfig, ( int8_t* )&McpsIndication.RxDatarate ); + RxWindowSetup( rxConfig.RxContinuous, LoRaMacParams.MaxRxWindow ); } static void OnRxWindow2TimerEvent( void ) From e13b23022c2b7a17457d81b7ae19256ff51a4abc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 053/161] Update function OnMacStateCheckTimerEvent. --- src/mac/LoRaMac.c | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 307ebe6f8..b887fc1eb 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1227,9 +1227,11 @@ static void OnRadioRxTimeout( void ) static void OnMacStateCheckTimerEvent( void ) { - TimerStop( &MacStateCheckTimer ); + GetPhyParams_t getPhy; bool txTimeout = false; + TimerStop( &MacStateCheckTimer ); + if( LoRaMacFlags.Bits.MacDone == 1 ) { if( ( LoRaMacState & LORAMAC_RX_ABORT ) == LORAMAC_RX_ABORT ) @@ -1299,7 +1301,7 @@ static void OnMacStateCheckTimerEvent( void ) LoRaMacFlags.Bits.MacDone = 0; // Sends the same frame again OnTxDelayedTimerEvent( ); - } + } } } } @@ -1329,7 +1331,9 @@ static void OnMacStateCheckTimerEvent( void ) if( ( AckTimeoutRetriesCounter % 2 ) == 1 ) { - LoRaMacParams.ChannelsDatarate = MAX( LoRaMacParams.ChannelsDatarate - 1, LORAMAC_TX_MIN_DATARATE ); + getPhy.Attribute = PHY_MIN_DR; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParams.ChannelsDatarate = MAX( LoRaMacParams.ChannelsDatarate - 1, getPhy.Param.Value ); } if( ValidatePayloadLength( LoRaMacTxPayloadLen, LoRaMacParams.ChannelsDatarate, MacCommandsBufferIndex ) == true ) { @@ -1355,21 +1359,8 @@ static void OnMacStateCheckTimerEvent( void ) } else { -#if defined( USE_BAND_433 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) - // Re-enable default channels LC1, LC2, LC3 - LoRaMacParams.ChannelsMask[0] = LoRaMacParams.ChannelsMask[0] | ( LC( 1 ) + LC( 2 ) + LC( 3 ) ); -#elif defined( USE_BAND_470 ) - // Re-enable default channels - memcpy1( ( uint8_t* )LoRaMacParams.ChannelsMask, ( uint8_t* )LoRaMacParamsDefaults.ChannelsMask, sizeof( LoRaMacParams.ChannelsMask ) ); -#elif defined( USE_BAND_915 ) - // Re-enable default channels - memcpy1( ( uint8_t* )LoRaMacParams.ChannelsMask, ( uint8_t* )LoRaMacParamsDefaults.ChannelsMask, sizeof( LoRaMacParams.ChannelsMask ) ); -#elif defined( USE_BAND_915_HYBRID ) - // Re-enable default channels - ReenableChannels( LoRaMacParamsDefaults.ChannelsMask[4], LoRaMacParams.ChannelsMask ); -#else - #error "Please define a frequency band in the compiler options." -#endif + RegionInitDefaults( LoRaMacRegion, INIT_TYPE_RESTORE ); + LoRaMacState &= ~LORAMAC_TX_RUNNING; NodeAckRequested = false; From 51c47dd5f817e632135d93d7632c44143dc74d17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 054/161] Update function OnRadioRxDone, max frame counter gap check. --- src/mac/LoRaMac.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index b887fc1eb..8bb3b6f8d 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -973,7 +973,9 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t } // Check for a the maximum allowed counter difference - if( sequenceCounterDiff >= MAX_FCNT_GAP ) + getPhy.Attribute = PHY_MAX_FCNT_GAP; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + if( sequenceCounterDiff >= getPhy.Param.Value ) { McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_DOWNLINK_TOO_MANY_FRAMES_LOSS; McpsIndication.DownLinkCounter = downLinkCounter; From 91652aaab5154287e8c89effd962753912ea6c01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 055/161] Update function OnRadioRxDone, CF list. --- src/mac/LoRaMac.c | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 8bb3b6f8d..1f620c4d9 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -774,6 +774,8 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t { LoRaMacHeader_t macHdr; LoRaMacFrameCtrl_t fCtrl; + ApplyCFListParams_t applyCFList; + GetPhyParams_t getPhy; bool skipIndication = false; uint8_t pktHeaderLen = 0; @@ -865,29 +867,13 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t LoRaMacParams.ReceiveDelay1 *= 1e3; LoRaMacParams.ReceiveDelay2 = LoRaMacParams.ReceiveDelay1 + 1e3; -#if !( defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) ) - //CFList - if( ( size - 1 ) > 16 ) - { - ChannelParams_t param; - param.DrRange.Value = ( DR_5 << 4 ) | DR_0; + // Apply CF list + applyCFList.Payload = &LoRaMacRxPayload[13]; + // Size of the regular payload is 12. Plus 1 byte MHDR and 4 bytes MIC + applyCFList.Size = size - 17; + + RegionApplyCFList( LoRaMacRegion, &applyCFList ); - LoRaMacState |= LORAMAC_TX_CONFIG; - for( uint8_t i = 3, j = 0; i < ( 5 + 3 ); i++, j += 3 ) - { - param.Frequency = ( ( uint32_t )LoRaMacRxPayload[13 + j] | ( ( uint32_t )LoRaMacRxPayload[14 + j] << 8 ) | ( ( uint32_t )LoRaMacRxPayload[15 + j] << 16 ) ) * 100; - if( param.Frequency != 0 ) - { - LoRaMacChannelAdd( i, param ); - } - else - { - LoRaMacChannelRemove( i ); - } - } - LoRaMacState &= ~LORAMAC_TX_CONFIG; - } -#endif MlmeConfirm.Status = LORAMAC_EVENT_INFO_STATUS_OK; IsLoRaMacNetworkJoined = true; LoRaMacParams.ChannelsDatarate = LoRaMacParamsDefaults.ChannelsDatarate; From 97df6d0f64202ab18da77daa141d93da3f97caaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 056/161] Update function OnRadioTxDone. --- src/mac/LoRaMac.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 1f620c4d9..7e83f0977 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -694,6 +694,8 @@ static void ResetMacParameters( void ); static void OnRadioTxDone( void ) { + GetPhyParams_t getPhy; + SetBandTxDoneParams_t txDone; TimerTime_t curTime = TimerGetCurrentTime( ); if( LoRaMacDeviceClass != CLASS_C ) @@ -717,8 +719,9 @@ static void OnRadioTxDone( void ) } if( ( LoRaMacDeviceClass == CLASS_C ) || ( NodeAckRequested == true ) ) { - TimerSetValue( &AckTimeoutTimer, RxWindow2Delay + ACK_TIMEOUT + - randr( -ACK_TIMEOUT_RND, ACK_TIMEOUT_RND ) ); + getPhy.Attribute = PHY_ACK_TIMEOUT; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + TimerSetValue( &AckTimeoutTimer, RxWindow2Delay + getPhy.Param.Value ); TimerStart( &AckTimeoutTimer ); } } @@ -735,7 +738,9 @@ static void OnRadioTxDone( void ) } // Update last tx done time for the current channel - Bands[Channels[Channel].Band].LastTxDoneTime = curTime; + txDone.Channel = Channel; + txDone.LastTxDoneTime = curTime; + RegionSetBandTxDone( LoRaMacRegion, &txDone ); // Update Aggregated last tx done time AggregatedLastTxDoneTime = curTime; // Update Backoff From 35af4f1b1e0acdbab9e8db53ba2d70d5e190be51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 057/161] Remove function DisableChannelInMask. --- src/mac/LoRaMac.c | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 7e83f0977..f02a2a212 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -612,18 +612,6 @@ static bool ValueInRange( int8_t value, int8_t min, int8_t max ); */ static bool AdrNextDr( bool adrEnabled, bool updateChannelMask, int8_t* datarateOut ); -/*! - * \brief Disables channel in a specified channel mask - * - * \param [IN] id - Id of the channel - * - * \param [IN] mask - Pointer to the channel mask to edit - * - * \retval [true, if disable was successful, false if not] - */ -static bool DisableChannelInMask( uint8_t id, uint16_t* mask ); - -/*! * \brief Decodes MAC commands in the fOpts field and in the payload */ static void ProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t commandsSize, uint8_t snr ); @@ -1875,22 +1863,6 @@ static bool ValueInRange( int8_t value, int8_t min, int8_t max ) return false; } -static bool DisableChannelInMask( uint8_t id, uint16_t* mask ) -{ - uint8_t index = 0; - index = id / 16; - - if( ( index > 4 ) || ( id >= LORA_MAX_NB_CHANNELS ) ) - { - return false; - } - - // Deactivate channel - mask[index] &= ~( 1 << ( id % 16 ) ); - - return true; -} - static bool AdrNextDr( bool adrEnabled, bool updateChannelMask, int8_t* datarateOut ) { bool adrAckReq = false; From e9479d07eb2ab69ddb6a34f833efd01a33cea33d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 058/161] Remove function ValueInRange. --- src/mac/LoRaMac.c | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index f02a2a212..8d5c8754d 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -586,19 +586,6 @@ static bool ValidateDatarate( int8_t datarate, uint16_t* channelsMask ); */ static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower ); -/*! - * \brief Verifies, if a value is in a given range. - * - * \param value Value to verify, if it is in range - * - * \param min Minimum possible value - * - * \param max Maximum possible value - * - * \retval Returns the maximum valid tx power - */ -static bool ValueInRange( int8_t value, int8_t min, int8_t max ); - /*! * \brief Calculates the next datarate to set, when ADR is on or off * @@ -1854,15 +1841,6 @@ static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower ) return resultTxPower; } -static bool ValueInRange( int8_t value, int8_t min, int8_t max ) -{ - if( ( value >= min ) && ( value <= max ) ) - { - return true; - } - return false; -} - static bool AdrNextDr( bool adrEnabled, bool updateChannelMask, int8_t* datarateOut ) { bool adrAckReq = false; From b2c3e12af80e1a509aa1a60d817d36851020e004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 059/161] Remove function LimitTxPower. --- src/mac/LoRaMac.c | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 8d5c8754d..2142d9b0c 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -576,16 +576,6 @@ static bool ValidateChannelMask( uint16_t* channelsMask ); */ static bool ValidateDatarate( int8_t datarate, uint16_t* channelsMask ); -/*! - * \brief Limits the Tx power according to the number of enabled channels - * - * \param [IN] txPower txPower to limit - * \param [IN] maxBandTxPower Maximum band allowed TxPower - * - * \retval Returns the maximum valid tx power - */ -static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower ); - /*! * \brief Calculates the next datarate to set, when ADR is on or off * @@ -1817,30 +1807,6 @@ static bool ValidateDatarate( int8_t datarate, uint16_t* channelsMask ) return false; } -static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower ) -{ - int8_t resultTxPower = txPower; - - // Limit tx power to the band max - resultTxPower = MAX( txPower, maxBandTxPower ); - -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - if( ( LoRaMacParams.ChannelsDatarate == DR_4 ) || - ( ( LoRaMacParams.ChannelsDatarate >= DR_8 ) && ( LoRaMacParams.ChannelsDatarate <= DR_13 ) ) ) - {// Limit tx power to max 26dBm - resultTxPower = MAX( txPower, TX_POWER_26_DBM ); - } - else - { - if( CountNbEnabled125kHzChannels( LoRaMacParams.ChannelsMask ) < 50 ) - {// Limit tx power to max 21dBm - resultTxPower = MAX( txPower, TX_POWER_20_DBM ); - } - } -#endif - return resultTxPower; -} - static bool AdrNextDr( bool adrEnabled, bool updateChannelMask, int8_t* datarateOut ) { bool adrAckReq = false; From 3350ba8bbaf8ba69bd30a37985c48a41a895e185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 060/161] Remove functions CountNbEnabled125kHzChannels, ReenableChannels, ValidateChannelMask. --- src/mac/LoRaMac.c | 110 ---------------------------------------------- 1 file changed, 110 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 2142d9b0c..121fc7690 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -534,38 +534,6 @@ static bool ValidatePayloadLength( uint8_t lenN, int8_t datarate, uint8_t fOptsL */ static uint8_t CountBits( uint16_t mask, uint8_t nbBits ); -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) -/*! - * \brief Counts the number of enabled 125 kHz channels in the channel mask. - * This function can only be applied to US915 band. - * - * \param [IN] channelsMask Pointer to the first element of the channel mask - * - * \retval Number of enabled channels in the channel mask - */ -static uint8_t CountNbEnabled125kHzChannels( uint16_t *channelsMask ); - -#if defined( USE_BAND_915_HYBRID ) -/*! - * \brief Validates the correctness of the channel mask for US915, hybrid mode. - * - * \param [IN] mask Block definition to set. - * \param [OUT] channelsMask Pointer to the first element of the channel mask - */ -static void ReenableChannels( uint16_t mask, uint16_t* channelsMask ); - -/*! - * \brief Validates the correctness of the channel mask for US915, hybrid mode. - * - * \param [IN] channelsMask Pointer to the first element of the channel mask - * - * \retval [true: channel mask correct, false: channel mask not correct] - */ -static bool ValidateChannelMask( uint16_t* channelsMask ); -#endif - -#endif - /*! * \brief Validates the correctness of the datarate against the enable channels. * @@ -1706,84 +1674,6 @@ static uint8_t CountBits( uint16_t mask, uint8_t nbBits ) return nbActiveBits; } -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) -static uint8_t CountNbEnabled125kHzChannels( uint16_t *channelsMask ) -{ - uint8_t nb125kHzChannels = 0; - - for( uint8_t i = 0, k = 0; i < LORA_MAX_NB_CHANNELS - 8; i += 16, k++ ) - { - nb125kHzChannels += CountBits( channelsMask[k], 16 ); - } - - return nb125kHzChannels; -} - -#if defined( USE_BAND_915_HYBRID ) -static void ReenableChannels( uint16_t mask, uint16_t* channelsMask ) -{ - uint16_t blockMask = mask; - - for( uint8_t i = 0, j = 0; i < 4; i++, j += 2 ) - { - channelsMask[i] = 0; - if( ( blockMask & ( 1 << j ) ) != 0 ) - { - channelsMask[i] |= 0x00FF; - } - if( ( blockMask & ( 1 << ( j + 1 ) ) ) != 0 ) - { - channelsMask[i] |= 0xFF00; - } - } - channelsMask[4] = blockMask; - channelsMask[5] = 0x0000; -} - -static bool ValidateChannelMask( uint16_t* channelsMask ) -{ - bool chanMaskState = false; - uint16_t block1 = 0; - uint16_t block2 = 0; - uint8_t index = 0; - - for( uint8_t i = 0; i < 4; i++ ) - { - block1 = channelsMask[i] & 0x00FF; - block2 = channelsMask[i] & 0xFF00; - - if( ( CountBits( block1, 16 ) > 5 ) && ( chanMaskState == false ) ) - { - channelsMask[i] &= block1; - channelsMask[4] = 1 << ( i * 2 ); - chanMaskState = true; - index = i; - } - else if( ( CountBits( block2, 16 ) > 5 ) && ( chanMaskState == false ) ) - { - channelsMask[i] &= block2; - channelsMask[4] = 1 << ( i * 2 + 1 ); - chanMaskState = true; - index = i; - } - } - - // Do only change the channel mask, if we have found a valid block. - if( chanMaskState == true ) - { - for( uint8_t i = 0; i < 4; i++ ) - { - if( i != index ) - { - channelsMask[i] = 0; - } - } - } - return chanMaskState; -} -#endif -#endif - static bool ValidateDatarate( int8_t datarate, uint16_t* channelsMask ) { if( ValueInRange( datarate, LORAMAC_TX_MIN_DATARATE, LORAMAC_TX_MAX_DATARATE ) == false ) From e7d266115acdab3ad1bd7bfc6bf340ce36267b6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 061/161] Remove functions CountBits, ValidateDatarate, AdrNextDr. --- src/mac/LoRaMac.c | 157 ---------------------------------------------- 1 file changed, 157 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 121fc7690..57b0d3a93 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -525,38 +525,6 @@ static uint8_t ParseMacCommandsToRepeat( uint8_t* cmdBufIn, uint8_t length, uint static bool ValidatePayloadLength( uint8_t lenN, int8_t datarate, uint8_t fOptsLen ); /*! - * \brief Counts the number of bits in a mask. - * - * \param [IN] mask A mask from which the function counts the active bits. - * \param [IN] nbBits The number of bits to check. - * - * \retval Number of enabled bits in the mask. - */ -static uint8_t CountBits( uint16_t mask, uint8_t nbBits ); - -/*! - * \brief Validates the correctness of the datarate against the enable channels. - * - * \param [IN] datarate Datarate to be check - * \param [IN] channelsMask Pointer to the first element of the channel mask - * - * \retval [true: datarate can be used, false: datarate can not be used] - */ -static bool ValidateDatarate( int8_t datarate, uint16_t* channelsMask ); - -/*! - * \brief Calculates the next datarate to set, when ADR is on or off - * - * \param [IN] adrEnabled Specify whether ADR is on or off - * - * \param [IN] updateChannelMask Set to true, if the channel masks shall be updated - * - * \param [OUT] datarateOut Reports the datarate which will be used next - * - * \retval Returns the state of ADR ack request - */ -static bool AdrNextDr( bool adrEnabled, bool updateChannelMask, int8_t* datarateOut ); - * \brief Decodes MAC commands in the fOpts field and in the payload */ static void ProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t commandsSize, uint8_t snr ); @@ -1660,131 +1628,6 @@ static bool ValidatePayloadLength( uint8_t lenN, int8_t datarate, uint8_t fOptsL return false; } -static uint8_t CountBits( uint16_t mask, uint8_t nbBits ) -{ - uint8_t nbActiveBits = 0; - - for( uint8_t j = 0; j < nbBits; j++ ) - { - if( ( mask & ( 1 << j ) ) == ( 1 << j ) ) - { - nbActiveBits++; - } - } - return nbActiveBits; -} - -static bool ValidateDatarate( int8_t datarate, uint16_t* channelsMask ) -{ - if( ValueInRange( datarate, LORAMAC_TX_MIN_DATARATE, LORAMAC_TX_MAX_DATARATE ) == false ) - { - return false; - } - for( uint8_t i = 0, k = 0; i < LORA_MAX_NB_CHANNELS; i += 16, k++ ) - { - for( uint8_t j = 0; j < 16; j++ ) - { - if( ( ( channelsMask[k] & ( 1 << j ) ) != 0 ) ) - {// Check datarate validity for enabled channels - if( ValueInRange( datarate, Channels[i + j].DrRange.Fields.Min, Channels[i + j].DrRange.Fields.Max ) == true ) - { - // At least 1 channel has been found we can return OK. - return true; - } - } - } - } - return false; -} - -static bool AdrNextDr( bool adrEnabled, bool updateChannelMask, int8_t* datarateOut ) -{ - bool adrAckReq = false; - int8_t datarate = LoRaMacParams.ChannelsDatarate; - - if( adrEnabled == true ) - { - if( datarate == LORAMAC_TX_MIN_DATARATE ) - { - AdrAckCounter = 0; - adrAckReq = false; - } - else - { - if( AdrAckCounter >= ADR_ACK_LIMIT ) - { - adrAckReq = true; - LoRaMacParams.ChannelsTxPower = LORAMAC_MAX_TX_POWER; - } - else - { - adrAckReq = false; - } - if( AdrAckCounter >= ( ADR_ACK_LIMIT + ADR_ACK_DELAY ) ) - { - if( ( AdrAckCounter % ADR_ACK_DELAY ) == 0 ) - { -#if defined( USE_BAND_433 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) - if( datarate > LORAMAC_TX_MIN_DATARATE ) - { - datarate--; - } - if( datarate == LORAMAC_TX_MIN_DATARATE ) - { - if( updateChannelMask == true ) - { - // Re-enable default channels LC1, LC2, LC3 - LoRaMacParams.ChannelsMask[0] = LoRaMacParams.ChannelsMask[0] | ( LC( 1 ) + LC( 2 ) + LC( 3 ) ); - } - } -#elif defined( USE_BAND_470 ) - if( datarate > LORAMAC_TX_MIN_DATARATE ) - { - datarate--; - } - if( datarate == LORAMAC_TX_MIN_DATARATE ) - { - if( updateChannelMask == true ) - { - // Re-enable default channels - memcpy1( ( uint8_t* )LoRaMacParams.ChannelsMask, ( uint8_t* )LoRaMacParamsDefaults.ChannelsMask, sizeof( LoRaMacParams.ChannelsMask ) ); - } - } -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - if( ( datarate > LORAMAC_TX_MIN_DATARATE ) && ( datarate == DR_8 ) ) - { - datarate = DR_4; - } - else if( datarate > LORAMAC_TX_MIN_DATARATE ) - { - datarate--; - } - if( datarate == LORAMAC_TX_MIN_DATARATE ) - { - if( updateChannelMask == true ) - { -#if defined( USE_BAND_915 ) - // Re-enable default channels - memcpy1( ( uint8_t* )LoRaMacParams.ChannelsMask, ( uint8_t* )LoRaMacParamsDefaults.ChannelsMask, sizeof( LoRaMacParams.ChannelsMask ) ); -#else // defined( USE_BAND_915_HYBRID ) - // Re-enable default channels - ReenableChannels( LoRaMacParamsDefaults.ChannelsMask[4], LoRaMacParams.ChannelsMask ); -#endif - } - } -#else -#error "Please define a frequency band in the compiler options." -#endif - } - } - } - } - - *datarateOut = datarate; - - return adrAckReq; -} - static LoRaMacStatus_t AddMacCommand( uint8_t cmd, uint8_t p1, uint8_t p2 ) { LoRaMacStatus_t status = LORAMAC_STATUS_BUSY; From a0c9443bcd2f7e25a5d6d10d311daa8f2a2c50bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 062/161] Remove function Rx2FreqInRange. --- src/mac/LoRaMac.c | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 57b0d3a93..97c60aa3e 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -463,15 +463,7 @@ static bool SetNextChannel( TimerTime_t* time ); * \retval status Operation status [true: Success, false: Fail] */ static bool RxWindowSetup( uint32_t freq, int8_t datarate, uint32_t bandwidth, uint16_t timeout, bool rxContinuous ); - -/*! - * \brief Verifies if the RX window 2 frequency is in range - * - * \param [IN] freq window channel frequency - * - * \retval status Function status [1: OK, 0: Frequency not applicable] */ -static bool Rx2FreqInRange( uint32_t freq ); /*! * \brief Adds a new MAC command to be sent. @@ -1584,22 +1576,6 @@ static bool RxWindowSetup( uint32_t freq, int8_t datarate, uint32_t bandwidth, u return false; } -static bool Rx2FreqInRange( uint32_t freq ) -{ -#if defined( USE_BAND_433 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) - if( Radio.CheckRfFrequency( freq ) == true ) -#elif defined( USE_BAND_470 ) || defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - if( ( Radio.CheckRfFrequency( freq ) == true ) && - ( freq >= LORAMAC_FIRST_RX1_CHANNEL ) && - ( freq <= LORAMAC_LAST_RX1_CHANNEL ) && - ( ( ( freq - ( uint32_t ) LORAMAC_FIRST_RX1_CHANNEL ) % ( uint32_t ) LORAMAC_STEPWIDTH_RX1_CHANNEL ) == 0 ) ) -#endif - { - return true; - } - return false; -} - static bool ValidatePayloadLength( uint8_t lenN, int8_t datarate, uint8_t fOptsLen ) { GetPhyParams_t getPhy; From 62a2de35ee19cf9e1b7e8b3f2c24d8bd209bd5e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 063/161] Remove function implementation of SetNextChannel. --- src/mac/LoRaMac.c | 138 ---------------------------------------------- 1 file changed, 138 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 97c60aa3e..a9a5dc28b 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -441,17 +441,6 @@ static void OnRxWindow2TimerEvent( void ); */ static void OnAckTimeoutTimerEvent( void ); -/*! - * \brief Searches and set the next random available channel - * - * \param [OUT] Time to wait for the next transmission according to the duty - * cycle. - * - * \retval status Function status [1: OK, 0: Unable to find a channel on the - * current datarate] - */ -static bool SetNextChannel( TimerTime_t* time ); - /*! * \brief Initializes and opens the reception window * @@ -1391,138 +1380,11 @@ static void OnAckTimeoutTimerEvent( void ) } } -static bool SetNextChannel( TimerTime_t* time ) { - uint8_t nbEnabledChannels = 0; - uint8_t delayTx = 0; - uint8_t enabledChannels[LORA_MAX_NB_CHANNELS]; - TimerTime_t nextTxDelay = ( TimerTime_t )( -1 ); - - memset1( enabledChannels, 0, LORA_MAX_NB_CHANNELS ); - -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - if( CountNbEnabled125kHzChannels( ChannelsMaskRemaining ) == 0 ) - { // Restore default channels - memcpy1( ( uint8_t* ) ChannelsMaskRemaining, ( uint8_t* ) LoRaMacParams.ChannelsMask, 8 ); - } - if( ( LoRaMacParams.ChannelsDatarate >= DR_4 ) && ( ( ChannelsMaskRemaining[4] & 0x00FF ) == 0 ) ) - { // Make sure, that the channels are activated - ChannelsMaskRemaining[4] = LoRaMacParams.ChannelsMask[4]; - } -#elif defined( USE_BAND_470 ) - if( ( CountBits( LoRaMacParams.ChannelsMask[0], 16 ) == 0 ) && - ( CountBits( LoRaMacParams.ChannelsMask[1], 16 ) == 0 ) && - ( CountBits( LoRaMacParams.ChannelsMask[2], 16 ) == 0 ) && - ( CountBits( LoRaMacParams.ChannelsMask[3], 16 ) == 0 ) && - ( CountBits( LoRaMacParams.ChannelsMask[4], 16 ) == 0 ) && - ( CountBits( LoRaMacParams.ChannelsMask[5], 16 ) == 0 ) ) - { - memcpy1( ( uint8_t* )LoRaMacParams.ChannelsMask, ( uint8_t* )LoRaMacParamsDefaults.ChannelsMask, sizeof( LoRaMacParams.ChannelsMask ) ); - } -#else - if( CountBits( LoRaMacParams.ChannelsMask[0], 16 ) == 0 ) - { - // Re-enable default channels, if no channel is enabled - LoRaMacParams.ChannelsMask[0] = LoRaMacParams.ChannelsMask[0] | ( LC( 1 ) + LC( 2 ) + LC( 3 ) ); - } -#endif - - // Update Aggregated duty cycle - if( AggregatedTimeOff <= TimerGetElapsedTime( AggregatedLastTxDoneTime ) ) - { - AggregatedTimeOff = 0; - - // Update bands Time OFF - for( uint8_t i = 0; i < LORA_MAX_NB_BANDS; i++ ) - { - if( ( IsLoRaMacNetworkJoined == false ) || ( DutyCycleOn == true ) ) - { - if( Bands[i].TimeOff <= TimerGetElapsedTime( Bands[i].LastTxDoneTime ) ) - { - Bands[i].TimeOff = 0; - } - if( Bands[i].TimeOff != 0 ) - { - nextTxDelay = MIN( Bands[i].TimeOff - TimerGetElapsedTime( Bands[i].LastTxDoneTime ), nextTxDelay ); - } - } - else - { - if( DutyCycleOn == false ) - { - Bands[i].TimeOff = 0; - } - } - } - - // Search how many channels are enabled - for( uint8_t i = 0, k = 0; i < LORA_MAX_NB_CHANNELS; i += 16, k++ ) - { - for( uint8_t j = 0; j < 16; j++ ) - { -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - if( ( ChannelsMaskRemaining[k] & ( 1 << j ) ) != 0 ) -#else - if( ( LoRaMacParams.ChannelsMask[k] & ( 1 << j ) ) != 0 ) -#endif - { - if( Channels[i + j].Frequency == 0 ) - { // Check if the channel is enabled - continue; - } -#if defined( USE_BAND_868 ) || defined( USE_BAND_433 ) || defined( USE_BAND_780 ) - if( IsLoRaMacNetworkJoined == false ) - { - if( ( JOIN_CHANNELS & ( 1 << j ) ) == 0 ) - { - continue; - } - } -#endif - if( ( ( Channels[i + j].DrRange.Fields.Min <= LoRaMacParams.ChannelsDatarate ) && - ( LoRaMacParams.ChannelsDatarate <= Channels[i + j].DrRange.Fields.Max ) ) == false ) - { // Check if the current channel selection supports the given datarate - continue; - } - if( Bands[Channels[i + j].Band].TimeOff > 0 ) - { // Check if the band is available for transmission - delayTx++; - continue; - } - enabledChannels[nbEnabledChannels++] = i + j; - } - } - } - } - else - { - delayTx++; - nextTxDelay = AggregatedTimeOff - TimerGetElapsedTime( AggregatedLastTxDoneTime ); - } - - if( nbEnabledChannels > 0 ) { - Channel = enabledChannels[randr( 0, nbEnabledChannels - 1 )]; -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - if( Channel < ( LORA_MAX_NB_CHANNELS - 8 ) ) - { - DisableChannelInMask( Channel, ChannelsMaskRemaining ); - } -#endif - *time = 0; - return true; } else { - if( delayTx > 0 ) - { - // Delay transmission due to AggregatedTimeOff or to a band time off - *time = nextTxDelay; - return true; - } - // Datarate not supported by any channel - *time = 0; - return false; } } From 5bdedf2184350cbaec1cbbf673c157bcfb90017d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 064/161] Update function RxWindowSetup. --- src/mac/LoRaMac.c | 59 ++++------------------------------------------- 1 file changed, 5 insertions(+), 54 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index a9a5dc28b..a89e3461c 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -448,11 +448,8 @@ static void OnAckTimeoutTimerEvent( void ); * \param [IN] datarate window channel datarate * \param [IN] bandwidth window channel bandwidth * \param [IN] timeout window channel timeout - * - * \retval status Operation status [true: Success, false: Fail] - */ -static bool RxWindowSetup( uint32_t freq, int8_t datarate, uint32_t bandwidth, uint16_t timeout, bool rxContinuous ); */ +static void RxWindowSetup( bool rxContinuous, uint32_t maxRxWindow ); /*! * \brief Adds a new MAC command to be sent. @@ -1380,64 +1377,18 @@ static void OnAckTimeoutTimerEvent( void ) } } +static void RxWindowSetup( bool rxContinuous, uint32_t maxRxWindow ) { + if( rxContinuous == false ) { + Radio.Rx( maxRxWindow ); } else { + Radio.Rx( 0 ); // Continuous mode } } -static bool RxWindowSetup( uint32_t freq, int8_t datarate, uint32_t bandwidth, uint16_t timeout, bool rxContinuous ) -{ - uint8_t downlinkDatarate = Datarates[datarate]; - RadioModems_t modem; - - if( Radio.GetStatus( ) == RF_IDLE ) - { - Radio.SetChannel( freq ); - - // Store downlink datarate - McpsIndication.RxDatarate = ( uint8_t ) datarate; - -#if defined( USE_BAND_433 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) - if( datarate == DR_7 ) - { - modem = MODEM_FSK; - Radio.SetRxConfig( modem, 50e3, downlinkDatarate * 1e3, 0, 83.333e3, 5, 0, false, 0, true, 0, 0, false, rxContinuous ); - } - else - { - modem = MODEM_LORA; - Radio.SetRxConfig( modem, bandwidth, downlinkDatarate, 1, 0, 8, timeout, false, 0, false, 0, 0, true, rxContinuous ); - } -#elif defined( USE_BAND_470 ) || defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) - modem = MODEM_LORA; - Radio.SetRxConfig( modem, bandwidth, downlinkDatarate, 1, 0, 8, timeout, false, 0, false, 0, 0, true, rxContinuous ); -#endif - - if( RepeaterSupport == true ) - { - Radio.SetMaxPayloadLength( modem, MaxPayloadOfDatarateRepeater[datarate] + LORA_MAC_FRMPAYLOAD_OVERHEAD ); - } - else - { - Radio.SetMaxPayloadLength( modem, MaxPayloadOfDatarate[datarate] + LORA_MAC_FRMPAYLOAD_OVERHEAD ); - } - - if( rxContinuous == false ) - { - Radio.Rx( LoRaMacParams.MaxRxWindow ); - } - else - { - Radio.Rx( 0 ); // Continuous mode - } - return true; - } - return false; -} - static bool ValidatePayloadLength( uint8_t lenN, int8_t datarate, uint8_t fOptsLen ) { GetPhyParams_t getPhy; From bd4247ea522e2b67042ce0e9ecebcc573ccc0ad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 065/161] Update main applications. --- src/apps/LoRaMac/classA/LoRaMote/main.c | 44 ++++++++++-------- src/apps/LoRaMac/classA/MoteII/main.c | 47 +++++++++++-------- src/apps/LoRaMac/classA/NAMote72/main.c | 44 ++++++++++-------- src/apps/LoRaMac/classA/SK-iM880A/main.c | 27 +++++------ src/apps/LoRaMac/classA/SensorNode/main.c | 56 +++++++++++++++-------- src/apps/LoRaMac/classB/LoRaMote/main.c | 44 ++++++++++-------- src/apps/LoRaMac/classB/MoteII/main.c | 47 +++++++++++-------- src/apps/LoRaMac/classB/NAMote72/main.c | 44 ++++++++++-------- src/apps/LoRaMac/classB/SK-iM880A/main.c | 27 +++++------ src/apps/LoRaMac/classB/SensorNode/main.c | 56 +++++++++++++++-------- src/apps/LoRaMac/classC/LoRaMote/main.c | 44 ++++++++++-------- src/apps/LoRaMac/classC/MoteII/main.c | 47 +++++++++++-------- src/apps/LoRaMac/classC/NAMote72/main.c | 44 ++++++++++-------- src/apps/LoRaMac/classC/SK-iM880A/main.c | 27 +++++------ src/apps/LoRaMac/classC/SensorNode/main.c | 56 +++++++++++++++-------- 15 files changed, 396 insertions(+), 258 deletions(-) diff --git a/src/apps/LoRaMac/classA/LoRaMote/main.c b/src/apps/LoRaMac/classA/LoRaMote/main.c index e6f3aa642..44208be51 100644 --- a/src/apps/LoRaMac/classA/LoRaMote/main.c +++ b/src/apps/LoRaMac/classA/LoRaMote/main.c @@ -20,6 +20,7 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" /*! @@ -50,7 +51,7 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -65,13 +66,13 @@ Maintainer: Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -85,11 +86,11 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 @@ -204,7 +205,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -235,7 +236,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -512,7 +513,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif GpsStop( ); @@ -534,7 +535,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -581,7 +582,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -693,8 +694,15 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); - +#if defined( REGION_EU868 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led1Timer, OnLed1TimerEvent ); @@ -711,7 +719,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classA/MoteII/main.c b/src/apps/LoRaMac/classA/MoteII/main.c index 7f5a185a9..c5054c85a 100644 --- a/src/apps/LoRaMac/classA/MoteII/main.c +++ b/src/apps/LoRaMac/classA/MoteII/main.c @@ -18,6 +18,7 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" #include "buttons.h" @@ -51,7 +52,7 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -66,13 +67,13 @@ Maintainer: Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -86,11 +87,11 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 @@ -215,7 +216,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacUplinkStatus.Pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 LoRaMacUplinkStatus.Temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 LoRaMacUplinkStatus.AltitudeBar = ( int16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 @@ -240,7 +241,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = LoRaMacUplinkStatus.Longitude & 0xFF; AppData[14] = ( LoRaMacUplinkStatus.AltitudeGps >> 8 ) & 0xFF; AppData[15] = LoRaMacUplinkStatus.AltitudeGps & 0xFF; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) LoRaMacUplinkStatus.Temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 LoRaMacUplinkStatus.BatteryLevel = BoardGetBatteryLevel( ); // 1 (very low) to 254 (fully charged) @@ -561,7 +562,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif GpsStop( ); @@ -583,7 +584,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = AppSettings.AdrOn; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( AppSettings.DutyCycleOn ); #endif GpsStart( ); @@ -630,7 +631,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = AppSettings.AdrOn; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( AppSettings.DutyCycleOn ); #endif GpsStart( ); @@ -747,7 +748,7 @@ int main( void ) #endif AppSettings.Otaa = OVER_THE_AIR_ACTIVATION; IsTxConfirmed = AppSettings.IsTxConfirmed = LORAWAN_CONFIRMED_MSG_ON; -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) AppSettings.DutyCycleOn = LORAWAN_DUTYCYCLE_ON; #endif AppSettings.DeviceClass = CLASS_A; @@ -755,7 +756,7 @@ int main( void ) LoRaMacUplinkStatus.Acked = false; LoRaMacUplinkStatus.NbTrials = 0; LoRaMacUplinkStatus.Datarate = LORAWAN_DEFAULT_DATARATE; - LoRaMacUplinkStatus.TxPower = LORAMAC_DEFAULT_TX_POWER; + LoRaMacUplinkStatus.TxPower = TX_POWER_0; LoRaMacUplinkStatus.UplinkCounter = 0; LoRaMacDownlinkStatus.DownlinkCounter = 0; @@ -783,7 +784,15 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); +#if defined( REGION_EU868 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); @@ -801,7 +810,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( AppSettings.DutyCycleOn ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classA/NAMote72/main.c b/src/apps/LoRaMac/classA/NAMote72/main.c index e24800437..809d52c36 100644 --- a/src/apps/LoRaMac/classA/NAMote72/main.c +++ b/src/apps/LoRaMac/classA/NAMote72/main.c @@ -18,6 +18,7 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" /*! @@ -48,7 +49,7 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -63,13 +64,13 @@ Maintainer: Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -83,11 +84,11 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 @@ -219,7 +220,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -250,7 +251,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -527,7 +528,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif GpsStop( ); @@ -549,7 +550,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -596,7 +597,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -708,8 +709,15 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); - +#if defined( REGION_EU868 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led1Timer, OnLed1TimerEvent ); @@ -726,7 +734,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classA/SK-iM880A/main.c b/src/apps/LoRaMac/classA/SK-iM880A/main.c index 3745f9222..1608fa171 100644 --- a/src/apps/LoRaMac/classA/SK-iM880A/main.c +++ b/src/apps/LoRaMac/classA/SK-iM880A/main.c @@ -17,6 +17,7 @@ Maintainer: Andreas Pella (IMST GmbH), Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" /*! @@ -47,7 +48,7 @@ Maintainer: Andreas Pella (IMST GmbH), Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -62,13 +63,13 @@ Maintainer: Andreas Pella (IMST GmbH), Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -460,7 +461,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif } @@ -481,7 +482,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif break; @@ -527,7 +528,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif @@ -638,7 +639,7 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); @@ -656,7 +657,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classA/SensorNode/main.c b/src/apps/LoRaMac/classA/SensorNode/main.c index 1e8f0194a..ba34fd66f 100644 --- a/src/apps/LoRaMac/classA/SensorNode/main.c +++ b/src/apps/LoRaMac/classA/SensorNode/main.c @@ -17,6 +17,7 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" /*! @@ -47,7 +48,7 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -62,13 +63,13 @@ Maintainer: Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -82,11 +83,11 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( USE_BAND_433 ) || defined( USE_BAND_470 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) +#if defined( REGION_EU433 ) || defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU868 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 @@ -206,7 +207,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( USE_BAND_433 ) || defined( USE_BAND_470 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) +#if defined( REGION_EU433 ) || defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU868 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -237,7 +238,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -524,7 +525,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif GpsStop( ); @@ -546,7 +547,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -593,7 +594,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -705,8 +706,27 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); - +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN470 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN470 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU433 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU433 ); +#elif defined( REGION_EU868 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led1Timer, OnLed1TimerEvent ); @@ -726,7 +746,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classB/LoRaMote/main.c b/src/apps/LoRaMac/classB/LoRaMote/main.c index 70e9bcd22..568995b72 100644 --- a/src/apps/LoRaMac/classB/LoRaMote/main.c +++ b/src/apps/LoRaMac/classB/LoRaMote/main.c @@ -20,6 +20,7 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" /*! @@ -50,7 +51,7 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -65,13 +66,13 @@ Maintainer: Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -85,11 +86,11 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 @@ -204,7 +205,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -235,7 +236,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -512,7 +513,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif GpsStop( ); @@ -534,7 +535,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -581,7 +582,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -693,8 +694,15 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); - +#if defined( REGION_EU868 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led1Timer, OnLed1TimerEvent ); @@ -711,7 +719,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classB/MoteII/main.c b/src/apps/LoRaMac/classB/MoteII/main.c index b09dcc15a..f760d1e83 100644 --- a/src/apps/LoRaMac/classB/MoteII/main.c +++ b/src/apps/LoRaMac/classB/MoteII/main.c @@ -18,6 +18,7 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" #include "buttons.h" @@ -51,7 +52,7 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -66,13 +67,13 @@ Maintainer: Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -86,11 +87,11 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 @@ -215,7 +216,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacUplinkStatus.Pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 LoRaMacUplinkStatus.Temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 LoRaMacUplinkStatus.AltitudeBar = ( int16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 @@ -240,7 +241,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = LoRaMacUplinkStatus.Longitude & 0xFF; AppData[14] = ( LoRaMacUplinkStatus.AltitudeGps >> 8 ) & 0xFF; AppData[15] = LoRaMacUplinkStatus.AltitudeGps & 0xFF; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) LoRaMacUplinkStatus.Temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 LoRaMacUplinkStatus.BatteryLevel = BoardGetBatteryLevel( ); // 1 (very low) to 254 (fully charged) @@ -561,7 +562,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif GpsStop( ); @@ -583,7 +584,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = AppSettings.AdrOn; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( AppSettings.DutyCycleOn ); #endif GpsStart( ); @@ -630,7 +631,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = AppSettings.AdrOn; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( AppSettings.DutyCycleOn ); #endif GpsStart( ); @@ -747,7 +748,7 @@ int main( void ) #endif AppSettings.Otaa = OVER_THE_AIR_ACTIVATION; IsTxConfirmed = AppSettings.IsTxConfirmed = LORAWAN_CONFIRMED_MSG_ON; -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) AppSettings.DutyCycleOn = LORAWAN_DUTYCYCLE_ON; #endif AppSettings.DeviceClass = CLASS_B; @@ -755,7 +756,7 @@ int main( void ) LoRaMacUplinkStatus.Acked = false; LoRaMacUplinkStatus.NbTrials = 0; LoRaMacUplinkStatus.Datarate = LORAWAN_DEFAULT_DATARATE; - LoRaMacUplinkStatus.TxPower = LORAMAC_DEFAULT_TX_POWER; + LoRaMacUplinkStatus.TxPower = TX_POWER_0; LoRaMacUplinkStatus.UplinkCounter = 0; LoRaMacDownlinkStatus.DownlinkCounter = 0; @@ -783,7 +784,15 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); +#if defined( REGION_EU868 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); @@ -801,7 +810,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( AppSettings.DutyCycleOn ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classB/NAMote72/main.c b/src/apps/LoRaMac/classB/NAMote72/main.c index 1b7d82d65..72828cb04 100644 --- a/src/apps/LoRaMac/classB/NAMote72/main.c +++ b/src/apps/LoRaMac/classB/NAMote72/main.c @@ -18,6 +18,7 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" /*! @@ -48,7 +49,7 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -63,13 +64,13 @@ Maintainer: Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -83,11 +84,11 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 @@ -219,7 +220,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -250,7 +251,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -527,7 +528,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif GpsStop( ); @@ -549,7 +550,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -596,7 +597,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -708,8 +709,15 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); - +#if defined( REGION_EU868 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led1Timer, OnLed1TimerEvent ); @@ -726,7 +734,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classB/SK-iM880A/main.c b/src/apps/LoRaMac/classB/SK-iM880A/main.c index 04904a99a..e84152358 100644 --- a/src/apps/LoRaMac/classB/SK-iM880A/main.c +++ b/src/apps/LoRaMac/classB/SK-iM880A/main.c @@ -17,6 +17,7 @@ Maintainer: Andreas Pella (IMST GmbH), Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" /*! @@ -47,7 +48,7 @@ Maintainer: Andreas Pella (IMST GmbH), Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -62,13 +63,13 @@ Maintainer: Andreas Pella (IMST GmbH), Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -460,7 +461,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif } @@ -481,7 +482,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif break; @@ -527,7 +528,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif @@ -638,7 +639,7 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); @@ -656,7 +657,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classB/SensorNode/main.c b/src/apps/LoRaMac/classB/SensorNode/main.c index aa0e76ade..bbf404131 100644 --- a/src/apps/LoRaMac/classB/SensorNode/main.c +++ b/src/apps/LoRaMac/classB/SensorNode/main.c @@ -17,6 +17,7 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" /*! @@ -47,7 +48,7 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -62,13 +63,13 @@ Maintainer: Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -82,11 +83,11 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( USE_BAND_433 ) || defined( USE_BAND_470 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) +#if defined( REGION_EU433 ) || defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU868 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 @@ -206,7 +207,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( USE_BAND_433 ) || defined( USE_BAND_470 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) +#if defined( REGION_EU433 ) || defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU868 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -237,7 +238,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -524,7 +525,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif GpsStop( ); @@ -546,7 +547,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -593,7 +594,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -705,8 +706,27 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); - +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN470 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN470 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU433 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU433 ); +#elif defined( REGION_EU868 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led1Timer, OnLed1TimerEvent ); @@ -726,7 +746,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classC/LoRaMote/main.c b/src/apps/LoRaMac/classC/LoRaMote/main.c index 583b671cb..b6a147ea4 100644 --- a/src/apps/LoRaMac/classC/LoRaMote/main.c +++ b/src/apps/LoRaMac/classC/LoRaMote/main.c @@ -20,6 +20,7 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" /*! @@ -50,7 +51,7 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -65,13 +66,13 @@ Maintainer: Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -85,11 +86,11 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 @@ -204,7 +205,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -235,7 +236,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -512,7 +513,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif GpsStop( ); @@ -534,7 +535,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -581,7 +582,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -693,8 +694,15 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); - +#if defined( REGION_EU868 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led1Timer, OnLed1TimerEvent ); @@ -711,7 +719,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classC/MoteII/main.c b/src/apps/LoRaMac/classC/MoteII/main.c index 980ab704b..a32486d58 100644 --- a/src/apps/LoRaMac/classC/MoteII/main.c +++ b/src/apps/LoRaMac/classC/MoteII/main.c @@ -18,6 +18,7 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" #include "buttons.h" @@ -51,7 +52,7 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -66,13 +67,13 @@ Maintainer: Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -86,11 +87,11 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 @@ -215,7 +216,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacUplinkStatus.Pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 LoRaMacUplinkStatus.Temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 LoRaMacUplinkStatus.AltitudeBar = ( int16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 @@ -240,7 +241,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = LoRaMacUplinkStatus.Longitude & 0xFF; AppData[14] = ( LoRaMacUplinkStatus.AltitudeGps >> 8 ) & 0xFF; AppData[15] = LoRaMacUplinkStatus.AltitudeGps & 0xFF; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) LoRaMacUplinkStatus.Temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 LoRaMacUplinkStatus.BatteryLevel = BoardGetBatteryLevel( ); // 1 (very low) to 254 (fully charged) @@ -561,7 +562,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif GpsStop( ); @@ -583,7 +584,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = AppSettings.AdrOn; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( AppSettings.DutyCycleOn ); #endif GpsStart( ); @@ -630,7 +631,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = AppSettings.AdrOn; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( AppSettings.DutyCycleOn ); #endif GpsStart( ); @@ -747,7 +748,7 @@ int main( void ) #endif AppSettings.Otaa = OVER_THE_AIR_ACTIVATION; IsTxConfirmed = AppSettings.IsTxConfirmed = LORAWAN_CONFIRMED_MSG_ON; -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) AppSettings.DutyCycleOn = LORAWAN_DUTYCYCLE_ON; #endif AppSettings.DeviceClass = CLASS_C; @@ -755,7 +756,7 @@ int main( void ) LoRaMacUplinkStatus.Acked = false; LoRaMacUplinkStatus.NbTrials = 0; LoRaMacUplinkStatus.Datarate = LORAWAN_DEFAULT_DATARATE; - LoRaMacUplinkStatus.TxPower = LORAMAC_DEFAULT_TX_POWER; + LoRaMacUplinkStatus.TxPower = TX_POWER_0; LoRaMacUplinkStatus.UplinkCounter = 0; LoRaMacDownlinkStatus.DownlinkCounter = 0; @@ -783,7 +784,15 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); +#if defined( REGION_EU868 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); @@ -801,7 +810,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( AppSettings.DutyCycleOn ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classC/NAMote72/main.c b/src/apps/LoRaMac/classC/NAMote72/main.c index 173ca1b60..8fcb2164c 100644 --- a/src/apps/LoRaMac/classC/NAMote72/main.c +++ b/src/apps/LoRaMac/classC/NAMote72/main.c @@ -18,6 +18,7 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" /*! @@ -48,7 +49,7 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -63,13 +64,13 @@ Maintainer: Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -83,11 +84,11 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 @@ -219,7 +220,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -250,7 +251,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -527,7 +528,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif GpsStop( ); @@ -549,7 +550,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -596,7 +597,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -708,8 +709,15 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); - +#if defined( REGION_EU868 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led1Timer, OnLed1TimerEvent ); @@ -726,7 +734,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classC/SK-iM880A/main.c b/src/apps/LoRaMac/classC/SK-iM880A/main.c index b739b800c..8c95ccd01 100644 --- a/src/apps/LoRaMac/classC/SK-iM880A/main.c +++ b/src/apps/LoRaMac/classC/SK-iM880A/main.c @@ -17,6 +17,7 @@ Maintainer: Andreas Pella (IMST GmbH), Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" /*! @@ -47,7 +48,7 @@ Maintainer: Andreas Pella (IMST GmbH), Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -62,13 +63,13 @@ Maintainer: Andreas Pella (IMST GmbH), Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -460,7 +461,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif } @@ -481,7 +482,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif break; @@ -527,7 +528,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif @@ -638,7 +639,7 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); @@ -656,7 +657,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) diff --git a/src/apps/LoRaMac/classC/SensorNode/main.c b/src/apps/LoRaMac/classC/SensorNode/main.c index a315a3580..ad6e196c1 100644 --- a/src/apps/LoRaMac/classC/SensorNode/main.c +++ b/src/apps/LoRaMac/classC/SensorNode/main.c @@ -17,6 +17,7 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "LoRaMac.h" +#include "Region.h" #include "Commissioning.h" /*! @@ -47,7 +48,7 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define LORAWAN_ADR_ON 1 -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) #include "LoRaMacTest.h" @@ -62,13 +63,13 @@ Maintainer: Miguel Luis and Gregory Cristian #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) -#define LC4 { 867100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC5 { 867300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC6 { 867500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC7 { 867700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC8 { 867900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } -#define LC9 { 868800000, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } -#define LC10 { 868300000, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } +#define LC4 { 867100000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC5 { 867300000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC6 { 867500000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC7 { 867700000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC8 { 867900000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } +#define LC9 { 868800000, 0, { ( ( DR_7 << 4 ) | DR_7 ) }, 2 } +#define LC10 { 868300000, 0, { ( ( DR_6 << 4 ) | DR_6 ) }, 1 } #endif @@ -82,11 +83,11 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( USE_BAND_433 ) || defined( USE_BAND_470 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) +#if defined( REGION_EU433 ) || defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU868 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 @@ -206,7 +207,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( USE_BAND_433 ) || defined( USE_BAND_470 ) || defined( USE_BAND_780 ) || defined( USE_BAND_868 ) +#if defined( REGION_EU433 ) || defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU868 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -237,7 +238,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -524,7 +525,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Param.AdrEnable = true; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( false ); #endif GpsStop( ); @@ -546,7 +547,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -593,7 +594,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) mibReq.Type = MIB_ADR; mibReq.Param.AdrEnable = LORAWAN_ADR_ON; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #endif GpsStart( ); @@ -705,8 +706,27 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; - LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks ); - +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN470 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN470 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU433 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU433 ); +#elif defined( REGION_EU868 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led1Timer, OnLed1TimerEvent ); @@ -726,7 +746,7 @@ int main( void ) mibReq.Param.EnablePublicNetwork = LORAWAN_PUBLIC_NETWORK; LoRaMacMibSetRequestConfirm( &mibReq ); -#if defined( USE_BAND_868 ) +#if defined( REGION_EU868 ) LoRaMacTestSetDutyCycleOn( LORAWAN_DUTYCYCLE_ON ); #if( USE_SEMTECH_DEFAULT_CHANNEL_LINEUP == 1 ) From a07a0a6256dd6f54aaf9ec952584aaf1e9d4e14d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 066/161] Update project settings for KEIL. --- Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvopt | 206 +++++-- Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvproj | 256 ++++++++- Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvopt | 206 +++++-- Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvproj | 256 ++++++++- Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvopt | 206 +++++-- Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvproj | 256 ++++++++- Keil/MoteII/LoRaMac/classA/LoRaMac.uvoptx | 208 +++++-- Keil/MoteII/LoRaMac/classA/LoRaMac.uvprojx | 128 ++++- Keil/MoteII/LoRaMac/classB/LoRaMac.uvoptx | 208 +++++-- Keil/MoteII/LoRaMac/classB/LoRaMac.uvprojx | 128 ++++- Keil/MoteII/LoRaMac/classC/LoRaMac.uvoptx | 208 +++++-- Keil/MoteII/LoRaMac/classC/LoRaMac.uvprojx | 128 ++++- Keil/NAMote72/LoRaMac/classA/LoRaMac.uvopt | 238 ++++++-- Keil/NAMote72/LoRaMac/classA/LoRaMac.uvproj | 158 +++++- Keil/NAMote72/LoRaMac/classB/LoRaMac.uvopt | 232 ++++++-- Keil/NAMote72/LoRaMac/classB/LoRaMac.uvproj | 158 +++++- Keil/NAMote72/LoRaMac/classC/LoRaMac.uvopt | 232 ++++++-- Keil/NAMote72/LoRaMac/classC/LoRaMac.uvproj | 158 +++++- Keil/NAMote72/ping-pong/Ping-Pong.uvopt | 12 + Keil/NAMote72/ping-pong/Ping-Pong.uvproj | 2 +- Keil/NAMote72/rx-sensi/rx-sensi.uvopt | 12 + Keil/NAMote72/rx-sensi/rx-sensi.uvproj | 2 +- Keil/NAMote72/tx-cw/tx-cw.uvopt | 6 + Keil/NAMote72/tx-cw/tx-cw.uvproj | 2 +- Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt | 180 +++++- Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj | 64 ++- Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt | 180 +++++- Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj | 64 ++- Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvopt | 180 +++++- Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvproj | 64 ++- Keil/SensorNode/LoRaMac/classA/LoRaMac.uvopt | 206 +++++-- Keil/SensorNode/LoRaMac/classA/LoRaMac.uvproj | 512 +++++++++++++++++- Keil/SensorNode/LoRaMac/classB/LoRaMac.uvopt | 206 +++++-- Keil/SensorNode/LoRaMac/classB/LoRaMac.uvproj | 512 +++++++++++++++++- Keil/SensorNode/LoRaMac/classC/LoRaMac.uvopt | 206 +++++-- Keil/SensorNode/LoRaMac/classC/LoRaMac.uvproj | 512 +++++++++++++++++- 36 files changed, 5883 insertions(+), 609 deletions(-) diff --git a/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvopt b/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvopt index 7bfffb8fc..58d43f22c 100644 --- a/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvopt +++ b/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvopt @@ -1046,7 +1046,7 @@ - peripherals + mac\region 0 0 0 @@ -1058,8 +1058,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c + ..\..\..\..\src\mac\region\Region.c + Region.c 0 0 @@ -1070,8 +1070,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mag3110.c - mag3110.c + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c 0 0 @@ -1082,8 +1082,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mma8451.c - mma8451.c + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c 0 0 @@ -1094,8 +1094,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mpl3115.c - mpl3115.c + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c 0 0 @@ -1106,8 +1106,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\sx1509.c - sx1509.c + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c 0 0 @@ -1118,6 +1118,146 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 43 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + peripherals + 0 + 0 + 0 + 0 + + 8 + 44 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 8 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 8 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 8 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 49 + 1 + 0 + 0 + 0 ..\..\..\..\src\peripherals\sx9500.c sx9500.c 0 @@ -1132,8 +1272,8 @@ 0 0 - 8 - 39 + 9 + 50 1 0 0 @@ -1152,8 +1292,8 @@ 0 0 - 9 - 40 + 10 + 51 1 0 0 @@ -1164,8 +1304,8 @@ 0 - 9 - 41 + 10 + 52 1 0 0 @@ -1176,8 +1316,8 @@ 0 - 9 - 42 + 10 + 53 1 0 0 @@ -1188,8 +1328,8 @@ 0 - 9 - 43 + 10 + 54 1 0 0 @@ -1200,8 +1340,8 @@ 0 - 9 - 44 + 10 + 55 1 0 0 @@ -1212,8 +1352,8 @@ 0 - 9 - 45 + 10 + 56 1 0 0 @@ -1224,8 +1364,8 @@ 0 - 9 - 46 + 10 + 57 1 0 0 @@ -1236,8 +1376,8 @@ 0 - 9 - 47 + 10 + 58 1 0 0 @@ -1256,8 +1396,8 @@ 0 0 - 10 - 48 + 11 + 59 1 0 0 @@ -1268,8 +1408,8 @@ 0 - 10 - 49 + 11 + 60 1 0 0 diff --git a/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvproj b/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvproj index a67e21e26..02ac589fd 100644 --- a/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvproj +++ b/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvproj @@ -372,9 +372,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -605,6 +605,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1078,9 +1138,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1311,6 +1371,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1784,9 +1904,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2017,6 +2137,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -2490,9 +2670,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2723,6 +2903,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals diff --git a/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvopt b/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvopt index 040097b24..3a4344a59 100644 --- a/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvopt +++ b/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvopt @@ -1046,7 +1046,7 @@ - peripherals + mac\region 0 0 0 @@ -1058,8 +1058,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c + ..\..\..\..\src\mac\region\Region.c + Region.c 0 0 @@ -1070,8 +1070,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mag3110.c - mag3110.c + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c 0 0 @@ -1082,8 +1082,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mma8451.c - mma8451.c + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c 0 0 @@ -1094,8 +1094,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mpl3115.c - mpl3115.c + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c 0 0 @@ -1106,8 +1106,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\sx1509.c - sx1509.c + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c 0 0 @@ -1118,6 +1118,146 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 43 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + peripherals + 0 + 0 + 0 + 0 + + 8 + 44 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 8 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 8 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 8 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 49 + 1 + 0 + 0 + 0 ..\..\..\..\src\peripherals\sx9500.c sx9500.c 0 @@ -1132,8 +1272,8 @@ 0 0 - 8 - 39 + 9 + 50 1 0 0 @@ -1152,8 +1292,8 @@ 0 0 - 9 - 40 + 10 + 51 1 0 0 @@ -1164,8 +1304,8 @@ 0 - 9 - 41 + 10 + 52 1 0 0 @@ -1176,8 +1316,8 @@ 0 - 9 - 42 + 10 + 53 1 0 0 @@ -1188,8 +1328,8 @@ 0 - 9 - 43 + 10 + 54 1 0 0 @@ -1200,8 +1340,8 @@ 0 - 9 - 44 + 10 + 55 1 0 0 @@ -1212,8 +1352,8 @@ 0 - 9 - 45 + 10 + 56 1 0 0 @@ -1224,8 +1364,8 @@ 0 - 9 - 46 + 10 + 57 1 0 0 @@ -1236,8 +1376,8 @@ 0 - 9 - 47 + 10 + 58 1 0 0 @@ -1256,8 +1396,8 @@ 0 0 - 10 - 48 + 11 + 59 1 0 0 @@ -1268,8 +1408,8 @@ 0 - 10 - 49 + 11 + 60 1 0 0 diff --git a/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvproj b/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvproj index cb5a86093..2981bcef1 100644 --- a/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvproj +++ b/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvproj @@ -372,9 +372,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -605,6 +605,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1078,9 +1138,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1311,6 +1371,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1784,9 +1904,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2017,6 +2137,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -2490,9 +2670,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2723,6 +2903,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals diff --git a/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvopt b/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvopt index a16ac2b1c..3f590037b 100644 --- a/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvopt +++ b/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvopt @@ -1046,7 +1046,7 @@ - peripherals + mac\region 0 0 0 @@ -1058,8 +1058,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c + ..\..\..\..\src\mac\region\Region.c + Region.c 0 0 @@ -1070,8 +1070,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mag3110.c - mag3110.c + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c 0 0 @@ -1082,8 +1082,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mma8451.c - mma8451.c + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c 0 0 @@ -1094,8 +1094,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mpl3115.c - mpl3115.c + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c 0 0 @@ -1106,8 +1106,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\sx1509.c - sx1509.c + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c 0 0 @@ -1118,6 +1118,146 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 43 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + peripherals + 0 + 0 + 0 + 0 + + 8 + 44 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 8 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 8 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 8 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 49 + 1 + 0 + 0 + 0 ..\..\..\..\src\peripherals\sx9500.c sx9500.c 0 @@ -1132,8 +1272,8 @@ 0 0 - 8 - 39 + 9 + 50 1 0 0 @@ -1152,8 +1292,8 @@ 0 0 - 9 - 40 + 10 + 51 1 0 0 @@ -1164,8 +1304,8 @@ 0 - 9 - 41 + 10 + 52 1 0 0 @@ -1176,8 +1316,8 @@ 0 - 9 - 42 + 10 + 53 1 0 0 @@ -1188,8 +1328,8 @@ 0 - 9 - 43 + 10 + 54 1 0 0 @@ -1200,8 +1340,8 @@ 0 - 9 - 44 + 10 + 55 1 0 0 @@ -1212,8 +1352,8 @@ 0 - 9 - 45 + 10 + 56 1 0 0 @@ -1224,8 +1364,8 @@ 0 - 9 - 46 + 10 + 57 1 0 0 @@ -1236,8 +1376,8 @@ 0 - 9 - 47 + 10 + 58 1 0 0 @@ -1256,8 +1396,8 @@ 0 0 - 10 - 48 + 11 + 59 1 0 0 @@ -1268,8 +1408,8 @@ 0 - 10 - 49 + 11 + 60 1 0 0 diff --git a/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvproj b/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvproj index 9769cf05b..aa909cba5 100644 --- a/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvproj +++ b/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvproj @@ -372,9 +372,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -605,6 +605,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1078,9 +1138,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1311,6 +1371,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1784,9 +1904,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2017,6 +2137,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -2490,9 +2670,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2723,6 +2903,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals diff --git a/Keil/MoteII/LoRaMac/classA/LoRaMac.uvoptx b/Keil/MoteII/LoRaMac/classA/LoRaMac.uvoptx index d91ff35f9..4e6c0b410 100644 --- a/Keil/MoteII/LoRaMac/classA/LoRaMac.uvoptx +++ b/Keil/MoteII/LoRaMac/classA/LoRaMac.uvoptx @@ -992,8 +992,8 @@ - peripherals - 1 + mac\region + 0 0 0 0 @@ -1004,8 +1004,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c + ..\..\..\..\src\mac\region\Region.c + Region.c 0 0 @@ -1016,8 +1016,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mag3110.c - mag3110.c + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c 0 0 @@ -1028,8 +1028,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mma8451.c - mma8451.c + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c 0 0 @@ -1040,8 +1040,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mpl3115.c - mpl3115.c + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c 0 0 @@ -1052,8 +1052,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\sx1509.c - sx1509.c + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c 0 0 @@ -1064,6 +1064,146 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 49 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 50 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 8 + 51 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 52 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 8 + 53 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 8 + 54 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 8 + 55 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 56 + 1 + 0 + 0 + 0 ..\..\..\..\src\peripherals\pam7q.c pam7q.c 0 @@ -1078,8 +1218,8 @@ 0 0 - 8 - 46 + 9 + 57 1 0 0 @@ -1098,8 +1238,8 @@ 0 0 - 9 - 47 + 10 + 58 1 0 0 @@ -1110,8 +1250,8 @@ 0 - 9 - 48 + 10 + 59 1 0 0 @@ -1122,8 +1262,8 @@ 0 - 9 - 49 + 10 + 60 1 0 0 @@ -1134,8 +1274,8 @@ 0 - 9 - 50 + 10 + 61 1 0 0 @@ -1146,8 +1286,8 @@ 0 - 9 - 51 + 10 + 62 1 0 0 @@ -1158,8 +1298,8 @@ 0 - 9 - 52 + 10 + 63 1 0 0 @@ -1170,8 +1310,8 @@ 0 - 9 - 53 + 10 + 64 1 0 0 @@ -1182,8 +1322,8 @@ 0 - 9 - 54 + 10 + 65 1 0 0 @@ -1202,8 +1342,8 @@ 0 0 - 10 - 55 + 11 + 66 1 0 0 @@ -1214,8 +1354,8 @@ 0 - 10 - 56 + 11 + 67 1 0 0 diff --git a/Keil/MoteII/LoRaMac/classA/LoRaMac.uvprojx b/Keil/MoteII/LoRaMac/classA/LoRaMac.uvprojx index df0c5f97b..b90ca6fb7 100644 --- a/Keil/MoteII/LoRaMac/classA/LoRaMac.uvprojx +++ b/Keil/MoteII/LoRaMac/classA/LoRaMac.uvprojx @@ -333,9 +333,9 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_868 USE_FULL_ASSERT + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_EU868 USE_FULL_ASSERT - ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\peripherals\ble;..\..\..\..\src\peripherals\display;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -601,6 +601,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1035,9 +1095,9 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_915 USE_FULL_ASSERT + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_US915 USE_FULL_ASSERT - ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\peripherals\ble;..\..\..\..\src\peripherals\display;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1303,6 +1363,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals diff --git a/Keil/MoteII/LoRaMac/classB/LoRaMac.uvoptx b/Keil/MoteII/LoRaMac/classB/LoRaMac.uvoptx index 7587ff473..c0ce3f107 100644 --- a/Keil/MoteII/LoRaMac/classB/LoRaMac.uvoptx +++ b/Keil/MoteII/LoRaMac/classB/LoRaMac.uvoptx @@ -992,8 +992,8 @@ - peripherals - 1 + mac\region + 0 0 0 0 @@ -1004,8 +1004,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c + ..\..\..\..\src\mac\region\Region.c + Region.c 0 0 @@ -1016,8 +1016,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mag3110.c - mag3110.c + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c 0 0 @@ -1028,8 +1028,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mma8451.c - mma8451.c + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c 0 0 @@ -1040,8 +1040,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mpl3115.c - mpl3115.c + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c 0 0 @@ -1052,8 +1052,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\sx1509.c - sx1509.c + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c 0 0 @@ -1064,6 +1064,146 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 49 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 50 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 8 + 51 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 52 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 8 + 53 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 8 + 54 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 8 + 55 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 56 + 1 + 0 + 0 + 0 ..\..\..\..\src\peripherals\pam7q.c pam7q.c 0 @@ -1078,8 +1218,8 @@ 0 0 - 8 - 46 + 9 + 57 1 0 0 @@ -1098,8 +1238,8 @@ 0 0 - 9 - 47 + 10 + 58 1 0 0 @@ -1110,8 +1250,8 @@ 0 - 9 - 48 + 10 + 59 1 0 0 @@ -1122,8 +1262,8 @@ 0 - 9 - 49 + 10 + 60 1 0 0 @@ -1134,8 +1274,8 @@ 0 - 9 - 50 + 10 + 61 1 0 0 @@ -1146,8 +1286,8 @@ 0 - 9 - 51 + 10 + 62 1 0 0 @@ -1158,8 +1298,8 @@ 0 - 9 - 52 + 10 + 63 1 0 0 @@ -1170,8 +1310,8 @@ 0 - 9 - 53 + 10 + 64 1 0 0 @@ -1182,8 +1322,8 @@ 0 - 9 - 54 + 10 + 65 1 0 0 @@ -1202,8 +1342,8 @@ 0 0 - 10 - 55 + 11 + 66 1 0 0 @@ -1214,8 +1354,8 @@ 0 - 10 - 56 + 11 + 67 1 0 0 diff --git a/Keil/MoteII/LoRaMac/classB/LoRaMac.uvprojx b/Keil/MoteII/LoRaMac/classB/LoRaMac.uvprojx index e52a9e5f7..dd1ff7fb4 100644 --- a/Keil/MoteII/LoRaMac/classB/LoRaMac.uvprojx +++ b/Keil/MoteII/LoRaMac/classB/LoRaMac.uvprojx @@ -333,9 +333,9 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_868 USE_FULL_ASSERT + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_EU868 USE_FULL_ASSERT - ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\peripherals\ble;..\..\..\..\src\peripherals\display;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -601,6 +601,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1035,9 +1095,9 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_915 USE_FULL_ASSERT + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_US915 USE_FULL_ASSERT - ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\peripherals\ble;..\..\..\..\src\peripherals\display;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1303,6 +1363,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals diff --git a/Keil/MoteII/LoRaMac/classC/LoRaMac.uvoptx b/Keil/MoteII/LoRaMac/classC/LoRaMac.uvoptx index 856b0f438..89d29e5f3 100644 --- a/Keil/MoteII/LoRaMac/classC/LoRaMac.uvoptx +++ b/Keil/MoteII/LoRaMac/classC/LoRaMac.uvoptx @@ -992,8 +992,8 @@ - peripherals - 1 + mac\region + 0 0 0 0 @@ -1004,8 +1004,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c + ..\..\..\..\src\mac\region\Region.c + Region.c 0 0 @@ -1016,8 +1016,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mag3110.c - mag3110.c + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c 0 0 @@ -1028,8 +1028,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mma8451.c - mma8451.c + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c 0 0 @@ -1040,8 +1040,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mpl3115.c - mpl3115.c + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c 0 0 @@ -1052,8 +1052,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\sx1509.c - sx1509.c + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c 0 0 @@ -1064,6 +1064,146 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 49 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 50 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + peripherals + 1 + 0 + 0 + 0 + + 8 + 51 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 52 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 8 + 53 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 8 + 54 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 8 + 55 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 56 + 1 + 0 + 0 + 0 ..\..\..\..\src\peripherals\pam7q.c pam7q.c 0 @@ -1078,8 +1218,8 @@ 0 0 - 8 - 46 + 9 + 57 1 0 0 @@ -1098,8 +1238,8 @@ 0 0 - 9 - 47 + 10 + 58 1 0 0 @@ -1110,8 +1250,8 @@ 0 - 9 - 48 + 10 + 59 1 0 0 @@ -1122,8 +1262,8 @@ 0 - 9 - 49 + 10 + 60 1 0 0 @@ -1134,8 +1274,8 @@ 0 - 9 - 50 + 10 + 61 1 0 0 @@ -1146,8 +1286,8 @@ 0 - 9 - 51 + 10 + 62 1 0 0 @@ -1158,8 +1298,8 @@ 0 - 9 - 52 + 10 + 63 1 0 0 @@ -1170,8 +1310,8 @@ 0 - 9 - 53 + 10 + 64 1 0 0 @@ -1182,8 +1322,8 @@ 0 - 9 - 54 + 10 + 65 1 0 0 @@ -1202,8 +1342,8 @@ 0 0 - 10 - 55 + 11 + 66 1 0 0 @@ -1214,8 +1354,8 @@ 0 - 10 - 56 + 11 + 67 1 0 0 diff --git a/Keil/MoteII/LoRaMac/classC/LoRaMac.uvprojx b/Keil/MoteII/LoRaMac/classC/LoRaMac.uvprojx index 736235543..abe8e6cf9 100644 --- a/Keil/MoteII/LoRaMac/classC/LoRaMac.uvprojx +++ b/Keil/MoteII/LoRaMac/classC/LoRaMac.uvprojx @@ -333,9 +333,9 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_868 USE_FULL_ASSERT + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_EU868 USE_FULL_ASSERT - ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\peripherals\ble;..\..\..\..\src\peripherals\display;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -601,6 +601,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1035,9 +1095,9 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_915 USE_FULL_ASSERT + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_US915 USE_FULL_ASSERT - ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\peripherals\ble;..\..\..\..\src\peripherals\display;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1303,6 +1363,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals diff --git a/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvopt b/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvopt index 9ba384886..4a29bafa8 100644 --- a/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvopt +++ b/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvopt @@ -22,7 +22,7 @@ - LoRaMac-915 + LoRaMac-US915 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-US915\ 1 @@ -122,6 +122,7 @@ 1 0 0 + 1 11 @@ -188,11 +189,13 @@ 0 + 0 + 0 - LoRaMac-868 + LoRaMac-US915-hybrid 0x4 ARM-ADS @@ -215,7 +218,7 @@ 79 66 8 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-US915-hybrid\ 1 @@ -292,6 +295,7 @@ 1 0 0 + 1 11 @@ -358,6 +362,8 @@ 0 + 0 + 0 @@ -794,8 +800,8 @@ - peripherals - 1 + mac\region + 0 0 0 0 @@ -806,8 +812,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c + ..\..\..\..\src\mac\region\Region.c + Region.c 0 0 @@ -818,8 +824,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mag3110.c - mag3110.c + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c 0 0 @@ -830,8 +836,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mma8451.c - mma8451.c + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c 0 0 @@ -842,8 +848,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mpl3115.c - mpl3115.c + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c 0 0 @@ -854,8 +860,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\sx1509.c - sx1509.c + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c 0 0 @@ -866,6 +872,158 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 43 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 44 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + peripherals + 0 + 0 + 0 + 0 + + 8 + 45 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 8 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 8 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 8 + 49 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 50 + 1 + 0 + 0 + 0 ..\..\..\..\src\peripherals\sx9500.c sx9500.c 0 @@ -880,8 +1038,8 @@ 0 0 - 8 - 39 + 9 + 51 1 0 0 @@ -895,13 +1053,13 @@ system - 1 + 0 0 0 0 - 9 - 40 + 10 + 52 1 0 0 @@ -912,8 +1070,8 @@ 0 - 9 - 41 + 10 + 53 1 0 0 @@ -924,8 +1082,8 @@ 0 - 9 - 42 + 10 + 54 1 0 0 @@ -936,8 +1094,8 @@ 0 - 9 - 43 + 10 + 55 1 0 0 @@ -948,8 +1106,8 @@ 0 - 9 - 44 + 10 + 56 1 0 0 @@ -960,8 +1118,8 @@ 0 - 9 - 45 + 10 + 57 1 0 0 @@ -972,8 +1130,8 @@ 0 - 9 - 46 + 10 + 58 1 0 0 @@ -984,8 +1142,8 @@ 0 - 9 - 47 + 10 + 59 1 0 0 @@ -999,13 +1157,13 @@ system\crypto - 1 + 0 0 0 0 - 10 - 48 + 11 + 60 1 0 0 @@ -1016,8 +1174,8 @@ 0 - 10 - 49 + 11 + 61 1 0 0 diff --git a/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvproj b/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvproj index b0e07d5eb..e88ddd21c 100644 --- a/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvproj +++ b/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvproj @@ -7,10 +7,10 @@ - LoRaMac-915 + LoRaMac-US915 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac-915\ - LoRaMac + .\obj\LoRaMac-US915\ + LoRaMac-US915 1 0 1 1 1 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-US915\ 1 0 0 @@ -372,9 +372,9 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_915 + USE_HAL_DRIVER STM32L152xC REGION_US915 - ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -605,6 +605,71 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -713,10 +778,10 @@ - LoRaMac-868 + LoRaMac-US915-hybrid 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC @@ -751,14 +816,14 @@ 0 1 - .\obj\LoRaMac-868\ - LoRaMac + .\obj\LoRaMac-US915-hybrid\ + LoRaMac-US915-hybrid 1 0 1 1 1 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-US915-hybrid\ 1 0 0 @@ -1078,9 +1143,9 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_868 + USE_HAL_DRIVER STM32L152xC REGION_US915_HYBRID - ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1311,6 +1376,71 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals diff --git a/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvopt b/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvopt index 1062372c0..6d2164397 100644 --- a/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvopt +++ b/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvopt @@ -22,7 +22,7 @@ - LoRaMac-915 + LoRaMac-US915 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-US915\ 1 @@ -122,6 +122,7 @@ 1 0 0 + 1 11 @@ -188,11 +189,13 @@ 0 + 0 + 0 - LoRaMac-868 + LoRaMac-US915-hybrid 0x4 ARM-ADS @@ -215,7 +218,7 @@ 79 66 8 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-US915-hybrid\ 1 @@ -292,6 +295,7 @@ 1 0 0 + 1 11 @@ -358,6 +362,8 @@ 0 + 0 + 0 @@ -794,7 +800,7 @@ - peripherals + mac\region 0 0 0 @@ -806,8 +812,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c + ..\..\..\..\src\mac\region\Region.c + Region.c 0 0 @@ -818,8 +824,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mag3110.c - mag3110.c + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c 0 0 @@ -830,8 +836,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mma8451.c - mma8451.c + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c 0 0 @@ -842,8 +848,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mpl3115.c - mpl3115.c + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c 0 0 @@ -854,8 +860,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\sx1509.c - sx1509.c + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c 0 0 @@ -866,6 +872,158 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 43 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 44 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + peripherals + 0 + 0 + 0 + 0 + + 8 + 45 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 8 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 8 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 8 + 49 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 50 + 1 + 0 + 0 + 0 ..\..\..\..\src\peripherals\sx9500.c sx9500.c 0 @@ -880,8 +1038,8 @@ 0 0 - 8 - 39 + 9 + 51 1 0 0 @@ -900,8 +1058,8 @@ 0 0 - 9 - 40 + 10 + 52 1 0 0 @@ -912,8 +1070,8 @@ 0 - 9 - 41 + 10 + 53 1 0 0 @@ -924,8 +1082,8 @@ 0 - 9 - 42 + 10 + 54 1 0 0 @@ -936,8 +1094,8 @@ 0 - 9 - 43 + 10 + 55 1 0 0 @@ -948,8 +1106,8 @@ 0 - 9 - 44 + 10 + 56 1 0 0 @@ -960,8 +1118,8 @@ 0 - 9 - 45 + 10 + 57 1 0 0 @@ -972,8 +1130,8 @@ 0 - 9 - 46 + 10 + 58 1 0 0 @@ -984,8 +1142,8 @@ 0 - 9 - 47 + 10 + 59 1 0 0 @@ -1004,8 +1162,8 @@ 0 0 - 10 - 48 + 11 + 60 1 0 0 @@ -1016,8 +1174,8 @@ 0 - 10 - 49 + 11 + 61 1 0 0 diff --git a/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvproj b/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvproj index 132a7a84d..49160e14d 100644 --- a/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvproj +++ b/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvproj @@ -7,10 +7,10 @@ - LoRaMac-915 + LoRaMac-US915 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac-915\ - LoRaMac + .\obj\LoRaMac-US915\ + LoRaMac-US915 1 0 1 1 1 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-US915\ 1 0 0 @@ -372,9 +372,9 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_915 + USE_HAL_DRIVER STM32L152xC REGION_US915 - ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -605,6 +605,71 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -713,10 +778,10 @@ - LoRaMac-868 + LoRaMac-US915-hybrid 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC @@ -751,14 +816,14 @@ 0 1 - .\obj\LoRaMac-868\ - LoRaMac + .\obj\LoRaMac-US915-hybrid\ + LoRaMac-US915-hybrid 1 0 1 1 1 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-US915-hybrid\ 1 0 0 @@ -1078,9 +1143,9 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_868 + USE_HAL_DRIVER STM32L152xC REGION_US915_HYBRID - ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1311,6 +1376,71 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals diff --git a/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvopt b/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvopt index bfdcdef3d..f067eb21d 100644 --- a/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvopt +++ b/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvopt @@ -22,7 +22,7 @@ - LoRaMac-915 + LoRaMac-US915 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-US915\ 1 @@ -122,6 +122,7 @@ 1 0 0 + 1 11 @@ -188,11 +189,13 @@ 0 + 0 + 0 - LoRaMac-868 + LoRaMac-US915-hybrid 0x4 ARM-ADS @@ -215,7 +218,7 @@ 79 66 8 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-US915-hybrid\ 1 @@ -292,6 +295,7 @@ 1 0 0 + 1 11 @@ -358,6 +362,8 @@ 0 + 0 + 0 @@ -794,7 +800,7 @@ - peripherals + mac\region 0 0 0 @@ -806,8 +812,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c + ..\..\..\..\src\mac\region\Region.c + Region.c 0 0 @@ -818,8 +824,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mag3110.c - mag3110.c + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c 0 0 @@ -830,8 +836,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mma8451.c - mma8451.c + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c 0 0 @@ -842,8 +848,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mpl3115.c - mpl3115.c + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c 0 0 @@ -854,8 +860,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\sx1509.c - sx1509.c + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c 0 0 @@ -866,6 +872,158 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 43 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 44 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + peripherals + 0 + 0 + 0 + 0 + + 8 + 45 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 8 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 8 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 8 + 49 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 50 + 1 + 0 + 0 + 0 ..\..\..\..\src\peripherals\sx9500.c sx9500.c 0 @@ -880,8 +1038,8 @@ 0 0 - 8 - 39 + 9 + 51 1 0 0 @@ -900,8 +1058,8 @@ 0 0 - 9 - 40 + 10 + 52 1 0 0 @@ -912,8 +1070,8 @@ 0 - 9 - 41 + 10 + 53 1 0 0 @@ -924,8 +1082,8 @@ 0 - 9 - 42 + 10 + 54 1 0 0 @@ -936,8 +1094,8 @@ 0 - 9 - 43 + 10 + 55 1 0 0 @@ -948,8 +1106,8 @@ 0 - 9 - 44 + 10 + 56 1 0 0 @@ -960,8 +1118,8 @@ 0 - 9 - 45 + 10 + 57 1 0 0 @@ -972,8 +1130,8 @@ 0 - 9 - 46 + 10 + 58 1 0 0 @@ -984,8 +1142,8 @@ 0 - 9 - 47 + 10 + 59 1 0 0 @@ -1004,8 +1162,8 @@ 0 0 - 10 - 48 + 11 + 60 1 0 0 @@ -1016,8 +1174,8 @@ 0 - 10 - 49 + 11 + 61 1 0 0 diff --git a/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvproj b/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvproj index cf60b80c3..52dbef636 100644 --- a/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvproj +++ b/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvproj @@ -7,10 +7,10 @@ - LoRaMac-915 + LoRaMac-US915 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac-915\ - LoRaMac + .\obj\LoRaMac-US915\ + LoRaMac-US915 1 0 1 1 1 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-US915\ 1 0 0 @@ -372,9 +372,9 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_915 + USE_HAL_DRIVER STM32L152xC REGION_US915 - ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -605,6 +605,71 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -713,10 +778,10 @@ - LoRaMac-868 + LoRaMac-US915-hybrid 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC @@ -751,14 +816,14 @@ 0 1 - .\obj\LoRaMac-868\ - LoRaMac + .\obj\LoRaMac-US915-hybrid\ + LoRaMac-US915-hybrid 1 0 1 1 1 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-US915-hybrid\ 1 0 0 @@ -1078,9 +1143,9 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_868 + USE_HAL_DRIVER STM32L152xC REGION_US915_HYBRID - ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1311,6 +1376,71 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals diff --git a/Keil/NAMote72/ping-pong/Ping-Pong.uvopt b/Keil/NAMote72/ping-pong/Ping-Pong.uvopt index cf63b1ea4..13325366d 100644 --- a/Keil/NAMote72/ping-pong/Ping-Pong.uvopt +++ b/Keil/NAMote72/ping-pong/Ping-Pong.uvopt @@ -122,6 +122,7 @@ 1 0 0 + 1 11 @@ -203,6 +204,8 @@ 0 + 0 + 0 @@ -307,6 +310,7 @@ 1 0 0 + 1 11 @@ -388,6 +392,8 @@ 0 + 0 + 0 @@ -492,6 +498,7 @@ 1 0 0 + 1 11 @@ -573,6 +580,8 @@ 0 + 0 + 0 @@ -677,6 +686,7 @@ 1 0 0 + 1 11 @@ -758,6 +768,8 @@ 0 + 0 + 0 diff --git a/Keil/NAMote72/ping-pong/Ping-Pong.uvproj b/Keil/NAMote72/ping-pong/Ping-Pong.uvproj index 1d16ccc0c..ce431bdb5 100644 --- a/Keil/NAMote72/ping-pong/Ping-Pong.uvproj +++ b/Keil/NAMote72/ping-pong/Ping-Pong.uvproj @@ -10,7 +10,7 @@ Ping-Pong-915-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC diff --git a/Keil/NAMote72/rx-sensi/rx-sensi.uvopt b/Keil/NAMote72/rx-sensi/rx-sensi.uvopt index 728f263f5..78a9f71ee 100644 --- a/Keil/NAMote72/rx-sensi/rx-sensi.uvopt +++ b/Keil/NAMote72/rx-sensi/rx-sensi.uvopt @@ -122,6 +122,7 @@ 1 0 0 + 1 11 @@ -203,6 +204,8 @@ 0 + 0 + 0 @@ -307,6 +310,7 @@ 1 0 0 + 1 11 @@ -388,6 +392,8 @@ 0 + 0 + 0 @@ -492,6 +498,7 @@ 1 0 0 + 1 11 @@ -573,6 +580,8 @@ 0 + 0 + 0 @@ -677,6 +686,7 @@ 1 0 0 + 1 11 @@ -758,6 +768,8 @@ 0 + 0 + 0 diff --git a/Keil/NAMote72/rx-sensi/rx-sensi.uvproj b/Keil/NAMote72/rx-sensi/rx-sensi.uvproj index e6522f36a..54760db16 100644 --- a/Keil/NAMote72/rx-sensi/rx-sensi.uvproj +++ b/Keil/NAMote72/rx-sensi/rx-sensi.uvproj @@ -10,7 +10,7 @@ rx-sensi-915-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC diff --git a/Keil/NAMote72/tx-cw/tx-cw.uvopt b/Keil/NAMote72/tx-cw/tx-cw.uvopt index 138c9692b..c63993b0e 100644 --- a/Keil/NAMote72/tx-cw/tx-cw.uvopt +++ b/Keil/NAMote72/tx-cw/tx-cw.uvopt @@ -122,6 +122,7 @@ 1 0 0 + 1 11 @@ -203,6 +204,8 @@ 0 + 0 + 0 @@ -307,6 +310,7 @@ 1 0 0 + 1 11 @@ -388,6 +392,8 @@ 0 + 0 + 0 diff --git a/Keil/NAMote72/tx-cw/tx-cw.uvproj b/Keil/NAMote72/tx-cw/tx-cw.uvproj index 18e194caf..623c70a54 100644 --- a/Keil/NAMote72/tx-cw/tx-cw.uvproj +++ b/Keil/NAMote72/tx-cw/tx-cw.uvproj @@ -10,7 +10,7 @@ tx-cw-915 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC diff --git a/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt b/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt index d8e41d4ca..2b8141289 100644 --- a/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt +++ b/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt @@ -590,8 +590,8 @@ - radio - 1 + mac\region + 0 0 0 0 @@ -602,6 +602,146 @@ 0 0 0 + ..\..\..\..\src\mac\region\Region.c + Region.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 8 + 43 + 1 + 0 + 0 + 0 ..\..\..\..\src\radio\sx1272\sx1272.c sx1272.c 0 @@ -616,8 +756,8 @@ 0 0 - 8 - 33 + 9 + 44 1 0 0 @@ -628,8 +768,8 @@ 0 - 8 - 34 + 9 + 45 1 0 0 @@ -640,8 +780,8 @@ 0 - 8 - 35 + 9 + 46 1 0 0 @@ -652,8 +792,8 @@ 0 - 8 - 36 + 9 + 47 1 0 0 @@ -664,8 +804,8 @@ 0 - 8 - 37 + 9 + 48 1 0 0 @@ -676,8 +816,8 @@ 0 - 8 - 38 + 9 + 49 1 0 0 @@ -688,8 +828,8 @@ 0 - 8 - 39 + 9 + 50 1 0 0 @@ -708,8 +848,8 @@ 0 0 - 9 - 40 + 10 + 51 1 0 0 @@ -720,8 +860,8 @@ 0 - 9 - 41 + 10 + 52 1 0 0 diff --git a/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj b/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj index 9aee0ed77..841f22a44 100644 --- a/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj +++ b/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj @@ -372,9 +372,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 - ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -600,6 +600,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + radio diff --git a/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt b/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt index e56797ea6..011608f84 100644 --- a/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt +++ b/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt @@ -590,8 +590,8 @@ - radio - 1 + mac\region + 0 0 0 0 @@ -602,6 +602,146 @@ 0 0 0 + ..\..\..\..\src\mac\region\Region.c + Region.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 8 + 43 + 1 + 0 + 0 + 0 ..\..\..\..\src\radio\sx1272\sx1272.c sx1272.c 0 @@ -616,8 +756,8 @@ 0 0 - 8 - 33 + 9 + 44 1 0 0 @@ -628,8 +768,8 @@ 0 - 8 - 34 + 9 + 45 1 0 0 @@ -640,8 +780,8 @@ 0 - 8 - 35 + 9 + 46 1 0 0 @@ -652,8 +792,8 @@ 0 - 8 - 36 + 9 + 47 1 0 0 @@ -664,8 +804,8 @@ 0 - 8 - 37 + 9 + 48 1 0 0 @@ -676,8 +816,8 @@ 0 - 8 - 38 + 9 + 49 1 0 0 @@ -688,8 +828,8 @@ 0 - 8 - 39 + 9 + 50 1 0 0 @@ -708,8 +848,8 @@ 0 0 - 9 - 40 + 10 + 51 1 0 0 @@ -720,8 +860,8 @@ 0 - 9 - 41 + 10 + 52 1 0 0 diff --git a/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj b/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj index ff1d5ecf7..74af460f9 100644 --- a/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj +++ b/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj @@ -372,9 +372,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 - ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -600,6 +600,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + radio diff --git a/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvopt b/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvopt index 48aace341..c97cd2420 100644 --- a/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvopt +++ b/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvopt @@ -590,8 +590,8 @@ - radio - 1 + mac\region + 0 0 0 0 @@ -602,6 +602,146 @@ 0 0 0 + ..\..\..\..\src\mac\region\Region.c + Region.c + 0 + 0 + + + 7 + 33 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c + 0 + 0 + + + 7 + 34 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c + 0 + 0 + + + 7 + 35 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c + 0 + 0 + + + 7 + 36 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c + 0 + 0 + + + 7 + 37 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 38 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + radio + 1 + 0 + 0 + 0 + + 8 + 43 + 1 + 0 + 0 + 0 ..\..\..\..\src\radio\sx1272\sx1272.c sx1272.c 0 @@ -616,8 +756,8 @@ 0 0 - 8 - 33 + 9 + 44 1 0 0 @@ -628,8 +768,8 @@ 0 - 8 - 34 + 9 + 45 1 0 0 @@ -640,8 +780,8 @@ 0 - 8 - 35 + 9 + 46 1 0 0 @@ -652,8 +792,8 @@ 0 - 8 - 36 + 9 + 47 1 0 0 @@ -664,8 +804,8 @@ 0 - 8 - 37 + 9 + 48 1 0 0 @@ -676,8 +816,8 @@ 0 - 8 - 38 + 9 + 49 1 0 0 @@ -688,8 +828,8 @@ 0 - 8 - 39 + 9 + 50 1 0 0 @@ -708,8 +848,8 @@ 0 0 - 9 - 40 + 10 + 51 1 0 0 @@ -720,8 +860,8 @@ 0 - 9 - 41 + 10 + 52 1 0 0 diff --git a/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvproj b/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvproj index fb47409e0..2bf6feba8 100644 --- a/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvproj +++ b/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvproj @@ -372,9 +372,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 - ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -600,6 +600,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + radio diff --git a/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvopt b/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvopt index b277d1474..4eb46fb89 100644 --- a/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvopt +++ b/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvopt @@ -1958,7 +1958,7 @@ - peripherals + mac\region 0 0 0 @@ -1970,8 +1970,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c + ..\..\..\..\src\mac\region\Region.c + Region.c 0 0 @@ -1982,8 +1982,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mag3110.c - mag3110.c + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c 0 0 @@ -1994,8 +1994,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mma8451.c - mma8451.c + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c 0 0 @@ -2006,8 +2006,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mpl3115.c - mpl3115.c + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c 0 0 @@ -2018,8 +2018,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\sx1509.c - sx1509.c + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c 0 0 @@ -2030,6 +2030,146 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 43 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + peripherals + 0 + 0 + 0 + 0 + + 8 + 44 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 8 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 8 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 8 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 49 + 1 + 0 + 0 + 0 ..\..\..\..\src\peripherals\sx9500.c sx9500.c 0 @@ -2044,8 +2184,8 @@ 0 0 - 8 - 39 + 9 + 50 1 0 0 @@ -2064,8 +2204,8 @@ 0 0 - 9 - 40 + 10 + 51 1 0 0 @@ -2076,8 +2216,8 @@ 0 - 9 - 41 + 10 + 52 1 0 0 @@ -2088,8 +2228,8 @@ 0 - 9 - 42 + 10 + 53 1 0 0 @@ -2100,8 +2240,8 @@ 0 - 9 - 43 + 10 + 54 1 0 0 @@ -2112,8 +2252,8 @@ 0 - 9 - 44 + 10 + 55 1 0 0 @@ -2124,8 +2264,8 @@ 0 - 9 - 45 + 10 + 56 1 0 0 @@ -2136,8 +2276,8 @@ 0 - 9 - 46 + 10 + 57 1 0 0 @@ -2148,8 +2288,8 @@ 0 - 9 - 47 + 10 + 58 1 0 0 @@ -2168,8 +2308,8 @@ 0 0 - 10 - 48 + 11 + 59 1 0 0 @@ -2180,8 +2320,8 @@ 0 - 10 - 49 + 11 + 60 1 0 0 diff --git a/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvproj b/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvproj index 7b0e7f370..3f0ab784f 100644 --- a/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvproj +++ b/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvproj @@ -372,9 +372,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -605,6 +605,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1078,9 +1138,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1311,6 +1371,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1784,9 +1904,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2017,6 +2137,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -2490,9 +2670,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2723,6 +2903,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -3196,9 +3436,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -3429,6 +3669,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -3902,9 +4202,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -4135,6 +4435,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -4608,9 +4968,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -4841,6 +5201,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -5314,9 +5734,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -5547,6 +5967,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals diff --git a/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvopt b/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvopt index bfefd0f18..e53d8e64a 100644 --- a/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvopt +++ b/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvopt @@ -1958,7 +1958,7 @@ - peripherals + mac\region 0 0 0 @@ -1970,8 +1970,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c + ..\..\..\..\src\mac\region\Region.c + Region.c 0 0 @@ -1982,8 +1982,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mag3110.c - mag3110.c + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c 0 0 @@ -1994,8 +1994,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mma8451.c - mma8451.c + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c 0 0 @@ -2006,8 +2006,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mpl3115.c - mpl3115.c + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c 0 0 @@ -2018,8 +2018,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\sx1509.c - sx1509.c + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c 0 0 @@ -2030,6 +2030,146 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 43 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + peripherals + 0 + 0 + 0 + 0 + + 8 + 44 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 8 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 8 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 8 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 49 + 1 + 0 + 0 + 0 ..\..\..\..\src\peripherals\sx9500.c sx9500.c 0 @@ -2044,8 +2184,8 @@ 0 0 - 8 - 39 + 9 + 50 1 0 0 @@ -2064,8 +2204,8 @@ 0 0 - 9 - 40 + 10 + 51 1 0 0 @@ -2076,8 +2216,8 @@ 0 - 9 - 41 + 10 + 52 1 0 0 @@ -2088,8 +2228,8 @@ 0 - 9 - 42 + 10 + 53 1 0 0 @@ -2100,8 +2240,8 @@ 0 - 9 - 43 + 10 + 54 1 0 0 @@ -2112,8 +2252,8 @@ 0 - 9 - 44 + 10 + 55 1 0 0 @@ -2124,8 +2264,8 @@ 0 - 9 - 45 + 10 + 56 1 0 0 @@ -2136,8 +2276,8 @@ 0 - 9 - 46 + 10 + 57 1 0 0 @@ -2148,8 +2288,8 @@ 0 - 9 - 47 + 10 + 58 1 0 0 @@ -2168,8 +2308,8 @@ 0 0 - 10 - 48 + 11 + 59 1 0 0 @@ -2180,8 +2320,8 @@ 0 - 10 - 49 + 11 + 60 1 0 0 diff --git a/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvproj b/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvproj index 4f837841d..e033027c6 100644 --- a/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvproj +++ b/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvproj @@ -372,9 +372,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -605,6 +605,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1078,9 +1138,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1311,6 +1371,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1784,9 +1904,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2017,6 +2137,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -2490,9 +2670,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2723,6 +2903,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -3196,9 +3436,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -3429,6 +3669,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -3902,9 +4202,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -4135,6 +4435,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -4608,9 +4968,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -4841,6 +5201,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -5314,9 +5734,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -5547,6 +5967,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals diff --git a/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvopt b/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvopt index 55603e510..605decf24 100644 --- a/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvopt +++ b/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvopt @@ -1958,7 +1958,7 @@ - peripherals + mac\region 0 0 0 @@ -1970,8 +1970,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\gpio-ioe.c - gpio-ioe.c + ..\..\..\..\src\mac\region\Region.c + Region.c 0 0 @@ -1982,8 +1982,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mag3110.c - mag3110.c + ..\..\..\..\src\mac\region\RegionAS923.c + RegionAS923.c 0 0 @@ -1994,8 +1994,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mma8451.c - mma8451.c + ..\..\..\..\src\mac\region\RegionAU915.c + RegionAU915.c 0 0 @@ -2006,8 +2006,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\mpl3115.c - mpl3115.c + ..\..\..\..\src\mac\region\RegionCN470.c + RegionCN470.c 0 0 @@ -2018,8 +2018,8 @@ 0 0 0 - ..\..\..\..\src\peripherals\sx1509.c - sx1509.c + ..\..\..\..\src\mac\region\RegionCN779.c + RegionCN779.c 0 0 @@ -2030,6 +2030,146 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionCommon.c + RegionCommon.c + 0 + 0 + + + 7 + 39 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU433.c + RegionEU433.c + 0 + 0 + + + 7 + 40 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionEU868.c + RegionEU868.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionKR920.c + RegionKR920.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915.c + RegionUS915.c + 0 + 0 + + + 7 + 43 + 1 + 0 + 0 + 0 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + RegionUS915-Hybrid.c + 0 + 0 + + + + + peripherals + 0 + 0 + 0 + 0 + + 8 + 44 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\gpio-ioe.c + gpio-ioe.c + 0 + 0 + + + 8 + 45 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mag3110.c + mag3110.c + 0 + 0 + + + 8 + 46 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mma8451.c + mma8451.c + 0 + 0 + + + 8 + 47 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\mpl3115.c + mpl3115.c + 0 + 0 + + + 8 + 48 + 1 + 0 + 0 + 0 + ..\..\..\..\src\peripherals\sx1509.c + sx1509.c + 0 + 0 + + + 8 + 49 + 1 + 0 + 0 + 0 ..\..\..\..\src\peripherals\sx9500.c sx9500.c 0 @@ -2044,8 +2184,8 @@ 0 0 - 8 - 39 + 9 + 50 1 0 0 @@ -2064,8 +2204,8 @@ 0 0 - 9 - 40 + 10 + 51 1 0 0 @@ -2076,8 +2216,8 @@ 0 - 9 - 41 + 10 + 52 1 0 0 @@ -2088,8 +2228,8 @@ 0 - 9 - 42 + 10 + 53 1 0 0 @@ -2100,8 +2240,8 @@ 0 - 9 - 43 + 10 + 54 1 0 0 @@ -2112,8 +2252,8 @@ 0 - 9 - 44 + 10 + 55 1 0 0 @@ -2124,8 +2264,8 @@ 0 - 9 - 45 + 10 + 56 1 0 0 @@ -2136,8 +2276,8 @@ 0 - 9 - 46 + 10 + 57 1 0 0 @@ -2148,8 +2288,8 @@ 0 - 9 - 47 + 10 + 58 1 0 0 @@ -2168,8 +2308,8 @@ 0 0 - 10 - 48 + 11 + 59 1 0 0 @@ -2180,8 +2320,8 @@ 0 - 10 - 49 + 11 + 60 1 0 0 diff --git a/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvproj b/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvproj index 9120cfc29..1507cb714 100644 --- a/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvproj +++ b/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvproj @@ -372,9 +372,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -605,6 +605,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1078,9 +1138,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1311,6 +1371,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -1784,9 +1904,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2017,6 +2137,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -2490,9 +2670,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2723,6 +2903,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -3196,9 +3436,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -3429,6 +3669,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -3902,9 +4202,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -4135,6 +4435,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -4608,9 +4968,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -4841,6 +5201,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals @@ -5314,9 +5734,9 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER - ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -5547,6 +5967,66 @@ + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + peripherals From 293314c30a6bc83200515881f144163dee9b91f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=3F=C3=82=C2=A4ckle?= Date: Thu, 2 Mar 2017 14:43:53 +0100 Subject: [PATCH 067/161] Update project settings for CoIDE and NAMote72. --- .../LoRaMac/classA/LoRaMacClassA.coproj | 41 +++++++++++++------ .../LoRaMac/classB/LoRaMacClassB.coproj | 33 +++++++++++---- .../LoRaMac/classC/LoRaMacClassC.coproj | 37 ++++++++++++----- 3 files changed, 78 insertions(+), 33 deletions(-) diff --git a/coIDE/NAMote72/LoRaMac/classA/LoRaMacClassA.coproj b/coIDE/NAMote72/LoRaMac/classA/LoRaMacClassA.coproj index ccd24ce4a..819c39b9b 100644 --- a/coIDE/NAMote72/LoRaMac/classA/LoRaMacClassA.coproj +++ b/coIDE/NAMote72/LoRaMac/classA/LoRaMacClassA.coproj @@ -1,6 +1,6 @@ - + @@ -18,6 +18,7 @@ + @@ -26,7 +27,7 @@ - + @@ -81,7 +82,7 @@ - + @@ -102,6 +103,7 @@ + @@ -110,7 +112,7 @@ - + @@ -174,15 +176,18 @@ - + + + + @@ -191,42 +196,52 @@ - + - - + + + + + + + + - + + - + + - + - + - + + + diff --git a/coIDE/NAMote72/LoRaMac/classB/LoRaMacClassB.coproj b/coIDE/NAMote72/LoRaMac/classB/LoRaMacClassB.coproj index 0216383a4..1b0eb5bbb 100644 --- a/coIDE/NAMote72/LoRaMac/classB/LoRaMacClassB.coproj +++ b/coIDE/NAMote72/LoRaMac/classB/LoRaMacClassB.coproj @@ -1,6 +1,6 @@ - + @@ -18,6 +18,7 @@ + @@ -26,7 +27,7 @@ - + @@ -81,7 +82,7 @@ - + @@ -102,6 +103,7 @@ + @@ -110,7 +112,7 @@ - + @@ -174,15 +176,18 @@ - + + + + @@ -199,34 +204,44 @@ + + + + + + + - + + + - - + - + + + diff --git a/coIDE/NAMote72/LoRaMac/classC/LoRaMacClassC.coproj b/coIDE/NAMote72/LoRaMac/classC/LoRaMacClassC.coproj index 44bc43db5..f0da9be0e 100644 --- a/coIDE/NAMote72/LoRaMac/classC/LoRaMacClassC.coproj +++ b/coIDE/NAMote72/LoRaMac/classC/LoRaMacClassC.coproj @@ -1,6 +1,6 @@ - + @@ -18,6 +18,7 @@ + @@ -26,7 +27,7 @@ - + @@ -81,7 +82,7 @@ - + @@ -102,6 +103,7 @@ + @@ -110,7 +112,7 @@ - + @@ -169,20 +171,23 @@ - + - + + + + @@ -191,33 +196,41 @@ - + + + + + + + - + + - + + - + @@ -225,8 +238,10 @@ - + + + From de63e71c28edddf8135f4ccad7fe0de7b127628c Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Fri, 17 Mar 2017 13:26:04 +0100 Subject: [PATCH 068/161] Added an algorithm to automatically compute the Rx windows parameters. (Window symbolTimeout and Offset from downlink expected time) [1.0.2] Issue #196 --- src/mac/LoRaMac.c | 72 ++-- src/mac/LoRaMac.h | 11 + src/mac/region/Region.c | 522 ++++++++++++++++------------ src/mac/region/Region.h | 78 +++++ src/mac/region/RegionAS923.c | 109 +++--- src/mac/region/RegionAS923.h | 31 ++ src/mac/region/RegionAU915.c | 120 +++---- src/mac/region/RegionAU915.h | 31 ++ src/mac/region/RegionCN470.c | 83 +++-- src/mac/region/RegionCN470.h | 31 ++ src/mac/region/RegionCN779.c | 102 +++--- src/mac/region/RegionCN779.h | 31 ++ src/mac/region/RegionEU433.c | 102 +++--- src/mac/region/RegionEU433.h | 37 +- src/mac/region/RegionEU868.c | 104 +++--- src/mac/region/RegionEU868.h | 31 ++ src/mac/region/RegionIN865.c | 91 +++-- src/mac/region/RegionIN865.h | 31 ++ src/mac/region/RegionKR920.c | 88 ++--- src/mac/region/RegionKR920.h | 31 ++ src/mac/region/RegionUS915-Hybrid.c | 120 +++---- src/mac/region/RegionUS915-Hybrid.h | 31 ++ src/mac/region/RegionUS915.c | 120 +++---- src/mac/region/RegionUS915.h | 31 ++ 24 files changed, 1224 insertions(+), 814 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index c354d6bf4..4d61d31f3 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -325,6 +325,12 @@ static TimerEvent_t RxWindowTimer2; static uint32_t RxWindow1Delay; static uint32_t RxWindow2Delay; +/*! + * LoRaMac Rx windows configuration + */ +RxConfigParams_t RxWindow1Config; +RxConfigParams_t RxWindow2Config; + /*! * Acknowledge timeout timer. Used for packet retransmissions. */ @@ -1326,52 +1332,48 @@ static void OnTxDelayedTimerEvent( void ) static void OnRxWindow1TimerEvent( void ) { - RxConfigParams_t rxConfig; - TimerStop( &RxWindowTimer1 ); RxSlot = 0; - rxConfig.Channel = Channel; - rxConfig.Datarate = LoRaMacParams.ChannelsDatarate; - rxConfig.DrOffset = LoRaMacParams.Rx1DrOffset; - rxConfig.RepeaterSupport = RepeaterSupport; - rxConfig.RxContinuous = false; - rxConfig.Window = RxSlot; + RxWindow1Config.Channel = Channel; + RxWindow1Config.Datarate = LoRaMacParams.ChannelsDatarate; + RxWindow1Config.DrOffset = LoRaMacParams.Rx1DrOffset; + RxWindow1Config.RepeaterSupport = RepeaterSupport; + RxWindow1Config.RxContinuous = false; + RxWindow1Config.Window = RxSlot; if( LoRaMacDeviceClass == CLASS_C ) { Radio.Standby( ); } - RegionRxConfig( LoRaMacRegion, &rxConfig, ( int8_t* )&McpsIndication.RxDatarate ); - RxWindowSetup( rxConfig.RxContinuous, LoRaMacParams.MaxRxWindow ); + RegionRxConfig( LoRaMacRegion, &RxWindow1Config, ( int8_t* )&McpsIndication.RxDatarate ); + RxWindowSetup( RxWindow1Config.RxContinuous, LoRaMacParams.MaxRxWindow ); } static void OnRxWindow2TimerEvent( void ) { - RxConfigParams_t rxConfig; - TimerStop( &RxWindowTimer2 ); - rxConfig.Channel = Channel; - rxConfig.Datarate = LoRaMacParams.Rx2Channel.Datarate; - rxConfig.Frequency = LoRaMacParams.Rx2Channel.Frequency; - rxConfig.RepeaterSupport = RepeaterSupport; - rxConfig.Window = 1; + RxWindow2Config.Channel = Channel; + RxWindow2Config.Datarate = LoRaMacParams.Rx2Channel.Datarate; + RxWindow2Config.Frequency = LoRaMacParams.Rx2Channel.Frequency; + RxWindow2Config.RepeaterSupport = RepeaterSupport; + RxWindow2Config.Window = 1; if( LoRaMacDeviceClass != CLASS_C ) { - rxConfig.RxContinuous = false; + RxWindow2Config.RxContinuous = false; } else { - rxConfig.RxContinuous = true; + RxWindow2Config.RxContinuous = true; } - if( RegionRxConfig( LoRaMacRegion, &rxConfig, ( int8_t* )&McpsIndication.RxDatarate ) == true ) + if( RegionRxConfig( LoRaMacRegion, &RxWindow2Config, ( int8_t* )&McpsIndication.RxDatarate ) == true ) { - RxWindowSetup( rxConfig.RxContinuous, LoRaMacParams.MaxRxWindow ); - RxSlot = rxConfig.Window; + RxWindowSetup( RxWindow2Config.RxContinuous, LoRaMacParams.MaxRxWindow ); + RxSlot = RxWindow2Config.Window; } } @@ -1937,8 +1939,17 @@ LoRaMacStatus_t PrepareFrame( LoRaMacHeader_t *macHdr, LoRaMacFrameCtrl_t *fCtrl switch( macHdr->Bits.MType ) { case FRAME_TYPE_JOIN_REQ: - RxWindow1Delay = LoRaMacParams.JoinAcceptDelay1 - RADIO_WAKEUP_TIME; - RxWindow2Delay = LoRaMacParams.JoinAcceptDelay2 - RADIO_WAKEUP_TIME; + RegionComputeRxWindowParameters( LoRaMacRegion, + RegionApplyDrOffset( LoRaMacRegion, LoRaMacParams.DownlinkDwellTime, LoRaMacParams.ChannelsDatarate, LoRaMacParams.Rx1DrOffset ), + DEFAULT_SYSTEM_MAX_RX_ERROR, + &RxWindow1Config ); + RegionComputeRxWindowParameters( LoRaMacRegion, + LoRaMacParams.Rx2Channel.Datarate, + DEFAULT_SYSTEM_MAX_RX_ERROR, + &RxWindow2Config ); + + RxWindow1Delay = LoRaMacParams.JoinAcceptDelay1 + RxWindow1Config.WindowOffset; + RxWindow2Delay = LoRaMacParams.JoinAcceptDelay2 + RxWindow2Config.WindowOffset; LoRaMacBufferPktLen = pktHeaderLen; @@ -1979,13 +1990,22 @@ LoRaMacStatus_t PrepareFrame( LoRaMacHeader_t *macHdr, LoRaMacFrameCtrl_t *fCtrl fCtrl->Bits.AdrAckReq = RegionAdrNext( LoRaMacRegion, &adrNext, &LoRaMacParams.ChannelsDatarate, &LoRaMacParams.ChannelsTxPower, &AdrAckCounter ); + RegionComputeRxWindowParameters( LoRaMacRegion, + RegionApplyDrOffset( LoRaMacRegion, LoRaMacParams.DownlinkDwellTime, LoRaMacParams.ChannelsDatarate, LoRaMacParams.Rx1DrOffset ), + DEFAULT_SYSTEM_MAX_RX_ERROR, + &RxWindow1Config ); + RegionComputeRxWindowParameters( LoRaMacRegion, + LoRaMacParams.Rx2Channel.Datarate, + DEFAULT_SYSTEM_MAX_RX_ERROR, + &RxWindow2Config ); + if( ValidatePayloadLength( LoRaMacTxPayloadLen, LoRaMacParams.ChannelsDatarate, MacCommandsBufferIndex ) == false ) { return LORAMAC_STATUS_LENGTH_ERROR; } - RxWindow1Delay = LoRaMacParams.ReceiveDelay1 - RADIO_WAKEUP_TIME; - RxWindow2Delay = LoRaMacParams.ReceiveDelay2 - RADIO_WAKEUP_TIME; + RxWindow1Delay = LoRaMacParams.ReceiveDelay1 + RxWindow1Config.WindowOffset; + RxWindow2Delay = LoRaMacParams.ReceiveDelay2 + RxWindow2Config.WindowOffset; if( SrvAckRequested == true ) { diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index 300a5a286..f28dd8972 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -46,6 +46,17 @@ #ifndef __LORAMAC_H__ #define __LORAMAC_H__ +/*! + * System overall timing error in milliseconds. + * [-DEFAULT_SYSTEM_MAX_RX_ERROR : +DEFAULT_SYSTEM_MAX_RX_ERROR] + */ +#define DEFAULT_SYSTEM_MAX_RX_ERROR 10 + +/*! + * Minimum required number of symbols to detect an Rx frame + */ +#define DEFAULT_MIN_RX_SYMBOLS 6 + /*! * Beacon interval in ms */ diff --git a/src/mac/region/Region.c b/src/mac/region/Region.c index 10634c297..8af1c36d2 100644 --- a/src/mac/region/Region.c +++ b/src/mac/region/Region.c @@ -34,28 +34,30 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae // Setup regions #ifdef REGION_AS923 #include "RegionAS923.h" -#define AS923_CASE case LORAMAC_REGION_AS923: -#define AS923_IS_ACTIVE( ) AS923_CASE { return true; } -#define AS923_GET_PHY_PARAM( ) AS923_CASE { RegionAS923GetPhyParam( getPhy ); break; } -#define AS923_SET_BAND_TX_DONE( ) AS923_CASE { RegionAS923SetBandTxDone( txDone ); break; } -#define AS923_INIT_DEFAULTS( ) AS923_CASE { RegionAS923InitDefaults( type ); break; } -#define AS923_VERIFY( ) AS923_CASE { return RegionAS923Verify( verify, phyAttribute ); } -#define AS923_APPLY_CF_LIST( ) AS923_CASE { RegionAS923ApplyCFList( applyCFList ); break; } -#define AS923_CHAN_MASK_SET( ) AS923_CASE { return RegionAS923ChanMaskSet( chanMaskSet ); } -#define AS923_ADR_NEXT( ) AS923_CASE { return RegionAS923AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } -#define AS923_RX_CONFIG( ) AS923_CASE { return RegionAS923RxConfig( rxConfig, datarate ); } -#define AS923_TX_CONFIG( ) AS923_CASE { return RegionAS923TxConfig( txConfig, txPower, txTimeOnAir ); } -#define AS923_LINK_ADR_REQ( ) AS923_CASE { return RegionAS923LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } -#define AS923_RX_PARAM_SETUP_REQ( ) AS923_CASE { return RegionAS923RxParamSetupReq( rxParamSetupReq ); } -#define AS923_NEW_CHANNEL_REQ( ) AS923_CASE { return RegionAS923NewChannelReq( newChannelReq ); } -#define AS923_TX_PARAM_SETUP_REQ( ) AS923_CASE { return RegionAS923TxParamSetupReq( txParamSetupReq ); } -#define AS923_DL_CHANNEL_REQ( ) AS923_CASE { return RegionAS923DlChannelReq( dlChannelReq ); } -#define AS923_ALTERNATE_DR( ) AS923_CASE { return RegionAS923AlternateDr( alternateDr ); } -#define AS923_CALC_BACKOFF( ) AS923_CASE { RegionAS923CalcBackOff( calcBackOff ); break; } -#define AS923_NEXT_CHANNEL( ) AS923_CASE { return RegionAS923NextChannel( nextChanParams, channel, time ); } -#define AS923_CHANNEL_ADD( ) AS923_CASE { return RegionAS923ChannelAdd( channelAdd ); } -#define AS923_CHANNEL_REMOVE( ) AS923_CASE { return RegionAS923ChannelsRemove( channelRemove ); } -#define AS923_SET_CONTINUOUS_WAVE( ) AS923_CASE { RegionAS923SetContinuousWave( continuousWave ); break; } +#define AS923_CASE case LORAMAC_REGION_AS923: +#define AS923_IS_ACTIVE( ) AS923_CASE { return true; } +#define AS923_GET_PHY_PARAM( ) AS923_CASE { RegionAS923GetPhyParam( getPhy ); break; } +#define AS923_SET_BAND_TX_DONE( ) AS923_CASE { RegionAS923SetBandTxDone( txDone ); break; } +#define AS923_INIT_DEFAULTS( ) AS923_CASE { RegionAS923InitDefaults( type ); break; } +#define AS923_VERIFY( ) AS923_CASE { return RegionAS923Verify( verify, phyAttribute ); } +#define AS923_APPLY_CF_LIST( ) AS923_CASE { RegionAS923ApplyCFList( applyCFList ); break; } +#define AS923_CHAN_MASK_SET( ) AS923_CASE { return RegionAS923ChanMaskSet( chanMaskSet ); } +#define AS923_ADR_NEXT( ) AS923_CASE { return RegionAS923AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define AS923_COMPUTE_RX_WINDOW_PARAMETERS( ) AS923_CASE { RegionAS923ComputeRxWindowParameters( datarate, rxError, rxConfigParams ); break; } +#define AS923_RX_CONFIG( ) AS923_CASE { return RegionAS923RxConfig( rxConfig, datarate ); } +#define AS923_TX_CONFIG( ) AS923_CASE { return RegionAS923TxConfig( txConfig, txPower, txTimeOnAir ); } +#define AS923_LINK_ADR_REQ( ) AS923_CASE { return RegionAS923LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define AS923_RX_PARAM_SETUP_REQ( ) AS923_CASE { return RegionAS923RxParamSetupReq( rxParamSetupReq ); } +#define AS923_NEW_CHANNEL_REQ( ) AS923_CASE { return RegionAS923NewChannelReq( newChannelReq ); } +#define AS923_TX_PARAM_SETUP_REQ( ) AS923_CASE { return RegionAS923TxParamSetupReq( txParamSetupReq ); } +#define AS923_DL_CHANNEL_REQ( ) AS923_CASE { return RegionAS923DlChannelReq( dlChannelReq ); } +#define AS923_ALTERNATE_DR( ) AS923_CASE { return RegionAS923AlternateDr( alternateDr ); } +#define AS923_CALC_BACKOFF( ) AS923_CASE { RegionAS923CalcBackOff( calcBackOff ); break; } +#define AS923_NEXT_CHANNEL( ) AS923_CASE { return RegionAS923NextChannel( nextChanParams, channel, time ); } +#define AS923_CHANNEL_ADD( ) AS923_CASE { return RegionAS923ChannelAdd( channelAdd ); } +#define AS923_CHANNEL_REMOVE( ) AS923_CASE { return RegionAS923ChannelsRemove( channelRemove ); } +#define AS923_SET_CONTINUOUS_WAVE( ) AS923_CASE { RegionAS923SetContinuousWave( continuousWave ); break; } +#define AS923_APPLY_DR_OFFSET( ) AS923_CASE { return RegionAS923ApplyDrOffset( downlinkDwellTime, dr, drOffset ); } #else #define AS923_IS_ACTIVE( ) #define AS923_GET_PHY_PARAM( ) @@ -65,6 +67,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define AS923_APPLY_CF_LIST( ) #define AS923_CHAN_MASK_SET( ) #define AS923_ADR_NEXT( ) +#define AS923_COMPUTE_RX_WINDOW_PARAMETERS( ) #define AS923_RX_CONFIG( ) #define AS923_TX_CONFIG( ) #define AS923_LINK_ADR_REQ( ) @@ -78,32 +81,35 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define AS923_CHANNEL_ADD( ) #define AS923_CHANNEL_REMOVE( ) #define AS923_SET_CONTINUOUS_WAVE( ) +#define AS923_APPLY_DR_OFFSET( ) #endif #ifdef REGION_AU915 #include "RegionAU915.h" -#define AU915_CASE case LORAMAC_REGION_AU915: -#define AU915_IS_ACTIVE( ) AU915_CASE { return true; } -#define AU915_GET_PHY_PARAM( ) AU915_CASE { RegionAU915GetPhyParam( getPhy ); break; } -#define AU915_SET_BAND_TX_DONE( ) AU915_CASE { RegionAU915SetBandTxDone( txDone ); break; } -#define AU915_INIT_DEFAULTS( ) AU915_CASE { RegionAU915InitDefaults( type ); break; } -#define AU915_VERIFY( ) AU915_CASE { return RegionAU915Verify( verify, phyAttribute ); } -#define AU915_APPLY_CF_LIST( ) AU915_CASE { RegionAU915ApplyCFList( applyCFList ); break; } -#define AU915_CHAN_MASK_SET( ) AU915_CASE { return RegionAU915ChanMaskSet( chanMaskSet ); } -#define AU915_ADR_NEXT( ) AU915_CASE { return RegionAU915AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } -#define AU915_RX_CONFIG( ) AU915_CASE { return RegionAU915RxConfig( rxConfig, datarate ); } -#define AU915_TX_CONFIG( ) AU915_CASE { return RegionAU915TxConfig( txConfig, txPower, txTimeOnAir ); } -#define AU915_LINK_ADR_REQ( ) AU915_CASE { return RegionAU915LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } -#define AU915_RX_PARAM_SETUP_REQ( ) AU915_CASE { return RegionAU915RxParamSetupReq( rxParamSetupReq ); } -#define AU915_NEW_CHANNEL_REQ( ) AU915_CASE { return RegionAU915NewChannelReq( newChannelReq ); } -#define AU915_TX_PARAM_SETUP_REQ( ) AU915_CASE { return RegionAU915TxParamSetupReq( txParamSetupReq ); } -#define AU915_DL_CHANNEL_REQ( ) AU915_CASE { return RegionAU915DlChannelReq( dlChannelReq ); } -#define AU915_ALTERNATE_DR( ) AU915_CASE { return RegionAU915AlternateDr( alternateDr ); } -#define AU915_CALC_BACKOFF( ) AU915_CASE { RegionAU915CalcBackOff( calcBackOff ); break; } -#define AU915_NEXT_CHANNEL( ) AU915_CASE { return RegionAU915NextChannel( nextChanParams, channel, time ); } -#define AU915_CHANNEL_ADD( ) AU915_CASE { return RegionAU915ChannelAdd( channelAdd ); } -#define AU915_CHANNEL_REMOVE( ) AU915_CASE { return RegionAU915ChannelsRemove( channelRemove ); } -#define AU915_SET_CONTINUOUS_WAVE( ) AU915_CASE { RegionAU915SetContinuousWave( continuousWave ); break; } +#define AU915_CASE case LORAMAC_REGION_AU915: +#define AU915_IS_ACTIVE( ) AU915_CASE { return true; } +#define AU915_GET_PHY_PARAM( ) AU915_CASE { RegionAU915GetPhyParam( getPhy ); break; } +#define AU915_SET_BAND_TX_DONE( ) AU915_CASE { RegionAU915SetBandTxDone( txDone ); break; } +#define AU915_INIT_DEFAULTS( ) AU915_CASE { RegionAU915InitDefaults( type ); break; } +#define AU915_VERIFY( ) AU915_CASE { return RegionAU915Verify( verify, phyAttribute ); } +#define AU915_APPLY_CF_LIST( ) AU915_CASE { RegionAU915ApplyCFList( applyCFList ); break; } +#define AU915_CHAN_MASK_SET( ) AU915_CASE { return RegionAU915ChanMaskSet( chanMaskSet ); } +#define AU915_ADR_NEXT( ) AU915_CASE { return RegionAU915AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define AU915_COMPUTE_RX_WINDOW_PARAMETERS( ) AU915_CASE { RegionAU915ComputeRxWindowParameters( datarate, rxError, rxConfigParams ); break; } +#define AU915_RX_CONFIG( ) AU915_CASE { return RegionAU915RxConfig( rxConfig, datarate ); } +#define AU915_TX_CONFIG( ) AU915_CASE { return RegionAU915TxConfig( txConfig, txPower, txTimeOnAir ); } +#define AU915_LINK_ADR_REQ( ) AU915_CASE { return RegionAU915LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define AU915_RX_PARAM_SETUP_REQ( ) AU915_CASE { return RegionAU915RxParamSetupReq( rxParamSetupReq ); } +#define AU915_NEW_CHANNEL_REQ( ) AU915_CASE { return RegionAU915NewChannelReq( newChannelReq ); } +#define AU915_TX_PARAM_SETUP_REQ( ) AU915_CASE { return RegionAU915TxParamSetupReq( txParamSetupReq ); } +#define AU915_DL_CHANNEL_REQ( ) AU915_CASE { return RegionAU915DlChannelReq( dlChannelReq ); } +#define AU915_ALTERNATE_DR( ) AU915_CASE { return RegionAU915AlternateDr( alternateDr ); } +#define AU915_CALC_BACKOFF( ) AU915_CASE { RegionAU915CalcBackOff( calcBackOff ); break; } +#define AU915_NEXT_CHANNEL( ) AU915_CASE { return RegionAU915NextChannel( nextChanParams, channel, time ); } +#define AU915_CHANNEL_ADD( ) AU915_CASE { return RegionAU915ChannelAdd( channelAdd ); } +#define AU915_CHANNEL_REMOVE( ) AU915_CASE { return RegionAU915ChannelsRemove( channelRemove ); } +#define AU915_SET_CONTINUOUS_WAVE( ) AU915_CASE { RegionAU915SetContinuousWave( continuousWave ); break; } +#define AU915_APPLY_DR_OFFSET( ) AU915_CASE { return RegionAU915ApplyDrOffset( downlinkDwellTime, dr, drOffset ); } #else #define AU915_IS_ACTIVE( ) #define AU915_GET_PHY_PARAM( ) @@ -113,6 +119,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define AU915_APPLY_CF_LIST( ) #define AU915_CHAN_MASK_SET( ) #define AU915_ADR_NEXT( ) +#define AU915_COMPUTE_RX_WINDOW_PARAMETERS( ) #define AU915_RX_CONFIG( ) #define AU915_TX_CONFIG( ) #define AU915_LINK_ADR_REQ( ) @@ -126,32 +133,35 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define AU915_CHANNEL_ADD( ) #define AU915_CHANNEL_REMOVE( ) #define AU915_SET_CONTINUOUS_WAVE( ) +#define AU915_APPLY_DR_OFFSET( ) #endif #ifdef REGION_CN470 #include "RegionCN470.h" -#define CN470_CASE case LORAMAC_REGION_CN470: -#define CN470_IS_ACTIVE( ) CN470_CASE { return true; } -#define CN470_GET_PHY_PARAM( ) CN470_CASE { RegionCN470GetPhyParam( getPhy ); break; } -#define CN470_SET_BAND_TX_DONE( ) CN470_CASE { RegionCN470SetBandTxDone( txDone ); break; } -#define CN470_INIT_DEFAULTS( ) CN470_CASE { RegionCN470InitDefaults( type ); break; } -#define CN470_VERIFY( ) CN470_CASE { return RegionCN470Verify( verify, phyAttribute ); } -#define CN470_APPLY_CF_LIST( ) CN470_CASE { RegionCN470ApplyCFList( applyCFList ); break; } -#define CN470_CHAN_MASK_SET( ) CN470_CASE { return RegionCN470ChanMaskSet( chanMaskSet ); } -#define CN470_ADR_NEXT( ) CN470_CASE { return RegionCN470AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } -#define CN470_RX_CONFIG( ) CN470_CASE { return RegionCN470RxConfig( rxConfig, datarate ); } -#define CN470_TX_CONFIG( ) CN470_CASE { return RegionCN470TxConfig( txConfig, txPower, txTimeOnAir ); } -#define CN470_LINK_ADR_REQ( ) CN470_CASE { return RegionCN470LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } -#define CN470_RX_PARAM_SETUP_REQ( ) CN470_CASE { return RegionCN470RxParamSetupReq( rxParamSetupReq ); } -#define CN470_NEW_CHANNEL_REQ( ) CN470_CASE { return RegionCN470NewChannelReq( newChannelReq ); } -#define CN470_TX_PARAM_SETUP_REQ( ) CN470_CASE { return RegionCN470TxParamSetupReq( txParamSetupReq ); } -#define CN470_DL_CHANNEL_REQ( ) CN470_CASE { return RegionCN470DlChannelReq( dlChannelReq ); } -#define CN470_ALTERNATE_DR( ) CN470_CASE { return RegionCN470AlternateDr( alternateDr ); } -#define CN470_CALC_BACKOFF( ) CN470_CASE { RegionCN470CalcBackOff( calcBackOff ); break; } -#define CN470_NEXT_CHANNEL( ) CN470_CASE { return RegionCN470NextChannel( nextChanParams, channel, time ); } -#define CN470_CHANNEL_ADD( ) CN470_CASE { return RegionCN470ChannelAdd( channelAdd ); } -#define CN470_CHANNEL_REMOVE( ) CN470_CASE { return RegionCN470ChannelsRemove( channelRemove ); } -#define CN470_SET_CONTINUOUS_WAVE( ) CN470_CASE { RegionCN470SetContinuousWave( continuousWave ); break; } +#define CN470_CASE case LORAMAC_REGION_CN470: +#define CN470_IS_ACTIVE( ) CN470_CASE { return true; } +#define CN470_GET_PHY_PARAM( ) CN470_CASE { RegionCN470GetPhyParam( getPhy ); break; } +#define CN470_SET_BAND_TX_DONE( ) CN470_CASE { RegionCN470SetBandTxDone( txDone ); break; } +#define CN470_INIT_DEFAULTS( ) CN470_CASE { RegionCN470InitDefaults( type ); break; } +#define CN470_VERIFY( ) CN470_CASE { return RegionCN470Verify( verify, phyAttribute ); } +#define CN470_APPLY_CF_LIST( ) CN470_CASE { RegionCN470ApplyCFList( applyCFList ); break; } +#define CN470_CHAN_MASK_SET( ) CN470_CASE { return RegionCN470ChanMaskSet( chanMaskSet ); } +#define CN470_ADR_NEXT( ) CN470_CASE { return RegionCN470AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define CN470_COMPUTE_RX_WINDOW_PARAMETERS( ) CN470_CASE { RegionCN470ComputeRxWindowParameters( datarate, rxError, rxConfigParams ); break; } +#define CN470_RX_CONFIG( ) CN470_CASE { return RegionCN470RxConfig( rxConfig, datarate ); } +#define CN470_TX_CONFIG( ) CN470_CASE { return RegionCN470TxConfig( txConfig, txPower, txTimeOnAir ); } +#define CN470_LINK_ADR_REQ( ) CN470_CASE { return RegionCN470LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define CN470_RX_PARAM_SETUP_REQ( ) CN470_CASE { return RegionCN470RxParamSetupReq( rxParamSetupReq ); } +#define CN470_NEW_CHANNEL_REQ( ) CN470_CASE { return RegionCN470NewChannelReq( newChannelReq ); } +#define CN470_TX_PARAM_SETUP_REQ( ) CN470_CASE { return RegionCN470TxParamSetupReq( txParamSetupReq ); } +#define CN470_DL_CHANNEL_REQ( ) CN470_CASE { return RegionCN470DlChannelReq( dlChannelReq ); } +#define CN470_ALTERNATE_DR( ) CN470_CASE { return RegionCN470AlternateDr( alternateDr ); } +#define CN470_CALC_BACKOFF( ) CN470_CASE { RegionCN470CalcBackOff( calcBackOff ); break; } +#define CN470_NEXT_CHANNEL( ) CN470_CASE { return RegionCN470NextChannel( nextChanParams, channel, time ); } +#define CN470_CHANNEL_ADD( ) CN470_CASE { return RegionCN470ChannelAdd( channelAdd ); } +#define CN470_CHANNEL_REMOVE( ) CN470_CASE { return RegionCN470ChannelsRemove( channelRemove ); } +#define CN470_SET_CONTINUOUS_WAVE( ) CN470_CASE { RegionCN470SetContinuousWave( continuousWave ); break; } +#define CN470_APPLY_DR_OFFSET( ) CN470_CASE { return RegionCN470ApplyDrOffset( downlinkDwellTime, dr, drOffset ); } #else #define CN470_IS_ACTIVE( ) #define CN470_GET_PHY_PARAM( ) @@ -161,6 +171,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define CN470_APPLY_CF_LIST( ) #define CN470_CHAN_MASK_SET( ) #define CN470_ADR_NEXT( ) +#define CN470_COMPUTE_RX_WINDOW_PARAMETERS( ) #define CN470_RX_CONFIG( ) #define CN470_TX_CONFIG( ) #define CN470_LINK_ADR_REQ( ) @@ -174,32 +185,35 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define CN470_CHANNEL_ADD( ) #define CN470_CHANNEL_REMOVE( ) #define CN470_SET_CONTINUOUS_WAVE( ) +#define CN470_APPLY_DR_OFFSET( ) #endif #ifdef REGION_CN779 #include "RegionCN779.h" -#define CN779_CASE case LORAMAC_REGION_CN779: -#define CN779_IS_ACTIVE( ) CN779_CASE { return true; } -#define CN779_GET_PHY_PARAM( ) CN779_CASE { RegionCN779GetPhyParam( getPhy ); break; } -#define CN779_SET_BAND_TX_DONE( ) CN779_CASE { RegionCN779SetBandTxDone( txDone ); break; } -#define CN779_INIT_DEFAULTS( ) CN779_CASE { RegionCN779InitDefaults( type ); break; } -#define CN779_VERIFY( ) CN779_CASE { return RegionCN779Verify( verify, phyAttribute ); } -#define CN779_APPLY_CF_LIST( ) CN779_CASE { RegionCN779ApplyCFList( applyCFList ); break; } -#define CN779_CHAN_MASK_SET( ) CN779_CASE { return RegionCN779ChanMaskSet( chanMaskSet ); } -#define CN779_ADR_NEXT( ) CN779_CASE { return RegionCN779AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } -#define CN779_RX_CONFIG( ) CN779_CASE { return RegionCN779RxConfig( rxConfig, datarate ); } -#define CN779_TX_CONFIG( ) CN779_CASE { return RegionCN779TxConfig( txConfig, txPower, txTimeOnAir ); } -#define CN779_LINK_ADR_REQ( ) CN779_CASE { return RegionCN779LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } -#define CN779_RX_PARAM_SETUP_REQ( ) CN779_CASE { return RegionCN779RxParamSetupReq( rxParamSetupReq ); } -#define CN779_NEW_CHANNEL_REQ( ) CN779_CASE { return RegionCN779NewChannelReq( newChannelReq ); } -#define CN779_TX_PARAM_SETUP_REQ( ) CN779_CASE { return RegionCN779TxParamSetupReq( txParamSetupReq ); } -#define CN779_DL_CHANNEL_REQ( ) CN779_CASE { return RegionCN779DlChannelReq( dlChannelReq ); } -#define CN779_ALTERNATE_DR( ) CN779_CASE { return RegionCN779AlternateDr( alternateDr ); } -#define CN779_CALC_BACKOFF( ) CN779_CASE { RegionCN779CalcBackOff( calcBackOff ); break; } -#define CN779_NEXT_CHANNEL( ) CN779_CASE { return RegionCN779NextChannel( nextChanParams, channel, time ); } -#define CN779_CHANNEL_ADD( ) CN779_CASE { return RegionCN779ChannelAdd( channelAdd ); } -#define CN779_CHANNEL_REMOVE( ) CN779_CASE { return RegionCN779ChannelsRemove( channelRemove ); } -#define CN779_SET_CONTINUOUS_WAVE( ) CN779_CASE { RegionCN779SetContinuousWave( continuousWave ); break; } +#define CN779_CASE case LORAMAC_REGION_CN779: +#define CN779_IS_ACTIVE( ) CN779_CASE { return true; } +#define CN779_GET_PHY_PARAM( ) CN779_CASE { RegionCN779GetPhyParam( getPhy ); break; } +#define CN779_SET_BAND_TX_DONE( ) CN779_CASE { RegionCN779SetBandTxDone( txDone ); break; } +#define CN779_INIT_DEFAULTS( ) CN779_CASE { RegionCN779InitDefaults( type ); break; } +#define CN779_VERIFY( ) CN779_CASE { return RegionCN779Verify( verify, phyAttribute ); } +#define CN779_APPLY_CF_LIST( ) CN779_CASE { RegionCN779ApplyCFList( applyCFList ); break; } +#define CN779_CHAN_MASK_SET( ) CN779_CASE { return RegionCN779ChanMaskSet( chanMaskSet ); } +#define CN779_ADR_NEXT( ) CN779_CASE { return RegionCN779AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define CN779_COMPUTE_RX_WINDOW_PARAMETERS( ) CN779_CASE { RegionCN779ComputeRxWindowParameters( datarate, rxError, rxConfigParams ); break; } +#define CN779_RX_CONFIG( ) CN779_CASE { return RegionCN779RxConfig( rxConfig, datarate ); } +#define CN779_TX_CONFIG( ) CN779_CASE { return RegionCN779TxConfig( txConfig, txPower, txTimeOnAir ); } +#define CN779_LINK_ADR_REQ( ) CN779_CASE { return RegionCN779LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define CN779_RX_PARAM_SETUP_REQ( ) CN779_CASE { return RegionCN779RxParamSetupReq( rxParamSetupReq ); } +#define CN779_NEW_CHANNEL_REQ( ) CN779_CASE { return RegionCN779NewChannelReq( newChannelReq ); } +#define CN779_TX_PARAM_SETUP_REQ( ) CN779_CASE { return RegionCN779TxParamSetupReq( txParamSetupReq ); } +#define CN779_DL_CHANNEL_REQ( ) CN779_CASE { return RegionCN779DlChannelReq( dlChannelReq ); } +#define CN779_ALTERNATE_DR( ) CN779_CASE { return RegionCN779AlternateDr( alternateDr ); } +#define CN779_CALC_BACKOFF( ) CN779_CASE { RegionCN779CalcBackOff( calcBackOff ); break; } +#define CN779_NEXT_CHANNEL( ) CN779_CASE { return RegionCN779NextChannel( nextChanParams, channel, time ); } +#define CN779_CHANNEL_ADD( ) CN779_CASE { return RegionCN779ChannelAdd( channelAdd ); } +#define CN779_CHANNEL_REMOVE( ) CN779_CASE { return RegionCN779ChannelsRemove( channelRemove ); } +#define CN779_SET_CONTINUOUS_WAVE( ) CN779_CASE { RegionCN779SetContinuousWave( continuousWave ); break; } +#define CN779_APPLY_DR_OFFSET( ) CN779_CASE { return RegionCN779ApplyDrOffset( downlinkDwellTime, dr, drOffset ); } #else #define CN779_IS_ACTIVE( ) #define CN779_GET_PHY_PARAM( ) @@ -209,6 +223,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define CN779_APPLY_CF_LIST( ) #define CN779_CHAN_MASK_SET( ) #define CN779_ADR_NEXT( ) +#define CN779_COMPUTE_RX_WINDOW_PARAMETERS( ) #define CN779_RX_CONFIG( ) #define CN779_TX_CONFIG( ) #define CN779_LINK_ADR_REQ( ) @@ -222,32 +237,35 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define CN779_CHANNEL_ADD( ) #define CN779_CHANNEL_REMOVE( ) #define CN779_SET_CONTINUOUS_WAVE( ) +#define CN779_APPLY_DR_OFFSET( ) #endif #ifdef REGION_EU433 #include "RegionEU433.h" -#define EU433_CASE case LORAMAC_REGION_EU433: -#define EU433_IS_ACTIVE( ) EU433_CASE { return true; } -#define EU433_GET_PHY_PARAM( ) EU433_CASE { RegionEU433GetPhyParam( getPhy ); break; } -#define EU433_SET_BAND_TX_DONE( ) EU433_CASE { RegionEU433SetBandTxDone( txDone ); break; } -#define EU433_INIT_DEFAULTS( ) EU433_CASE { RegionEU433InitDefaults( type ); break; } -#define EU433_VERIFY( ) EU433_CASE { return RegionEU433Verify( verify, phyAttribute ); } -#define EU433_APPLY_CF_LIST( ) EU433_CASE { RegionEU433ApplyCFList( applyCFList ); break; } -#define EU433_CHAN_MASK_SET( ) EU433_CASE { return RegionEU433ChanMaskSet( chanMaskSet ); } -#define EU433_ADR_NEXT( ) EU433_CASE { return RegionEU433AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } -#define EU433_RX_CONFIG( ) EU433_CASE { return RegionEU433RxConfig( rxConfig, datarate ); } -#define EU433_TX_CONFIG( ) EU433_CASE { return RegionEU433TxConfig( txConfig, txPower, txTimeOnAir ); } -#define EU433_LINK_ADR_REQ( ) EU433_CASE { return RegionEU433LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } -#define EU433_RX_PARAM_SETUP_REQ( ) EU433_CASE { return RegionEU433RxParamSetupReq( rxParamSetupReq ); } -#define EU433_NEW_CHANNEL_REQ( ) EU433_CASE { return RegionEU433NewChannelReq( newChannelReq ); } -#define EU433_TX_PARAM_SETUP_REQ( ) EU433_CASE { return RegionEU433TxParamSetupReq( txParamSetupReq ); } -#define EU433_DL_CHANNEL_REQ( ) EU433_CASE { return RegionEU433DlChannelReq( dlChannelReq ); } -#define EU433_ALTERNATE_DR( ) EU433_CASE { return RegionEU433AlternateDr( alternateDr ); } -#define EU433_CALC_BACKOFF( ) EU433_CASE { RegionEU433CalcBackOff( calcBackOff ); break; } -#define EU433_NEXT_CHANNEL( ) EU433_CASE { return RegionEU433NextChannel( nextChanParams, channel, time ); } -#define EU433_CHANNEL_ADD( ) EU433_CASE { return RegionEU433ChannelAdd( channelAdd ); } -#define EU433_CHANNEL_REMOVE( ) EU433_CASE { return RegionEU433ChannelsRemove( channelRemove ); } -#define EU433_SET_CONTINUOUS_WAVE( ) EU433_CASE { RegionEU433SetContinuousWave( continuousWave ); break; } +#define EU433_CASE case LORAMAC_REGION_EU433: +#define EU433_IS_ACTIVE( ) EU433_CASE { return true; } +#define EU433_GET_PHY_PARAM( ) EU433_CASE { RegionEU433GetPhyParam( getPhy ); break; } +#define EU433_SET_BAND_TX_DONE( ) EU433_CASE { RegionEU433SetBandTxDone( txDone ); break; } +#define EU433_INIT_DEFAULTS( ) EU433_CASE { RegionEU433InitDefaults( type ); break; } +#define EU433_VERIFY( ) EU433_CASE { return RegionEU433Verify( verify, phyAttribute ); } +#define EU433_APPLY_CF_LIST( ) EU433_CASE { RegionEU433ApplyCFList( applyCFList ); break; } +#define EU433_CHAN_MASK_SET( ) EU433_CASE { return RegionEU433ChanMaskSet( chanMaskSet ); } +#define EU433_ADR_NEXT( ) EU433_CASE { return RegionEU433AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define EU433_COMPUTE_RX_WINDOW_PARAMETERS( ) EU433_CASE { RegionEU433ComputeRxWindowParameters( datarate, rxError, rxConfigParams ); break; } +#define EU433_RX_CONFIG( ) EU433_CASE { return RegionEU433RxConfig( rxConfig, datarate ); } +#define EU433_TX_CONFIG( ) EU433_CASE { return RegionEU433TxConfig( txConfig, txPower, txTimeOnAir ); } +#define EU433_LINK_ADR_REQ( ) EU433_CASE { return RegionEU433LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define EU433_RX_PARAM_SETUP_REQ( ) EU433_CASE { return RegionEU433RxParamSetupReq( rxParamSetupReq ); } +#define EU433_NEW_CHANNEL_REQ( ) EU433_CASE { return RegionEU433NewChannelReq( newChannelReq ); } +#define EU433_TX_PARAM_SETUP_REQ( ) EU433_CASE { return RegionEU433TxParamSetupReq( txParamSetupReq ); } +#define EU433_DL_CHANNEL_REQ( ) EU433_CASE { return RegionEU433DlChannelReq( dlChannelReq ); } +#define EU433_ALTERNATE_DR( ) EU433_CASE { return RegionEU433AlternateDr( alternateDr ); } +#define EU433_CALC_BACKOFF( ) EU433_CASE { RegionEU433CalcBackOff( calcBackOff ); break; } +#define EU433_NEXT_CHANNEL( ) EU433_CASE { return RegionEU433NextChannel( nextChanParams, channel, time ); } +#define EU433_CHANNEL_ADD( ) EU433_CASE { return RegionEU433ChannelAdd( channelAdd ); } +#define EU433_CHANNEL_REMOVE( ) EU433_CASE { return RegionEU433ChannelsRemove( channelRemove ); } +#define EU433_SET_CONTINUOUS_WAVE( ) EU433_CASE { RegionEU433SetContinuousWave( continuousWave ); break; } +#define EU433_APPLY_DR_OFFSET( ) EU433_CASE { return RegionEU433ApplyDrOffset( downlinkDwellTime, dr, drOffset ); } #else #define EU433_IS_ACTIVE( ) #define EU433_GET_PHY_PARAM( ) @@ -257,6 +275,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define EU433_APPLY_CF_LIST( ) #define EU433_CHAN_MASK_SET( ) #define EU433_ADR_NEXT( ) +#define EU433_COMPUTE_RX_WINDOW_PARAMETERS( ) #define EU433_RX_CONFIG( ) #define EU433_TX_CONFIG( ) #define EU433_LINK_ADR_REQ( ) @@ -270,32 +289,35 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define EU433_CHANNEL_ADD( ) #define EU433_CHANNEL_REMOVE( ) #define EU433_SET_CONTINUOUS_WAVE( ) +#define EU433_APPLY_DR_OFFSET( ) #endif #ifdef REGION_EU868 #include "RegionEU868.h" -#define EU868_CASE case LORAMAC_REGION_EU868: -#define EU868_IS_ACTIVE( ) EU868_CASE { return true; } -#define EU868_GET_PHY_PARAM( ) EU868_CASE { RegionEU868GetPhyParam( getPhy ); break; } -#define EU868_SET_BAND_TX_DONE( ) EU868_CASE { RegionEU868SetBandTxDone( txDone ); break; } -#define EU868_INIT_DEFAULTS( ) EU868_CASE { RegionEU868InitDefaults( type ); break; } -#define EU868_VERIFY( ) EU868_CASE { return RegionEU868Verify( verify, phyAttribute ); } -#define EU868_APPLY_CF_LIST( ) EU868_CASE { RegionEU868ApplyCFList( applyCFList ); break; } -#define EU868_CHAN_MASK_SET( ) EU868_CASE { return RegionEU868ChanMaskSet( chanMaskSet ); } -#define EU868_ADR_NEXT( ) EU868_CASE { return RegionEU868AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } -#define EU868_RX_CONFIG( ) EU868_CASE { return RegionEU868RxConfig( rxConfig, datarate ); } -#define EU868_TX_CONFIG( ) EU868_CASE { return RegionEU868TxConfig( txConfig, txPower, txTimeOnAir ); } -#define EU868_LINK_ADR_REQ( ) EU868_CASE { return RegionEU868LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } -#define EU868_RX_PARAM_SETUP_REQ( ) EU868_CASE { return RegionEU868RxParamSetupReq( rxParamSetupReq ); } -#define EU868_NEW_CHANNEL_REQ( ) EU868_CASE { return RegionEU868NewChannelReq( newChannelReq ); } -#define EU868_TX_PARAM_SETUP_REQ( ) EU868_CASE { return RegionEU868TxParamSetupReq( txParamSetupReq ); } -#define EU868_DL_CHANNEL_REQ( ) EU868_CASE { return RegionEU868DlChannelReq( dlChannelReq ); } -#define EU868_ALTERNATE_DR( ) EU868_CASE { return RegionEU868AlternateDr( alternateDr ); } -#define EU868_CALC_BACKOFF( ) EU868_CASE { RegionEU868CalcBackOff( calcBackOff ); break; } -#define EU868_NEXT_CHANNEL( ) EU868_CASE { return RegionEU868NextChannel( nextChanParams, channel, time ); } -#define EU868_CHANNEL_ADD( ) EU868_CASE { return RegionEU868ChannelAdd( channelAdd ); } -#define EU868_CHANNEL_REMOVE( ) EU868_CASE { return RegionEU868ChannelsRemove( channelRemove ); } -#define EU868_SET_CONTINUOUS_WAVE( ) EU868_CASE { RegionEU868SetContinuousWave( continuousWave ); break; } +#define EU868_CASE case LORAMAC_REGION_EU868: +#define EU868_IS_ACTIVE( ) EU868_CASE { return true; } +#define EU868_GET_PHY_PARAM( ) EU868_CASE { RegionEU868GetPhyParam( getPhy ); break; } +#define EU868_SET_BAND_TX_DONE( ) EU868_CASE { RegionEU868SetBandTxDone( txDone ); break; } +#define EU868_INIT_DEFAULTS( ) EU868_CASE { RegionEU868InitDefaults( type ); break; } +#define EU868_VERIFY( ) EU868_CASE { return RegionEU868Verify( verify, phyAttribute ); } +#define EU868_APPLY_CF_LIST( ) EU868_CASE { RegionEU868ApplyCFList( applyCFList ); break; } +#define EU868_CHAN_MASK_SET( ) EU868_CASE { return RegionEU868ChanMaskSet( chanMaskSet ); } +#define EU868_ADR_NEXT( ) EU868_CASE { return RegionEU868AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define EU868_COMPUTE_RX_WINDOW_PARAMETERS( ) EU868_CASE { RegionEU868ComputeRxWindowParameters( datarate, rxError, rxConfigParams ); break; } +#define EU868_RX_CONFIG( ) EU868_CASE { return RegionEU868RxConfig( rxConfig, datarate ); } +#define EU868_TX_CONFIG( ) EU868_CASE { return RegionEU868TxConfig( txConfig, txPower, txTimeOnAir ); } +#define EU868_LINK_ADR_REQ( ) EU868_CASE { return RegionEU868LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define EU868_RX_PARAM_SETUP_REQ( ) EU868_CASE { return RegionEU868RxParamSetupReq( rxParamSetupReq ); } +#define EU868_NEW_CHANNEL_REQ( ) EU868_CASE { return RegionEU868NewChannelReq( newChannelReq ); } +#define EU868_TX_PARAM_SETUP_REQ( ) EU868_CASE { return RegionEU868TxParamSetupReq( txParamSetupReq ); } +#define EU868_DL_CHANNEL_REQ( ) EU868_CASE { return RegionEU868DlChannelReq( dlChannelReq ); } +#define EU868_ALTERNATE_DR( ) EU868_CASE { return RegionEU868AlternateDr( alternateDr ); } +#define EU868_CALC_BACKOFF( ) EU868_CASE { RegionEU868CalcBackOff( calcBackOff ); break; } +#define EU868_NEXT_CHANNEL( ) EU868_CASE { return RegionEU868NextChannel( nextChanParams, channel, time ); } +#define EU868_CHANNEL_ADD( ) EU868_CASE { return RegionEU868ChannelAdd( channelAdd ); } +#define EU868_CHANNEL_REMOVE( ) EU868_CASE { return RegionEU868ChannelsRemove( channelRemove ); } +#define EU868_SET_CONTINUOUS_WAVE( ) EU868_CASE { RegionEU868SetContinuousWave( continuousWave ); break; } +#define EU868_APPLY_DR_OFFSET( ) EU868_CASE { return RegionEU868ApplyDrOffset( downlinkDwellTime, dr, drOffset ); } #else #define EU868_IS_ACTIVE( ) #define EU868_GET_PHY_PARAM( ) @@ -305,6 +327,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define EU868_APPLY_CF_LIST( ) #define EU868_CHAN_MASK_SET( ) #define EU868_ADR_NEXT( ) +#define EU868_COMPUTE_RX_WINDOW_PARAMETERS( ) #define EU868_RX_CONFIG( ) #define EU868_TX_CONFIG( ) #define EU868_LINK_ADR_REQ( ) @@ -318,32 +341,35 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define EU868_CHANNEL_ADD( ) #define EU868_CHANNEL_REMOVE( ) #define EU868_SET_CONTINUOUS_WAVE( ) +#define EU868_APPLY_DR_OFFSET( ) #endif #ifdef REGION_KR920 #include "RegionKR920.h" -#define KR920_CASE case LORAMAC_REGION_KR920: -#define KR920_IS_ACTIVE( ) KR920_CASE { return true; } -#define KR920_GET_PHY_PARAM( ) KR920_CASE { RegionKR920GetPhyParam( getPhy ); break; } -#define KR920_SET_BAND_TX_DONE( ) KR920_CASE { RegionKR920SetBandTxDone( txDone ); break; } -#define KR920_INIT_DEFAULTS( ) KR920_CASE { RegionKR920InitDefaults( type ); break; } -#define KR920_VERIFY( ) KR920_CASE { return RegionKR920Verify( verify, phyAttribute ); } -#define KR920_APPLY_CF_LIST( ) KR920_CASE { RegionKR920ApplyCFList( applyCFList ); break; } -#define KR920_CHAN_MASK_SET( ) KR920_CASE { return RegionKR920ChanMaskSet( chanMaskSet ); } -#define KR920_ADR_NEXT( ) KR920_CASE { return RegionKR920AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } -#define KR920_RX_CONFIG( ) KR920_CASE { return RegionKR920RxConfig( rxConfig, datarate ); } -#define KR920_TX_CONFIG( ) KR920_CASE { return RegionKR920TxConfig( txConfig, txPower, txTimeOnAir ); } -#define KR920_LINK_ADR_REQ( ) KR920_CASE { return RegionKR920LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } -#define KR920_RX_PARAM_SETUP_REQ( ) KR920_CASE { return RegionKR920RxParamSetupReq( rxParamSetupReq ); } -#define KR920_NEW_CHANNEL_REQ( ) KR920_CASE { return RegionKR920NewChannelReq( newChannelReq ); } -#define KR920_TX_PARAM_SETUP_REQ( ) KR920_CASE { return RegionKR920TxParamSetupReq( txParamSetupReq ); } -#define KR920_DL_CHANNEL_REQ( ) KR920_CASE { return RegionKR920DlChannelReq( dlChannelReq ); } -#define KR920_ALTERNATE_DR( ) KR920_CASE { return RegionKR920AlternateDr( alternateDr ); } -#define KR920_CALC_BACKOFF( ) KR920_CASE { RegionKR920CalcBackOff( calcBackOff ); break; } -#define KR920_NEXT_CHANNEL( ) KR920_CASE { return RegionKR920NextChannel( nextChanParams, channel, time ); } -#define KR920_CHANNEL_ADD( ) KR920_CASE { return RegionKR920ChannelAdd( channelAdd ); } -#define KR920_CHANNEL_REMOVE( ) KR920_CASE { return RegionKR920ChannelsRemove( channelRemove ); } -#define KR920_SET_CONTINUOUS_WAVE( ) KR920_CASE { RegionKR920SetContinuousWave( continuousWave ); break; } +#define KR920_CASE case LORAMAC_REGION_KR920: +#define KR920_IS_ACTIVE( ) KR920_CASE { return true; } +#define KR920_GET_PHY_PARAM( ) KR920_CASE { RegionKR920GetPhyParam( getPhy ); break; } +#define KR920_SET_BAND_TX_DONE( ) KR920_CASE { RegionKR920SetBandTxDone( txDone ); break; } +#define KR920_INIT_DEFAULTS( ) KR920_CASE { RegionKR920InitDefaults( type ); break; } +#define KR920_VERIFY( ) KR920_CASE { return RegionKR920Verify( verify, phyAttribute ); } +#define KR920_APPLY_CF_LIST( ) KR920_CASE { RegionKR920ApplyCFList( applyCFList ); break; } +#define KR920_CHAN_MASK_SET( ) KR920_CASE { return RegionKR920ChanMaskSet( chanMaskSet ); } +#define KR920_ADR_NEXT( ) KR920_CASE { return RegionKR920AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define KR920_COMPUTE_RX_WINDOW_PARAMETERS( ) KR920_CASE { RegionKR920ComputeRxWindowParameters( datarate, rxError, rxConfigParams ); break; } +#define KR920_RX_CONFIG( ) KR920_CASE { return RegionKR920RxConfig( rxConfig, datarate ); } +#define KR920_TX_CONFIG( ) KR920_CASE { return RegionKR920TxConfig( txConfig, txPower, txTimeOnAir ); } +#define KR920_LINK_ADR_REQ( ) KR920_CASE { return RegionKR920LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define KR920_RX_PARAM_SETUP_REQ( ) KR920_CASE { return RegionKR920RxParamSetupReq( rxParamSetupReq ); } +#define KR920_NEW_CHANNEL_REQ( ) KR920_CASE { return RegionKR920NewChannelReq( newChannelReq ); } +#define KR920_TX_PARAM_SETUP_REQ( ) KR920_CASE { return RegionKR920TxParamSetupReq( txParamSetupReq ); } +#define KR920_DL_CHANNEL_REQ( ) KR920_CASE { return RegionKR920DlChannelReq( dlChannelReq ); } +#define KR920_ALTERNATE_DR( ) KR920_CASE { return RegionKR920AlternateDr( alternateDr ); } +#define KR920_CALC_BACKOFF( ) KR920_CASE { RegionKR920CalcBackOff( calcBackOff ); break; } +#define KR920_NEXT_CHANNEL( ) KR920_CASE { return RegionKR920NextChannel( nextChanParams, channel, time ); } +#define KR920_CHANNEL_ADD( ) KR920_CASE { return RegionKR920ChannelAdd( channelAdd ); } +#define KR920_CHANNEL_REMOVE( ) KR920_CASE { return RegionKR920ChannelsRemove( channelRemove ); } +#define KR920_SET_CONTINUOUS_WAVE( ) KR920_CASE { RegionKR920SetContinuousWave( continuousWave ); break; } +#define KR920_APPLY_DR_OFFSET( ) KR920_CASE { return RegionKR920ApplyDrOffset( downlinkDwellTime, dr, drOffset ); } #else #define KR920_IS_ACTIVE( ) #define KR920_GET_PHY_PARAM( ) @@ -353,6 +379,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define KR920_APPLY_CF_LIST( ) #define KR920_CHAN_MASK_SET( ) #define KR920_ADR_NEXT( ) +#define KR920_COMPUTE_RX_WINDOW_PARAMETERS( ) #define KR920_RX_CONFIG( ) #define KR920_TX_CONFIG( ) #define KR920_LINK_ADR_REQ( ) @@ -366,32 +393,35 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define KR920_CHANNEL_ADD( ) #define KR920_CHANNEL_REMOVE( ) #define KR920_SET_CONTINUOUS_WAVE( ) +#define KR920_APPLY_DR_OFFSET( ) #endif #ifdef REGION_IN865 #include "RegionIN865.h" -#define IN865_CASE case LORAMAC_REGION_IN865: -#define IN865_IS_ACTIVE( ) IN865_CASE { return true; } -#define IN865_GET_PHY_PARAM( ) IN865_CASE { RegionIN865GetPhyParam( getPhy ); break; } -#define IN865_SET_BAND_TX_DONE( ) IN865_CASE { RegionIN865SetBandTxDone( txDone ); break; } -#define IN865_INIT_DEFAULTS( ) IN865_CASE { RegionIN865InitDefaults( type ); break; } -#define IN865_VERIFY( ) IN865_CASE { return RegionIN865Verify( verify, phyAttribute ); } -#define IN865_APPLY_CF_LIST( ) IN865_CASE { RegionIN865ApplyCFList( applyCFList ); break; } -#define IN865_CHAN_MASK_SET( ) IN865_CASE { return RegionIN865ChanMaskSet( chanMaskSet ); } -#define IN865_ADR_NEXT( ) IN865_CASE { return RegionIN865AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } -#define IN865_RX_CONFIG( ) IN865_CASE { return RegionIN865RxConfig( rxConfig, datarate ); } -#define IN865_TX_CONFIG( ) IN865_CASE { return RegionIN865TxConfig( txConfig, txPower, txTimeOnAir ); } -#define IN865_LINK_ADR_REQ( ) IN865_CASE { return RegionIN865LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } -#define IN865_RX_PARAM_SETUP_REQ( ) IN865_CASE { return RegionIN865RxParamSetupReq( rxParamSetupReq ); } -#define IN865_NEW_CHANNEL_REQ( ) IN865_CASE { return RegionIN865NewChannelReq( newChannelReq ); } -#define IN865_TX_PARAM_SETUP_REQ( ) IN865_CASE { return RegionIN865TxParamSetupReq( txParamSetupReq ); } -#define IN865_DL_CHANNEL_REQ( ) IN865_CASE { return RegionIN865DlChannelReq( dlChannelReq ); } -#define IN865_ALTERNATE_DR( ) IN865_CASE { return RegionIN865AlternateDr( alternateDr ); } -#define IN865_CALC_BACKOFF( ) IN865_CASE { RegionIN865CalcBackOff( calcBackOff ); break; } -#define IN865_NEXT_CHANNEL( ) IN865_CASE { return RegionIN865NextChannel( nextChanParams, channel, time ); } -#define IN865_CHANNEL_ADD( ) IN865_CASE { return RegionIN865ChannelAdd( channelAdd ); } -#define IN865_CHANNEL_REMOVE( ) IN865_CASE { return RegionIN865ChannelsRemove( channelRemove ); } -#define IN865_SET_CONTINUOUS_WAVE( ) IN865_CASE { RegionIN865SetContinuousWave( continuousWave ); break; } +#define IN865_CASE case LORAMAC_REGION_IN865: +#define IN865_IS_ACTIVE( ) IN865_CASE { return true; } +#define IN865_GET_PHY_PARAM( ) IN865_CASE { RegionIN865GetPhyParam( getPhy ); break; } +#define IN865_SET_BAND_TX_DONE( ) IN865_CASE { RegionIN865SetBandTxDone( txDone ); break; } +#define IN865_INIT_DEFAULTS( ) IN865_CASE { RegionIN865InitDefaults( type ); break; } +#define IN865_VERIFY( ) IN865_CASE { return RegionIN865Verify( verify, phyAttribute ); } +#define IN865_APPLY_CF_LIST( ) IN865_CASE { RegionIN865ApplyCFList( applyCFList ); break; } +#define IN865_CHAN_MASK_SET( ) IN865_CASE { return RegionIN865ChanMaskSet( chanMaskSet ); } +#define IN865_ADR_NEXT( ) IN865_CASE { return RegionIN865AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define IN865_COMPUTE_RX_WINDOW_PARAMETERS( ) IN865_CASE { RegionIN865ComputeRxWindowParameters( datarate, rxError, rxConfigParams ); break; } +#define IN865_RX_CONFIG( ) IN865_CASE { return RegionIN865RxConfig( rxConfig, datarate ); } +#define IN865_TX_CONFIG( ) IN865_CASE { return RegionIN865TxConfig( txConfig, txPower, txTimeOnAir ); } +#define IN865_LINK_ADR_REQ( ) IN865_CASE { return RegionIN865LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define IN865_RX_PARAM_SETUP_REQ( ) IN865_CASE { return RegionIN865RxParamSetupReq( rxParamSetupReq ); } +#define IN865_NEW_CHANNEL_REQ( ) IN865_CASE { return RegionIN865NewChannelReq( newChannelReq ); } +#define IN865_TX_PARAM_SETUP_REQ( ) IN865_CASE { return RegionIN865TxParamSetupReq( txParamSetupReq ); } +#define IN865_DL_CHANNEL_REQ( ) IN865_CASE { return RegionIN865DlChannelReq( dlChannelReq ); } +#define IN865_ALTERNATE_DR( ) IN865_CASE { return RegionIN865AlternateDr( alternateDr ); } +#define IN865_CALC_BACKOFF( ) IN865_CASE { RegionIN865CalcBackOff( calcBackOff ); break; } +#define IN865_NEXT_CHANNEL( ) IN865_CASE { return RegionIN865NextChannel( nextChanParams, channel, time ); } +#define IN865_CHANNEL_ADD( ) IN865_CASE { return RegionIN865ChannelAdd( channelAdd ); } +#define IN865_CHANNEL_REMOVE( ) IN865_CASE { return RegionIN865ChannelsRemove( channelRemove ); } +#define IN865_SET_CONTINUOUS_WAVE( ) IN865_CASE { RegionIN865SetContinuousWave( continuousWave ); break; } +#define IN865_APPLY_DR_OFFSET( ) IN865_CASE { return RegionIN865ApplyDrOffset( downlinkDwellTime, dr, drOffset ); } #else #define IN865_IS_ACTIVE( ) #define IN865_GET_PHY_PARAM( ) @@ -401,6 +431,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define IN865_APPLY_CF_LIST( ) #define IN865_CHAN_MASK_SET( ) #define IN865_ADR_NEXT( ) +#define IN865_COMPUTE_RX_WINDOW_PARAMETERS( ) #define IN865_RX_CONFIG( ) #define IN865_TX_CONFIG( ) #define IN865_LINK_ADR_REQ( ) @@ -414,32 +445,35 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define IN865_CHANNEL_ADD( ) #define IN865_CHANNEL_REMOVE( ) #define IN865_SET_CONTINUOUS_WAVE( ) +#define IN865_APPLY_DR_OFFSET( ) #endif #ifdef REGION_US915 #include "RegionUS915.h" -#define US915_CASE case LORAMAC_REGION_US915: -#define US915_IS_ACTIVE( ) US915_CASE { return true; } -#define US915_GET_PHY_PARAM( ) US915_CASE { RegionUS915GetPhyParam( getPhy ); break; } -#define US915_SET_BAND_TX_DONE( ) US915_CASE { RegionUS915SetBandTxDone( txDone ); break; } -#define US915_INIT_DEFAULTS( ) US915_CASE { RegionUS915InitDefaults( type ); break; } -#define US915_VERIFY( ) US915_CASE { return RegionUS915Verify( verify, phyAttribute ); } -#define US915_APPLY_CF_LIST( ) US915_CASE { RegionUS915ApplyCFList( applyCFList ); break; } -#define US915_CHAN_MASK_SET( ) US915_CASE { return RegionUS915ChanMaskSet( chanMaskSet ); } -#define US915_ADR_NEXT( ) US915_CASE { return RegionUS915AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } -#define US915_RX_CONFIG( ) US915_CASE { return RegionUS915RxConfig( rxConfig, datarate ); } -#define US915_TX_CONFIG( ) US915_CASE { return RegionUS915TxConfig( txConfig, txPower, txTimeOnAir ); } -#define US915_LINK_ADR_REQ( ) US915_CASE { return RegionUS915LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } -#define US915_RX_PARAM_SETUP_REQ( ) US915_CASE { return RegionUS915RxParamSetupReq( rxParamSetupReq ); } -#define US915_NEW_CHANNEL_REQ( ) US915_CASE { return RegionUS915NewChannelReq( newChannelReq ); } -#define US915_TX_PARAM_SETUP_REQ( ) US915_CASE { return RegionUS915TxParamSetupReq( txParamSetupReq ); } -#define US915_DL_CHANNEL_REQ( ) US915_CASE { return RegionUS915DlChannelReq( dlChannelReq ); } -#define US915_ALTERNATE_DR( ) US915_CASE { return RegionUS915AlternateDr( alternateDr ); } -#define US915_CALC_BACKOFF( ) US915_CASE { RegionUS915CalcBackOff( calcBackOff ); break; } -#define US915_NEXT_CHANNEL( ) US915_CASE { return RegionUS915NextChannel( nextChanParams, channel, time ); } -#define US915_CHANNEL_ADD( ) US915_CASE { return RegionUS915ChannelAdd( channelAdd ); } -#define US915_CHANNEL_REMOVE( ) US915_CASE { return RegionUS915ChannelsRemove( channelRemove ); } -#define US915_SET_CONTINUOUS_WAVE( ) US915_CASE { RegionUS915SetContinuousWave( continuousWave ); break; } +#define US915_CASE case LORAMAC_REGION_US915: +#define US915_IS_ACTIVE( ) US915_CASE { return true; } +#define US915_GET_PHY_PARAM( ) US915_CASE { RegionUS915GetPhyParam( getPhy ); break; } +#define US915_SET_BAND_TX_DONE( ) US915_CASE { RegionUS915SetBandTxDone( txDone ); break; } +#define US915_INIT_DEFAULTS( ) US915_CASE { RegionUS915InitDefaults( type ); break; } +#define US915_VERIFY( ) US915_CASE { return RegionUS915Verify( verify, phyAttribute ); } +#define US915_APPLY_CF_LIST( ) US915_CASE { RegionUS915ApplyCFList( applyCFList ); break; } +#define US915_CHAN_MASK_SET( ) US915_CASE { return RegionUS915ChanMaskSet( chanMaskSet ); } +#define US915_ADR_NEXT( ) US915_CASE { return RegionUS915AdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define US915_COMPUTE_RX_WINDOW_PARAMETERS( ) US915_CASE { RegionUS915ComputeRxWindowParameters( datarate, rxError, rxConfigParams ); break; } +#define US915_RX_CONFIG( ) US915_CASE { return RegionUS915RxConfig( rxConfig, datarate ); } +#define US915_TX_CONFIG( ) US915_CASE { return RegionUS915TxConfig( txConfig, txPower, txTimeOnAir ); } +#define US915_LINK_ADR_REQ( ) US915_CASE { return RegionUS915LinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define US915_RX_PARAM_SETUP_REQ( ) US915_CASE { return RegionUS915RxParamSetupReq( rxParamSetupReq ); } +#define US915_NEW_CHANNEL_REQ( ) US915_CASE { return RegionUS915NewChannelReq( newChannelReq ); } +#define US915_TX_PARAM_SETUP_REQ( ) US915_CASE { return RegionUS915TxParamSetupReq( txParamSetupReq ); } +#define US915_DL_CHANNEL_REQ( ) US915_CASE { return RegionUS915DlChannelReq( dlChannelReq ); } +#define US915_ALTERNATE_DR( ) US915_CASE { return RegionUS915AlternateDr( alternateDr ); } +#define US915_CALC_BACKOFF( ) US915_CASE { RegionUS915CalcBackOff( calcBackOff ); break; } +#define US915_NEXT_CHANNEL( ) US915_CASE { return RegionUS915NextChannel( nextChanParams, channel, time ); } +#define US915_CHANNEL_ADD( ) US915_CASE { return RegionUS915ChannelAdd( channelAdd ); } +#define US915_CHANNEL_REMOVE( ) US915_CASE { return RegionUS915ChannelsRemove( channelRemove ); } +#define US915_SET_CONTINUOUS_WAVE( ) US915_CASE { RegionUS915SetContinuousWave( continuousWave ); break; } +#define US915_APPLY_DR_OFFSET( ) US915_CASE { return RegionUS915ApplyDrOffset( downlinkDwellTime, dr, drOffset ); } #else #define US915_IS_ACTIVE( ) #define US915_GET_PHY_PARAM( ) @@ -449,6 +483,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define US915_APPLY_CF_LIST( ) #define US915_CHAN_MASK_SET( ) #define US915_ADR_NEXT( ) +#define US915_COMPUTE_RX_WINDOW_PARAMETERS( ) #define US915_RX_CONFIG( ) #define US915_TX_CONFIG( ) #define US915_LINK_ADR_REQ( ) @@ -462,32 +497,35 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define US915_CHANNEL_ADD( ) #define US915_CHANNEL_REMOVE( ) #define US915_SET_CONTINUOUS_WAVE( ) +#define US915_APPLY_DR_OFFSET( ) #endif #ifdef REGION_US915_HYBRID #include "RegionUS915-Hybrid.h" -#define US915_HYBRID_CASE case LORAMAC_REGION_US915_HYBRID: -#define US915_HYBRID_IS_ACTIVE( ) US915_HYBRID_CASE { return true; } -#define US915_HYBRID_GET_PHY_PARAM( ) US915_HYBRID_CASE { RegionUS915HybridGetPhyParam( getPhy ); break; } -#define US915_HYBRID_SET_BAND_TX_DONE( ) US915_HYBRID_CASE { RegionUS915HybridSetBandTxDone( txDone ); break; } -#define US915_HYBRID_INIT_DEFAULTS( ) US915_HYBRID_CASE { RegionUS915HybridInitDefaults( type ); break; } -#define US915_HYBRID_VERIFY( ) US915_HYBRID_CASE { return RegionUS915HybridVerify( verify, phyAttribute ); } -#define US915_HYBRID_APPLY_CF_LIST( ) US915_HYBRID_CASE { RegionUS915HybridApplyCFList( applyCFList ); break; } -#define US915_HYBRID_CHAN_MASK_SET( ) US915_HYBRID_CASE { return RegionUS915HybridChanMaskSet( chanMaskSet ); } -#define US915_HYBRID_ADR_NEXT( ) US915_HYBRID_CASE { return RegionUS915HybridAdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } -#define US915_HYBRID_RX_CONFIG( ) US915_HYBRID_CASE { return RegionUS915HybridRxConfig( rxConfig, datarate ); } -#define US915_HYBRID_TX_CONFIG( ) US915_HYBRID_CASE { return RegionUS915HybridTxConfig( txConfig, txPower, txTimeOnAir ); } -#define US915_HYBRID_LINK_ADR_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridLinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } -#define US915_HYBRID_RX_PARAM_SETUP_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridRxParamSetupReq( rxParamSetupReq ); } -#define US915_HYBRID_NEW_CHANNEL_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridNewChannelReq( newChannelReq ); } -#define US915_HYBRID_TX_PARAM_SETUP_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridTxParamSetupReq( txParamSetupReq ); } -#define US915_HYBRID_DL_CHANNEL_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridDlChannelReq( dlChannelReq ); } -#define US915_HYBRID_ALTERNATE_DR( ) US915_HYBRID_CASE { return RegionUS915HybridAlternateDr( alternateDr ); } -#define US915_HYBRID_CALC_BACKOFF( ) US915_HYBRID_CASE { RegionUS915HybridCalcBackOff( calcBackOff ); break; } -#define US915_HYBRID_NEXT_CHANNEL( ) US915_HYBRID_CASE { return RegionUS915HybridNextChannel( nextChanParams, channel, time ); } -#define US915_HYBRID_CHANNEL_ADD( ) US915_HYBRID_CASE { return RegionUS915HybridChannelAdd( channelAdd ); } -#define US915_HYBRID_CHANNEL_REMOVE( ) US915_HYBRID_CASE { return RegionUS915HybridChannelsRemove( channelRemove ); } -#define US915_HYBRID_SET_CONTINUOUS_WAVE( ) US915_HYBRID_CASE { RegionUS915HybridSetContinuousWave( continuousWave ); break; } +#define US915_HYBRID_CASE case LORAMAC_REGION_US915_HYBRID: +#define US915_HYBRID_IS_ACTIVE( ) US915_HYBRID_CASE { return true; } +#define US915_HYBRID_GET_PHY_PARAM( ) US915_HYBRID_CASE { RegionUS915HybridGetPhyParam( getPhy ); break; } +#define US915_HYBRID_SET_BAND_TX_DONE( ) US915_HYBRID_CASE { RegionUS915HybridSetBandTxDone( txDone ); break; } +#define US915_HYBRID_INIT_DEFAULTS( ) US915_HYBRID_CASE { RegionUS915HybridInitDefaults( type ); break; } +#define US915_HYBRID_VERIFY( ) US915_HYBRID_CASE { return RegionUS915HybridVerify( verify, phyAttribute ); } +#define US915_HYBRID_APPLY_CF_LIST( ) US915_HYBRID_CASE { RegionUS915HybridApplyCFList( applyCFList ); break; } +#define US915_HYBRID_CHAN_MASK_SET( ) US915_HYBRID_CASE { return RegionUS915HybridChanMaskSet( chanMaskSet ); } +#define US915_HYBRID_ADR_NEXT( ) US915_HYBRID_CASE { return RegionUS915HybridAdrNext( adrNext, drOut, txPowOut, adrAckCounter ); } +#define US915_HYBRID_COMPUTE_RX_WINDOW_PARAMETERS( ) US915_HYBRID_CASE { RegionUS915HybridComputeRxWindowParameters( datarate, rxError, rxConfigParams ); break; } +#define US915_HYBRID_RX_CONFIG( ) US915_HYBRID_CASE { return RegionUS915HybridRxConfig( rxConfig, datarate ); } +#define US915_HYBRID_TX_CONFIG( ) US915_HYBRID_CASE { return RegionUS915HybridTxConfig( txConfig, txPower, txTimeOnAir ); } +#define US915_HYBRID_LINK_ADR_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridLinkAdrReq( linkAdrReq, drOut, txPowOut, nbRepOut, nbBytesParsed ); } +#define US915_HYBRID_RX_PARAM_SETUP_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridRxParamSetupReq( rxParamSetupReq ); } +#define US915_HYBRID_NEW_CHANNEL_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridNewChannelReq( newChannelReq ); } +#define US915_HYBRID_TX_PARAM_SETUP_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridTxParamSetupReq( txParamSetupReq ); } +#define US915_HYBRID_DL_CHANNEL_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridDlChannelReq( dlChannelReq ); } +#define US915_HYBRID_ALTERNATE_DR( ) US915_HYBRID_CASE { return RegionUS915HybridAlternateDr( alternateDr ); } +#define US915_HYBRID_CALC_BACKOFF( ) US915_HYBRID_CASE { RegionUS915HybridCalcBackOff( calcBackOff ); break; } +#define US915_HYBRID_NEXT_CHANNEL( ) US915_HYBRID_CASE { return RegionUS915HybridNextChannel( nextChanParams, channel, time ); } +#define US915_HYBRID_CHANNEL_ADD( ) US915_HYBRID_CASE { return RegionUS915HybridChannelAdd( channelAdd ); } +#define US915_HYBRID_CHANNEL_REMOVE( ) US915_HYBRID_CASE { return RegionUS915HybridChannelsRemove( channelRemove ); } +#define US915_HYBRID_SET_CONTINUOUS_WAVE( ) US915_HYBRID_CASE { RegionUS915HybridSetContinuousWave( continuousWave ); break; } +#define US915_HYBRID_APPLY_DR_OFFSET( ) US915_HYBRID_CASE { return RegionUS915HybridApplyDrOffset( downlinkDwellTime, dr, drOffset ); } #else #define US915_HYBRID_IS_ACTIVE( ) #define US915_HYBRID_GET_PHY_PARAM( ) @@ -497,6 +535,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define US915_HYBRID_APPLY_CF_LIST( ) #define US915_HYBRID_CHAN_MASK_SET( ) #define US915_HYBRID_ADR_NEXT( ) +#define US915_HYBRID_COMPUTE_RX_WINDOW_PARAMETERS( ) #define US915_HYBRID_RX_CONFIG( ) #define US915_HYBRID_TX_CONFIG( ) #define US915_HYBRID_LINK_ADR_REQ( ) @@ -510,6 +549,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define US915_HYBRID_CHANNEL_ADD( ) #define US915_HYBRID_CHANNEL_REMOVE( ) #define US915_HYBRID_SET_CONTINUOUS_WAVE( ) +#define US915_HYBRID_APPLY_DR_OFFSET( ) #endif bool RegionIsActive( LoRaMacRegion_t region ) @@ -680,6 +720,27 @@ bool RegionAdrNext( LoRaMacRegion_t region, AdrNextParams_t* adrNext, int8_t* dr } } +void RegionComputeRxWindowParameters( LoRaMacRegion_t region, int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ) +{ + switch( region ) + { + AS923_COMPUTE_RX_WINDOW_PARAMETERS( ); + AU915_COMPUTE_RX_WINDOW_PARAMETERS( ); + CN470_COMPUTE_RX_WINDOW_PARAMETERS( ); + CN779_COMPUTE_RX_WINDOW_PARAMETERS( ); + EU433_COMPUTE_RX_WINDOW_PARAMETERS( ); + EU868_COMPUTE_RX_WINDOW_PARAMETERS( ); + KR920_COMPUTE_RX_WINDOW_PARAMETERS( ); + IN865_COMPUTE_RX_WINDOW_PARAMETERS( ); + US915_COMPUTE_RX_WINDOW_PARAMETERS( ); + US915_HYBRID_COMPUTE_RX_WINDOW_PARAMETERS( ); + default: + { + break; + } + } +} + bool RegionRxConfig( LoRaMacRegion_t region, RxConfigParams_t* rxConfig, int8_t* datarate ) { switch( region ) @@ -952,3 +1013,24 @@ void RegionSetContinuousWave( LoRaMacRegion_t region, ContinuousWaveParams_t* co } } } + +uint8_t RegionApplyDrOffset( LoRaMacRegion_t region, uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +{ + switch( region ) + { + AS923_APPLY_DR_OFFSET( ); + AU915_APPLY_DR_OFFSET( ); + CN470_APPLY_DR_OFFSET( ); + CN779_APPLY_DR_OFFSET( ); + EU433_APPLY_DR_OFFSET( ); + EU868_APPLY_DR_OFFSET( ); + KR920_APPLY_DR_OFFSET( ); + IN865_APPLY_DR_OFFSET( ); + US915_APPLY_DR_OFFSET( ); + US915_HYBRID_APPLY_DR_OFFSET( ); + default: + { + return dr; + } + } +} diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index 8a6f022ea..7d61a8b08 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -817,6 +817,10 @@ typedef struct sRxConfigParams * RX datarate. */ int8_t Datarate; + /*! + * RX bandwidth. + */ + uint8_t Bandwidth; /*! * RX datarate offset. */ @@ -825,6 +829,14 @@ typedef struct sRxConfigParams * RX frequency. */ uint32_t Frequency; + /*! + * RX window timeout + */ + uint32_t WindowTimeout; + /*! + * RX window offset + */ + int32_t WindowOffset; /*! * Downlink dwell time. */ @@ -1174,6 +1186,59 @@ bool RegionAdrNext( LoRaMacRegion_t region, AdrNextParams_t* adrNext, int8_t* dr */ bool RegionRxConfig( LoRaMacRegion_t region, RxConfigParams_t* rxConfig, int8_t* datarate ); +/* + * Rx window precise timing + * + * For more details please consult the following document, chapter 3.1.2. + * http://www.semtech.com/images/datasheet/SX1272_settings_for_LoRaWAN_v2.0.pdf + * or + * http://www.semtech.com/images/datasheet/SX1276_settings_for_LoRaWAN_v2.0.pdf + * + * Downlink start: T = Tx + 1s (+/- 20 us) + * | + * TRxEarly | TRxLate + * | | | + * | | +---+---+---+---+---+---+---+---+ + * | | | Latest Rx window | + * | | +---+---+---+---+---+---+---+---+ + * | | | + * +---+---+---+---+---+---+---+---+ + * | Earliest Rx window | + * +---+---+---+---+---+---+---+---+ + * | + * +---+---+---+---+---+---+---+---+ + *Downlink preamble 8 symbols | | | | | | | | | + * +---+---+---+---+---+---+---+---+ + * + * Worst case Rx window timings + * + * TRxLate = DEFAULT_MIN_RX_SYMBOLS * tSymbol - RADIO_WAKEUP_TIME + * TRxEarly = 8 - DEFAULT_MIN_RX_SYMBOLS * tSymbol - RxWindowTimeout - RADIO_WAKEUP_TIME + * + * TRxLate - TRxEarly = 2 * DEFAULT_SYSTEM_MAX_RX_ERROR + * + * RxOffset = ( TRxLate + TRxEarly ) / 2 + * + * RxWindowTimeout = ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * DEFAULT_SYSTEM_MAX_RX_ERROR + * RxOffset = 4 * tSymbol - RxWindowTimeout / 2 - RADIO_WAKE_UP_TIME + * + * Minimal value of RxWindowTimeout must be 5 symbols which implies that the system always tolerates at least an error of 1.5 * tSymbol + */ +/*! + * Computes the Rx window timeout and offset. + * + * \param [IN] region LoRaWAN region. + * + * \param [IN] datarate Rx window datarate index to be used + * + * \param [IN] rxError System maximum timing error of the receiver. In milliseconds + * The receiver will turn on in a [-rxError : +rxError] ms + * interval around RxOffset + * + * \param [OUT]rxConfigParams Returns updated WindowTimeout and WindowOffset fields. + */ +void RegionComputeRxWindowParameters( LoRaMacRegion_t region, int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ); + /*! * \brief TX configuration. * @@ -1311,6 +1376,19 @@ bool RegionChannelsRemove( LoRaMacRegion_t region, ChannelRemoveParams_t* channe */ void RegionSetContinuousWave( LoRaMacRegion_t region, ContinuousWaveParams_t* continuousWave ); +/*! + * \brief Computes new datarate according to the given offset + * + * \param [IN] downlinkDwellTime Downlink dwell time configuration. 0: No limit, 1: 400ms + * + * \param [IN] dr Current datarate + * + * \param [IN] drOffset Offset to be applied + * + * \retval newDr Computed datarate. + */ +uint8_t RegionApplyDrOffset( LoRaMacRegion_t region, uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ); + /*! \} defgroup REGION */ #endif // __REGION_H__ diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index cd2d5b22d..52e410841 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -20,9 +20,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include #include #include +#include -#include "radio.h" -#include "timer.h" +#include "board.h" #include "LoRaMac.h" #include "utilities.h" @@ -31,13 +31,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionCommon.h" #include "RegionAS923.h" - - // Definitions #define CHANNELS_MASK_SIZE 1 - - // Global attributes /*! * LoRaMAC channels @@ -62,52 +58,19 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; */ static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; - - // Static functions -static uint8_t ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +static uint32_t GetBandwidth( uint32_t drIndex ) { - // Initialize minDr for a downlink dwell time configuration of 0 - int8_t minDr = DR_0; - - // Update the minDR for a downlink dwell time configuration of 1 - if( downlinkDwellTime == 1 ) + switch( BandwidthsAS923[drIndex] ) { - minDr = DR_2; - } - - // Apply offset formula - return MIN( DR_5, MAX( minDr, dr - EffectiveRx1DrOffsetAS923[dr] ) ); -} - -static uint16_t GetSymbTimeout( int8_t dr ) -{ - uint16_t symbolTimeout = 5; - - if( ( dr == DR_3 ) || ( dr == DR_4 ) ) - { - symbolTimeout = 8; - } - else if( dr == DR_5 ) - { - symbolTimeout = 10; - } - else if( dr == DR_6 ) - { - symbolTimeout = 14; - } - return symbolTimeout; -} - -static uint32_t GetBandwidth( int8_t dr ) -{ - uint32_t bandwidth = 0; - - if( dr == DR_6 ) - { - bandwidth = 1; + default: + case 125000: + return 0; + case 250000: + return 1; + case 500000: + return 2; } - return bandwidth; } static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) @@ -171,8 +134,6 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t return nbEnabledChannels; } - - void RegionAS923GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) @@ -502,14 +463,33 @@ bool RegionAS923AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO return adrAckReq; } +void RegionAS923ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ) +{ + double tSymbol = 0.0; + + rxConfigParams->Datarate = datarate; + rxConfigParams->Bandwidth = GetBandwidth( datarate ); + + if( datarate == DR_7 ) + { // FSK + tSymbol = ( 1.0 / ( double )DataratesAS923[datarate] ) * 8.0; // 1 symbol equals 1 byte + } + else + { // LoRa + tSymbol = ( ( double )( 1 << DataratesAS923[datarate] ) / ( double )BandwidthsAS923[datarate] ) * 1e3; + } + + rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols + + rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); +} + // ToDo get phy datarate afterwards bool RegionAS923RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { RadioModems_t modem; int8_t dr = rxConfig->Datarate; uint8_t maxPayload = 0; - uint16_t symbTimeout = 0; - uint32_t bandwidth = 0; int8_t phyDr = 0; uint32_t frequency = rxConfig->Frequency; @@ -521,7 +501,7 @@ bool RegionAS923RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { // Apply the datarate offset for RX window 1 - dr = ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); + dr = RegionAS923ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = Channels[rxConfig->Channel].Frequency; // Apply the alternative RX 1 window frequency, if it is available @@ -530,22 +510,22 @@ bool RegionAS923RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) frequency = Channels[rxConfig->Channel].Rx1Frequency; } } - symbTimeout = GetSymbTimeout( dr ); - bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table phyDr = DataratesAS923[dr]; Radio.SetChannel( frequency ); + // Radio configuration if( dr == DR_7 ) { modem = MODEM_FSK; - Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, 0, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); } else { modem = MODEM_LORA; - Radio.SetRxConfig( modem, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); } // Check the downlink dwell time @@ -1028,3 +1008,18 @@ void RegionAS923SetContinuousWave( ContinuousWaveParams_t* continuousWave ) Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } + +uint8_t RegionAS923ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +{ + // Initialize minDr for a downlink dwell time configuration of 0 + int8_t minDr = DR_0; + + // Update the minDR for a downlink dwell time configuration of 1 + if( downlinkDwellTime == 1 ) + { + minDr = DR_2; + } + + // Apply offset formula + return MIN( DR_5, MAX( minDr, dr - EffectiveRx1DrOffsetAS923[drOffset] ) ); +} diff --git a/src/mac/region/RegionAS923.h b/src/mac/region/RegionAS923.h index 9503998ee..fd8793157 100644 --- a/src/mac/region/RegionAS923.h +++ b/src/mac/region/RegionAS923.h @@ -227,6 +227,11 @@ */ static const uint8_t DataratesAS923[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; +/*! + * Bandwidths table definition in Hz + */ +static const uint32_t BandwidthsAS923[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3, 250e3, 0 }; + /*! * Maximum payload with respect to the datarate index. Cannot operate with repeater. * The table is valid for the dwell time configuration of 0 for uplinks and downlinks. @@ -324,6 +329,19 @@ bool RegionAS923ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); */ bool RegionAS923AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); +/*! + * Computes the Rx window timeout and offset. + * + * \param [IN] datarate Rx window datarate index to be used + * + * \param [IN] rxError System maximum timing error of the receiver. In milliseconds + * The receiver will turn on in a [-rxError : +rxError] ms + * interval around RxOffset + * + * \param [OUT]rxConfigParams Returns updated WindowTimeout and WindowOffset fields. + */ +void RegionAS923ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ); + /*! * \brief Configuration of the RX windows. * @@ -448,6 +466,19 @@ bool RegionAS923ChannelsRemove( ChannelRemoveParams_t* channelRemove ); */ void RegionAS923SetContinuousWave( ContinuousWaveParams_t* continuousWave ); +/*! + * \brief Computes new datarate according to the given offset + * + * \param [IN] downlinkDwellTime Downlink dwell time configuration. 0: No limit, 1: 400ms + * + * \param [IN] dr Current datarate + * + * \param [IN] drOffset Offset to be applied + * + * \retval newDr Computed datarate. + */ +uint8_t RegionAS923ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ); + /*! \} defgroup REGIONAS923 */ #endif // __REGION_AS923_H__ diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 607ce6988..4a01b94aa 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -20,9 +20,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include #include #include +#include -#include "radio.h" -#include "timer.h" +#include "board.h" #include "LoRaMac.h" #include "utilities.h" @@ -31,13 +31,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionCommon.h" #include "RegionAU915.h" - - // Definitions #define CHANNELS_MASK_SIZE 6 - - // Global attributes /*! * LoRaMAC channels @@ -67,70 +63,19 @@ static uint16_t ChannelsMaskRemaining[CHANNELS_MASK_SIZE]; */ static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; - - // Static functions -static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) -{ - int8_t datarate = DatarateOffsetsAU915[dr][drOffset]; - - if( datarate < 0 ) - { - datarate = DR_0; - } - return datarate; -} - -static uint16_t GetSymbTimeout( int8_t dr ) +static uint32_t GetBandwidth( uint32_t drIndex ) { - uint16_t symbolTimeout = 5; - - switch( dr ) + switch( BandwidthsAU915[drIndex] ) { - case DR_0: // SF10 - BW125 - { - symbolTimeout = 5; - break; - } - case DR_1: // SF9 - BW125 - case DR_2: // SF8 - BW125 - case DR_8: // SF12 - BW500 - case DR_9: // SF11 - BW500 - case DR_10: // SF10 - BW500 - { - symbolTimeout = 8; - break; - } - case DR_3: // SF7 - BW125 - case DR_11: // SF9 - BW500 - { - symbolTimeout = 10; - break; - } - case DR_4: // SF8 - BW500 - case DR_12: // SF8 - BW500 - { - symbolTimeout = 14; - break; - } - case DR_13: // SF7 - BW500 - { - symbolTimeout = 16; - break; - } - } - return symbolTimeout; -} - -static uint32_t GetBandwidth( int8_t dr ) -{ - uint32_t bandwidth = 0; - - if( dr > DR_4 ) - { // LoRa 500 kHz - bandwidth = 2; + default: + case 125000: + return 0; + case 250000: + return 1; + case 500000: + return 2; } - return bandwidth; } // ToDo @@ -189,7 +134,6 @@ static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMas return nbEnabledChannels; } - void RegionAU915GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) @@ -514,12 +458,31 @@ bool RegionAU915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO return adrAckReq; } +void RegionAU915ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ) +{ + double tSymbol = 0.0; + + rxConfigParams->Datarate = datarate; + rxConfigParams->Bandwidth = GetBandwidth( datarate ); + + if( datarate == DR_7 ) + { // FSK + tSymbol = ( 1.0 / ( double )DataratesAU915[datarate] ) * 8.0; // 1 symbol equals 1 byte + } + else + { // LoRa + tSymbol = ( ( double )( 1 << DataratesAU915[datarate] ) / ( double )BandwidthsAU915[datarate] ) * 1e3; + } + + rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols + + rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); +} + bool RegionAU915RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { int8_t dr = rxConfig->Datarate; uint8_t maxPayload = 0; - uint16_t symbTimeout = 0; - uint32_t bandwidth = 0; int8_t phyDr = 0; uint32_t frequency = rxConfig->Frequency; @@ -531,18 +494,18 @@ bool RegionAU915RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { // Apply the datarate offset for RX window 1 - dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + dr = RegionAU915ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = AU915_FIRST_RX1_CHANNEL + ( rxConfig->Channel % 8 ) * AU915_STEPWIDTH_RX1_CHANNEL; } - symbTimeout = GetSymbTimeout( dr ); - bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table phyDr = DataratesAU915[dr]; Radio.SetChannel( frequency ); - Radio.SetRxConfig( MODEM_LORA, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + // Radio configuration + Radio.SetRxConfig( MODEM_LORA, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); if( rxConfig->RepeaterSupport == true ) { @@ -851,3 +814,14 @@ void RegionAU915SetContinuousWave( ContinuousWaveParams_t* continuousWave ) Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } + +uint8_t RegionAU915ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +{ + int8_t datarate = DatarateOffsetsAU915[dr][drOffset]; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} diff --git a/src/mac/region/RegionAU915.h b/src/mac/region/RegionAU915.h index effb7dc03..2e104efc5 100644 --- a/src/mac/region/RegionAU915.h +++ b/src/mac/region/RegionAU915.h @@ -191,6 +191,11 @@ */ static const uint8_t DataratesAU915[] = { 10, 9, 8, 7, 8, 0, 0, 0, 12, 11, 10, 9, 8, 7, 0, 0 }; +/*! + * Bandwidths table definition in Hz + */ +static const uint32_t BandwidthsAU915[] = { 125e3, 125e3, 125e3, 125e3, 500e3, 0, 0, 0, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 0, 0 }; + /*! * Up/Down link data rates offset definition */ @@ -284,6 +289,19 @@ bool RegionAU915ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); */ bool RegionAU915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); +/*! + * Computes the Rx window timeout and offset. + * + * \param [IN] datarate Rx window datarate index to be used + * + * \param [IN] rxError System maximum timing error of the receiver. In milliseconds + * The receiver will turn on in a [-rxError : +rxError] ms + * interval around RxOffset + * + * \param [OUT]rxConfigParams Returns updated WindowTimeout and WindowOffset fields. + */ +void RegionAU915ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ); + /*! * \brief Configuration of the RX windows. * @@ -408,6 +426,19 @@ bool RegionAU915ChannelsRemove( ChannelRemoveParams_t* channelRemove ); */ void RegionAU915SetContinuousWave( ContinuousWaveParams_t* continuousWave ); +/*! + * \brief Computes new datarate according to the given offset + * + * \param [IN] downlinkDwellTime Downlink dwell time configuration. 0: No limit, 1: 400ms + * + * \param [IN] dr Current datarate + * + * \param [IN] drOffset Offset to be applied + * + * \retval newDr Computed datarate. + */ +uint8_t RegionAU915ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ); + /*! \} defgroup REGIONAU915 */ #endif // __REGION_AU915_H__ diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index 41ea1bf73..194c9b78d 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -20,9 +20,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include #include #include +#include -#include "radio.h" -#include "timer.h" +#include "board.h" #include "LoRaMac.h" #include "utilities.h" @@ -31,13 +31,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionCommon.h" #include "RegionCN470.h" - - // Definitions #define CHANNELS_MASK_SIZE 6 - - // Global attributes /*! * LoRaMAC channels @@ -62,34 +58,19 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; */ static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; - - // Static functions -static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) -{ - int8_t datarate = dr - drOffset; - - if( datarate < 0 ) - { - datarate = DR_0; - } - return datarate; -} - -static uint16_t GetSymbTimeout( int8_t dr ) +static uint32_t GetBandwidth( uint32_t drIndex ) { - uint16_t symbolTimeout = 5; - - // For higher datarates, we increase the number of symbols generating a Rx Timeout - if( ( dr == DR_3 ) || ( dr == DR_4 ) ) + switch( BandwidthsCN470[drIndex] ) { - symbolTimeout = 8; - } - else if( dr == DR_5 ) - { - symbolTimeout = 10; + default: + case 125000: + return 0; + case 250000: + return 1; + case 500000: + return 2; } - return symbolTimeout; } static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) @@ -136,8 +117,6 @@ static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMas return nbEnabledChannels; } - - void RegionCN470GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) @@ -427,11 +406,31 @@ bool RegionCN470AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO return adrAckReq; } +void RegionCN470ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ) +{ + double tSymbol = 0.0; + + rxConfigParams->Datarate = datarate; + rxConfigParams->Bandwidth = GetBandwidth( datarate ); + + if( datarate == DR_7 ) + { // FSK + tSymbol = ( 1.0 / ( double )DataratesCN470[datarate] ) * 8.0; // 1 symbol equals 1 byte + } + else + { // LoRa + tSymbol = ( ( double )( 1 << DataratesCN470[datarate] ) / ( double )BandwidthsCN470[datarate] ) * 1e3; + } + + rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols + + rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); +} + bool RegionCN470RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { int8_t dr = rxConfig->Datarate; uint8_t maxPayload = 0; - uint16_t symbTimeout = 0; int8_t phyDr = 0; uint32_t frequency = rxConfig->Frequency; @@ -443,17 +442,18 @@ bool RegionCN470RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { // Apply the datarate offset for RX window 1 - dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + dr = RegionCN470ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = CN470_FIRST_RX1_CHANNEL + ( rxConfig->Channel % 48 ) * CN470_STEPWIDTH_RX1_CHANNEL; } - symbTimeout = GetSymbTimeout( dr ); + // Read the physical datarate from the datarates table phyDr = DataratesCN470[dr]; Radio.SetChannel( frequency ); - Radio.SetRxConfig( MODEM_LORA, 0, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + // Radio configuration + Radio.SetRxConfig( MODEM_LORA, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); if( rxConfig->RepeaterSupport == true ) { @@ -751,3 +751,14 @@ void RegionCN470SetContinuousWave( ContinuousWaveParams_t* continuousWave ) Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } + +uint8_t RegionCN470ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +{ + int8_t datarate = dr - drOffset; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} diff --git a/src/mac/region/RegionCN470.h b/src/mac/region/RegionCN470.h index 3784b9c67..1de7111d2 100644 --- a/src/mac/region/RegionCN470.h +++ b/src/mac/region/RegionCN470.h @@ -191,6 +191,11 @@ */ static const uint8_t DataratesCN470[] = { 12, 11, 10, 9, 8, 7 }; +/*! + * Bandwidths table definition in Hz + */ +static const uint32_t BandwidthsCN470[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3 }; + /*! * Maximum payload with respect to the datarate index. Cannot operate with repeater. */ @@ -272,6 +277,19 @@ bool RegionCN470ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); */ bool RegionCN470AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); +/*! + * Computes the Rx window timeout and offset. + * + * \param [IN] datarate Rx window datarate index to be used + * + * \param [IN] rxError System maximum timing error of the receiver. In milliseconds + * The receiver will turn on in a [-rxError : +rxError] ms + * interval around RxOffset + * + * \param [OUT]rxConfigParams Returns updated WindowTimeout and WindowOffset fields. + */ +void RegionCN470ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ); + /*! * \brief Configuration of the RX windows. * @@ -396,6 +414,19 @@ bool RegionCN470ChannelsRemove( ChannelRemoveParams_t* channelRemove ); */ void RegionCN470SetContinuousWave( ContinuousWaveParams_t* continuousWave ); +/*! + * \brief Computes new datarate according to the given offset + * + * \param [IN] downlinkDwellTime Downlink dwell time configuration. 0: No limit, 1: 400ms + * + * \param [IN] dr Current datarate + * + * \param [IN] drOffset Offset to be applied + * + * \retval newDr Computed datarate. + */ +uint8_t RegionCN470ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ); + /*! \} defgroup REGIONCN470 */ #endif // __REGION_CN470_H__ diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index a53b2e63c..baedcb815 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -20,9 +20,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include #include #include +#include -#include "radio.h" -#include "timer.h" +#include "board.h" #include "LoRaMac.h" #include "utilities.h" @@ -31,13 +31,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionCommon.h" #include "RegionCN779.h" - - // Definitions #define CHANNELS_MASK_SIZE 1 - - // Global attributes /*! * LoRaMAC channels @@ -62,49 +58,19 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; */ static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; - - // Static functions -static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) -{ - int8_t datarate = dr - drOffset; - - if( datarate < 0 ) - { - datarate = DR_0; - } - return datarate; -} - -static uint16_t GetSymbTimeout( int8_t dr ) +static uint32_t GetBandwidth( uint32_t drIndex ) { - uint16_t symbolTimeout = 5; - - // For higher datarates, we increase the number of symbols generating a Rx Timeout - if( ( dr == DR_3 ) || ( dr == DR_4 ) ) + switch( BandwidthsCN779[drIndex] ) { - symbolTimeout = 8; - } - else if( dr == DR_5 ) - { - symbolTimeout = 10; - } - else if( dr == DR_6 ) - { - symbolTimeout = 14; - } - return symbolTimeout; -} - -static uint32_t GetBandwidth( int8_t dr ) -{ - uint32_t bandwidth = 0; - - if( dr == DR_6 ) - { - bandwidth = 1; + default: + case 125000: + return 0; + case 250000: + return 1; + case 500000: + return 2; } - return bandwidth; } static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) @@ -173,8 +139,6 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t return nbEnabledChannels; } - - void RegionCN779GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) @@ -488,14 +452,33 @@ bool RegionCN779AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO return adrAckReq; } +void RegionCN779ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ) +{ + double tSymbol = 0.0; + + rxConfigParams->Datarate = datarate; + rxConfigParams->Bandwidth = GetBandwidth( datarate ); + + if( datarate == DR_7 ) + { // FSK + tSymbol = ( 1.0 / ( double )DataratesCN779[datarate] ) * 8.0; // 1 symbol equals 1 byte + } + else + { // LoRa + tSymbol = ( ( double )( 1 << DataratesCN779[datarate] ) / ( double )BandwidthsCN779[datarate] ) * 1e3; + } + + rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols + + rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); +} + // ToDo get phy datarate afterwards bool RegionCN779RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { RadioModems_t modem; int8_t dr = rxConfig->Datarate; uint8_t maxPayload = 0; - uint16_t symbTimeout = 0; - uint32_t bandwidth = 0; int8_t phyDr = 0; uint32_t frequency = rxConfig->Frequency; @@ -507,7 +490,7 @@ bool RegionCN779RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { // Apply the datarate offset for RX window 1 - dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + dr = RegionCN779ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = Channels[rxConfig->Channel].Frequency; // Apply the alternative RX 1 window frequency, if it is available @@ -516,22 +499,22 @@ bool RegionCN779RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) frequency = Channels[rxConfig->Channel].Rx1Frequency; } } - symbTimeout = GetSymbTimeout( dr ); - bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table phyDr = DataratesCN779[dr]; Radio.SetChannel( frequency ); + // Radio configuration if( dr == DR_7 ) { modem = MODEM_FSK; - Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, 0, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); } else { modem = MODEM_LORA; - Radio.SetRxConfig( modem, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); } if( rxConfig->RepeaterSupport == true ) @@ -999,3 +982,14 @@ void RegionCN779SetContinuousWave( ContinuousWaveParams_t* continuousWave ) Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } + +uint8_t RegionCN779ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +{ + int8_t datarate = dr - drOffset; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} diff --git a/src/mac/region/RegionCN779.h b/src/mac/region/RegionCN779.h index 0cfb66075..c5b65e48b 100644 --- a/src/mac/region/RegionCN779.h +++ b/src/mac/region/RegionCN779.h @@ -210,6 +210,11 @@ */ static const uint8_t DataratesCN779[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; +/*! + * Bandwidths table definition in Hz + */ +static const uint32_t BandwidthsCN779[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3, 250e3, 0 }; + /*! * Maximum payload with respect to the datarate index. Cannot operate with repeater. */ @@ -291,6 +296,19 @@ bool RegionCN779ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); */ bool RegionCN779AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); +/*! + * Computes the Rx window timeout and offset. + * + * \param [IN] datarate Rx window datarate index to be used + * + * \param [IN] rxError System maximum timing error of the receiver. In milliseconds + * The receiver will turn on in a [-rxError : +rxError] ms + * interval around RxOffset + * + * \param [OUT]rxConfigParams Returns updated WindowTimeout and WindowOffset fields. + */ +void RegionCN779ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ); + /*! * \brief Configuration of the RX windows. * @@ -415,6 +433,19 @@ bool RegionCN779ChannelsRemove( ChannelRemoveParams_t* channelRemove ); */ void RegionCN779SetContinuousWave( ContinuousWaveParams_t* continuousWave ); +/*! + * \brief Computes new datarate according to the given offset + * + * \param [IN] downlinkDwellTime Downlink dwell time configuration. 0: No limit, 1: 400ms + * + * \param [IN] dr Current datarate + * + * \param [IN] drOffset Offset to be applied + * + * \retval newDr Computed datarate. + */ +uint8_t RegionCN779ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ); + /*! \} defgroup REGIONCN779 */ #endif // __REGION_CN779_H__ diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index 829ea4c6c..62dcceb98 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -20,9 +20,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include #include #include +#include -#include "radio.h" -#include "timer.h" +#include "board.h" #include "LoRaMac.h" #include "utilities.h" @@ -31,13 +31,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionCommon.h" #include "RegionEU433.h" - - // Definitions #define CHANNELS_MASK_SIZE 1 - - // Global attributes /*! * LoRaMAC channels @@ -62,49 +58,19 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; */ static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; - - // Static functions -static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) -{ - int8_t datarate = dr - drOffset; - - if( datarate < 0 ) - { - datarate = DR_0; - } - return datarate; -} - -static uint16_t GetSymbTimeout( int8_t dr ) +static uint32_t GetBandwidth( uint32_t drIndex ) { - uint16_t symbolTimeout = 5; - - // For higher datarates, we increase the number of symbols generating a Rx Timeout - if( ( dr == DR_3 ) || ( dr == DR_4 ) ) + switch( BandwidthsEU433[drIndex] ) { - symbolTimeout = 8; - } - else if( dr == DR_5 ) - { - symbolTimeout = 10; - } - else if( dr == DR_6 ) - { - symbolTimeout = 14; - } - return symbolTimeout; -} - -static uint32_t GetBandwidth( int8_t dr ) -{ - uint32_t bandwidth = 0; - - if( dr == DR_6 ) - { - bandwidth = 1; + default: + case 125000: + return 0; + case 250000: + return 1; + case 500000: + return 2; } - return bandwidth; } static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) @@ -173,8 +139,6 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t return nbEnabledChannels; } - - void RegionEU433GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) @@ -488,14 +452,33 @@ bool RegionEU433AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO return adrAckReq; } +void RegionEU433ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ) +{ + double tSymbol = 0.0; + + rxConfigParams->Datarate = datarate; + rxConfigParams->Bandwidth = GetBandwidth( datarate ); + + if( datarate == DR_7 ) + { // FSK + tSymbol = ( 1.0 / ( double )DataratesEU433[datarate] ) * 8.0; // 1 symbol equals 1 byte + } + else + { // LoRa + tSymbol = ( ( double )( 1 << DataratesEU433[datarate] ) / ( double )BandwidthsEU433[datarate] ) * 1e3; + } + + rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols + + rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); +} + // ToDo get phy datarate afterwards bool RegionEU433RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { RadioModems_t modem; int8_t dr = rxConfig->Datarate; uint8_t maxPayload = 0; - uint16_t symbTimeout = 0; - uint32_t bandwidth = 0; int8_t phyDr = 0; uint32_t frequency = rxConfig->Frequency; @@ -507,7 +490,7 @@ bool RegionEU433RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { // Apply the datarate offset for RX window 1 - dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + dr = RegionEU433ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = Channels[rxConfig->Channel].Frequency; // Apply the alternative RX 1 window frequency, if it is available @@ -516,22 +499,22 @@ bool RegionEU433RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) frequency = Channels[rxConfig->Channel].Rx1Frequency; } } - symbTimeout = GetSymbTimeout( dr ); - bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table phyDr = DataratesEU433[dr]; Radio.SetChannel( frequency ); + // Radio configuration if( dr == DR_7 ) { modem = MODEM_FSK; - Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, 0, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); } else { modem = MODEM_LORA; - Radio.SetRxConfig( modem, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); } if( rxConfig->RepeaterSupport == true ) @@ -999,3 +982,14 @@ void RegionEU433SetContinuousWave( ContinuousWaveParams_t* continuousWave ) Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } + +uint8_t RegionEU433ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +{ + int8_t datarate = dr - drOffset; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} diff --git a/src/mac/region/RegionEU433.h b/src/mac/region/RegionEU433.h index 9f75155e2..79768d14f 100644 --- a/src/mac/region/RegionEU433.h +++ b/src/mac/region/RegionEU433.h @@ -211,6 +211,11 @@ */ static const uint8_t DataratesEU433[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; +/*! + * Bandwidths table definition in Hz + */ +static const uint32_t BandwidthsEU433[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3, 250e3, 0 }; + /*! * Maximum payload with respect to the datarate index. Cannot operate with repeater. */ @@ -293,13 +298,24 @@ bool RegionEU433ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); bool RegionEU433AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); /*! - * \brief TX configuration. + * Computes the Rx window timeout and offset. * - * \param [IN] txConfig Pointer to the function parameters. + * \param [IN] datarate Rx window datarate index to be used * - * \param [OUT] txPower The tx power index which was set. + * \param [IN] rxError System maximum timing error of the receiver. In milliseconds + * The receiver will turn on in a [-rxError : +rxError] ms + * interval around RxOffset * - * \param [OUT] txTimeOnAir The time-on-air of the frame. + * \param [OUT]rxConfigParams Returns updated WindowTimeout and WindowOffset fields. + */ +void RegionEU433ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ); + +/*! + * \brief Configuration of the RX windows. + * + * \param [IN] rxConfig Pointer to the function parameters. + * + * \param [OUT] datarate The datarate index which was set. * * \retval Returns true, if the configuration was applied successfully. */ @@ -418,6 +434,19 @@ bool RegionEU433ChannelsRemove( ChannelRemoveParams_t* channelRemove ); */ void RegionEU433SetContinuousWave( ContinuousWaveParams_t* continuousWave ); +/*! + * \brief Computes new datarate according to the given offset + * + * \param [IN] downlinkDwellTime Downlink dwell time configuration. 0: No limit, 1: 400ms + * + * \param [IN] dr Current datarate + * + * \param [IN] drOffset Offset to be applied + * + * \retval newDr Computed datarate. + */ +uint8_t RegionEU433ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ); + /*! \} defgroup REGIONEU433 */ #endif // __REGION_EU433_H__ diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index ab5a1ea98..a23974d9d 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -20,9 +20,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include #include #include +#include -#include "radio.h" -#include "timer.h" +#include "board.h" #include "LoRaMac.h" #include "utilities.h" @@ -31,13 +31,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionCommon.h" #include "RegionEU868.h" - - // Definitions #define CHANNELS_MASK_SIZE 1 - - // Global attributes /*! * LoRaMAC channels @@ -66,49 +62,19 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; */ static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; - - // Static functions -static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) +static uint32_t GetBandwidth( uint32_t drIndex ) { - int8_t datarate = dr - drOffset; - - if( datarate < 0 ) - { - datarate = DR_0; - } - return datarate; -} - -static uint16_t GetSymbTimeout( int8_t dr ) -{ - uint16_t symbolTimeout = 5; - - // For higher datarates, we increase the number of symbols generating a Rx Timeout - if( ( dr == DR_3 ) || ( dr == DR_4 ) ) - { - symbolTimeout = 8; - } - else if( dr == DR_5 ) - { - symbolTimeout = 10; - } - else if( dr == DR_6 ) - { - symbolTimeout = 14; - } - return symbolTimeout; -} - -static uint32_t GetBandwidth( int8_t dr ) -{ - uint32_t bandwidth = 0; - - if( dr == DR_6 ) + switch( BandwidthsEU868[drIndex] ) { - bandwidth = 1; + default: + case 125000: + return 0; + case 250000: + return 1; + case 500000: + return 2; } - return bandwidth; } static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) @@ -202,8 +168,6 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t return nbEnabledChannels; } - - void RegionEU868GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) @@ -517,14 +481,33 @@ bool RegionEU868AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO return adrAckReq; } +void RegionEU868ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ) +{ + double tSymbol = 0.0; + + rxConfigParams->Datarate = datarate; + rxConfigParams->Bandwidth = GetBandwidth( datarate ); + + if( datarate == DR_7 ) + { // FSK + tSymbol = ( 1.0 / ( double )DataratesEU868[datarate] ) * 8.0; // 1 symbol equals 1 byte + } + else + { // LoRa + tSymbol = ( ( double )( 1 << DataratesEU868[datarate] ) / ( double )BandwidthsEU868[datarate] ) * 1e3; + } + + rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols + + rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); +} + // ToDo get phy datarate afterwards bool RegionEU868RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { RadioModems_t modem; int8_t dr = rxConfig->Datarate; uint8_t maxPayload = 0; - uint16_t symbTimeout = 0; - uint32_t bandwidth = 0; int8_t phyDr = 0; uint32_t frequency = rxConfig->Frequency; @@ -536,7 +519,7 @@ bool RegionEU868RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { // Apply the datarate offset for RX window 1 - dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + dr = RegionEU868ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = Channels[rxConfig->Channel].Frequency; // Apply the alternative RX 1 window frequency, if it is available @@ -545,22 +528,22 @@ bool RegionEU868RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) frequency = Channels[rxConfig->Channel].Rx1Frequency; } } - symbTimeout = GetSymbTimeout( dr ); - bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table phyDr = DataratesEU868[dr]; Radio.SetChannel( frequency ); + // Radio configuration if( dr == DR_7 ) { modem = MODEM_FSK; - Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, 0, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); } else { modem = MODEM_LORA; - Radio.SetRxConfig( modem, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); } if( rxConfig->RepeaterSupport == true ) @@ -571,6 +554,7 @@ bool RegionEU868RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { maxPayload = MaxPayloadOfDatarateEU868[dr]; } + Radio.SetMaxPayloadLength( modem, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); *datarate = (uint8_t) dr; @@ -600,6 +584,7 @@ bool RegionEU868TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime modem = MODEM_LORA; Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); } + // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); // Get the time-on-air of the next tx frame @@ -1029,3 +1014,14 @@ void RegionEU868SetContinuousWave( ContinuousWaveParams_t* continuousWave ) Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } + +uint8_t RegionEU868ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +{ + int8_t datarate = dr - drOffset; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} diff --git a/src/mac/region/RegionEU868.h b/src/mac/region/RegionEU868.h index 9f24314f3..d28e9861b 100644 --- a/src/mac/region/RegionEU868.h +++ b/src/mac/region/RegionEU868.h @@ -232,6 +232,11 @@ */ static const uint8_t DataratesEU868[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; +/*! + * Bandwidths table definition in Hz + */ +static const uint32_t BandwidthsEU868[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3, 250e3, 0 }; + /*! * Maximum payload with respect to the datarate index. Cannot operate with repeater. */ @@ -314,6 +319,19 @@ bool RegionEU868ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); */ bool RegionEU868AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); +/*! + * Computes the Rx window timeout and offset. + * + * \param [IN] datarate Rx window datarate index to be used + * + * \param [IN] rxError System maximum timing error of the receiver. In milliseconds + * The receiver will turn on in a [-rxError : +rxError] ms + * interval around RxOffset + * + * \param [OUT]rxConfigParams Returns updated WindowTimeout and WindowOffset fields. + */ +void RegionEU868ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ); + /*! * \brief Configuration of the RX windows. * @@ -438,6 +456,19 @@ bool RegionEU868ChannelsRemove( ChannelRemoveParams_t* channelRemove ); */ void RegionEU868SetContinuousWave( ContinuousWaveParams_t* continuousWave ); +/*! + * \brief Computes new datarate according to the given offset + * + * \param [IN] downlinkDwellTime Downlink dwell time configuration. 0: No limit, 1: 400ms + * + * \param [IN] dr Current datarate + * + * \param [IN] drOffset Offset to be applied + * + * \retval newDr Computed datarate. + */ +uint8_t RegionEU868ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ); + /*! \} defgroup REGIONEU868 */ #endif // __REGION_EU868_H__ diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index 4d22f4ec1..5e39886da 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -20,9 +20,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include #include #include +#include -#include "radio.h" -#include "timer.h" +#include "board.h" #include "LoRaMac.h" #include "utilities.h" @@ -31,13 +31,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionCommon.h" #include "RegionIN865.h" - - // Definitions #define CHANNELS_MASK_SIZE 1 - - // Global attributes /*! * LoRaMAC channels @@ -62,43 +58,19 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; */ static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; - - // Static functions -static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) -{ - // Apply offset formula - return MIN( DR_5, MAX( DR_0, dr - EffectiveRx1DrOffsetIN865[dr] ) ); -} - -static uint16_t GetSymbTimeout( int8_t dr ) +static uint32_t GetBandwidth( uint32_t drIndex ) { - uint16_t symbolTimeout = 5; - - if( ( dr == DR_3 ) || ( dr == DR_4 ) ) - { - symbolTimeout = 8; - } - else if( dr == DR_5 ) - { - symbolTimeout = 10; - } - else if( dr == DR_6 ) + switch( BandwidthsIN865[drIndex] ) { - symbolTimeout = 14; - } - return symbolTimeout; -} - -static uint32_t GetBandwidth( int8_t dr ) -{ - uint32_t bandwidth = 0; - - if( dr == DR_6 ) - { - bandwidth = 1; + default: + case 125000: + return 0; + case 250000: + return 1; + case 500000: + return 2; } - return bandwidth; } static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) @@ -167,8 +139,6 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t return nbEnabledChannels; } - - void RegionIN865GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) @@ -482,14 +452,33 @@ bool RegionIN865AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO return adrAckReq; } +void RegionIN865ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ) +{ + double tSymbol = 0.0; + + rxConfigParams->Datarate = datarate; + rxConfigParams->Bandwidth = GetBandwidth( datarate ); + + if( datarate == DR_7 ) + { // FSK + tSymbol = ( 1.0 / ( double )DataratesIN865[datarate] ) * 8.0; // 1 symbol equals 1 byte + } + else + { // LoRa + tSymbol = ( ( double )( 1 << DataratesIN865[datarate] ) / ( double )BandwidthsIN865[datarate] ) * 1e3; + } + + rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols + + rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); +} + // ToDo get phy datarate afterwards bool RegionIN865RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { RadioModems_t modem; int8_t dr = rxConfig->Datarate; uint8_t maxPayload = 0; - uint16_t symbTimeout = 0; - uint32_t bandwidth = 0; int8_t phyDr = 0; uint32_t frequency = rxConfig->Frequency; @@ -501,7 +490,7 @@ bool RegionIN865RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { // Apply the datarate offset for RX window 1 - dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + dr = RegionIN865ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = Channels[rxConfig->Channel].Frequency; // Apply the alternative RX 1 window frequency, if it is available @@ -510,22 +499,22 @@ bool RegionIN865RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) frequency = Channels[rxConfig->Channel].Rx1Frequency; } } - symbTimeout = GetSymbTimeout( dr ); - bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table phyDr = DataratesIN865[dr]; Radio.SetChannel( frequency ); + // Radio configuration if( dr == DR_7 ) { modem = MODEM_FSK; - Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, 0, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); } else { modem = MODEM_LORA; - Radio.SetRxConfig( modem, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); } if( rxConfig->RepeaterSupport == true ) @@ -994,3 +983,9 @@ void RegionIN865SetContinuousWave( ContinuousWaveParams_t* continuousWave ) Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } + +uint8_t RegionIN865ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +{ + // Apply offset formula + return MIN( DR_5, MAX( DR_0, dr - EffectiveRx1DrOffsetIN865[drOffset] ) ); +} diff --git a/src/mac/region/RegionIN865.h b/src/mac/region/RegionIN865.h index 6fd85fb5f..0779e72ce 100644 --- a/src/mac/region/RegionIN865.h +++ b/src/mac/region/RegionIN865.h @@ -208,6 +208,11 @@ */ static const uint8_t DataratesIN865[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; +/*! + * Bandwidths table definition in Hz + */ +static const uint32_t BandwidthsIN865[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3, 250e3, 0 }; + /*! * Maximum payload with respect to the datarate index. Cannot operate with repeater. */ @@ -292,6 +297,19 @@ bool RegionIN865ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); */ bool RegionIN865AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); +/*! + * Computes the Rx window timeout and offset. + * + * \param [IN] datarate Rx window datarate index to be used + * + * \param [IN] rxError System maximum timing error of the receiver. In milliseconds + * The receiver will turn on in a [-rxError : +rxError] ms + * interval around RxOffset + * + * \param [OUT]rxConfigParams Returns updated WindowTimeout and WindowOffset fields. + */ +void RegionIN865ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ); + /*! * \brief Configuration of the RX windows. * @@ -416,6 +434,19 @@ bool RegionIN865ChannelsRemove( ChannelRemoveParams_t* channelRemove ); */ void RegionIN865SetContinuousWave( ContinuousWaveParams_t* continuousWave ); +/*! + * \brief Computes new datarate according to the given offset + * + * \param [IN] downlinkDwellTime Downlink dwell time configuration. 0: No limit, 1: 400ms + * + * \param [IN] dr Current datarate + * + * \param [IN] drOffset Offset to be applied + * + * \retval newDr Computed datarate. + */ +uint8_t RegionIN865ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ); + /*! \} defgroup REGIONIN865 */ #endif // __REGION_IN865_H__ diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 42c231c7c..5eef70c5d 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -20,9 +20,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include #include #include +#include -#include "radio.h" -#include "timer.h" +#include "board.h" #include "LoRaMac.h" #include "utilities.h" @@ -31,13 +31,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionCommon.h" #include "RegionKR920.h" - - // Definitions #define CHANNELS_MASK_SIZE 1 - - // Global attributes /*! * LoRaMAC channels @@ -62,38 +58,19 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; */ static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; - - // Static functions -static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) +static uint32_t GetBandwidth( uint32_t drIndex ) { - int8_t datarate = dr - drOffset; - if( datarate < 0 ) + switch( BandwidthsKR920[drIndex] ) { - datarate = DR_0; - } - return datarate; -} - -static uint16_t GetSymbTimeout( int8_t dr ) -{ - uint16_t symbolTimeout = 5; - - if( ( dr == DR_3 ) || ( dr == DR_4 ) ) - { - symbolTimeout = 8; - } - else if( dr == DR_5 ) - { - symbolTimeout = 10; + default: + case 125000: + return 0; + case 250000: + return 1; + case 500000: + return 2; } - return symbolTimeout; -} - -static uint32_t GetBandwidth( int8_t dr ) -{ - // All channels use BW = 0 - return 0; } static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) @@ -171,8 +148,6 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t return nbEnabledChannels; } - - void RegionKR920GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) @@ -482,13 +457,32 @@ bool RegionKR920AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO return adrAckReq; } +void RegionKR920ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ) +{ + double tSymbol = 0.0; + + rxConfigParams->Datarate = datarate; + rxConfigParams->Bandwidth = GetBandwidth( datarate ); + + if( datarate == DR_7 ) + { // FSK + tSymbol = ( 1.0 / ( double )DataratesKR920[datarate] ) * 8.0; // 1 symbol equals 1 byte + } + else + { // LoRa + tSymbol = ( ( double )( 1 << DataratesKR920[datarate] ) / ( double )BandwidthsKR920[datarate] ) * 1e3; + } + + rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols + + rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); +} + // ToDo get phy datarate afterwards bool RegionKR920RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { int8_t dr = rxConfig->Datarate; uint8_t maxPayload = 0; - uint16_t symbTimeout = 0; - uint32_t bandwidth = 0; int8_t phyDr = 0; uint32_t frequency = rxConfig->Frequency; @@ -500,7 +494,7 @@ bool RegionKR920RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { // Apply the datarate offset for RX window 1 - dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + dr = RegionKR920ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = Channels[rxConfig->Channel].Frequency; // Apply the alternative RX 1 window frequency, if it is available @@ -509,15 +503,14 @@ bool RegionKR920RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) frequency = Channels[rxConfig->Channel].Rx1Frequency; } } - symbTimeout = GetSymbTimeout( dr ); - bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table phyDr = DataratesKR920[dr]; Radio.SetChannel( frequency ); // Radio configuration - Radio.SetRxConfig( MODEM_LORA, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + Radio.SetRxConfig( MODEM_LORA, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); maxPayload = MaxPayloadOfDatarateKR920[dr]; Radio.SetMaxPayloadLength( MODEM_LORA, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); @@ -984,3 +977,14 @@ void RegionKR920SetContinuousWave( ContinuousWaveParams_t* continuousWave ) Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } + +uint8_t RegionKR920ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +{ + int8_t datarate = dr - drOffset; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} diff --git a/src/mac/region/RegionKR920.h b/src/mac/region/RegionKR920.h index 7cad3927e..6ee16ac39 100644 --- a/src/mac/region/RegionKR920.h +++ b/src/mac/region/RegionKR920.h @@ -218,6 +218,11 @@ */ static const uint8_t DataratesKR920[] = { 12, 11, 10, 9, 8, 7 }; +/*! + * Bandwidths table definition in Hz + */ +static const uint32_t BandwidthsKR920[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3 }; + /*! * Maximum payload with respect to the datarate index. Can operate with and without a repeater. */ @@ -295,6 +300,19 @@ bool RegionKR920ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); */ bool RegionKR920AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); +/*! + * Computes the Rx window timeout and offset. + * + * \param [IN] datarate Rx window datarate index to be used + * + * \param [IN] rxError System maximum timing error of the receiver. In milliseconds + * The receiver will turn on in a [-rxError : +rxError] ms + * interval around RxOffset + * + * \param [OUT]rxConfigParams Returns updated WindowTimeout and WindowOffset fields. + */ +void RegionKR920ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ); + /*! * \brief Configuration of the RX windows. * @@ -419,6 +437,19 @@ bool RegionKR920ChannelsRemove( ChannelRemoveParams_t* channelRemove ); */ void RegionKR920SetContinuousWave( ContinuousWaveParams_t* continuousWave ); +/*! + * \brief Computes new datarate according to the given offset + * + * \param [IN] downlinkDwellTime Downlink dwell time configuration. 0: No limit, 1: 400ms + * + * \param [IN] dr Current datarate + * + * \param [IN] drOffset Offset to be applied + * + * \retval newDr Computed datarate. + */ +uint8_t RegionKR920ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ); + /*! \} defgroup REGIONKR920 */ #endif // __REGION_KR920_H__ diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index 92795c135..e249638af 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -20,9 +20,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include #include #include +#include -#include "radio.h" -#include "timer.h" +#include "board.h" #include "LoRaMac.h" #include "utilities.h" @@ -31,13 +31,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionCommon.h" #include "RegionUS915-Hybrid.h" - - // Definitions #define CHANNELS_MASK_SIZE 6 - - // Global attributes /*! * LoRaMAC channels @@ -67,70 +63,19 @@ static uint16_t ChannelsMaskRemaining[CHANNELS_MASK_SIZE]; */ static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; - - // Static functions -static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) -{ - int8_t datarate = DatarateOffsetsUS915_HYBRID[dr][drOffset]; - - if( datarate < 0 ) - { - datarate = DR_0; - } - return datarate; -} - -static uint16_t GetSymbTimeout( int8_t dr ) +static uint32_t GetBandwidth( uint32_t drIndex ) { - uint16_t symbolTimeout = 5; - - switch( dr ) + switch( BandwidthsUS915_HYBRID[drIndex] ) { - case DR_0: // SF10 - BW125 - { - symbolTimeout = 5; - break; - } - case DR_1: // SF9 - BW125 - case DR_2: // SF8 - BW125 - case DR_8: // SF12 - BW500 - case DR_9: // SF11 - BW500 - case DR_10: // SF10 - BW500 - { - symbolTimeout = 8; - break; - } - case DR_3: // SF7 - BW125 - case DR_11: // SF9 - BW500 - { - symbolTimeout = 10; - break; - } - case DR_4: // SF8 - BW500 - case DR_12: // SF8 - BW500 - { - symbolTimeout = 14; - break; - } - case DR_13: // SF7 - BW500 - { - symbolTimeout = 16; - break; - } - } - return symbolTimeout; -} - -static uint32_t GetBandwidth( int8_t dr ) -{ - uint32_t bandwidth = 0; - - if( dr > DR_4 ) - { // LoRa 500 kHz - bandwidth = 2; + default: + case 125000: + return 0; + case 250000: + return 1; + case 500000: + return 2; } - return bandwidth; } static void ReenableChannels( uint16_t mask, uint16_t* channelsMask ) @@ -277,7 +222,6 @@ static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMas return nbEnabledChannels; } - void RegionUS915HybridGetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) @@ -599,12 +543,31 @@ bool RegionUS915HybridAdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* return adrAckReq; } +void RegionUS915HybridComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ) +{ + double tSymbol = 0.0; + + rxConfigParams->Datarate = datarate; + rxConfigParams->Bandwidth = GetBandwidth( datarate ); + + if( datarate == DR_7 ) + { // FSK + tSymbol = ( 1.0 / ( double )DataratesUS915_HYBRID[datarate] ) * 8.0; // 1 symbol equals 1 byte + } + else + { // LoRa + tSymbol = ( ( double )( 1 << DataratesUS915_HYBRID[datarate] ) / ( double )BandwidthsUS915_HYBRID[datarate] ) * 1e3; + } + + rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols + + rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); +} + bool RegionUS915HybridRxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { int8_t dr = rxConfig->Datarate; uint8_t maxPayload = 0; - uint16_t symbTimeout = 0; - uint32_t bandwidth = 0; int8_t phyDr = 0; uint32_t frequency = rxConfig->Frequency; @@ -616,18 +579,18 @@ bool RegionUS915HybridRxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { // Apply the datarate offset for RX window 1 - dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + dr = RegionUS915HybridApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = US915_HYBRID_FIRST_RX1_CHANNEL + ( rxConfig->Channel % 8 ) * US915_HYBRID_STEPWIDTH_RX1_CHANNEL; } - symbTimeout = GetSymbTimeout( dr ); - bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table phyDr = DataratesUS915_HYBRID[dr]; Radio.SetChannel( frequency ); - Radio.SetRxConfig( MODEM_LORA, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + // Radio configuration + Radio.SetRxConfig( MODEM_LORA, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); if( rxConfig->RepeaterSupport == true ) { @@ -942,3 +905,14 @@ void RegionUS915HybridSetContinuousWave( ContinuousWaveParams_t* continuousWave Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } + +uint8_t RegionUS915HybridApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +{ + int8_t datarate = DatarateOffsetsUS915_HYBRID[dr][drOffset]; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} diff --git a/src/mac/region/RegionUS915-Hybrid.h b/src/mac/region/RegionUS915-Hybrid.h index 7f84f0d19..749fd1d06 100644 --- a/src/mac/region/RegionUS915-Hybrid.h +++ b/src/mac/region/RegionUS915-Hybrid.h @@ -191,6 +191,11 @@ */ static const uint8_t DataratesUS915_HYBRID[] = { 10, 9, 8, 7, 8, 0, 0, 0, 12, 11, 10, 9, 8, 7, 0, 0 }; +/*! + * Bandwidths table definition in Hz + */ +static const uint32_t BandwidthsUS915_HYBRID[] = { 125e3, 125e3, 125e3, 125e3, 500e3, 0, 0, 0, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 0, 0 }; + /*! * Up/Down link data rates offset definition */ @@ -284,6 +289,19 @@ bool RegionUS915HybridChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); */ bool RegionUS915HybridAdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); +/*! + * Computes the Rx window timeout and offset. + * + * \param [IN] datarate Rx window datarate index to be used + * + * \param [IN] rxError System maximum timing error of the receiver. In milliseconds + * The receiver will turn on in a [-rxError : +rxError] ms + * interval around RxOffset + * + * \param [OUT]rxConfigParams Returns updated WindowTimeout and WindowOffset fields. + */ +void RegionUS915HybridComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ); + /*! * \brief Configuration of the RX windows. * @@ -408,6 +426,19 @@ bool RegionUS915HybridChannelsRemove( ChannelRemoveParams_t* channelRemove ); */ void RegionUS915HybridSetContinuousWave( ContinuousWaveParams_t* continuousWave ); +/*! + * \brief Computes new datarate according to the given offset + * + * \param [IN] downlinkDwellTime Downlink dwell time configuration. 0: No limit, 1: 400ms + * + * \param [IN] dr Current datarate + * + * \param [IN] drOffset Offset to be applied + * + * \retval newDr Computed datarate. + */ +uint8_t RegionUS915HybridApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ); + /*! \} defgroup REGIONUS915HYB */ #endif // __REGION_US915_HYBRID_H__ diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 860848cd7..721dff8e5 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -20,9 +20,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include #include #include +#include -#include "radio.h" -#include "timer.h" +#include "board.h" #include "LoRaMac.h" #include "utilities.h" @@ -31,13 +31,9 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionCommon.h" #include "RegionUS915.h" - - // Definitions #define CHANNELS_MASK_SIZE 6 - - // Global attributes /*! * LoRaMAC channels @@ -67,70 +63,19 @@ static uint16_t ChannelsMaskRemaining[CHANNELS_MASK_SIZE]; */ static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; - - // Static functions -static uint8_t ApplyDrOffset( int8_t dr, int8_t drOffset ) -{ - int8_t datarate = DatarateOffsetsUS915[dr][drOffset]; - - if( datarate < 0 ) - { - datarate = DR_0; - } - return datarate; -} - -static uint16_t GetSymbTimeout( int8_t dr ) +static uint32_t GetBandwidth( uint32_t drIndex ) { - uint16_t symbolTimeout = 5; - - switch( dr ) + switch( BandwidthsUS915[drIndex] ) { - case DR_0: // SF10 - BW125 - { - symbolTimeout = 5; - break; - } - case DR_1: // SF9 - BW125 - case DR_2: // SF8 - BW125 - case DR_8: // SF12 - BW500 - case DR_9: // SF11 - BW500 - case DR_10: // SF10 - BW500 - { - symbolTimeout = 8; - break; - } - case DR_3: // SF7 - BW125 - case DR_11: // SF9 - BW500 - { - symbolTimeout = 10; - break; - } - case DR_4: // SF8 - BW500 - case DR_12: // SF8 - BW500 - { - symbolTimeout = 14; - break; - } - case DR_13: // SF7 - BW500 - { - symbolTimeout = 16; - break; - } - } - return symbolTimeout; -} - -static uint32_t GetBandwidth( int8_t dr ) -{ - uint32_t bandwidth = 0; - - if( dr > DR_4 ) - { // LoRa 500 kHz - bandwidth = 2; + default: + case 125000: + return 0; + case 250000: + return 1; + case 500000: + return 2; } - return bandwidth; } static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) @@ -188,7 +133,6 @@ static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMas return nbEnabledChannels; } - void RegionUS915GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) @@ -511,12 +455,31 @@ bool RegionUS915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO return adrAckReq; } +void RegionUS915ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ) +{ + double tSymbol = 0.0; + + rxConfigParams->Datarate = datarate; + rxConfigParams->Bandwidth = GetBandwidth( datarate ); + + if( datarate == DR_7 ) + { // FSK + tSymbol = ( 1.0 / ( double )DataratesUS915[datarate] ) * 8.0; // 1 symbol equals 1 byte + } + else + { // LoRa + tSymbol = ( ( double )( 1 << DataratesUS915[datarate] ) / ( double )BandwidthsUS915[datarate] ) * 1e3; + } + + rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols + + rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); +} + bool RegionUS915RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { int8_t dr = rxConfig->Datarate; uint8_t maxPayload = 0; - uint16_t symbTimeout = 0; - uint32_t bandwidth = 0; int8_t phyDr = 0; uint32_t frequency = rxConfig->Frequency; @@ -528,18 +491,18 @@ bool RegionUS915RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { // Apply the datarate offset for RX window 1 - dr = ApplyDrOffset( dr, rxConfig->DrOffset ); + dr = RegionUS915ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = US915_FIRST_RX1_CHANNEL + ( rxConfig->Channel % 8 ) * US915_STEPWIDTH_RX1_CHANNEL; } - symbTimeout = GetSymbTimeout( dr ); - bandwidth = GetBandwidth( dr ); + // Read the physical datarate from the datarates table phyDr = DataratesUS915[dr]; Radio.SetChannel( frequency ); - Radio.SetRxConfig( MODEM_LORA, bandwidth, phyDr, 1, 0, 8, symbTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); + // Radio configuration + Radio.SetRxConfig( MODEM_LORA, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); if( rxConfig->RepeaterSupport == true ) { @@ -848,3 +811,14 @@ void RegionUS915SetContinuousWave( ContinuousWaveParams_t* continuousWave ) Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } + +uint8_t RegionUS915ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ) +{ + int8_t datarate = DatarateOffsetsUS915[dr][drOffset]; + + if( datarate < 0 ) + { + datarate = DR_0; + } + return datarate; +} diff --git a/src/mac/region/RegionUS915.h b/src/mac/region/RegionUS915.h index cc9f13c10..8ca43cf6c 100644 --- a/src/mac/region/RegionUS915.h +++ b/src/mac/region/RegionUS915.h @@ -191,6 +191,11 @@ */ static const uint8_t DataratesUS915[] = { 10, 9, 8, 7, 8, 0, 0, 0, 12, 11, 10, 9, 8, 7, 0, 0 }; +/*! + * Bandwidths table definition in Hz + */ +static const uint32_t BandwidthsUS915[] = { 125e3, 125e3, 125e3, 125e3, 500e3, 0, 0, 0, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 0, 0 }; + /*! * Up/Down link data rates offset definition */ @@ -284,6 +289,19 @@ bool RegionUS915ChanMaskSet( ChanMaskSetParams_t* chanMaskSet ); */ bool RegionUS915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter ); +/*! + * Computes the Rx window timeout and offset. + * + * \param [IN] datarate Rx window datarate index to be used + * + * \param [IN] rxError System maximum timing error of the receiver. In milliseconds + * The receiver will turn on in a [-rxError : +rxError] ms + * interval around RxOffset + * + * \param [OUT]rxConfigParams Returns updated WindowTimeout and WindowOffset fields. + */ +void RegionUS915ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, RxConfigParams_t *rxConfigParams ); + /*! * \brief Configuration of the RX windows. * @@ -408,6 +426,19 @@ bool RegionUS915ChannelsRemove( ChannelRemoveParams_t* channelRemove ); */ void RegionUS915SetContinuousWave( ContinuousWaveParams_t* continuousWave ); +/*! + * \brief Computes new datarate according to the given offset + * + * \param [IN] downlinkDwellTime Downlink dwell time configuration. 0: No limit, 1: 400ms + * + * \param [IN] dr Current datarate + * + * \param [IN] drOffset Offset to be applied + * + * \retval newDr Computed datarate. + */ +uint8_t RegionUS915ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset ); + /*! \} defgroup REGIONUS915 */ #endif // __REGION_US915_H__ From 95c2f0c9f9a6e5b2fe27ce03aafd82407f23b717 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Fri, 31 Mar 2017 14:28:37 +0200 Subject: [PATCH 069/161] Relocate computation of RX window timeout and offset. --- src/mac/region/RegionAS923.c | 9 +++---- src/mac/region/RegionAU915.c | 8 +++--- src/mac/region/RegionCN470.c | 8 +++--- src/mac/region/RegionCN779.c | 8 +++--- src/mac/region/RegionCommon.c | 17 +++++++++++++ src/mac/region/RegionCommon.h | 38 +++++++++++++++++++++++++++++ src/mac/region/RegionEU433.c | 8 +++--- src/mac/region/RegionEU868.c | 8 +++--- src/mac/region/RegionIN865.c | 8 +++--- src/mac/region/RegionKR920.c | 8 +++--- src/mac/region/RegionUS915-Hybrid.c | 8 +++--- src/mac/region/RegionUS915.c | 8 +++--- 12 files changed, 85 insertions(+), 51 deletions(-) diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index 52e410841..2f02ad86b 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -472,19 +472,16 @@ void RegionAS923ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, Rx if( datarate == DR_7 ) { // FSK - tSymbol = ( 1.0 / ( double )DataratesAS923[datarate] ) * 8.0; // 1 symbol equals 1 byte + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesAS923[datarate] ); } else { // LoRa - tSymbol = ( ( double )( 1 << DataratesAS923[datarate] ) / ( double )BandwidthsAS923[datarate] ) * 1e3; + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesAS923[datarate], BandwidthsAS923[datarate] ); } - rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols - - rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); + RegionCommonComputeRxWindowParameters( tSymbol, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } -// ToDo get phy datarate afterwards bool RegionAS923RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { RadioModems_t modem; diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 4a01b94aa..fc7049daf 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -467,16 +467,14 @@ void RegionAU915ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, Rx if( datarate == DR_7 ) { // FSK - tSymbol = ( 1.0 / ( double )DataratesAU915[datarate] ) * 8.0; // 1 symbol equals 1 byte + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesAU915[datarate] ); } else { // LoRa - tSymbol = ( ( double )( 1 << DataratesAU915[datarate] ) / ( double )BandwidthsAU915[datarate] ) * 1e3; + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesAU915[datarate], BandwidthsAU915[datarate] ); } - rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols - - rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); + RegionCommonComputeRxWindowParameters( tSymbol, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } bool RegionAU915RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index 194c9b78d..212ab698b 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -415,16 +415,14 @@ void RegionCN470ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, Rx if( datarate == DR_7 ) { // FSK - tSymbol = ( 1.0 / ( double )DataratesCN470[datarate] ) * 8.0; // 1 symbol equals 1 byte + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesCN470[datarate] ); } else { // LoRa - tSymbol = ( ( double )( 1 << DataratesCN470[datarate] ) / ( double )BandwidthsCN470[datarate] ) * 1e3; + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesCN470[datarate], BandwidthsCN470[datarate] ); } - rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols - - rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); + RegionCommonComputeRxWindowParameters( tSymbol, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } bool RegionCN470RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index baedcb815..1e3fadf85 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -461,16 +461,14 @@ void RegionCN779ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, Rx if( datarate == DR_7 ) { // FSK - tSymbol = ( 1.0 / ( double )DataratesCN779[datarate] ) * 8.0; // 1 symbol equals 1 byte + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesCN779[datarate] ); } else { // LoRa - tSymbol = ( ( double )( 1 << DataratesCN779[datarate] ) / ( double )BandwidthsCN779[datarate] ) * 1e3; + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesCN779[datarate], BandwidthsCN779[datarate] ); } - rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols - - rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); + RegionCommonComputeRxWindowParameters( tSymbol, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } // ToDo get phy datarate afterwards diff --git a/src/mac/region/RegionCommon.c b/src/mac/region/RegionCommon.c index 17d79de9b..33d5eb3a9 100644 --- a/src/mac/region/RegionCommon.c +++ b/src/mac/region/RegionCommon.c @@ -21,6 +21,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include #include #include +#include #include "timer.h" #include "utilities.h" @@ -202,3 +203,19 @@ uint8_t RegionCommonParseLinkAdrReq( uint8_t* payload, LinkAdrParams_t* linkAdrP } return retIndex; } + +double RegionCommonComputeSymbolTimeLoRa( uint8_t phyDr, uint32_t bandwidth ) +{ + return ( ( double )( 1 << phyDr ) / ( double )bandwidth ) * 1e3; +} + +double RegionCommonComputeSymbolTimeFsk( uint8_t phyDr ) +{ + return ( 8.0 / ( double )phyDr ); // 1 symbol equals 1 byte +} + +void RegionCommonComputeRxWindowParameters( double tSymbol, uint32_t rxError, uint32_t wakeUpTime, uint32_t* windowTimeout, int32_t* windowOffset ) +{ + *windowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols + *windowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( *windowTimeout * tSymbol ) / 2.0 ) - wakeUpTime ); +} diff --git a/src/mac/region/RegionCommon.h b/src/mac/region/RegionCommon.h index c7230b7d2..ef82e209a 100644 --- a/src/mac/region/RegionCommon.h +++ b/src/mac/region/RegionCommon.h @@ -182,6 +182,44 @@ TimerTime_t RegionCommonUpdateBandTimeOff( bool dutyCycle, Band_t* bands, uint8_ */ uint8_t RegionCommonParseLinkAdrReq( uint8_t* payload, LinkAdrParams_t* parseLinkAdr ); +/*! + * \brief Computes the symbol time for LoRa modulation. + * + * \param [IN] phyDr Physical datarate to use. + * + * \param [IN] bandwidth Bandwidth to use. + * + * \retval Returns the symbol time. + */ +double RegionCommonComputeSymbolTimeLoRa( uint8_t phyDr, uint32_t bandwidth ); + +/*! + * \brief Computes the symbol time for FSK modulation. + * + * \param [IN] phyDr Physical datarate to use. + * + * \param [IN] bandwidth Bandwidth to use. + * + * \retval Returns the symbol time. + */ +double RegionCommonComputeSymbolTimeFsk( uint8_t phyDr ); + +/*! + * \brief Computes the RX window timeout and the RX window offset. + * + * \param [IN] tSymbol Symbol timeout. + * + * \param [IN] rxError System maximum timing error of the receiver. In milliseconds + * The receiver will turn on in a [-rxError : +rxError] ms interval around RxOffset. + * + * \param [IN] wakeUpTime Wakeup time of the system. + * + * \param [OUT] windowTimeout RX window timeout. + * + * \param [OUT] windowOffset RX window time offset to be applied to the RX delay. + */ +void RegionCommonComputeRxWindowParameters( double tSymbol, uint32_t rxError, uint32_t wakeUpTime, uint32_t* windowTimeout, int32_t* windowOffset ); + /*! \} defgroup REGIONCOMMON */ #endif // __REGIONCOMMON_H__ diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index 62dcceb98..4a1ced130 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -461,16 +461,14 @@ void RegionEU433ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, Rx if( datarate == DR_7 ) { // FSK - tSymbol = ( 1.0 / ( double )DataratesEU433[datarate] ) * 8.0; // 1 symbol equals 1 byte + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesEU433[datarate] ); } else { // LoRa - tSymbol = ( ( double )( 1 << DataratesEU433[datarate] ) / ( double )BandwidthsEU433[datarate] ) * 1e3; + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesEU433[datarate], BandwidthsEU433[datarate] ); } - rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols - - rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); + RegionCommonComputeRxWindowParameters( tSymbol, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } // ToDo get phy datarate afterwards diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index a23974d9d..eb40f3908 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -490,16 +490,14 @@ void RegionEU868ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, Rx if( datarate == DR_7 ) { // FSK - tSymbol = ( 1.0 / ( double )DataratesEU868[datarate] ) * 8.0; // 1 symbol equals 1 byte + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesEU868[datarate] ); } else { // LoRa - tSymbol = ( ( double )( 1 << DataratesEU868[datarate] ) / ( double )BandwidthsEU868[datarate] ) * 1e3; + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesEU868[datarate], BandwidthsEU868[datarate] ); } - rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols - - rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); + RegionCommonComputeRxWindowParameters( tSymbol, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } // ToDo get phy datarate afterwards diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index 5e39886da..374445f26 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -461,16 +461,14 @@ void RegionIN865ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, Rx if( datarate == DR_7 ) { // FSK - tSymbol = ( 1.0 / ( double )DataratesIN865[datarate] ) * 8.0; // 1 symbol equals 1 byte + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesIN865[datarate] ); } else { // LoRa - tSymbol = ( ( double )( 1 << DataratesIN865[datarate] ) / ( double )BandwidthsIN865[datarate] ) * 1e3; + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesIN865[datarate], BandwidthsIN865[datarate] ); } - rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols - - rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); + RegionCommonComputeRxWindowParameters( tSymbol, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } // ToDo get phy datarate afterwards diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 5eef70c5d..6061836a7 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -466,16 +466,14 @@ void RegionKR920ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, Rx if( datarate == DR_7 ) { // FSK - tSymbol = ( 1.0 / ( double )DataratesKR920[datarate] ) * 8.0; // 1 symbol equals 1 byte + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesKR920[datarate] ); } else { // LoRa - tSymbol = ( ( double )( 1 << DataratesKR920[datarate] ) / ( double )BandwidthsKR920[datarate] ) * 1e3; + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesKR920[datarate], BandwidthsKR920[datarate] ); } - rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols - - rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); + RegionCommonComputeRxWindowParameters( tSymbol, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } // ToDo get phy datarate afterwards diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index e249638af..a0235b1de 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -552,16 +552,14 @@ void RegionUS915HybridComputeRxWindowParameters( int8_t datarate, uint32_t rxErr if( datarate == DR_7 ) { // FSK - tSymbol = ( 1.0 / ( double )DataratesUS915_HYBRID[datarate] ) * 8.0; // 1 symbol equals 1 byte + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesUS915_HYBRID[datarate] ); } else { // LoRa - tSymbol = ( ( double )( 1 << DataratesUS915_HYBRID[datarate] ) / ( double )BandwidthsUS915_HYBRID[datarate] ) * 1e3; + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesUS915_HYBRID[datarate], BandwidthsUS915_HYBRID[datarate] ); } - rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols - - rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); + RegionCommonComputeRxWindowParameters( tSymbol, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } bool RegionUS915HybridRxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 721dff8e5..70272d077 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -464,16 +464,14 @@ void RegionUS915ComputeRxWindowParameters( int8_t datarate, uint32_t rxError, Rx if( datarate == DR_7 ) { // FSK - tSymbol = ( 1.0 / ( double )DataratesUS915[datarate] ) * 8.0; // 1 symbol equals 1 byte + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesUS915[datarate] ); } else { // LoRa - tSymbol = ( ( double )( 1 << DataratesUS915[datarate] ) / ( double )BandwidthsUS915[datarate] ) * 1e3; + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesUS915[datarate], BandwidthsUS915[datarate] ); } - rxConfigParams->WindowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * DEFAULT_MIN_RX_SYMBOLS - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), DEFAULT_MIN_RX_SYMBOLS ); // Computed number of symbols - - rxConfigParams->WindowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( rxConfigParams->WindowTimeout * tSymbol ) / 2.0 ) - RADIO_WAKEUP_TIME ); + RegionCommonComputeRxWindowParameters( tSymbol, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } bool RegionUS915RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) From 66b0eca5b66fbb05640c1cec29e2f5adcca33f1e Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Mon, 10 Apr 2017 15:04:49 +0200 Subject: [PATCH 070/161] Bug fix in TxPower limitation for KR920 --- src/mac/region/RegionKR920.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 53d075164..64c30d3d0 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -59,6 +59,16 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; // Static functions +static int8_t GetMaxBandTxPower( uint32_t freq ) +{ + if( freq >= 922100000 ) + {// Limit to 14dBm + return TX_POWER_1; + } + // Limit to 10dBm + return TX_POWER_2; +} + static uint32_t GetBandwidth( uint32_t drIndex ) { switch( BandwidthsKR920[drIndex] ) @@ -519,7 +529,8 @@ bool RegionKR920RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) bool RegionKR920TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) { int8_t phyDr = DataratesKR920[txConfig->Datarate]; - int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band].TxMaxPower, txConfig->Datarate, ChannelsMask ); + int8_t maxTxPower = MAX( GetMaxBandTxPower( Channels[txConfig->Channel].Frequency ), Bands[Channels[txConfig->Channel].Band].TxMaxPower ); + int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, maxTxPower, txConfig->Datarate, ChannelsMask ); uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); int8_t phyTxPower = 0; From 01ffafd77f85114b69911d9b7f781e7420373474 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 18 Apr 2017 17:30:42 +0200 Subject: [PATCH 071/161] Bug fix in LoRaMacQueryTxPossible. Setup datarate correctly. --- src/mac/LoRaMac.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 2a934f03a..2cb0ac274 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2373,7 +2373,7 @@ LoRaMacStatus_t LoRaMacQueryTxPossible( uint8_t size, LoRaMacTxInfo_t* txInfo ) RegionAdrNext( LoRaMacRegion, &adrNext, &datarate, &txPower, &AdrAckCounter ); // Setup PHY request - getPhy.Datarate = LoRaMacParams.ChannelsDatarate; + getPhy.Datarate = datarate; getPhy.Attribute = PHY_MAX_PAYLOAD; // Change request in case repeater is supported From e43c556c4b035ffe2140932d46b4a05b69169326 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Wed, 19 Apr 2017 18:00:37 +0200 Subject: [PATCH 072/161] Issue(#221): Bug fix in max payload size calculation. This fix is for function LoRaMacQueryTxPossible. --- src/mac/LoRaMac.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 2cb0ac274..2a988bdd7 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2373,6 +2373,7 @@ LoRaMacStatus_t LoRaMacQueryTxPossible( uint8_t size, LoRaMacTxInfo_t* txInfo ) RegionAdrNext( LoRaMacRegion, &adrNext, &datarate, &txPower, &AdrAckCounter ); // Setup PHY request + getPhy.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; getPhy.Datarate = datarate; getPhy.Attribute = PHY_MAX_PAYLOAD; From 4b20576308845ce1b3d263335c69a81004bea4a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Wed, 19 Apr 2017 18:00:49 +0200 Subject: [PATCH 073/161] Add frequency range check for AS923 --- src/mac/region/RegionAS923.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index 4606a0443..4e884ec4b 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -90,6 +90,11 @@ static bool VerifyTxFreq( uint32_t freq ) { return false; } + + if( ( freq < 915000000 ) || ( freq > 928000000 ) ) + { + return false; + } return true; } From b51c916fb1eeace5c8e6501df9a5f3c45af9cfc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Wed, 19 Apr 2017 18:01:03 +0200 Subject: [PATCH 074/161] Setup the downlink and uplink dwell time default value to 1. --- src/mac/region/RegionAS923.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mac/region/RegionAS923.h b/src/mac/region/RegionAS923.h index 3bc3de34f..010e45542 100644 --- a/src/mac/region/RegionAS923.h +++ b/src/mac/region/RegionAS923.h @@ -103,12 +103,12 @@ /*! * Default uplink dwell time configuration */ -#define AS923_DEFAULT_UPLINK_DWELL_TIME 0 +#define AS923_DEFAULT_UPLINK_DWELL_TIME 1 /*! * Default downlink dwell time configuration */ -#define AS923_DEFAULT_DOWNLINK_DWELL_TIME 0 +#define AS923_DEFAULT_DOWNLINK_DWELL_TIME 1 /*! * Default Max EIRP From e96fe3f26ddad0c585532fec58b5e5ecc5e0d2f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 20 Apr 2017 11:51:19 +0200 Subject: [PATCH 075/161] Remove datarate assignment. Currently, the variable will be set in functions RegionXXComputeRxWindowParameters. --- src/mac/LoRaMac.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 2a988bdd7..ab55df998 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1376,7 +1376,6 @@ static void OnRxWindow1TimerEvent( void ) RxSlot = 0; RxWindow1Config.Channel = Channel; - RxWindow1Config.Datarate = LoRaMacParams.ChannelsDatarate; RxWindow1Config.DrOffset = LoRaMacParams.Rx1DrOffset; RxWindow1Config.RepeaterSupport = RepeaterSupport; RxWindow1Config.RxContinuous = false; @@ -1396,7 +1395,6 @@ static void OnRxWindow2TimerEvent( void ) TimerStop( &RxWindowTimer2 ); RxWindow2Config.Channel = Channel; - RxWindow2Config.Datarate = LoRaMacParams.Rx2Channel.Datarate; RxWindow2Config.Frequency = LoRaMacParams.Rx2Channel.Frequency; RxWindow2Config.RepeaterSupport = RepeaterSupport; RxWindow2Config.Window = 1; From 4ea8d5107dc777b11a91e0f232530e05dc08a98d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 20 Apr 2017 11:52:53 +0200 Subject: [PATCH 076/161] Bug fix in functions OnRxWindowXTimerEvent. Apply the downlink dwell time. This especially effects the region AS923. --- src/mac/LoRaMac.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index ab55df998..71d28244a 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1377,6 +1377,7 @@ static void OnRxWindow1TimerEvent( void ) RxWindow1Config.Channel = Channel; RxWindow1Config.DrOffset = LoRaMacParams.Rx1DrOffset; + RxWindow1Config.DownlinkDwellTime = LoRaMacParams.DownlinkDwellTime; RxWindow1Config.RepeaterSupport = RepeaterSupport; RxWindow1Config.RxContinuous = false; RxWindow1Config.Window = RxSlot; @@ -1396,6 +1397,7 @@ static void OnRxWindow2TimerEvent( void ) RxWindow2Config.Channel = Channel; RxWindow2Config.Frequency = LoRaMacParams.Rx2Channel.Frequency; + RxWindow1Config.DownlinkDwellTime = LoRaMacParams.DownlinkDwellTime; RxWindow2Config.RepeaterSupport = RepeaterSupport; RxWindow2Config.Window = 1; From 8b7b9b53b9466b0519692295c636c0fc8d66f3af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Fri, 21 Apr 2017 11:20:17 +0200 Subject: [PATCH 077/161] Increase the transmission and reception timeout for KR920. --- src/mac/region/RegionKR920.c | 2 +- src/mac/region/RegionKR920.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index ca5eaed7a..7773b59d6 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -539,7 +539,7 @@ bool RegionKR920TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime // Setup the radio frequency Radio.SetChannel( Channels[txConfig->Channel].Frequency ); - Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 4e3 ); // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); diff --git a/src/mac/region/RegionKR920.h b/src/mac/region/RegionKR920.h index d9d87353d..7fcee65dd 100644 --- a/src/mac/region/RegionKR920.h +++ b/src/mac/region/RegionKR920.h @@ -118,7 +118,7 @@ /*! * Maximum RX window duration */ -#define KR920_MAX_RX_WINDOW 3000 +#define KR920_MAX_RX_WINDOW 4000 /*! * Receive delay 1 From 7d622882bd2034d4629914a20a83e0489a341902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Fri, 21 Apr 2017 11:20:39 +0200 Subject: [PATCH 078/161] Issue(#221): Add the dwell time in function ValidatePayloadLength. --- src/mac/LoRaMac.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 71d28244a..60d6bb1bd 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1450,6 +1450,8 @@ static bool ValidatePayloadLength( uint8_t lenN, int8_t datarate, uint8_t fOptsL uint16_t maxN = 0; uint16_t payloadSize = 0; + // Setup PHY request + getPhy.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; getPhy.Datarate = datarate; getPhy.Attribute = PHY_MAX_PAYLOAD; From 371230ec15a15df013dcb1d71ae5ca1170fedd2c Mon Sep 17 00:00:00 2001 From: Craig Hesling Date: Wed, 3 May 2017 03:01:03 -0400 Subject: [PATCH 079/161] Fix RxDone FIFO read addr for RX Continuous mode --- src/radio/sx1272/sx1272.c | 1 + src/radio/sx1276/sx1276.c | 1 + 2 files changed, 2 insertions(+) diff --git a/src/radio/sx1272/sx1272.c b/src/radio/sx1272/sx1272.c index 8a90a240f..cca288a96 100644 --- a/src/radio/sx1272/sx1272.c +++ b/src/radio/sx1272/sx1272.c @@ -1374,6 +1374,7 @@ void SX1272OnDio0Irq( void ) } SX1272.Settings.LoRaPacketHandler.Size = SX1272Read( REG_LR_RXNBBYTES ); + SX1272Write( REG_LR_FIFOADDRPTR, SX1272Read( REG_LR_FIFORXCURRENTADDR ) ); SX1272ReadFifo( RxTxBuffer, SX1272.Settings.LoRaPacketHandler.Size ); if( SX1272.Settings.LoRa.RxContinuous == false ) diff --git a/src/radio/sx1276/sx1276.c b/src/radio/sx1276/sx1276.c index 7fbbf6d63..05e837be2 100644 --- a/src/radio/sx1276/sx1276.c +++ b/src/radio/sx1276/sx1276.c @@ -1551,6 +1551,7 @@ void SX1276OnDio0Irq( void ) } SX1276.Settings.LoRaPacketHandler.Size = SX1276Read( REG_LR_RXNBBYTES ); + SX1276Write( REG_LR_FIFOADDRPTR, SX1276Read( REG_LR_FIFORXCURRENTADDR ) ); SX1276ReadFifo( RxTxBuffer, SX1276.Settings.LoRaPacketHandler.Size ); if( SX1276.Settings.LoRa.RxContinuous == false ) From 5d2994c2b67431217876d7567931bb0a583fbb04 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Fri, 5 May 2017 11:26:17 +0200 Subject: [PATCH 080/161] Update LoRaMacQueryTxPossible to reset the MAC commands buffer. In this case the fOpts are > then the max possible payload. --- src/mac/LoRaMac.c | 15 ++++++--------- src/mac/LoRaMac.h | 6 +----- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 60d6bb1bd..8a57ff77e 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2395,21 +2395,18 @@ LoRaMacStatus_t LoRaMacQueryTxPossible( uint8_t size, LoRaMacTxInfo_t* txInfo ) else { txInfo->MaxPossiblePayload = 0; - return LORAMAC_STATUS_MAC_CMD_LENGTH_ERROR; - } - - // Verify if the payload fits into the maximum payload - if( ValidatePayloadLength( size, datarate, 0 ) == false ) - { - return LORAMAC_STATUS_LENGTH_ERROR; + // The fOpts don't fit into the maximum payload. Omit the MAC commands to + // ensure that another uplink is possible. + fOptLen = 0; + MacCommandsBufferIndex = 0; + MacCommandsBufferToRepeatIndex = 0; } // Verify if the fOpts and the payload fit into the maximum payload if( ValidatePayloadLength( size, datarate, fOptLen ) == false ) { - return LORAMAC_STATUS_MAC_CMD_LENGTH_ERROR; + return LORAMAC_STATUS_LENGTH_ERROR; } - return LORAMAC_STATUS_OK; } diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index 287833374..385923b3a 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -1558,13 +1558,9 @@ typedef enum eLoRaMacStatus */ LORAMAC_STATUS_NO_NETWORK_JOINED, /*! - * Service not started - payload lenght error + * Service not started - payload length error */ LORAMAC_STATUS_LENGTH_ERROR, - /*! - * Service not started - payload lenght error - */ - LORAMAC_STATUS_MAC_CMD_LENGTH_ERROR, /*! * Service not started - the device is switched off */ From df6bcae4abaa5322f74640d3648f0471c5641384 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Fri, 5 May 2017 13:09:00 +0200 Subject: [PATCH 081/161] Take dwell time for ADR calculations and datarate settings into account. This especially holds for AS923 --- src/mac/LoRaMac.c | 30 ++++++++++++-- src/mac/region/Region.h | 36 +++++++++++++++-- src/mac/region/RegionAS923.c | 63 ++++++++++++++++++++++++----- src/mac/region/RegionAS923.h | 6 +++ src/mac/region/RegionAU915.c | 11 ++++- src/mac/region/RegionCN470.c | 11 ++++- src/mac/region/RegionCN779.c | 11 ++++- src/mac/region/RegionEU433.c | 11 ++++- src/mac/region/RegionEU868.c | 11 ++++- src/mac/region/RegionIN865.c | 11 ++++- src/mac/region/RegionKR920.c | 11 ++++- src/mac/region/RegionUS915-Hybrid.c | 11 ++++- src/mac/region/RegionUS915.c | 11 ++++- 13 files changed, 209 insertions(+), 25 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 8a57ff77e..e72fcce65 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1252,7 +1252,8 @@ static void OnMacStateCheckTimerEvent( void ) if( ( AckTimeoutRetriesCounter % 2 ) == 1 ) { - getPhy.Attribute = PHY_MIN_DR; + getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; RegionGetPhyParam( LoRaMacRegion, &getPhy ); LoRaMacParams.ChannelsDatarate = MAX( LoRaMacParams.ChannelsDatarate - 1, getPhy.Param.Value ); } @@ -2038,6 +2039,7 @@ LoRaMacStatus_t PrepareFrame( LoRaMacHeader_t *macHdr, LoRaMacFrameCtrl_t *fCtrl adrNext.AdrAckCounter = AdrAckCounter; adrNext.Datarate = LoRaMacParams.ChannelsDatarate; adrNext.TxPower = LoRaMacParams.ChannelsTxPower; + adrNext.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; fCtrl->Bits.AdrAckReq = RegionAdrNext( LoRaMacRegion, &adrNext, &LoRaMacParams.ChannelsDatarate, &LoRaMacParams.ChannelsTxPower, &AdrAckCounter ); @@ -2369,6 +2371,7 @@ LoRaMacStatus_t LoRaMacQueryTxPossible( uint8_t size, LoRaMacTxInfo_t* txInfo ) adrNext.AdrAckCounter = AdrAckCounter; adrNext.Datarate = LoRaMacParams.ChannelsDatarate; adrNext.TxPower = LoRaMacParams.ChannelsTxPower; + adrNext.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; // We call the function for information purposes only. We don't want to // apply the datarate, the tx power and the ADR ack counter. @@ -2685,12 +2688,32 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) } case MIB_RX2_CHANNEL: { - LoRaMacParams.Rx2Channel = mibSet->Param.Rx2Channel; + verify.Datarate = mibSet->Param.Rx2Channel.Datarate; + verify.DownlinkDwellTime = LoRaMacParams.DownlinkDwellTime; + + if( RegionVerify( LoRaMacRegion, &verify, PHY_RX_DR ) == true ) + { + LoRaMacParams.Rx2Channel = mibSet->Param.Rx2Channel; + } + else + { + status = LORAMAC_STATUS_PARAMETER_INVALID; + } break; } case MIB_RX2_DEFAULT_CHANNEL: { - LoRaMacParamsDefaults.Rx2Channel = mibSet->Param.Rx2DefaultChannel; + verify.Datarate = mibSet->Param.Rx2Channel.Datarate; + verify.DownlinkDwellTime = LoRaMacParams.DownlinkDwellTime; + + if( RegionVerify( LoRaMacRegion, &verify, PHY_RX_DR ) == true ) + { + LoRaMacParamsDefaults.Rx2Channel = mibSet->Param.Rx2DefaultChannel; + } + else + { + status = LORAMAC_STATUS_PARAMETER_INVALID; + } break; } case MIB_CHANNELS_DEFAULT_MASK: @@ -3132,6 +3155,7 @@ LoRaMacStatus_t LoRaMacMcpsRequest( McpsReq_t *mcpsRequest ) if( AdrCtrlOn == false ) { verify.Datarate = datarate; + verify.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; if( RegionVerify( LoRaMacRegion, &verify, PHY_TX_DR ) == true ) { diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index 233c79883..79d7a4e3b 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -527,13 +527,21 @@ typedef enum ePhyAttribute { /*! - * Minimum datarate. + * Minimum RX datarate. */ - PHY_MIN_DR, + PHY_MIN_RX_DR, /*! - * Maximum datarate. + * Minimum TX datarate. */ - PHY_MAX_DR, + PHY_MIN_TX_DR, + /*! + * Maximum RX datarate. + */ + PHY_MAX_RX_DR, + /*! + * Maximum TX datarate. + */ + PHY_MAX_TX_DR, /*! * TX datarate. */ @@ -542,6 +550,10 @@ typedef enum ePhyAttribute * Default TX datarate. */ PHY_DEF_TX_DR, + /*! + * RX datarate. + */ + PHY_RX_DR, /*! * TX power. */ @@ -703,6 +715,10 @@ typedef struct sGetPhyParams * Uplink dwell time. */ uint8_t UplinkDwellTime; + /*! + * Downlink dwell time. + */ + uint8_t DownlinkDwellTime; /*! * Contains the parameter to get. */ @@ -745,6 +761,14 @@ typedef union uVerifyParams * The number of join trials. */ uint8_t NbJoinTrials; + /*! + * The downlink dwell time. + */ + uint8_t DownlinkDwellTime; + /*! + * The up link dwell time. + */ + uint8_t UplinkDwellTime; }VerifyParams_t; /*! @@ -802,6 +826,10 @@ typedef struct sAdrNextParams * TX power used currently. */ int8_t TxPower; + /*! + * UplinkDwellTime + */ + uint8_t UplinkDwellTime; }AdrNextParams_t; /*! diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index 4e884ec4b..d94c38b03 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -143,9 +143,28 @@ void RegionAS923GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) { - case PHY_MIN_DR: + case PHY_MIN_RX_DR: { - getPhy->Param.Value = AS923_TX_MIN_DATARATE; + if( getPhy->DownlinkDwellTime == 0 ) + { + getPhy->Param.Value = AS923_RX_MIN_DATARATE; + } + else + { + getPhy->Param.Value = AS923_DWELL_LIMIT_DATARATE; + } + break; + } + case PHY_MIN_TX_DR: + { + if( getPhy->UplinkDwellTime == 0 ) + { + getPhy->Param.Value = AS923_TX_MIN_DATARATE; + } + else + { + getPhy->Param.Value = AS923_DWELL_LIMIT_DATARATE; + } break; } case PHY_DEF_TX_DR: @@ -325,12 +344,30 @@ bool RegionAS923Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { case PHY_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, AS923_TX_MIN_DATARATE, AS923_TX_MAX_DATARATE ); + if( verify->UplinkDwellTime == 0 ) + { + return RegionCommonValueInRange( verify->Datarate, AS923_TX_MIN_DATARATE, AS923_TX_MAX_DATARATE ); + } + else + { + return RegionCommonValueInRange( verify->Datarate, AS923_DWELL_LIMIT_DATARATE, AS923_TX_MAX_DATARATE ); + } } case PHY_DEF_TX_DR: { return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); } + case PHY_RX_DR: + { + if( verify->DownlinkDwellTime == 0 ) + { + return RegionCommonValueInRange( verify->Datarate, AS923_RX_MIN_DATARATE, AS923_RX_MAX_DATARATE ); + } + else + { + return RegionCommonValueInRange( verify->Datarate, AS923_DWELL_LIMIT_DATARATE, AS923_RX_MAX_DATARATE ); + } + } case PHY_DEF_TX_POWER: case PHY_TX_POWER: { @@ -418,14 +455,22 @@ bool RegionAS923AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO { bool adrAckReq = false; int8_t datarate = adrNext->Datarate; + int8_t minTxDatarate = 0; int8_t txPower = adrNext->TxPower; + GetPhyParams_t getPhy; + + // Get the minimum possible datarate + getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; + RegionAS923GetPhyParam( &getPhy ); + minTxDatarate = getPhy.Param.Value; // Report back the adr ack counter *adrAckCounter = adrNext->AdrAckCounter; if( adrNext->AdrEnabled == true ) { - if( datarate == AS923_TX_MIN_DATARATE ) + if( datarate == minTxDatarate ) { *adrAckCounter = 0; adrAckReq = false; @@ -445,12 +490,12 @@ bool RegionAS923AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO { if( ( adrNext->AdrAckCounter % AS923_ADR_ACK_DELAY ) == 1 ) { - if( datarate > AS923_TX_MIN_DATARATE ) + if( datarate > minTxDatarate ) { datarate--; } - if( datarate == AS923_TX_MIN_DATARATE ) + if( datarate == minTxDatarate ) { if( adrNext->UpdateChanMask == true ) { @@ -802,8 +847,8 @@ uint8_t RegionAS923DlChannelReq( DlChannelReqParams_t* dlChannelReq ) int8_t RegionAS923AlternateDr( AlternateDrParams_t* alternateDr ) { - // Only DR_2 is supported - return DR_2; + // Only AS923_DWELL_LIMIT_DATARATE is supported + return AS923_DWELL_LIMIT_DATARATE; } void RegionAS923CalcBackOff( CalcBackOffParams_t* calcBackOff ) @@ -1019,7 +1064,7 @@ uint8_t RegionAS923ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t d // Update the minDR for a downlink dwell time configuration of 1 if( downlinkDwellTime == 1 ) { - minDr = DR_2; + minDr = AS923_DWELL_LIMIT_DATARATE; } // Apply offset formula diff --git a/src/mac/region/RegionAS923.h b/src/mac/region/RegionAS923.h index 010e45542..7fbc2c587 100644 --- a/src/mac/region/RegionAS923.h +++ b/src/mac/region/RegionAS923.h @@ -70,6 +70,12 @@ */ #define AS923_DEFAULT_DATARATE DR_0 +/*! + * The minimum datarate which is used when the + * dwell time is limited. + */ +#define AS923_DWELL_LIMIT_DATARATE DR_2 + /*! * Minimal Rx1 receive datarate offset */ diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index c7c2680ec..d3e178377 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -138,7 +138,12 @@ void RegionAU915GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) { - case PHY_MIN_DR: + case PHY_MIN_RX_DR: + { + getPhy->Param.Value = AU915_RX_MIN_DATARATE; + break; + } + case PHY_MIN_TX_DR: { getPhy->Param.Value = AU915_TX_MIN_DATARATE; break; @@ -330,6 +335,10 @@ bool RegionAU915Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); } + case PHY_RX_DR: + { + return RegionCommonValueInRange( verify->Datarate, AU915_RX_MIN_DATARATE, AU915_RX_MAX_DATARATE ); + } case PHY_DEF_TX_POWER: case PHY_TX_POWER: { diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index 6ceddb2a6..2a05c6bd3 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -121,7 +121,12 @@ void RegionCN470GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) { - case PHY_MIN_DR: + case PHY_MIN_RX_DR: + { + getPhy->Param.Value = CN470_RX_MIN_DATARATE; + break; + } + case PHY_MIN_TX_DR: { getPhy->Param.Value = CN470_TX_MIN_DATARATE; break; @@ -298,6 +303,10 @@ bool RegionCN470Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); } + case PHY_RX_DR: + { + return RegionCommonValueInRange( verify->Datarate, CN470_RX_MIN_DATARATE, CN470_RX_MAX_DATARATE ); + } case PHY_DEF_TX_POWER: case PHY_TX_POWER: { diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index 50489b5b3..ec500becd 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -143,7 +143,12 @@ void RegionCN779GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) { - case PHY_MIN_DR: + case PHY_MIN_RX_DR: + { + getPhy->Param.Value = CN779_RX_MIN_DATARATE; + break; + } + case PHY_MIN_TX_DR: { getPhy->Param.Value = CN779_TX_MIN_DATARATE; break; @@ -310,6 +315,10 @@ bool RegionCN779Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); } + case PHY_RX_DR: + { + return RegionCommonValueInRange( verify->Datarate, CN779_RX_MIN_DATARATE, CN779_RX_MAX_DATARATE ); + } case PHY_DEF_TX_POWER: case PHY_TX_POWER: { diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index e78ed0502..28e8d29f1 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -143,7 +143,12 @@ void RegionEU433GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) { - case PHY_MIN_DR: + case PHY_MIN_RX_DR: + { + getPhy->Param.Value = EU433_RX_MIN_DATARATE; + break; + } + case PHY_MIN_TX_DR: { getPhy->Param.Value = EU433_TX_MIN_DATARATE; break; @@ -310,6 +315,10 @@ bool RegionEU433Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); } + case PHY_RX_DR: + { + return RegionCommonValueInRange( verify->Datarate, EU433_RX_MIN_DATARATE, EU433_RX_MAX_DATARATE ); + } case PHY_DEF_TX_POWER: case PHY_TX_POWER: { diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index dc8685589..8b67567ca 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -172,7 +172,12 @@ void RegionEU868GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) { - case PHY_MIN_DR: + case PHY_MIN_RX_DR: + { + getPhy->Param.Value = EU868_RX_MIN_DATARATE; + break; + } + case PHY_MIN_TX_DR: { getPhy->Param.Value = EU868_TX_MIN_DATARATE; break; @@ -339,6 +344,10 @@ bool RegionEU868Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); } + case PHY_RX_DR: + { + return RegionCommonValueInRange( verify->Datarate, EU868_RX_MIN_DATARATE, EU868_RX_MAX_DATARATE ); + } case PHY_DEF_TX_POWER: case PHY_TX_POWER: { diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index d2fbc43c7..44f947dff 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -143,7 +143,12 @@ void RegionIN865GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) { - case PHY_MIN_DR: + case PHY_MIN_RX_DR: + { + getPhy->Param.Value = IN865_RX_MIN_DATARATE; + break; + } + case PHY_MIN_TX_DR: { getPhy->Param.Value = IN865_TX_MIN_DATARATE; break; @@ -310,6 +315,10 @@ bool RegionIN865Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); } + case PHY_RX_DR: + { + return RegionCommonValueInRange( verify->Datarate, IN865_RX_MIN_DATARATE, IN865_RX_MAX_DATARATE ); + } case PHY_DEF_TX_POWER: case PHY_TX_POWER: { diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 7773b59d6..6c867c910 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -162,7 +162,12 @@ void RegionKR920GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) { - case PHY_MIN_DR: + case PHY_MIN_RX_DR: + { + getPhy->Param.Value = KR920_RX_MIN_DATARATE; + break; + } + case PHY_MIN_TX_DR: { getPhy->Param.Value = KR920_TX_MIN_DATARATE; break; @@ -325,6 +330,10 @@ bool RegionKR920Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); } + case PHY_RX_DR: + { + return RegionCommonValueInRange( verify->Datarate, KR920_RX_MIN_DATARATE, KR920_RX_MAX_DATARATE ); + } case PHY_DEF_TX_POWER: case PHY_TX_POWER: { diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index 3e65fc469..583429bbb 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -226,7 +226,12 @@ void RegionUS915HybridGetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) { - case PHY_MIN_DR: + case PHY_MIN_RX_DR: + { + getPhy->Param.Value = US915_HYBRID_RX_MIN_DATARATE; + break; + } + case PHY_MIN_TX_DR: { getPhy->Param.Value = US915_HYBRID_TX_MIN_DATARATE; break; @@ -416,6 +421,10 @@ bool RegionUS915HybridVerify( VerifyParams_t* verify, PhyAttribute_t phyAttribut { return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); } + case PHY_RX_DR: + { + return RegionCommonValueInRange( verify->Datarate, US915_HYBRID_RX_MIN_DATARATE, US915_HYBRID_RX_MAX_DATARATE ); + } case PHY_DEF_TX_POWER: case PHY_TX_POWER: { diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 52e90c7ea..0c56521e1 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -137,7 +137,12 @@ void RegionUS915GetPhyParam( GetPhyParams_t* getPhy ) { switch( getPhy->Attribute ) { - case PHY_MIN_DR: + case PHY_MIN_RX_DR: + { + getPhy->Param.Value = US915_RX_MIN_DATARATE; + break; + } + case PHY_MIN_TX_DR: { getPhy->Param.Value = US915_TX_MIN_DATARATE; break; @@ -329,6 +334,10 @@ bool RegionUS915Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); } + case PHY_RX_DR: + { + return RegionCommonValueInRange( verify->Datarate, US915_RX_MIN_DATARATE, US915_RX_MAX_DATARATE ); + } case PHY_DEF_TX_POWER: case PHY_TX_POWER: { From c63d8370c2d6bbf8b8c1d05a4712c85f02c0a5d1 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Fri, 5 May 2017 13:09:44 +0200 Subject: [PATCH 082/161] Change the default datarate to DR_2 for AS923. The default dwell time is limited and the lowest DR is DR_2. --- src/mac/region/RegionAS923.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mac/region/RegionAS923.h b/src/mac/region/RegionAS923.h index 7fbc2c587..92d961055 100644 --- a/src/mac/region/RegionAS923.h +++ b/src/mac/region/RegionAS923.h @@ -68,7 +68,7 @@ /*! * Default datarate used by the node */ -#define AS923_DEFAULT_DATARATE DR_0 +#define AS923_DEFAULT_DATARATE DR_2 /*! * The minimum datarate which is used when the From fc901c190d4c6170e8bb59e2ea376197363c8db9 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Fri, 5 May 2017 13:14:34 +0200 Subject: [PATCH 083/161] Apply patch for dwell time and minimum datarate. --- src/mac/LoRaMac.c | 7 +++++++ src/mac/region/Region.h | 4 ++-- src/mac/region/RegionAS923.c | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index e72fcce65..f1aebb70e 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3085,6 +3085,7 @@ LoRaMacStatus_t LoRaMacMlmeRequest( MlmeReq_t *mlmeRequest ) LoRaMacStatus_t LoRaMacMcpsRequest( McpsReq_t *mcpsRequest ) { + GetPhyParams_t getPhy; LoRaMacStatus_t status = LORAMAC_STATUS_SERVICE_UNKNOWN; LoRaMacHeader_t macHdr; VerifyParams_t verify; @@ -3150,6 +3151,12 @@ LoRaMacStatus_t LoRaMacMcpsRequest( McpsReq_t *mcpsRequest ) break; } + // Get the minimum possible datarate + getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; + RegionGetPhyParam( LoRaMacRegion, &getPhy ); + datarate = MAX( datarate, getPhy.Param.Value ); + if( readyToSend == true ) { if( AdrCtrlOn == false ) diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index 79d7a4e3b..d2d6e55fe 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -743,7 +743,7 @@ typedef struct sSetBandTxDoneParams /*! * Parameter structure for the function RegionVerify. */ -typedef union uVerifyParams +typedef struct sVerifyParams { /*! * TX power to verify. @@ -768,7 +768,7 @@ typedef union uVerifyParams /*! * The up link dwell time. */ - uint8_t UplinkDwellTime; + uint8_t UplinkDwellTime; }VerifyParams_t; /*! diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index d94c38b03..7e768201e 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -468,6 +468,8 @@ bool RegionAS923AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO // Report back the adr ack counter *adrAckCounter = adrNext->AdrAckCounter; + datarate = MAX( datarate, minTxDatarate ); + if( adrNext->AdrEnabled == true ) { if( datarate == minTxDatarate ) From 66356ef1b73d6910d05e62ae97c79f392b2ff900 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Fri, 5 May 2017 13:16:35 +0200 Subject: [PATCH 084/161] Add comments. --- src/mac/LoRaMac.c | 2 ++ src/mac/region/RegionAS923.c | 1 + 2 files changed, 3 insertions(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index f1aebb70e..5f6f04705 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -3155,6 +3155,8 @@ LoRaMacStatus_t LoRaMacMcpsRequest( McpsReq_t *mcpsRequest ) getPhy.Attribute = PHY_MIN_TX_DR; getPhy.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; RegionGetPhyParam( LoRaMacRegion, &getPhy ); + // Apply the minimum possible datarate. + // Some regions have limitations for the minimum datarate. datarate = MAX( datarate, getPhy.Param.Value ); if( readyToSend == true ) diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index 7e768201e..b9e1c15f6 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -468,6 +468,7 @@ bool RegionAS923AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO // Report back the adr ack counter *adrAckCounter = adrNext->AdrAckCounter; + // Apply the minimum possible datarate. datarate = MAX( datarate, minTxDatarate ); if( adrNext->AdrEnabled == true ) From aa87fee02a64e6535accc471d8fd3b8af75354a7 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Fri, 5 May 2017 13:17:36 +0200 Subject: [PATCH 085/161] Bug fix in function LoRaMacQueryTxPossible. Apply the current payload size to the maximum possible payload, if the fOpts are too huge. --- src/mac/LoRaMac.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 5f6f04705..7f199c751 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2397,7 +2397,7 @@ LoRaMacStatus_t LoRaMacQueryTxPossible( uint8_t size, LoRaMacTxInfo_t* txInfo ) } else { - txInfo->MaxPossiblePayload = 0; + txInfo->MaxPossiblePayload = txInfo->CurrentPayloadSize; // The fOpts don't fit into the maximum payload. Omit the MAC commands to // ensure that another uplink is possible. fOptLen = 0; From 311744a9428526f90f78289a9637f0347a277b06 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Fri, 5 May 2017 13:29:46 +0200 Subject: [PATCH 086/161] Change API of RegionGetPhyParam and the related functions. This is necessary for a intensive testing with unit tests. --- src/mac/LoRaMac.c | 105 +++++++++++++++------------- src/mac/region/Region.c | 25 +++---- src/mac/region/Region.h | 8 +-- src/mac/region/RegionAS923.c | 71 ++++++++++--------- src/mac/region/RegionAS923.h | 4 +- src/mac/region/RegionAU915.c | 54 +++++++------- src/mac/region/RegionAU915.h | 4 +- src/mac/region/RegionCN470.c | 54 +++++++------- src/mac/region/RegionCN470.h | 4 +- src/mac/region/RegionCN779.c | 54 +++++++------- src/mac/region/RegionCN779.h | 4 +- src/mac/region/RegionEU433.c | 54 +++++++------- src/mac/region/RegionEU433.h | 4 +- src/mac/region/RegionEU868.c | 54 +++++++------- src/mac/region/RegionEU868.h | 4 +- src/mac/region/RegionIN865.c | 54 +++++++------- src/mac/region/RegionIN865.h | 4 +- src/mac/region/RegionKR920.c | 52 +++++++------- src/mac/region/RegionKR920.h | 4 +- src/mac/region/RegionUS915-Hybrid.c | 54 +++++++------- src/mac/region/RegionUS915-Hybrid.h | 4 +- src/mac/region/RegionUS915.c | 54 +++++++------- src/mac/region/RegionUS915.h | 4 +- 23 files changed, 401 insertions(+), 332 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 7f199c751..ca2f4fdbf 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -591,6 +591,7 @@ static void ResetMacParameters( void ); static void OnRadioTxDone( void ) { GetPhyParams_t getPhy; + PhyParam_t phyParam; SetBandTxDoneParams_t txDone; TimerTime_t curTime = TimerGetCurrentTime( ); @@ -616,8 +617,8 @@ static void OnRadioTxDone( void ) if( ( LoRaMacDeviceClass == CLASS_C ) || ( NodeAckRequested == true ) ) { getPhy.Attribute = PHY_ACK_TIMEOUT; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - TimerSetValue( &AckTimeoutTimer, RxWindow2Delay + getPhy.Param.Value ); + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + TimerSetValue( &AckTimeoutTimer, RxWindow2Delay + phyParam.Value ); TimerStart( &AckTimeoutTimer ); } } @@ -672,6 +673,7 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t LoRaMacFrameCtrl_t fCtrl; ApplyCFListParams_t applyCFList; GetPhyParams_t getPhy; + PhyParam_t phyParam; bool skipIndication = false; uint8_t pktHeaderLen = 0; @@ -853,8 +855,8 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t // Check for a the maximum allowed counter difference getPhy.Attribute = PHY_MAX_FCNT_GAP; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - if( sequenceCounterDiff >= getPhy.Param.Value ) + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + if( sequenceCounterDiff >= phyParam.Value ) { McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_DOWNLINK_TOO_MANY_FRAMES_LOSS; McpsIndication.DownLinkCounter = downLinkCounter; @@ -1142,6 +1144,7 @@ static void OnRadioRxTimeout( void ) static void OnMacStateCheckTimerEvent( void ) { GetPhyParams_t getPhy; + PhyParam_t phyParam; bool txTimeout = false; TimerStop( &MacStateCheckTimer ); @@ -1254,8 +1257,8 @@ static void OnMacStateCheckTimerEvent( void ) { getPhy.Attribute = PHY_MIN_TX_DR; getPhy.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParams.ChannelsDatarate = MAX( LoRaMacParams.ChannelsDatarate - 1, getPhy.Param.Value ); + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParams.ChannelsDatarate = MAX( LoRaMacParams.ChannelsDatarate - 1, phyParam.Value ); } // Try to send the frame again if( ScheduleTx( ) == LORAMAC_STATUS_OK ) @@ -1448,6 +1451,7 @@ static void RxWindowSetup( bool rxContinuous, uint32_t maxRxWindow ) static bool ValidatePayloadLength( uint8_t lenN, int8_t datarate, uint8_t fOptsLen ) { GetPhyParams_t getPhy; + PhyParam_t phyParam; uint16_t maxN = 0; uint16_t payloadSize = 0; @@ -1461,8 +1465,8 @@ static bool ValidatePayloadLength( uint8_t lenN, int8_t datarate, uint8_t fOptsL { getPhy.Attribute = PHY_MAX_PAYLOAD_REPEATER; } - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - maxN = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + maxN = phyParam.Value; // Calculate the resulting payload size payloadSize = ( lenN + fOptsLen ); @@ -2210,6 +2214,7 @@ LoRaMacStatus_t SetTxContinuousWave1( uint16_t timeout, uint32_t frequency, uint LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t *primitives, LoRaMacCallback_t *callbacks, LoRaMacRegion_t region ) { GetPhyParams_t getPhy; + PhyParam_t phyParam; if( primitives == NULL ) { @@ -2247,64 +2252,64 @@ LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t *primitives, LoRaMacC // Reset to defaults getPhy.Attribute = PHY_DUTY_CYCLE; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - DutyCycleOn = ( bool ) getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + DutyCycleOn = ( bool ) phyParam.Value; getPhy.Attribute = PHY_DEF_TX_POWER; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.ChannelsTxPower = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.ChannelsTxPower = phyParam.Value; getPhy.Attribute = PHY_DEF_TX_DR; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.ChannelsDatarate = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.ChannelsDatarate = phyParam.Value; LoRaMacParamsDefaults.SystemMaxRxError = 10; LoRaMacParamsDefaults.MinRxSymbols = 6; getPhy.Attribute = PHY_MAX_RX_WINDOW; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.MaxRxWindow = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.MaxRxWindow = phyParam.Value; getPhy.Attribute = PHY_RECEIVE_DELAY1; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.ReceiveDelay1 = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.ReceiveDelay1 = phyParam.Value; getPhy.Attribute = PHY_RECEIVE_DELAY2; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.ReceiveDelay2 = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.ReceiveDelay2 = phyParam.Value; getPhy.Attribute = PHY_JOIN_ACCEPT_DELAY1; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.JoinAcceptDelay1 = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.JoinAcceptDelay1 = phyParam.Value; getPhy.Attribute = PHY_JOIN_ACCEPT_DELAY2; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.JoinAcceptDelay2 = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.JoinAcceptDelay2 = phyParam.Value; getPhy.Attribute = PHY_DEF_DR1_OFFSET; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.Rx1DrOffset = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.Rx1DrOffset = phyParam.Value; getPhy.Attribute = PHY_DEF_RX2_FREQUENCY; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.Rx2Channel.Frequency = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.Rx2Channel.Frequency = phyParam.Value; getPhy.Attribute = PHY_DEF_RX2_DR; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.Rx2Channel.Datarate = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.Rx2Channel.Datarate = phyParam.Value; getPhy.Attribute = PHY_DEF_UPLINK_DWELL_TIME; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.UplinkDwellTime = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.UplinkDwellTime = phyParam.Value; getPhy.Attribute = PHY_DEF_DOWNLINK_DWELL_TIME; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.DownlinkDwellTime = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.DownlinkDwellTime = phyParam.Value; getPhy.Attribute = PHY_DEF_MAX_EIRP; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.MaxEirp = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.MaxEirp = phyParam.Value; LoRaMacParamsDefaults.ChannelsNbRep = 1; @@ -2356,6 +2361,7 @@ LoRaMacStatus_t LoRaMacQueryTxPossible( uint8_t size, LoRaMacTxInfo_t* txInfo ) { AdrNextParams_t adrNext; GetPhyParams_t getPhy; + PhyParam_t phyParam; int8_t datarate = LoRaMacParamsDefaults.ChannelsDatarate; int8_t txPower = LoRaMacParamsDefaults.ChannelsTxPower; uint8_t fOptLen = MacCommandsBufferIndex + MacCommandsBufferToRepeatIndex; @@ -2387,8 +2393,8 @@ LoRaMacStatus_t LoRaMacQueryTxPossible( uint8_t size, LoRaMacTxInfo_t* txInfo ) { getPhy.Attribute = PHY_MAX_PAYLOAD_REPEATER; } - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - txInfo->CurrentPayloadSize = getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + txInfo->CurrentPayloadSize = phyParam.Value; // Verify if the fOpts fit into the maximum payload if( txInfo->CurrentPayloadSize >= fOptLen ) @@ -2417,6 +2423,7 @@ LoRaMacStatus_t LoRaMacMibGetRequestConfirm( MibRequestConfirm_t *mibGet ) { LoRaMacStatus_t status = LORAMAC_STATUS_OK; GetPhyParams_t getPhy; + PhyParam_t phyParam; if( mibGet == NULL ) { @@ -2473,9 +2480,9 @@ LoRaMacStatus_t LoRaMacMibGetRequestConfirm( MibRequestConfirm_t *mibGet ) case MIB_CHANNELS: { getPhy.Attribute = PHY_CHANNELS; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); - mibGet->Param.ChannelList = getPhy.Param.Channels; + mibGet->Param.ChannelList = phyParam.Channels; break; } case MIB_RX2_CHANNEL: @@ -2491,17 +2498,17 @@ LoRaMacStatus_t LoRaMacMibGetRequestConfirm( MibRequestConfirm_t *mibGet ) case MIB_CHANNELS_DEFAULT_MASK: { getPhy.Attribute = PHY_CHANNELS_DEFAULT_MASK; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); - mibGet->Param.ChannelsDefaultMask = getPhy.Param.ChannelsMask; + mibGet->Param.ChannelsDefaultMask = phyParam.ChannelsMask; break; } case MIB_CHANNELS_MASK: { getPhy.Attribute = PHY_CHANNELS_MASK; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); - mibGet->Param.ChannelsMask = getPhy.Param.ChannelsMask; + mibGet->Param.ChannelsMask = phyParam.ChannelsMask; break; } case MIB_CHANNELS_NB_REP: @@ -2981,6 +2988,7 @@ LoRaMacStatus_t LoRaMacMlmeRequest( MlmeReq_t *mlmeRequest ) AlternateDrParams_t altDr; VerifyParams_t verify; GetPhyParams_t getPhy; + PhyParam_t phyParam; if( mlmeRequest == NULL ) { @@ -3019,8 +3027,8 @@ LoRaMacStatus_t LoRaMacMlmeRequest( MlmeReq_t *mlmeRequest ) { // Value not supported, get default getPhy.Attribute = PHY_DEF_NB_JOIN_TRIALS; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); - mlmeRequest->Req.Join.NbTrials = ( uint8_t ) getPhy.Param.Value; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + mlmeRequest->Req.Join.NbTrials = ( uint8_t ) phyParam.Value; } LoRaMacFlags.Bits.MlmeReq = 1; @@ -3086,6 +3094,7 @@ LoRaMacStatus_t LoRaMacMlmeRequest( MlmeReq_t *mlmeRequest ) LoRaMacStatus_t LoRaMacMcpsRequest( McpsReq_t *mcpsRequest ) { GetPhyParams_t getPhy; + PhyParam_t phyParam; LoRaMacStatus_t status = LORAMAC_STATUS_SERVICE_UNKNOWN; LoRaMacHeader_t macHdr; VerifyParams_t verify; @@ -3154,10 +3163,10 @@ LoRaMacStatus_t LoRaMacMcpsRequest( McpsReq_t *mcpsRequest ) // Get the minimum possible datarate getPhy.Attribute = PHY_MIN_TX_DR; getPhy.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; - RegionGetPhyParam( LoRaMacRegion, &getPhy ); + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); // Apply the minimum possible datarate. // Some regions have limitations for the minimum datarate. - datarate = MAX( datarate, getPhy.Param.Value ); + datarate = MAX( datarate, phyParam.Value ); if( readyToSend == true ) { diff --git a/src/mac/region/Region.c b/src/mac/region/Region.c index a898a2db4..dc2bb2f90 100644 --- a/src/mac/region/Region.c +++ b/src/mac/region/Region.c @@ -36,7 +36,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionAS923.h" #define AS923_CASE case LORAMAC_REGION_AS923: #define AS923_IS_ACTIVE( ) AS923_CASE { return true; } -#define AS923_GET_PHY_PARAM( ) AS923_CASE { RegionAS923GetPhyParam( getPhy ); break; } +#define AS923_GET_PHY_PARAM( ) AS923_CASE { return RegionAS923GetPhyParam( getPhy ); } #define AS923_SET_BAND_TX_DONE( ) AS923_CASE { RegionAS923SetBandTxDone( txDone ); break; } #define AS923_INIT_DEFAULTS( ) AS923_CASE { RegionAS923InitDefaults( type ); break; } #define AS923_VERIFY( ) AS923_CASE { return RegionAS923Verify( verify, phyAttribute ); } @@ -88,7 +88,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionAU915.h" #define AU915_CASE case LORAMAC_REGION_AU915: #define AU915_IS_ACTIVE( ) AU915_CASE { return true; } -#define AU915_GET_PHY_PARAM( ) AU915_CASE { RegionAU915GetPhyParam( getPhy ); break; } +#define AU915_GET_PHY_PARAM( ) AU915_CASE { return RegionAU915GetPhyParam( getPhy ); } #define AU915_SET_BAND_TX_DONE( ) AU915_CASE { RegionAU915SetBandTxDone( txDone ); break; } #define AU915_INIT_DEFAULTS( ) AU915_CASE { RegionAU915InitDefaults( type ); break; } #define AU915_VERIFY( ) AU915_CASE { return RegionAU915Verify( verify, phyAttribute ); } @@ -140,7 +140,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionCN470.h" #define CN470_CASE case LORAMAC_REGION_CN470: #define CN470_IS_ACTIVE( ) CN470_CASE { return true; } -#define CN470_GET_PHY_PARAM( ) CN470_CASE { RegionCN470GetPhyParam( getPhy ); break; } +#define CN470_GET_PHY_PARAM( ) CN470_CASE { return RegionCN470GetPhyParam( getPhy ); } #define CN470_SET_BAND_TX_DONE( ) CN470_CASE { RegionCN470SetBandTxDone( txDone ); break; } #define CN470_INIT_DEFAULTS( ) CN470_CASE { RegionCN470InitDefaults( type ); break; } #define CN470_VERIFY( ) CN470_CASE { return RegionCN470Verify( verify, phyAttribute ); } @@ -192,7 +192,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionCN779.h" #define CN779_CASE case LORAMAC_REGION_CN779: #define CN779_IS_ACTIVE( ) CN779_CASE { return true; } -#define CN779_GET_PHY_PARAM( ) CN779_CASE { RegionCN779GetPhyParam( getPhy ); break; } +#define CN779_GET_PHY_PARAM( ) CN779_CASE { return RegionCN779GetPhyParam( getPhy ); } #define CN779_SET_BAND_TX_DONE( ) CN779_CASE { RegionCN779SetBandTxDone( txDone ); break; } #define CN779_INIT_DEFAULTS( ) CN779_CASE { RegionCN779InitDefaults( type ); break; } #define CN779_VERIFY( ) CN779_CASE { return RegionCN779Verify( verify, phyAttribute ); } @@ -244,7 +244,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionEU433.h" #define EU433_CASE case LORAMAC_REGION_EU433: #define EU433_IS_ACTIVE( ) EU433_CASE { return true; } -#define EU433_GET_PHY_PARAM( ) EU433_CASE { RegionEU433GetPhyParam( getPhy ); break; } +#define EU433_GET_PHY_PARAM( ) EU433_CASE { return RegionEU433GetPhyParam( getPhy ); } #define EU433_SET_BAND_TX_DONE( ) EU433_CASE { RegionEU433SetBandTxDone( txDone ); break; } #define EU433_INIT_DEFAULTS( ) EU433_CASE { RegionEU433InitDefaults( type ); break; } #define EU433_VERIFY( ) EU433_CASE { return RegionEU433Verify( verify, phyAttribute ); } @@ -296,7 +296,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionEU868.h" #define EU868_CASE case LORAMAC_REGION_EU868: #define EU868_IS_ACTIVE( ) EU868_CASE { return true; } -#define EU868_GET_PHY_PARAM( ) EU868_CASE { RegionEU868GetPhyParam( getPhy ); break; } +#define EU868_GET_PHY_PARAM( ) EU868_CASE { return RegionEU868GetPhyParam( getPhy ); } #define EU868_SET_BAND_TX_DONE( ) EU868_CASE { RegionEU868SetBandTxDone( txDone ); break; } #define EU868_INIT_DEFAULTS( ) EU868_CASE { RegionEU868InitDefaults( type ); break; } #define EU868_VERIFY( ) EU868_CASE { return RegionEU868Verify( verify, phyAttribute ); } @@ -348,7 +348,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionKR920.h" #define KR920_CASE case LORAMAC_REGION_KR920: #define KR920_IS_ACTIVE( ) KR920_CASE { return true; } -#define KR920_GET_PHY_PARAM( ) KR920_CASE { RegionKR920GetPhyParam( getPhy ); break; } +#define KR920_GET_PHY_PARAM( ) KR920_CASE { return RegionKR920GetPhyParam( getPhy ); } #define KR920_SET_BAND_TX_DONE( ) KR920_CASE { RegionKR920SetBandTxDone( txDone ); break; } #define KR920_INIT_DEFAULTS( ) KR920_CASE { RegionKR920InitDefaults( type ); break; } #define KR920_VERIFY( ) KR920_CASE { return RegionKR920Verify( verify, phyAttribute ); } @@ -400,7 +400,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionIN865.h" #define IN865_CASE case LORAMAC_REGION_IN865: #define IN865_IS_ACTIVE( ) IN865_CASE { return true; } -#define IN865_GET_PHY_PARAM( ) IN865_CASE { RegionIN865GetPhyParam( getPhy ); break; } +#define IN865_GET_PHY_PARAM( ) IN865_CASE { return RegionIN865GetPhyParam( getPhy ); } #define IN865_SET_BAND_TX_DONE( ) IN865_CASE { RegionIN865SetBandTxDone( txDone ); break; } #define IN865_INIT_DEFAULTS( ) IN865_CASE { RegionIN865InitDefaults( type ); break; } #define IN865_VERIFY( ) IN865_CASE { return RegionIN865Verify( verify, phyAttribute ); } @@ -452,7 +452,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionUS915.h" #define US915_CASE case LORAMAC_REGION_US915: #define US915_IS_ACTIVE( ) US915_CASE { return true; } -#define US915_GET_PHY_PARAM( ) US915_CASE { RegionUS915GetPhyParam( getPhy ); break; } +#define US915_GET_PHY_PARAM( ) US915_CASE { return RegionUS915GetPhyParam( getPhy ); } #define US915_SET_BAND_TX_DONE( ) US915_CASE { RegionUS915SetBandTxDone( txDone ); break; } #define US915_INIT_DEFAULTS( ) US915_CASE { RegionUS915InitDefaults( type ); break; } #define US915_VERIFY( ) US915_CASE { return RegionUS915Verify( verify, phyAttribute ); } @@ -504,7 +504,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #include "RegionUS915-Hybrid.h" #define US915_HYBRID_CASE case LORAMAC_REGION_US915_HYBRID: #define US915_HYBRID_IS_ACTIVE( ) US915_HYBRID_CASE { return true; } -#define US915_HYBRID_GET_PHY_PARAM( ) US915_HYBRID_CASE { RegionUS915HybridGetPhyParam( getPhy ); break; } +#define US915_HYBRID_GET_PHY_PARAM( ) US915_HYBRID_CASE { return RegionUS915HybridGetPhyParam( getPhy ); } #define US915_HYBRID_SET_BAND_TX_DONE( ) US915_HYBRID_CASE { RegionUS915HybridSetBandTxDone( txDone ); break; } #define US915_HYBRID_INIT_DEFAULTS( ) US915_HYBRID_CASE { RegionUS915HybridInitDefaults( type ); break; } #define US915_HYBRID_VERIFY( ) US915_HYBRID_CASE { return RegionUS915HybridVerify( verify, phyAttribute ); } @@ -573,8 +573,9 @@ bool RegionIsActive( LoRaMacRegion_t region ) } } -void RegionGetPhyParam( LoRaMacRegion_t region, GetPhyParams_t* getPhy ) +PhyParam_t RegionGetPhyParam( LoRaMacRegion_t region, GetPhyParams_t* getPhy ) { + PhyParam_t phyParam = { 0 }; switch( region ) { AS923_GET_PHY_PARAM( ); @@ -589,7 +590,7 @@ void RegionGetPhyParam( LoRaMacRegion_t region, GetPhyParams_t* getPhy ) US915_HYBRID_GET_PHY_PARAM( ); default: { - return; + return phyParam; } } } diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index d2d6e55fe..f443d7b35 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -719,10 +719,6 @@ typedef struct sGetPhyParams * Downlink dwell time. */ uint8_t DownlinkDwellTime; - /*! - * Contains the parameter to get. - */ - PhyParam_t Param; }GetPhyParams_t; /*! @@ -1129,8 +1125,10 @@ bool RegionIsActive( LoRaMacRegion_t region ); * \param [IN] region LoRaWAN region. * * \param [IN] getPhy Pointer to the function parameters. + * + * \retval Returns a structure containing the PHY parameter. */ -void RegionGetPhyParam( LoRaMacRegion_t region, GetPhyParams_t* getPhy ); +PhyParam_t RegionGetPhyParam( LoRaMacRegion_t region, GetPhyParams_t* getPhy ); /*! * \brief Updates the last TX done parameters of the current channel. diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index b9e1c15f6..d4bbb8e97 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -139,19 +139,21 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t return nbEnabledChannels; } -void RegionAS923GetPhyParam( GetPhyParams_t* getPhy ) +PhyParam_t RegionAS923GetPhyParam( GetPhyParams_t* getPhy ) { + PhyParam_t phyParam; + switch( getPhy->Attribute ) { case PHY_MIN_RX_DR: { if( getPhy->DownlinkDwellTime == 0 ) { - getPhy->Param.Value = AS923_RX_MIN_DATARATE; + phyParam.Value = AS923_RX_MIN_DATARATE; } else { - getPhy->Param.Value = AS923_DWELL_LIMIT_DATARATE; + phyParam.Value = AS923_DWELL_LIMIT_DATARATE; } break; } @@ -159,33 +161,33 @@ void RegionAS923GetPhyParam( GetPhyParams_t* getPhy ) { if( getPhy->UplinkDwellTime == 0 ) { - getPhy->Param.Value = AS923_TX_MIN_DATARATE; + phyParam.Value = AS923_TX_MIN_DATARATE; } else { - getPhy->Param.Value = AS923_DWELL_LIMIT_DATARATE; + phyParam.Value = AS923_DWELL_LIMIT_DATARATE; } break; } case PHY_DEF_TX_DR: { - getPhy->Param.Value = AS923_DEFAULT_DATARATE; + phyParam.Value = AS923_DEFAULT_DATARATE; break; } case PHY_DEF_TX_POWER: { - getPhy->Param.Value = AS923_DEFAULT_TX_POWER; + phyParam.Value = AS923_DEFAULT_TX_POWER; break; } case PHY_MAX_PAYLOAD: { if( getPhy->UplinkDwellTime == 0 ) { - getPhy->Param.Value = MaxPayloadOfDatarateDwell0AS923[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateDwell0AS923[getPhy->Datarate]; } else { - getPhy->Param.Value = MaxPayloadOfDatarateDwell1UpAS923[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateDwell1UpAS923[getPhy->Datarate]; } break; } @@ -193,115 +195,117 @@ void RegionAS923GetPhyParam( GetPhyParams_t* getPhy ) { if( getPhy->UplinkDwellTime == 0 ) { - getPhy->Param.Value = MaxPayloadOfDatarateRepeaterDwell0AS923[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateRepeaterDwell0AS923[getPhy->Datarate]; } else { - getPhy->Param.Value = MaxPayloadOfDatarateDwell1UpAS923[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateDwell1UpAS923[getPhy->Datarate]; } break; } case PHY_DUTY_CYCLE: { - getPhy->Param.Value = AS923_DUTY_CYCLE_ENABLED; + phyParam.Value = AS923_DUTY_CYCLE_ENABLED; break; } case PHY_MAX_RX_WINDOW: { - getPhy->Param.Value = AS923_MAX_RX_WINDOW; + phyParam.Value = AS923_MAX_RX_WINDOW; break; } case PHY_RECEIVE_DELAY1: { - getPhy->Param.Value = AS923_RECEIVE_DELAY1; + phyParam.Value = AS923_RECEIVE_DELAY1; break; } case PHY_RECEIVE_DELAY2: { - getPhy->Param.Value = AS923_RECEIVE_DELAY2; + phyParam.Value = AS923_RECEIVE_DELAY2; break; } case PHY_JOIN_ACCEPT_DELAY1: { - getPhy->Param.Value = AS923_JOIN_ACCEPT_DELAY1; + phyParam.Value = AS923_JOIN_ACCEPT_DELAY1; break; } case PHY_JOIN_ACCEPT_DELAY2: { - getPhy->Param.Value = AS923_JOIN_ACCEPT_DELAY2; + phyParam.Value = AS923_JOIN_ACCEPT_DELAY2; break; } case PHY_MAX_FCNT_GAP: { - getPhy->Param.Value = AS923_MAX_FCNT_GAP; + phyParam.Value = AS923_MAX_FCNT_GAP; break; } case PHY_ACK_TIMEOUT: { - getPhy->Param.Value = ( AS923_ACKTIMEOUT + randr( -AS923_ACK_TIMEOUT_RND, AS923_ACK_TIMEOUT_RND ) ); + phyParam.Value = ( AS923_ACKTIMEOUT + randr( -AS923_ACK_TIMEOUT_RND, AS923_ACK_TIMEOUT_RND ) ); break; } case PHY_DEF_DR1_OFFSET: { - getPhy->Param.Value = AS923_DEFAULT_RX1_DR_OFFSET; + phyParam.Value = AS923_DEFAULT_RX1_DR_OFFSET; break; } case PHY_DEF_RX2_FREQUENCY: { - getPhy->Param.Value = AS923_RX_WND_2_FREQ; + phyParam.Value = AS923_RX_WND_2_FREQ; break; } case PHY_DEF_RX2_DR: { - getPhy->Param.Value = AS923_RX_WND_2_DR; + phyParam.Value = AS923_RX_WND_2_DR; break; } case PHY_CHANNELS_MASK: { - getPhy->Param.ChannelsMask = ChannelsMask; + phyParam.ChannelsMask = ChannelsMask; break; } case PHY_CHANNELS_DEFAULT_MASK: { - getPhy->Param.ChannelsMask = ChannelsDefaultMask; + phyParam.ChannelsMask = ChannelsDefaultMask; break; } case PHY_MAX_NB_CHANNELS: { - getPhy->Param.Value = AS923_MAX_NB_CHANNELS; + phyParam.Value = AS923_MAX_NB_CHANNELS; break; } case PHY_CHANNELS: { - getPhy->Param.Channels = Channels; + phyParam.Channels = Channels; break; } case PHY_DEF_UPLINK_DWELL_TIME: { - getPhy->Param.Value = AS923_DEFAULT_UPLINK_DWELL_TIME; + phyParam.Value = AS923_DEFAULT_UPLINK_DWELL_TIME; break; } case PHY_DEF_DOWNLINK_DWELL_TIME: { - getPhy->Param.Value = AS923_DEFAULT_DOWNLINK_DWELL_TIME; + phyParam.Value = AS923_DEFAULT_DOWNLINK_DWELL_TIME; break; } case PHY_DEF_MAX_EIRP: { - getPhy->Param.Value = AS923_DEFAULT_MAX_EIRP; + phyParam.Value = AS923_DEFAULT_MAX_EIRP; break; } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { - getPhy->Param.Value = 1; + phyParam.Value = 1; break; } default: { - return; + break; } } + + return phyParam; } void RegionAS923SetBandTxDone( SetBandTxDoneParams_t* txDone ) @@ -458,12 +462,13 @@ bool RegionAS923AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO int8_t minTxDatarate = 0; int8_t txPower = adrNext->TxPower; GetPhyParams_t getPhy; + PhyParam_t phyParam; // Get the minimum possible datarate getPhy.Attribute = PHY_MIN_TX_DR; getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; - RegionAS923GetPhyParam( &getPhy ); - minTxDatarate = getPhy.Param.Value; + phyParam = RegionAS923GetPhyParam( &getPhy ); + minTxDatarate = phyParam.Value; // Report back the adr ack counter *adrAckCounter = adrNext->AdrAckCounter; diff --git a/src/mac/region/RegionAS923.h b/src/mac/region/RegionAS923.h index 92d961055..b14193542 100644 --- a/src/mac/region/RegionAS923.h +++ b/src/mac/region/RegionAS923.h @@ -275,8 +275,10 @@ static const int8_t EffectiveRx1DrOffsetAS923[] = { 0, 1, 2, 3, 4, 5, -1, -2 }; * \brief The function gets a value of a specific phy attribute. * * \param [IN] getPhy Pointer to the function parameters. + * + * \retval Returns a structure containing the PHY parameter. */ -void RegionAS923GetPhyParam( GetPhyParams_t* getPhy ); +PhyParam_t RegionAS923GetPhyParam( GetPhyParams_t* getPhy ); /*! * \brief Updates the last TX done parameters of the current channel. diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index d3e178377..65306bfde 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -134,133 +134,137 @@ static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMas return nbEnabledChannels; } -void RegionAU915GetPhyParam( GetPhyParams_t* getPhy ) +PhyParam_t RegionAU915GetPhyParam( GetPhyParams_t* getPhy ) { + PhyParam_t phyParam; + switch( getPhy->Attribute ) { case PHY_MIN_RX_DR: { - getPhy->Param.Value = AU915_RX_MIN_DATARATE; + phyParam.Value = AU915_RX_MIN_DATARATE; break; } case PHY_MIN_TX_DR: { - getPhy->Param.Value = AU915_TX_MIN_DATARATE; + phyParam.Value = AU915_TX_MIN_DATARATE; break; } case PHY_DEF_TX_DR: { - getPhy->Param.Value = AU915_DEFAULT_DATARATE; + phyParam.Value = AU915_DEFAULT_DATARATE; break; } case PHY_DEF_TX_POWER: { - getPhy->Param.Value = AU915_DEFAULT_TX_POWER; + phyParam.Value = AU915_DEFAULT_TX_POWER; break; } case PHY_MAX_PAYLOAD: { - getPhy->Param.Value = MaxPayloadOfDatarateAU915[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateAU915[getPhy->Datarate]; break; } case PHY_MAX_PAYLOAD_REPEATER: { - getPhy->Param.Value = MaxPayloadOfDatarateRepeaterAU915[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateRepeaterAU915[getPhy->Datarate]; break; } case PHY_DUTY_CYCLE: { - getPhy->Param.Value = AU915_DUTY_CYCLE_ENABLED; + phyParam.Value = AU915_DUTY_CYCLE_ENABLED; break; } case PHY_MAX_RX_WINDOW: { - getPhy->Param.Value = AU915_MAX_RX_WINDOW; + phyParam.Value = AU915_MAX_RX_WINDOW; break; } case PHY_RECEIVE_DELAY1: { - getPhy->Param.Value = AU915_RECEIVE_DELAY1; + phyParam.Value = AU915_RECEIVE_DELAY1; break; } case PHY_RECEIVE_DELAY2: { - getPhy->Param.Value = AU915_RECEIVE_DELAY2; + phyParam.Value = AU915_RECEIVE_DELAY2; break; } case PHY_JOIN_ACCEPT_DELAY1: { - getPhy->Param.Value = AU915_JOIN_ACCEPT_DELAY1; + phyParam.Value = AU915_JOIN_ACCEPT_DELAY1; break; } case PHY_JOIN_ACCEPT_DELAY2: { - getPhy->Param.Value = AU915_JOIN_ACCEPT_DELAY2; + phyParam.Value = AU915_JOIN_ACCEPT_DELAY2; break; } case PHY_MAX_FCNT_GAP: { - getPhy->Param.Value = AU915_MAX_FCNT_GAP; + phyParam.Value = AU915_MAX_FCNT_GAP; break; } case PHY_ACK_TIMEOUT: { - getPhy->Param.Value = ( AU915_ACKTIMEOUT + randr( -AU915_ACK_TIMEOUT_RND, AU915_ACK_TIMEOUT_RND ) ); + phyParam.Value = ( AU915_ACKTIMEOUT + randr( -AU915_ACK_TIMEOUT_RND, AU915_ACK_TIMEOUT_RND ) ); break; } case PHY_DEF_DR1_OFFSET: { - getPhy->Param.Value = AU915_DEFAULT_RX1_DR_OFFSET; + phyParam.Value = AU915_DEFAULT_RX1_DR_OFFSET; break; } case PHY_DEF_RX2_FREQUENCY: { - getPhy->Param.Value = AU915_RX_WND_2_FREQ; + phyParam.Value = AU915_RX_WND_2_FREQ; break; } case PHY_DEF_RX2_DR: { - getPhy->Param.Value = AU915_RX_WND_2_DR; + phyParam.Value = AU915_RX_WND_2_DR; break; } case PHY_CHANNELS_MASK: { - getPhy->Param.ChannelsMask = ChannelsMask; + phyParam.ChannelsMask = ChannelsMask; break; } case PHY_CHANNELS_DEFAULT_MASK: { - getPhy->Param.ChannelsMask = ChannelsDefaultMask; + phyParam.ChannelsMask = ChannelsDefaultMask; break; } case PHY_MAX_NB_CHANNELS: { - getPhy->Param.Value = AU915_MAX_NB_CHANNELS; + phyParam.Value = AU915_MAX_NB_CHANNELS; break; } case PHY_CHANNELS: { - getPhy->Param.Channels = Channels; + phyParam.Channels = Channels; break; } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: case PHY_DEF_MAX_EIRP: { - getPhy->Param.Value = 0; + phyParam.Value = 0; break; } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { - getPhy->Param.Value = 2; + phyParam.Value = 2; break; } default: { - return; + break; } } + + return phyParam; } void RegionAU915SetBandTxDone( SetBandTxDoneParams_t* txDone ) diff --git a/src/mac/region/RegionAU915.h b/src/mac/region/RegionAU915.h index 30703bd8b..6ce00abe6 100644 --- a/src/mac/region/RegionAU915.h +++ b/src/mac/region/RegionAU915.h @@ -229,8 +229,10 @@ static const int8_t TxPowersAU915[] = { 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, * \brief The function gets a value of a specific phy attribute. * * \param [IN] getPhy Pointer to the function parameters. + * + * \retval Returns a structure containing the PHY parameter. */ -void RegionAU915GetPhyParam( GetPhyParams_t* getPhy ); +PhyParam_t RegionAU915GetPhyParam( GetPhyParams_t* getPhy ); /*! * \brief Updates the last TX done parameters of the current channel. diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index 2a05c6bd3..fb7813d8f 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -117,133 +117,137 @@ static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMas return nbEnabledChannels; } -void RegionCN470GetPhyParam( GetPhyParams_t* getPhy ) +PhyParam_t RegionCN470GetPhyParam( GetPhyParams_t* getPhy ) { + PhyParam_t phyParam; + switch( getPhy->Attribute ) { case PHY_MIN_RX_DR: { - getPhy->Param.Value = CN470_RX_MIN_DATARATE; + phyParam.Value = CN470_RX_MIN_DATARATE; break; } case PHY_MIN_TX_DR: { - getPhy->Param.Value = CN470_TX_MIN_DATARATE; + phyParam.Value = CN470_TX_MIN_DATARATE; break; } case PHY_DEF_TX_DR: { - getPhy->Param.Value = CN470_DEFAULT_DATARATE; + phyParam.Value = CN470_DEFAULT_DATARATE; break; } case PHY_DEF_TX_POWER: { - getPhy->Param.Value = CN470_DEFAULT_TX_POWER; + phyParam.Value = CN470_DEFAULT_TX_POWER; break; } case PHY_MAX_PAYLOAD: { - getPhy->Param.Value = MaxPayloadOfDatarateCN470[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateCN470[getPhy->Datarate]; break; } case PHY_MAX_PAYLOAD_REPEATER: { - getPhy->Param.Value = MaxPayloadOfDatarateRepeaterCN470[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateRepeaterCN470[getPhy->Datarate]; break; } case PHY_DUTY_CYCLE: { - getPhy->Param.Value = CN470_DUTY_CYCLE_ENABLED; + phyParam.Value = CN470_DUTY_CYCLE_ENABLED; break; } case PHY_MAX_RX_WINDOW: { - getPhy->Param.Value = CN470_MAX_RX_WINDOW; + phyParam.Value = CN470_MAX_RX_WINDOW; break; } case PHY_RECEIVE_DELAY1: { - getPhy->Param.Value = CN470_RECEIVE_DELAY1; + phyParam.Value = CN470_RECEIVE_DELAY1; break; } case PHY_RECEIVE_DELAY2: { - getPhy->Param.Value = CN470_RECEIVE_DELAY2; + phyParam.Value = CN470_RECEIVE_DELAY2; break; } case PHY_JOIN_ACCEPT_DELAY1: { - getPhy->Param.Value = CN470_JOIN_ACCEPT_DELAY1; + phyParam.Value = CN470_JOIN_ACCEPT_DELAY1; break; } case PHY_JOIN_ACCEPT_DELAY2: { - getPhy->Param.Value = CN470_JOIN_ACCEPT_DELAY2; + phyParam.Value = CN470_JOIN_ACCEPT_DELAY2; break; } case PHY_MAX_FCNT_GAP: { - getPhy->Param.Value = CN470_MAX_FCNT_GAP; + phyParam.Value = CN470_MAX_FCNT_GAP; break; } case PHY_ACK_TIMEOUT: { - getPhy->Param.Value = ( CN470_ACKTIMEOUT + randr( -CN470_ACK_TIMEOUT_RND, CN470_ACK_TIMEOUT_RND ) ); + phyParam.Value = ( CN470_ACKTIMEOUT + randr( -CN470_ACK_TIMEOUT_RND, CN470_ACK_TIMEOUT_RND ) ); break; } case PHY_DEF_DR1_OFFSET: { - getPhy->Param.Value = CN470_DEFAULT_RX1_DR_OFFSET; + phyParam.Value = CN470_DEFAULT_RX1_DR_OFFSET; break; } case PHY_DEF_RX2_FREQUENCY: { - getPhy->Param.Value = CN470_RX_WND_2_FREQ; + phyParam.Value = CN470_RX_WND_2_FREQ; break; } case PHY_DEF_RX2_DR: { - getPhy->Param.Value = CN470_RX_WND_2_DR; + phyParam.Value = CN470_RX_WND_2_DR; break; } case PHY_CHANNELS_MASK: { - getPhy->Param.ChannelsMask = ChannelsMask; + phyParam.ChannelsMask = ChannelsMask; break; } case PHY_CHANNELS_DEFAULT_MASK: { - getPhy->Param.ChannelsMask = ChannelsDefaultMask; + phyParam.ChannelsMask = ChannelsDefaultMask; break; } case PHY_MAX_NB_CHANNELS: { - getPhy->Param.Value = CN470_MAX_NB_CHANNELS; + phyParam.Value = CN470_MAX_NB_CHANNELS; break; } case PHY_CHANNELS: { - getPhy->Param.Channels = Channels; + phyParam.Channels = Channels; break; } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: case PHY_DEF_MAX_EIRP: { - getPhy->Param.Value = 0; + phyParam.Value = 0; break; } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { - getPhy->Param.Value = 48; + phyParam.Value = 48; break; } default: { - return; + break; } } + + return phyParam; } void RegionCN470SetBandTxDone( SetBandTxDoneParams_t* txDone ) diff --git a/src/mac/region/RegionCN470.h b/src/mac/region/RegionCN470.h index 8d299e7b2..943c29ecb 100644 --- a/src/mac/region/RegionCN470.h +++ b/src/mac/region/RegionCN470.h @@ -217,8 +217,10 @@ static const int8_t TxPowersCN470[] = { 17, 16, 14, 12, 10, 7, 5, 2 }; * \brief The function gets a value of a specific phy attribute. * * \param [IN] getPhy Pointer to the function parameters. + * + * \retval Returns a structure containing the PHY parameter. */ -void RegionCN470GetPhyParam( GetPhyParams_t* getPhy ); +PhyParam_t RegionCN470GetPhyParam( GetPhyParams_t* getPhy ); /*! * \brief Updates the last TX done parameters of the current channel. diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index ec500becd..2465ae297 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -139,133 +139,137 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t return nbEnabledChannels; } -void RegionCN779GetPhyParam( GetPhyParams_t* getPhy ) +PhyParam_t RegionCN779GetPhyParam( GetPhyParams_t* getPhy ) { + PhyParam_t phyParam; + switch( getPhy->Attribute ) { case PHY_MIN_RX_DR: { - getPhy->Param.Value = CN779_RX_MIN_DATARATE; + phyParam.Value = CN779_RX_MIN_DATARATE; break; } case PHY_MIN_TX_DR: { - getPhy->Param.Value = CN779_TX_MIN_DATARATE; + phyParam.Value = CN779_TX_MIN_DATARATE; break; } case PHY_DEF_TX_DR: { - getPhy->Param.Value = CN779_DEFAULT_DATARATE; + phyParam.Value = CN779_DEFAULT_DATARATE; break; } case PHY_DEF_TX_POWER: { - getPhy->Param.Value = CN779_DEFAULT_TX_POWER; + phyParam.Value = CN779_DEFAULT_TX_POWER; break; } case PHY_MAX_PAYLOAD: { - getPhy->Param.Value = MaxPayloadOfDatarateCN779[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateCN779[getPhy->Datarate]; break; } case PHY_MAX_PAYLOAD_REPEATER: { - getPhy->Param.Value = MaxPayloadOfDatarateRepeaterCN779[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateRepeaterCN779[getPhy->Datarate]; break; } case PHY_DUTY_CYCLE: { - getPhy->Param.Value = CN779_DUTY_CYCLE_ENABLED; + phyParam.Value = CN779_DUTY_CYCLE_ENABLED; break; } case PHY_MAX_RX_WINDOW: { - getPhy->Param.Value = CN779_MAX_RX_WINDOW; + phyParam.Value = CN779_MAX_RX_WINDOW; break; } case PHY_RECEIVE_DELAY1: { - getPhy->Param.Value = CN779_RECEIVE_DELAY1; + phyParam.Value = CN779_RECEIVE_DELAY1; break; } case PHY_RECEIVE_DELAY2: { - getPhy->Param.Value = CN779_RECEIVE_DELAY2; + phyParam.Value = CN779_RECEIVE_DELAY2; break; } case PHY_JOIN_ACCEPT_DELAY1: { - getPhy->Param.Value = CN779_JOIN_ACCEPT_DELAY1; + phyParam.Value = CN779_JOIN_ACCEPT_DELAY1; break; } case PHY_JOIN_ACCEPT_DELAY2: { - getPhy->Param.Value = CN779_JOIN_ACCEPT_DELAY2; + phyParam.Value = CN779_JOIN_ACCEPT_DELAY2; break; } case PHY_MAX_FCNT_GAP: { - getPhy->Param.Value = CN779_MAX_FCNT_GAP; + phyParam.Value = CN779_MAX_FCNT_GAP; break; } case PHY_ACK_TIMEOUT: { - getPhy->Param.Value = ( CN779_ACKTIMEOUT + randr( -CN779_ACK_TIMEOUT_RND, CN779_ACK_TIMEOUT_RND ) ); + phyParam.Value = ( CN779_ACKTIMEOUT + randr( -CN779_ACK_TIMEOUT_RND, CN779_ACK_TIMEOUT_RND ) ); break; } case PHY_DEF_DR1_OFFSET: { - getPhy->Param.Value = CN779_DEFAULT_RX1_DR_OFFSET; + phyParam.Value = CN779_DEFAULT_RX1_DR_OFFSET; break; } case PHY_DEF_RX2_FREQUENCY: { - getPhy->Param.Value = CN779_RX_WND_2_FREQ; + phyParam.Value = CN779_RX_WND_2_FREQ; break; } case PHY_DEF_RX2_DR: { - getPhy->Param.Value = CN779_RX_WND_2_DR; + phyParam.Value = CN779_RX_WND_2_DR; break; } case PHY_CHANNELS_MASK: { - getPhy->Param.ChannelsMask = ChannelsMask; + phyParam.ChannelsMask = ChannelsMask; break; } case PHY_CHANNELS_DEFAULT_MASK: { - getPhy->Param.ChannelsMask = ChannelsDefaultMask; + phyParam.ChannelsMask = ChannelsDefaultMask; break; } case PHY_MAX_NB_CHANNELS: { - getPhy->Param.Value = CN779_MAX_NB_CHANNELS; + phyParam.Value = CN779_MAX_NB_CHANNELS; break; } case PHY_CHANNELS: { - getPhy->Param.Channels = Channels; + phyParam.Channels = Channels; break; } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: case PHY_DEF_MAX_EIRP: { - getPhy->Param.Value = 0; + phyParam.Value = 0; break; } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { - getPhy->Param.Value = 48; + phyParam.Value = 48; break; } default: { - return; + break; } } + + return phyParam; } void RegionCN779SetBandTxDone( SetBandTxDoneParams_t* txDone ) diff --git a/src/mac/region/RegionCN779.h b/src/mac/region/RegionCN779.h index fe2d320fc..a66119bb1 100644 --- a/src/mac/region/RegionCN779.h +++ b/src/mac/region/RegionCN779.h @@ -236,8 +236,10 @@ static const int8_t TxPowersCN779[] = { 10, 7, 4, 1, -2, -5 }; * \brief The function gets a value of a specific phy attribute. * * \param [IN] getPhy Pointer to the function parameters. + * + * \retval Returns a structure containing the PHY parameter. */ -void RegionCN779GetPhyParam( GetPhyParams_t* getPhy ); +PhyParam_t RegionCN779GetPhyParam( GetPhyParams_t* getPhy ); /*! * \brief Updates the last TX done parameters of the current channel. diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index 28e8d29f1..836e93150 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -139,133 +139,137 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t return nbEnabledChannels; } -void RegionEU433GetPhyParam( GetPhyParams_t* getPhy ) +PhyParam_t RegionEU433GetPhyParam( GetPhyParams_t* getPhy ) { + PhyParam_t phyParam; + switch( getPhy->Attribute ) { case PHY_MIN_RX_DR: { - getPhy->Param.Value = EU433_RX_MIN_DATARATE; + phyParam.Value = EU433_RX_MIN_DATARATE; break; } case PHY_MIN_TX_DR: { - getPhy->Param.Value = EU433_TX_MIN_DATARATE; + phyParam.Value = EU433_TX_MIN_DATARATE; break; } case PHY_DEF_TX_DR: { - getPhy->Param.Value = EU433_DEFAULT_DATARATE; + phyParam.Value = EU433_DEFAULT_DATARATE; break; } case PHY_DEF_TX_POWER: { - getPhy->Param.Value = EU433_DEFAULT_TX_POWER; + phyParam.Value = EU433_DEFAULT_TX_POWER; break; } case PHY_MAX_PAYLOAD: { - getPhy->Param.Value = MaxPayloadOfDatarateEU433[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateEU433[getPhy->Datarate]; break; } case PHY_MAX_PAYLOAD_REPEATER: { - getPhy->Param.Value = MaxPayloadOfDatarateRepeaterEU433[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateRepeaterEU433[getPhy->Datarate]; break; } case PHY_DUTY_CYCLE: { - getPhy->Param.Value = EU433_DUTY_CYCLE_ENABLED; + phyParam.Value = EU433_DUTY_CYCLE_ENABLED; break; } case PHY_MAX_RX_WINDOW: { - getPhy->Param.Value = EU433_MAX_RX_WINDOW; + phyParam.Value = EU433_MAX_RX_WINDOW; break; } case PHY_RECEIVE_DELAY1: { - getPhy->Param.Value = EU433_RECEIVE_DELAY1; + phyParam.Value = EU433_RECEIVE_DELAY1; break; } case PHY_RECEIVE_DELAY2: { - getPhy->Param.Value = EU433_RECEIVE_DELAY2; + phyParam.Value = EU433_RECEIVE_DELAY2; break; } case PHY_JOIN_ACCEPT_DELAY1: { - getPhy->Param.Value = EU433_JOIN_ACCEPT_DELAY1; + phyParam.Value = EU433_JOIN_ACCEPT_DELAY1; break; } case PHY_JOIN_ACCEPT_DELAY2: { - getPhy->Param.Value = EU433_JOIN_ACCEPT_DELAY2; + phyParam.Value = EU433_JOIN_ACCEPT_DELAY2; break; } case PHY_MAX_FCNT_GAP: { - getPhy->Param.Value = EU433_MAX_FCNT_GAP; + phyParam.Value = EU433_MAX_FCNT_GAP; break; } case PHY_ACK_TIMEOUT: { - getPhy->Param.Value = ( EU433_ACKTIMEOUT + randr( -EU433_ACK_TIMEOUT_RND, EU433_ACK_TIMEOUT_RND ) ); + phyParam.Value = ( EU433_ACKTIMEOUT + randr( -EU433_ACK_TIMEOUT_RND, EU433_ACK_TIMEOUT_RND ) ); break; } case PHY_DEF_DR1_OFFSET: { - getPhy->Param.Value = EU433_DEFAULT_RX1_DR_OFFSET; + phyParam.Value = EU433_DEFAULT_RX1_DR_OFFSET; break; } case PHY_DEF_RX2_FREQUENCY: { - getPhy->Param.Value = EU433_RX_WND_2_FREQ; + phyParam.Value = EU433_RX_WND_2_FREQ; break; } case PHY_DEF_RX2_DR: { - getPhy->Param.Value = EU433_RX_WND_2_DR; + phyParam.Value = EU433_RX_WND_2_DR; break; } case PHY_CHANNELS_MASK: { - getPhy->Param.ChannelsMask = ChannelsMask; + phyParam.ChannelsMask = ChannelsMask; break; } case PHY_CHANNELS_DEFAULT_MASK: { - getPhy->Param.ChannelsMask = ChannelsDefaultMask; + phyParam.ChannelsMask = ChannelsDefaultMask; break; } case PHY_MAX_NB_CHANNELS: { - getPhy->Param.Value = EU433_MAX_NB_CHANNELS; + phyParam.Value = EU433_MAX_NB_CHANNELS; break; } case PHY_CHANNELS: { - getPhy->Param.Channels = Channels; + phyParam.Channels = Channels; break; } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: case PHY_DEF_MAX_EIRP: { - getPhy->Param.Value = 0; + phyParam.Value = 0; break; } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { - getPhy->Param.Value = 48; + phyParam.Value = 48; break; } default: { - return; + break; } } + + return phyParam; } void RegionEU433SetBandTxDone( SetBandTxDoneParams_t* txDone ) diff --git a/src/mac/region/RegionEU433.h b/src/mac/region/RegionEU433.h index 94720342c..9f9d97985 100644 --- a/src/mac/region/RegionEU433.h +++ b/src/mac/region/RegionEU433.h @@ -237,8 +237,10 @@ static const int8_t TxPowersEU433[] = { 10, 7, 4, 1, -2, -5 }; * \brief The function gets a value of a specific phy attribute. * * \param [IN] getPhy Pointer to the function parameters. + * + * \retval Returns a structure containing the PHY parameter. */ -void RegionEU433GetPhyParam( GetPhyParams_t* getPhy ); +PhyParam_t RegionEU433GetPhyParam( GetPhyParams_t* getPhy ); /*! * \brief Updates the last TX done parameters of the current channel. diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index 8b67567ca..1a1380a53 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -168,133 +168,137 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t return nbEnabledChannels; } -void RegionEU868GetPhyParam( GetPhyParams_t* getPhy ) +PhyParam_t RegionEU868GetPhyParam( GetPhyParams_t* getPhy ) { + PhyParam_t phyParam; + switch( getPhy->Attribute ) { case PHY_MIN_RX_DR: { - getPhy->Param.Value = EU868_RX_MIN_DATARATE; + phyParam.Value = EU868_RX_MIN_DATARATE; break; } case PHY_MIN_TX_DR: { - getPhy->Param.Value = EU868_TX_MIN_DATARATE; + phyParam.Value = EU868_TX_MIN_DATARATE; break; } case PHY_DEF_TX_DR: { - getPhy->Param.Value = EU868_DEFAULT_DATARATE; + phyParam.Value = EU868_DEFAULT_DATARATE; break; } case PHY_DEF_TX_POWER: { - getPhy->Param.Value = EU868_DEFAULT_TX_POWER; + phyParam.Value = EU868_DEFAULT_TX_POWER; break; } case PHY_MAX_PAYLOAD: { - getPhy->Param.Value = MaxPayloadOfDatarateEU868[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateEU868[getPhy->Datarate]; break; } case PHY_MAX_PAYLOAD_REPEATER: { - getPhy->Param.Value = MaxPayloadOfDatarateRepeaterEU868[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateRepeaterEU868[getPhy->Datarate]; break; } case PHY_DUTY_CYCLE: { - getPhy->Param.Value = EU868_DUTY_CYCLE_ENABLED; + phyParam.Value = EU868_DUTY_CYCLE_ENABLED; break; } case PHY_MAX_RX_WINDOW: { - getPhy->Param.Value = EU868_MAX_RX_WINDOW; + phyParam.Value = EU868_MAX_RX_WINDOW; break; } case PHY_RECEIVE_DELAY1: { - getPhy->Param.Value = EU868_RECEIVE_DELAY1; + phyParam.Value = EU868_RECEIVE_DELAY1; break; } case PHY_RECEIVE_DELAY2: { - getPhy->Param.Value = EU868_RECEIVE_DELAY2; + phyParam.Value = EU868_RECEIVE_DELAY2; break; } case PHY_JOIN_ACCEPT_DELAY1: { - getPhy->Param.Value = EU868_JOIN_ACCEPT_DELAY1; + phyParam.Value = EU868_JOIN_ACCEPT_DELAY1; break; } case PHY_JOIN_ACCEPT_DELAY2: { - getPhy->Param.Value = EU868_JOIN_ACCEPT_DELAY2; + phyParam.Value = EU868_JOIN_ACCEPT_DELAY2; break; } case PHY_MAX_FCNT_GAP: { - getPhy->Param.Value = EU868_MAX_FCNT_GAP; + phyParam.Value = EU868_MAX_FCNT_GAP; break; } case PHY_ACK_TIMEOUT: { - getPhy->Param.Value = ( EU868_ACKTIMEOUT + randr( -EU868_ACK_TIMEOUT_RND, EU868_ACK_TIMEOUT_RND ) ); + phyParam.Value = ( EU868_ACKTIMEOUT + randr( -EU868_ACK_TIMEOUT_RND, EU868_ACK_TIMEOUT_RND ) ); break; } case PHY_DEF_DR1_OFFSET: { - getPhy->Param.Value = EU868_DEFAULT_RX1_DR_OFFSET; + phyParam.Value = EU868_DEFAULT_RX1_DR_OFFSET; break; } case PHY_DEF_RX2_FREQUENCY: { - getPhy->Param.Value = EU868_RX_WND_2_FREQ; + phyParam.Value = EU868_RX_WND_2_FREQ; break; } case PHY_DEF_RX2_DR: { - getPhy->Param.Value = EU868_RX_WND_2_DR; + phyParam.Value = EU868_RX_WND_2_DR; break; } case PHY_CHANNELS_MASK: { - getPhy->Param.ChannelsMask = ChannelsMask; + phyParam.ChannelsMask = ChannelsMask; break; } case PHY_CHANNELS_DEFAULT_MASK: { - getPhy->Param.ChannelsMask = ChannelsDefaultMask; + phyParam.ChannelsMask = ChannelsDefaultMask; break; } case PHY_MAX_NB_CHANNELS: { - getPhy->Param.Value = EU868_MAX_NB_CHANNELS; + phyParam.Value = EU868_MAX_NB_CHANNELS; break; } case PHY_CHANNELS: { - getPhy->Param.Channels = Channels; + phyParam.Channels = Channels; break; } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: case PHY_DEF_MAX_EIRP: { - getPhy->Param.Value = 0; + phyParam.Value = 0; break; } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { - getPhy->Param.Value = 48; + phyParam.Value = 48; break; } default: { - return; + break; } } + + return phyParam; } void RegionEU868SetBandTxDone( SetBandTxDoneParams_t* txDone ) diff --git a/src/mac/region/RegionEU868.h b/src/mac/region/RegionEU868.h index bfb567f28..cf4a94e86 100644 --- a/src/mac/region/RegionEU868.h +++ b/src/mac/region/RegionEU868.h @@ -259,8 +259,10 @@ static const int8_t TxPowersEU868[] = { 20, 14, 11, 8, 5, 2 }; * \brief The function gets a value of a specific phy attribute. * * \param [IN] getPhy Pointer to the function parameters. + * + * \retval Returns a structure containing the PHY parameter. */ -void RegionEU868GetPhyParam( GetPhyParams_t* getPhy ); +PhyParam_t RegionEU868GetPhyParam( GetPhyParams_t* getPhy ); /*! * \brief Updates the last TX done parameters of the current channel. diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index 44f947dff..26e5e5ba0 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -139,133 +139,137 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t return nbEnabledChannels; } -void RegionIN865GetPhyParam( GetPhyParams_t* getPhy ) +PhyParam_t RegionIN865GetPhyParam( GetPhyParams_t* getPhy ) { + PhyParam_t phyParam; + switch( getPhy->Attribute ) { case PHY_MIN_RX_DR: { - getPhy->Param.Value = IN865_RX_MIN_DATARATE; + phyParam.Value = IN865_RX_MIN_DATARATE; break; } case PHY_MIN_TX_DR: { - getPhy->Param.Value = IN865_TX_MIN_DATARATE; + phyParam.Value = IN865_TX_MIN_DATARATE; break; } case PHY_DEF_TX_DR: { - getPhy->Param.Value = IN865_DEFAULT_DATARATE; + phyParam.Value = IN865_DEFAULT_DATARATE; break; } case PHY_DEF_TX_POWER: { - getPhy->Param.Value = IN865_DEFAULT_TX_POWER; + phyParam.Value = IN865_DEFAULT_TX_POWER; break; } case PHY_MAX_PAYLOAD: { - getPhy->Param.Value = MaxPayloadOfDatarateIN865[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateIN865[getPhy->Datarate]; break; } case PHY_MAX_PAYLOAD_REPEATER: { - getPhy->Param.Value = MaxPayloadOfDatarateRepeaterIN865[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateRepeaterIN865[getPhy->Datarate]; break; } case PHY_DUTY_CYCLE: { - getPhy->Param.Value = IN865_DUTY_CYCLE_ENABLED; + phyParam.Value = IN865_DUTY_CYCLE_ENABLED; break; } case PHY_MAX_RX_WINDOW: { - getPhy->Param.Value = IN865_MAX_RX_WINDOW; + phyParam.Value = IN865_MAX_RX_WINDOW; break; } case PHY_RECEIVE_DELAY1: { - getPhy->Param.Value = IN865_RECEIVE_DELAY1; + phyParam.Value = IN865_RECEIVE_DELAY1; break; } case PHY_RECEIVE_DELAY2: { - getPhy->Param.Value = IN865_RECEIVE_DELAY2; + phyParam.Value = IN865_RECEIVE_DELAY2; break; } case PHY_JOIN_ACCEPT_DELAY1: { - getPhy->Param.Value = IN865_JOIN_ACCEPT_DELAY1; + phyParam.Value = IN865_JOIN_ACCEPT_DELAY1; break; } case PHY_JOIN_ACCEPT_DELAY2: { - getPhy->Param.Value = IN865_JOIN_ACCEPT_DELAY2; + phyParam.Value = IN865_JOIN_ACCEPT_DELAY2; break; } case PHY_MAX_FCNT_GAP: { - getPhy->Param.Value = IN865_MAX_FCNT_GAP; + phyParam.Value = IN865_MAX_FCNT_GAP; break; } case PHY_ACK_TIMEOUT: { - getPhy->Param.Value = ( IN865_ACKTIMEOUT + randr( -IN865_ACK_TIMEOUT_RND, IN865_ACK_TIMEOUT_RND ) ); + phyParam.Value = ( IN865_ACKTIMEOUT + randr( -IN865_ACK_TIMEOUT_RND, IN865_ACK_TIMEOUT_RND ) ); break; } case PHY_DEF_DR1_OFFSET: { - getPhy->Param.Value = IN865_DEFAULT_RX1_DR_OFFSET; + phyParam.Value = IN865_DEFAULT_RX1_DR_OFFSET; break; } case PHY_DEF_RX2_FREQUENCY: { - getPhy->Param.Value = IN865_RX_WND_2_FREQ; + phyParam.Value = IN865_RX_WND_2_FREQ; break; } case PHY_DEF_RX2_DR: { - getPhy->Param.Value = IN865_RX_WND_2_DR; + phyParam.Value = IN865_RX_WND_2_DR; break; } case PHY_CHANNELS_MASK: { - getPhy->Param.ChannelsMask = ChannelsMask; + phyParam.ChannelsMask = ChannelsMask; break; } case PHY_CHANNELS_DEFAULT_MASK: { - getPhy->Param.ChannelsMask = ChannelsDefaultMask; + phyParam.ChannelsMask = ChannelsDefaultMask; break; } case PHY_MAX_NB_CHANNELS: { - getPhy->Param.Value = IN865_MAX_NB_CHANNELS; + phyParam.Value = IN865_MAX_NB_CHANNELS; break; } case PHY_CHANNELS: { - getPhy->Param.Channels = Channels; + phyParam.Channels = Channels; break; } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: case PHY_DEF_MAX_EIRP: { - getPhy->Param.Value = 0; + phyParam.Value = 0; break; } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { - getPhy->Param.Value = 48; + phyParam.Value = 48; break; } default: { - return; + break; } } + + return phyParam; } void RegionIN865SetBandTxDone( SetBandTxDoneParams_t* txDone ) diff --git a/src/mac/region/RegionIN865.h b/src/mac/region/RegionIN865.h index 7c0fbd426..1481a5559 100644 --- a/src/mac/region/RegionIN865.h +++ b/src/mac/region/RegionIN865.h @@ -237,8 +237,10 @@ static const int8_t EffectiveRx1DrOffsetIN865[] = { 0, 1, 2, 3, 4, 5, -1, -2 }; * \brief The function gets a value of a specific phy attribute. * * \param [IN] getPhy Pointer to the function parameters. + * + * \retval Returns a structure containing the PHY parameter. */ -void RegionIN865GetPhyParam( GetPhyParams_t* getPhy ); +PhyParam_t RegionIN865GetPhyParam( GetPhyParams_t* getPhy ); /*! * \brief Updates the last TX done parameters of the current channel. diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 6c867c910..d37e5a69f 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -158,129 +158,133 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t return nbEnabledChannels; } -void RegionKR920GetPhyParam( GetPhyParams_t* getPhy ) +PhyParam_t RegionKR920GetPhyParam( GetPhyParams_t* getPhy ) { + PhyParam_t phyParam; + switch( getPhy->Attribute ) { case PHY_MIN_RX_DR: { - getPhy->Param.Value = KR920_RX_MIN_DATARATE; + phyParam.Value = KR920_RX_MIN_DATARATE; break; } case PHY_MIN_TX_DR: { - getPhy->Param.Value = KR920_TX_MIN_DATARATE; + phyParam.Value = KR920_TX_MIN_DATARATE; break; } case PHY_DEF_TX_DR: { - getPhy->Param.Value = KR920_DEFAULT_DATARATE; + phyParam.Value = KR920_DEFAULT_DATARATE; break; } case PHY_DEF_TX_POWER: { - getPhy->Param.Value = KR920_DEFAULT_TX_POWER; + phyParam.Value = KR920_DEFAULT_TX_POWER; break; } case PHY_MAX_PAYLOAD: case PHY_MAX_PAYLOAD_REPEATER: { - getPhy->Param.Value = MaxPayloadOfDatarateKR920[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateKR920[getPhy->Datarate]; break; } case PHY_DUTY_CYCLE: { - getPhy->Param.Value = KR920_DUTY_CYCLE_ENABLED; + phyParam.Value = KR920_DUTY_CYCLE_ENABLED; break; } case PHY_MAX_RX_WINDOW: { - getPhy->Param.Value = KR920_MAX_RX_WINDOW; + phyParam.Value = KR920_MAX_RX_WINDOW; break; } case PHY_RECEIVE_DELAY1: { - getPhy->Param.Value = KR920_RECEIVE_DELAY1; + phyParam.Value = KR920_RECEIVE_DELAY1; break; } case PHY_RECEIVE_DELAY2: { - getPhy->Param.Value = KR920_RECEIVE_DELAY2; + phyParam.Value = KR920_RECEIVE_DELAY2; break; } case PHY_JOIN_ACCEPT_DELAY1: { - getPhy->Param.Value = KR920_JOIN_ACCEPT_DELAY1; + phyParam.Value = KR920_JOIN_ACCEPT_DELAY1; break; } case PHY_JOIN_ACCEPT_DELAY2: { - getPhy->Param.Value = KR920_JOIN_ACCEPT_DELAY2; + phyParam.Value = KR920_JOIN_ACCEPT_DELAY2; break; } case PHY_MAX_FCNT_GAP: { - getPhy->Param.Value = KR920_MAX_FCNT_GAP; + phyParam.Value = KR920_MAX_FCNT_GAP; break; } case PHY_ACK_TIMEOUT: { - getPhy->Param.Value = ( KR920_ACKTIMEOUT + randr( -KR920_ACK_TIMEOUT_RND, KR920_ACK_TIMEOUT_RND ) ); + phyParam.Value = ( KR920_ACKTIMEOUT + randr( -KR920_ACK_TIMEOUT_RND, KR920_ACK_TIMEOUT_RND ) ); break; } case PHY_DEF_DR1_OFFSET: { - getPhy->Param.Value = KR920_DEFAULT_RX1_DR_OFFSET; + phyParam.Value = KR920_DEFAULT_RX1_DR_OFFSET; break; } case PHY_DEF_RX2_FREQUENCY: { - getPhy->Param.Value = KR920_RX_WND_2_FREQ; + phyParam.Value = KR920_RX_WND_2_FREQ; break; } case PHY_DEF_RX2_DR: { - getPhy->Param.Value = KR920_RX_WND_2_DR; + phyParam.Value = KR920_RX_WND_2_DR; break; } case PHY_CHANNELS_MASK: { - getPhy->Param.ChannelsMask = ChannelsMask; + phyParam.ChannelsMask = ChannelsMask; break; } case PHY_CHANNELS_DEFAULT_MASK: { - getPhy->Param.ChannelsMask = ChannelsDefaultMask; + phyParam.ChannelsMask = ChannelsDefaultMask; break; } case PHY_MAX_NB_CHANNELS: { - getPhy->Param.Value = KR920_MAX_NB_CHANNELS; + phyParam.Value = KR920_MAX_NB_CHANNELS; break; } case PHY_CHANNELS: { - getPhy->Param.Channels = Channels; + phyParam.Channels = Channels; break; } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: case PHY_DEF_MAX_EIRP: { - getPhy->Param.Value = 0; + phyParam.Value = 0; break; } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { - getPhy->Param.Value = 48; + phyParam.Value = 48; break; } default: { - return; + break; } } + + return phyParam; } void RegionKR920SetBandTxDone( SetBandTxDoneParams_t* txDone ) diff --git a/src/mac/region/RegionKR920.h b/src/mac/region/RegionKR920.h index 7fcee65dd..0fab9061e 100644 --- a/src/mac/region/RegionKR920.h +++ b/src/mac/region/RegionKR920.h @@ -240,8 +240,10 @@ static const int8_t TxPowersKR920[] = { 20, 14, 10, 8, 5, 2, 0 }; * \brief The function gets a value of a specific phy attribute. * * \param [IN] getPhy Pointer to the function parameters. + * + * \retval Returns a structure containing the PHY parameter. */ -void RegionKR920GetPhyParam( GetPhyParams_t* getPhy ); +PhyParam_t RegionKR920GetPhyParam( GetPhyParams_t* getPhy ); /*! * \brief Updates the last TX done parameters of the current channel. diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index 583429bbb..e48aa719b 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -222,133 +222,137 @@ static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMas return nbEnabledChannels; } -void RegionUS915HybridGetPhyParam( GetPhyParams_t* getPhy ) +PhyParam_t RegionUS915HybridGetPhyParam( GetPhyParams_t* getPhy ) { + PhyParam_t phyParam; + switch( getPhy->Attribute ) { case PHY_MIN_RX_DR: { - getPhy->Param.Value = US915_HYBRID_RX_MIN_DATARATE; + phyParam.Value = US915_HYBRID_RX_MIN_DATARATE; break; } case PHY_MIN_TX_DR: { - getPhy->Param.Value = US915_HYBRID_TX_MIN_DATARATE; + phyParam.Value = US915_HYBRID_TX_MIN_DATARATE; break; } case PHY_DEF_TX_DR: { - getPhy->Param.Value = US915_HYBRID_DEFAULT_DATARATE; + phyParam.Value = US915_HYBRID_DEFAULT_DATARATE; break; } case PHY_DEF_TX_POWER: { - getPhy->Param.Value = US915_HYBRID_DEFAULT_TX_POWER; + phyParam.Value = US915_HYBRID_DEFAULT_TX_POWER; break; } case PHY_MAX_PAYLOAD: { - getPhy->Param.Value = MaxPayloadOfDatarateUS915_HYBRID[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateUS915_HYBRID[getPhy->Datarate]; break; } case PHY_MAX_PAYLOAD_REPEATER: { - getPhy->Param.Value = MaxPayloadOfDatarateRepeaterUS915_HYBRID[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateRepeaterUS915_HYBRID[getPhy->Datarate]; break; } case PHY_DUTY_CYCLE: { - getPhy->Param.Value = US915_HYBRID_DUTY_CYCLE_ENABLED; + phyParam.Value = US915_HYBRID_DUTY_CYCLE_ENABLED; break; } case PHY_MAX_RX_WINDOW: { - getPhy->Param.Value = US915_HYBRID_MAX_RX_WINDOW; + phyParam.Value = US915_HYBRID_MAX_RX_WINDOW; break; } case PHY_RECEIVE_DELAY1: { - getPhy->Param.Value = US915_HYBRID_RECEIVE_DELAY1; + phyParam.Value = US915_HYBRID_RECEIVE_DELAY1; break; } case PHY_RECEIVE_DELAY2: { - getPhy->Param.Value = US915_HYBRID_RECEIVE_DELAY2; + phyParam.Value = US915_HYBRID_RECEIVE_DELAY2; break; } case PHY_JOIN_ACCEPT_DELAY1: { - getPhy->Param.Value = US915_HYBRID_JOIN_ACCEPT_DELAY1; + phyParam.Value = US915_HYBRID_JOIN_ACCEPT_DELAY1; break; } case PHY_JOIN_ACCEPT_DELAY2: { - getPhy->Param.Value = US915_HYBRID_JOIN_ACCEPT_DELAY2; + phyParam.Value = US915_HYBRID_JOIN_ACCEPT_DELAY2; break; } case PHY_MAX_FCNT_GAP: { - getPhy->Param.Value = US915_HYBRID_MAX_FCNT_GAP; + phyParam.Value = US915_HYBRID_MAX_FCNT_GAP; break; } case PHY_ACK_TIMEOUT: { - getPhy->Param.Value = ( US915_HYBRID_ACKTIMEOUT + randr( -US915_HYBRID_ACK_TIMEOUT_RND, US915_HYBRID_ACK_TIMEOUT_RND ) ); + phyParam.Value = ( US915_HYBRID_ACKTIMEOUT + randr( -US915_HYBRID_ACK_TIMEOUT_RND, US915_HYBRID_ACK_TIMEOUT_RND ) ); break; } case PHY_DEF_DR1_OFFSET: { - getPhy->Param.Value = US915_HYBRID_DEFAULT_RX1_DR_OFFSET; + phyParam.Value = US915_HYBRID_DEFAULT_RX1_DR_OFFSET; break; } case PHY_DEF_RX2_FREQUENCY: { - getPhy->Param.Value = US915_HYBRID_RX_WND_2_FREQ; + phyParam.Value = US915_HYBRID_RX_WND_2_FREQ; break; } case PHY_DEF_RX2_DR: { - getPhy->Param.Value = US915_HYBRID_RX_WND_2_DR; + phyParam.Value = US915_HYBRID_RX_WND_2_DR; break; } case PHY_CHANNELS_MASK: { - getPhy->Param.ChannelsMask = ChannelsMask; + phyParam.ChannelsMask = ChannelsMask; break; } case PHY_CHANNELS_DEFAULT_MASK: { - getPhy->Param.ChannelsMask = ChannelsDefaultMask; + phyParam.ChannelsMask = ChannelsDefaultMask; break; } case PHY_MAX_NB_CHANNELS: { - getPhy->Param.Value = US915_HYBRID_MAX_NB_CHANNELS; + phyParam.Value = US915_HYBRID_MAX_NB_CHANNELS; break; } case PHY_CHANNELS: { - getPhy->Param.Channels = Channels; + phyParam.Channels = Channels; break; } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: case PHY_DEF_MAX_EIRP: { - getPhy->Param.Value = 0; + phyParam.Value = 0; break; } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { - getPhy->Param.Value = 2; + phyParam.Value = 2; break; } default: { - return; + break; } } + + return phyParam; } void RegionUS915HybridSetBandTxDone( SetBandTxDoneParams_t* txDone ) diff --git a/src/mac/region/RegionUS915-Hybrid.h b/src/mac/region/RegionUS915-Hybrid.h index c8295ed0d..187e1e424 100644 --- a/src/mac/region/RegionUS915-Hybrid.h +++ b/src/mac/region/RegionUS915-Hybrid.h @@ -229,8 +229,10 @@ static const int8_t TxPowersUS915_HYBRID[] = { 30, 28, 26, 24, 22, 20, 18, 16, 1 * \brief The function gets a value of a specific phy attribute. * * \param [IN] getPhy Pointer to the function parameters. + * + * \retval Returns a structure containing the PHY parameter. */ -void RegionUS915HybridGetPhyParam( GetPhyParams_t* getPhy ); +PhyParam_t RegionUS915HybridGetPhyParam( GetPhyParams_t* getPhy ); /*! * \brief Updates the last TX done parameters of the current channel. diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 0c56521e1..32e46f172 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -133,133 +133,137 @@ static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMas return nbEnabledChannels; } -void RegionUS915GetPhyParam( GetPhyParams_t* getPhy ) +PhyParam_t RegionUS915GetPhyParam( GetPhyParams_t* getPhy ) { + PhyParam_t phyParam; + switch( getPhy->Attribute ) { case PHY_MIN_RX_DR: { - getPhy->Param.Value = US915_RX_MIN_DATARATE; + phyParam.Value = US915_RX_MIN_DATARATE; break; } case PHY_MIN_TX_DR: { - getPhy->Param.Value = US915_TX_MIN_DATARATE; + phyParam.Value = US915_TX_MIN_DATARATE; break; } case PHY_DEF_TX_DR: { - getPhy->Param.Value = US915_DEFAULT_DATARATE; + phyParam.Value = US915_DEFAULT_DATARATE; break; } case PHY_DEF_TX_POWER: { - getPhy->Param.Value = US915_DEFAULT_TX_POWER; + phyParam.Value = US915_DEFAULT_TX_POWER; break; } case PHY_MAX_PAYLOAD: { - getPhy->Param.Value = MaxPayloadOfDatarateUS915[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateUS915[getPhy->Datarate]; break; } case PHY_MAX_PAYLOAD_REPEATER: { - getPhy->Param.Value = MaxPayloadOfDatarateRepeaterUS915[getPhy->Datarate]; + phyParam.Value = MaxPayloadOfDatarateRepeaterUS915[getPhy->Datarate]; break; } case PHY_DUTY_CYCLE: { - getPhy->Param.Value = US915_DUTY_CYCLE_ENABLED; + phyParam.Value = US915_DUTY_CYCLE_ENABLED; break; } case PHY_MAX_RX_WINDOW: { - getPhy->Param.Value = US915_MAX_RX_WINDOW; + phyParam.Value = US915_MAX_RX_WINDOW; break; } case PHY_RECEIVE_DELAY1: { - getPhy->Param.Value = US915_RECEIVE_DELAY1; + phyParam.Value = US915_RECEIVE_DELAY1; break; } case PHY_RECEIVE_DELAY2: { - getPhy->Param.Value = US915_RECEIVE_DELAY2; + phyParam.Value = US915_RECEIVE_DELAY2; break; } case PHY_JOIN_ACCEPT_DELAY1: { - getPhy->Param.Value = US915_JOIN_ACCEPT_DELAY1; + phyParam.Value = US915_JOIN_ACCEPT_DELAY1; break; } case PHY_JOIN_ACCEPT_DELAY2: { - getPhy->Param.Value = US915_JOIN_ACCEPT_DELAY2; + phyParam.Value = US915_JOIN_ACCEPT_DELAY2; break; } case PHY_MAX_FCNT_GAP: { - getPhy->Param.Value = US915_MAX_FCNT_GAP; + phyParam.Value = US915_MAX_FCNT_GAP; break; } case PHY_ACK_TIMEOUT: { - getPhy->Param.Value = ( US915_ACKTIMEOUT + randr( -US915_ACK_TIMEOUT_RND, US915_ACK_TIMEOUT_RND ) ); + phyParam.Value = ( US915_ACKTIMEOUT + randr( -US915_ACK_TIMEOUT_RND, US915_ACK_TIMEOUT_RND ) ); break; } case PHY_DEF_DR1_OFFSET: { - getPhy->Param.Value = US915_DEFAULT_RX1_DR_OFFSET; + phyParam.Value = US915_DEFAULT_RX1_DR_OFFSET; break; } case PHY_DEF_RX2_FREQUENCY: { - getPhy->Param.Value = US915_RX_WND_2_FREQ; + phyParam.Value = US915_RX_WND_2_FREQ; break; } case PHY_DEF_RX2_DR: { - getPhy->Param.Value = US915_RX_WND_2_DR; + phyParam.Value = US915_RX_WND_2_DR; break; } case PHY_CHANNELS_MASK: { - getPhy->Param.ChannelsMask = ChannelsMask; + phyParam.ChannelsMask = ChannelsMask; break; } case PHY_CHANNELS_DEFAULT_MASK: { - getPhy->Param.ChannelsMask = ChannelsDefaultMask; + phyParam.ChannelsMask = ChannelsDefaultMask; break; } case PHY_MAX_NB_CHANNELS: { - getPhy->Param.Value = US915_MAX_NB_CHANNELS; + phyParam.Value = US915_MAX_NB_CHANNELS; break; } case PHY_CHANNELS: { - getPhy->Param.Channels = Channels; + phyParam.Channels = Channels; break; } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: case PHY_DEF_MAX_EIRP: { - getPhy->Param.Value = 0; + phyParam.Value = 0; break; } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { - getPhy->Param.Value = 2; + phyParam.Value = 2; break; } default: { - return; + break; } } + + return phyParam; } void RegionUS915SetBandTxDone( SetBandTxDoneParams_t* txDone ) diff --git a/src/mac/region/RegionUS915.h b/src/mac/region/RegionUS915.h index f1b8b8956..d2c92a140 100644 --- a/src/mac/region/RegionUS915.h +++ b/src/mac/region/RegionUS915.h @@ -229,8 +229,10 @@ static const int8_t TxPowersUS915[] = { 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, * \brief The function gets a value of a specific phy attribute. * * \param [IN] getPhy Pointer to the function parameters. + * + * \retval Returns a structure containing the PHY parameter. */ -void RegionUS915GetPhyParam( GetPhyParams_t* getPhy ); +PhyParam_t RegionUS915GetPhyParam( GetPhyParams_t* getPhy ); /*! * \brief Updates the last TX done parameters of the current channel. From ed6e4881c7a57a2f4227de372858e7d584ad399c Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Fri, 5 May 2017 13:35:49 +0200 Subject: [PATCH 087/161] Relocate the datarate, up- and downlink dwell time into a structure. Define sVerifyParams as a union. --- src/mac/LoRaMac.c | 22 +++++++++++----------- src/mac/region/Region.h | 28 +++++++++++++++++----------- src/mac/region/RegionAS923.c | 14 +++++++------- src/mac/region/RegionAU915.c | 6 +++--- src/mac/region/RegionCN470.c | 6 +++--- src/mac/region/RegionCN779.c | 6 +++--- src/mac/region/RegionEU433.c | 6 +++--- src/mac/region/RegionEU868.c | 6 +++--- src/mac/region/RegionIN865.c | 6 +++--- src/mac/region/RegionKR920.c | 6 +++--- src/mac/region/RegionUS915-Hybrid.c | 6 +++--- src/mac/region/RegionUS915.c | 6 +++--- 12 files changed, 62 insertions(+), 56 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index ca2f4fdbf..fcdcd2025 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2695,8 +2695,8 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) } case MIB_RX2_CHANNEL: { - verify.Datarate = mibSet->Param.Rx2Channel.Datarate; - verify.DownlinkDwellTime = LoRaMacParams.DownlinkDwellTime; + verify.DatarateParams.Datarate = mibSet->Param.Rx2Channel.Datarate; + verify.DatarateParams.DownlinkDwellTime = LoRaMacParams.DownlinkDwellTime; if( RegionVerify( LoRaMacRegion, &verify, PHY_RX_DR ) == true ) { @@ -2710,8 +2710,8 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) } case MIB_RX2_DEFAULT_CHANNEL: { - verify.Datarate = mibSet->Param.Rx2Channel.Datarate; - verify.DownlinkDwellTime = LoRaMacParams.DownlinkDwellTime; + verify.DatarateParams.Datarate = mibSet->Param.Rx2Channel.Datarate; + verify.DatarateParams.DownlinkDwellTime = LoRaMacParams.DownlinkDwellTime; if( RegionVerify( LoRaMacRegion, &verify, PHY_RX_DR ) == true ) { @@ -2785,11 +2785,11 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) } case MIB_CHANNELS_DEFAULT_DATARATE: { - verify.Datarate = mibSet->Param.ChannelsDefaultDatarate; + verify.DatarateParams.Datarate = mibSet->Param.ChannelsDefaultDatarate; if( RegionVerify( LoRaMacRegion, &verify, PHY_DEF_TX_DR ) == true ) { - LoRaMacParamsDefaults.ChannelsDatarate = verify.Datarate; + LoRaMacParamsDefaults.ChannelsDatarate = verify.DatarateParams.Datarate; } else { @@ -2799,11 +2799,11 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) } case MIB_CHANNELS_DATARATE: { - verify.Datarate = mibSet->Param.ChannelsDatarate; + verify.DatarateParams.Datarate = mibSet->Param.ChannelsDatarate; if( RegionVerify( LoRaMacRegion, &verify, PHY_TX_DR ) == true ) { - LoRaMacParams.ChannelsDatarate = verify.Datarate; + LoRaMacParams.ChannelsDatarate = verify.DatarateParams.Datarate; } else { @@ -3172,12 +3172,12 @@ LoRaMacStatus_t LoRaMacMcpsRequest( McpsReq_t *mcpsRequest ) { if( AdrCtrlOn == false ) { - verify.Datarate = datarate; - verify.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; + verify.DatarateParams.Datarate = datarate; + verify.DatarateParams.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; if( RegionVerify( LoRaMacRegion, &verify, PHY_TX_DR ) == true ) { - LoRaMacParams.ChannelsDatarate = verify.Datarate; + LoRaMacParams.ChannelsDatarate = verify.DatarateParams.Datarate; } else { diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index f443d7b35..c6cf06bb0 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -739,16 +739,12 @@ typedef struct sSetBandTxDoneParams /*! * Parameter structure for the function RegionVerify. */ -typedef struct sVerifyParams +typedef union uVerifyParams { /*! * TX power to verify. */ int8_t TxPower; - /*! - * Datarate to verify. - */ - int8_t Datarate; /*! * Set to true, if the duty cycle is enabled, otherwise false. */ @@ -758,13 +754,23 @@ typedef struct sVerifyParams */ uint8_t NbJoinTrials; /*! - * The downlink dwell time. - */ - uint8_t DownlinkDwellTime; - /*! - * The up link dwell time. + * Datarate to verify. */ - uint8_t UplinkDwellTime; + struct sDatarateParams + { + /*! + * Datarate to verify. + */ + int8_t Datarate; + /*! + * The downlink dwell time. + */ + uint8_t DownlinkDwellTime; + /*! + * The up link dwell time. + */ + uint8_t UplinkDwellTime; + }DatarateParams; }VerifyParams_t; /*! diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index d4bbb8e97..b09275cc6 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -348,28 +348,28 @@ bool RegionAS923Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { case PHY_TX_DR: { - if( verify->UplinkDwellTime == 0 ) + if( verify->DatarateParams.UplinkDwellTime == 0 ) { - return RegionCommonValueInRange( verify->Datarate, AS923_TX_MIN_DATARATE, AS923_TX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, AS923_TX_MIN_DATARATE, AS923_TX_MAX_DATARATE ); } else { - return RegionCommonValueInRange( verify->Datarate, AS923_DWELL_LIMIT_DATARATE, AS923_TX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, AS923_DWELL_LIMIT_DATARATE, AS923_TX_MAX_DATARATE ); } } case PHY_DEF_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); } case PHY_RX_DR: { - if( verify->DownlinkDwellTime == 0 ) + if( verify->DatarateParams.DownlinkDwellTime == 0 ) { - return RegionCommonValueInRange( verify->Datarate, AS923_RX_MIN_DATARATE, AS923_RX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, AS923_RX_MIN_DATARATE, AS923_RX_MAX_DATARATE ); } else { - return RegionCommonValueInRange( verify->Datarate, AS923_DWELL_LIMIT_DATARATE, AS923_RX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, AS923_DWELL_LIMIT_DATARATE, AS923_RX_MAX_DATARATE ); } } case PHY_DEF_TX_POWER: diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 65306bfde..66a2ea6e5 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -333,15 +333,15 @@ bool RegionAU915Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { case PHY_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, AU915_TX_MIN_DATARATE, AU915_TX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, AU915_TX_MIN_DATARATE, AU915_TX_MAX_DATARATE ); } case PHY_DEF_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); } case PHY_RX_DR: { - return RegionCommonValueInRange( verify->Datarate, AU915_RX_MIN_DATARATE, AU915_RX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, AU915_RX_MIN_DATARATE, AU915_RX_MAX_DATARATE ); } case PHY_DEF_TX_POWER: case PHY_TX_POWER: diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index fb7813d8f..999b8345b 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -301,15 +301,15 @@ bool RegionCN470Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { case PHY_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, CN470_TX_MIN_DATARATE, CN470_TX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, CN470_TX_MIN_DATARATE, CN470_TX_MAX_DATARATE ); } case PHY_DEF_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); } case PHY_RX_DR: { - return RegionCommonValueInRange( verify->Datarate, CN470_RX_MIN_DATARATE, CN470_RX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, CN470_RX_MIN_DATARATE, CN470_RX_MAX_DATARATE ); } case PHY_DEF_TX_POWER: case PHY_TX_POWER: diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index 2465ae297..e1742a89d 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -313,15 +313,15 @@ bool RegionCN779Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { case PHY_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, CN779_TX_MIN_DATARATE, CN779_TX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, CN779_TX_MIN_DATARATE, CN779_TX_MAX_DATARATE ); } case PHY_DEF_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); } case PHY_RX_DR: { - return RegionCommonValueInRange( verify->Datarate, CN779_RX_MIN_DATARATE, CN779_RX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, CN779_RX_MIN_DATARATE, CN779_RX_MAX_DATARATE ); } case PHY_DEF_TX_POWER: case PHY_TX_POWER: diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index 836e93150..f813d80cf 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -313,15 +313,15 @@ bool RegionEU433Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { case PHY_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, EU433_TX_MIN_DATARATE, EU433_TX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, EU433_TX_MIN_DATARATE, EU433_TX_MAX_DATARATE ); } case PHY_DEF_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); } case PHY_RX_DR: { - return RegionCommonValueInRange( verify->Datarate, EU433_RX_MIN_DATARATE, EU433_RX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, EU433_RX_MIN_DATARATE, EU433_RX_MAX_DATARATE ); } case PHY_DEF_TX_POWER: case PHY_TX_POWER: diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index 1a1380a53..5c42db590 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -342,15 +342,15 @@ bool RegionEU868Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { case PHY_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, EU868_TX_MIN_DATARATE, EU868_TX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, EU868_TX_MIN_DATARATE, EU868_TX_MAX_DATARATE ); } case PHY_DEF_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); } case PHY_RX_DR: { - return RegionCommonValueInRange( verify->Datarate, EU868_RX_MIN_DATARATE, EU868_RX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, EU868_RX_MIN_DATARATE, EU868_RX_MAX_DATARATE ); } case PHY_DEF_TX_POWER: case PHY_TX_POWER: diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index 26e5e5ba0..51b6bf91c 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -313,15 +313,15 @@ bool RegionIN865Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { case PHY_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, IN865_TX_MIN_DATARATE, IN865_TX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, IN865_TX_MIN_DATARATE, IN865_TX_MAX_DATARATE ); } case PHY_DEF_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); } case PHY_RX_DR: { - return RegionCommonValueInRange( verify->Datarate, IN865_RX_MIN_DATARATE, IN865_RX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, IN865_RX_MIN_DATARATE, IN865_RX_MAX_DATARATE ); } case PHY_DEF_TX_POWER: case PHY_TX_POWER: diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index d37e5a69f..7b5c677a8 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -328,15 +328,15 @@ bool RegionKR920Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { case PHY_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, KR920_TX_MIN_DATARATE, KR920_TX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, KR920_TX_MIN_DATARATE, KR920_TX_MAX_DATARATE ); } case PHY_DEF_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); } case PHY_RX_DR: { - return RegionCommonValueInRange( verify->Datarate, KR920_RX_MIN_DATARATE, KR920_RX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, KR920_RX_MIN_DATARATE, KR920_RX_MAX_DATARATE ); } case PHY_DEF_TX_POWER: case PHY_TX_POWER: diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index e48aa719b..3308555b1 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -419,15 +419,15 @@ bool RegionUS915HybridVerify( VerifyParams_t* verify, PhyAttribute_t phyAttribut { case PHY_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, US915_HYBRID_TX_MIN_DATARATE, US915_HYBRID_TX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, US915_HYBRID_TX_MIN_DATARATE, US915_HYBRID_TX_MAX_DATARATE ); } case PHY_DEF_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); } case PHY_RX_DR: { - return RegionCommonValueInRange( verify->Datarate, US915_HYBRID_RX_MIN_DATARATE, US915_HYBRID_RX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, US915_HYBRID_RX_MIN_DATARATE, US915_HYBRID_RX_MAX_DATARATE ); } case PHY_DEF_TX_POWER: case PHY_TX_POWER: diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 32e46f172..84b60aac6 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -332,15 +332,15 @@ bool RegionUS915Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) { case PHY_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, US915_TX_MIN_DATARATE, US915_TX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, US915_TX_MIN_DATARATE, US915_TX_MAX_DATARATE ); } case PHY_DEF_TX_DR: { - return RegionCommonValueInRange( verify->Datarate, DR_0, DR_5 ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); } case PHY_RX_DR: { - return RegionCommonValueInRange( verify->Datarate, US915_RX_MIN_DATARATE, US915_RX_MAX_DATARATE ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, US915_RX_MIN_DATARATE, US915_RX_MAX_DATARATE ); } case PHY_DEF_TX_POWER: case PHY_TX_POWER: From f06187bb838ad88934b2cc9ba0e62103f3e37298 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Fri, 5 May 2017 13:39:03 +0200 Subject: [PATCH 088/161] Remove duplicated call to ApplyDrOffset in function RegionRxConfig. It is already called when computing the Rx windows parameters --- src/mac/region/RegionAS923.c | 2 -- src/mac/region/RegionAU915.c | 2 -- src/mac/region/RegionCN470.c | 2 -- src/mac/region/RegionCN779.c | 2 -- src/mac/region/RegionEU433.c | 2 -- src/mac/region/RegionEU868.c | 2 -- src/mac/region/RegionIN865.c | 2 -- src/mac/region/RegionKR920.c | 2 -- src/mac/region/RegionUS915-Hybrid.c | 2 -- src/mac/region/RegionUS915.c | 2 -- 10 files changed, 20 deletions(-) diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index b09275cc6..98499bfe7 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -555,8 +555,6 @@ bool RegionAS923RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { - // Apply the datarate offset for RX window 1 - dr = RegionAS923ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = Channels[rxConfig->Channel].Frequency; // Apply the alternative RX 1 window frequency, if it is available diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 66a2ea6e5..9c0d1344f 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -504,8 +504,6 @@ bool RegionAU915RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { - // Apply the datarate offset for RX window 1 - dr = RegionAU915ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = AU915_FIRST_RX1_CHANNEL + ( rxConfig->Channel % 8 ) * AU915_STEPWIDTH_RX1_CHANNEL; } diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index 999b8345b..3e0d26488 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -452,8 +452,6 @@ bool RegionCN470RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { - // Apply the datarate offset for RX window 1 - dr = RegionCN470ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = CN470_FIRST_RX1_CHANNEL + ( rxConfig->Channel % 48 ) * CN470_STEPWIDTH_RX1_CHANNEL; } diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index e1742a89d..c271a1d55 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -500,8 +500,6 @@ bool RegionCN779RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { - // Apply the datarate offset for RX window 1 - dr = RegionCN779ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = Channels[rxConfig->Channel].Frequency; // Apply the alternative RX 1 window frequency, if it is available diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index f813d80cf..68d499218 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -500,8 +500,6 @@ bool RegionEU433RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { - // Apply the datarate offset for RX window 1 - dr = RegionEU433ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = Channels[rxConfig->Channel].Frequency; // Apply the alternative RX 1 window frequency, if it is available diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index 5c42db590..851de3c2c 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -529,8 +529,6 @@ bool RegionEU868RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { - // Apply the datarate offset for RX window 1 - dr = RegionEU868ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = Channels[rxConfig->Channel].Frequency; // Apply the alternative RX 1 window frequency, if it is available diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index 51b6bf91c..fbd12f827 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -500,8 +500,6 @@ bool RegionIN865RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { - // Apply the datarate offset for RX window 1 - dr = RegionIN865ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = Channels[rxConfig->Channel].Frequency; // Apply the alternative RX 1 window frequency, if it is available diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 7b5c677a8..07c95e48f 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -514,8 +514,6 @@ bool RegionKR920RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { - // Apply the datarate offset for RX window 1 - dr = RegionKR920ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = Channels[rxConfig->Channel].Frequency; // Apply the alternative RX 1 window frequency, if it is available diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index 3308555b1..21b92520b 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -589,8 +589,6 @@ bool RegionUS915HybridRxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { - // Apply the datarate offset for RX window 1 - dr = RegionUS915HybridApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = US915_HYBRID_FIRST_RX1_CHANNEL + ( rxConfig->Channel % 8 ) * US915_HYBRID_STEPWIDTH_RX1_CHANNEL; } diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 84b60aac6..f841aae5d 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -501,8 +501,6 @@ bool RegionUS915RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( rxConfig->Window == 0 ) { - // Apply the datarate offset for RX window 1 - dr = RegionUS915ApplyDrOffset( rxConfig->DownlinkDwellTime, dr, rxConfig->DrOffset ); // Apply window 1 frequency frequency = US915_FIRST_RX1_CHANNEL + ( rxConfig->Channel % 8 ) * US915_STEPWIDTH_RX1_CHANNEL; } From 60f3379466d5576a647949b0e681036b6504a458 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Fri, 5 May 2017 13:40:31 +0200 Subject: [PATCH 089/161] Remove comments ToDo. --- src/mac/LoRaMac.c | 1 - src/mac/region/RegionAU915.c | 1 - src/mac/region/RegionCN779.c | 1 - src/mac/region/RegionEU433.c | 1 - src/mac/region/RegionEU868.c | 1 - src/mac/region/RegionIN865.c | 1 - src/mac/region/RegionKR920.c | 1 - src/mac/region/RegionUS915-Hybrid.c | 1 - 8 files changed, 8 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index fcdcd2025..65b7f5b72 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1979,7 +1979,6 @@ static void ResetMacParameters( void ) } // Initialize channel index. - // ToDo Check the initialization value Channel = 0; } diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 9c0d1344f..f9e40e70e 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -78,7 +78,6 @@ static uint32_t GetBandwidth( uint32_t drIndex ) } } -// ToDo static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datarate, uint16_t* channelsMask ) { int8_t txPowerResult = txPower; diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index c271a1d55..560a72884 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -484,7 +484,6 @@ void RegionCN779ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } -// ToDo get phy datarate afterwards bool RegionCN779RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { RadioModems_t modem; diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index 68d499218..73a8ebdae 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -484,7 +484,6 @@ void RegionEU433ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } -// ToDo get phy datarate afterwards bool RegionEU433RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { RadioModems_t modem; diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index 851de3c2c..8e17e6ffa 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -513,7 +513,6 @@ void RegionEU868ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } -// ToDo get phy datarate afterwards bool RegionEU868RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { RadioModems_t modem; diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index fbd12f827..9b517a56f 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -484,7 +484,6 @@ void RegionIN865ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } -// ToDo get phy datarate afterwards bool RegionIN865RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { RadioModems_t modem; diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 07c95e48f..3368b283b 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -499,7 +499,6 @@ void RegionKR920ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } -// ToDo get phy datarate afterwards bool RegionKR920RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) { int8_t dr = rxConfig->Datarate; diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index 21b92520b..130ea4218 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -615,7 +615,6 @@ bool RegionUS915HybridRxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) return true; } -// ToDo get tx power afterwards bool RegionUS915HybridTxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) { int8_t phyDr = DataratesUS915_HYBRID[txConfig->Datarate]; From e3f21f2af9ffb403f1a5e1dea109e40c3576b641 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Fri, 5 May 2017 13:41:08 +0200 Subject: [PATCH 090/161] Update comment for function RxWindowSetup. --- src/mac/LoRaMac.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 65b7f5b72..2f8484e8e 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -449,10 +449,8 @@ static void OnAckTimeoutTimerEvent( void ); /*! * \brief Initializes and opens the reception window * - * \param [IN] freq window channel frequency - * \param [IN] datarate window channel datarate - * \param [IN] bandwidth window channel bandwidth - * \param [IN] timeout window channel timeout + * \param [IN] rxContinuous Set to true, if the RX is in continuous mode + * \param [IN] maxRxWindow Maximum RX window timeout */ static void RxWindowSetup( bool rxContinuous, uint32_t maxRxWindow ); From c651548eae5ae281dde584266b2ebcf9f26d6937 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Tue, 30 May 2017 15:28:00 +0200 Subject: [PATCH 091/161] Spell check --- src/boards/NAMote72/board.c | 2 +- src/boards/NAMote72/gpio-board.h | 4 ++-- src/boards/NAMote72/rtc-board.c | 20 ++++++++++---------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/boards/NAMote72/board.c b/src/boards/NAMote72/board.c index 4b0c01c50..3d5fa3104 100644 --- a/src/boards/NAMote72/board.c +++ b/src/boards/NAMote72/board.c @@ -79,7 +79,7 @@ static bool McuInitialized = false; static bool UsbIsConnected = false; /*! - * UART1 FIFO buffers size + * UART2 FIFO buffers size */ #define UART2_FIFO_TX_SIZE 1056 #define UART2_FIFO_RX_SIZE 1056 diff --git a/src/boards/NAMote72/gpio-board.h b/src/boards/NAMote72/gpio-board.h index 69583d986..7c41a6e6f 100644 --- a/src/boards/NAMote72/gpio-board.h +++ b/src/boards/NAMote72/gpio-board.h @@ -24,7 +24,7 @@ Maintainer: Miguel Luis and Gregory Cristian * PIN_ALTERNATE_FCT, PIN_ANALOGIC] * \param [IN] config Pin config [PIN_PUSH_PULL, PIN_OPEN_DRAIN] * \param [IN] type Pin type [PIN_NO_PULL, PIN_PULL_UP, PIN_PULL_DOWN] - * \param [IN] value Default output value at initialisation + * \param [IN] value Default output value at initialization */ void GpioMcuInit( Gpio_t *obj, PinNames pin, PinModes mode, PinConfigs config, PinTypes type, uint32_t value ); @@ -44,7 +44,7 @@ void GpioMcuSetInterrupt( Gpio_t *obj, IrqModes irqMode, IrqPriorities irqPriori /*! * \brief GPIO IRQ DeInitialization * - * \param [IN] obj Pointer to the GPIO object to be Deinitialized + * \param [IN] obj Pointer to the GPIO object to be de-initialized */ void GpioMcuRemoveInterrupt( Gpio_t *obj ); diff --git a/src/boards/NAMote72/rtc-board.c b/src/boards/NAMote72/rtc-board.c index e95b24634..44f3aec84 100644 --- a/src/boards/NAMote72/rtc-board.c +++ b/src/boards/NAMote72/rtc-board.c @@ -21,13 +21,13 @@ Maintainer: Miguel Luis and Gregory Cristian */ #define RTC_ALARM_TICK_PER_MS 0x7FF // 2047 > number of sub-second ticks per second -/* subsecond number of bits */ +/* sub-second number of bits */ #define N_PREDIV_S 11 -/* Synchonuous prediv */ +/* Synchronous prediv */ #define PREDIV_S ( ( 1 << N_PREDIV_S ) - 1 ) -/* Asynchonuous prediv */ +/* Asynchronous prediv */ #define PREDIV_A ( 1 << ( 15 - N_PREDIV_S ) ) - 1 /* RTC Time base in us */ @@ -99,14 +99,14 @@ typedef struct RtcCalendar_s RtcCalendar_t RtcCalendarContext; /*! - * \brief Flag to indicate if the timestamps until the next event is long enough + * \brief Flag to indicate if the timestamp until the next event is long enough * to set the MCU into low power mode */ static bool RtcTimerEventAllowsLowPower = false; /*! - * \brief Flag to disable the LowPower Mode even if the timestamps until the - * next event is long enough to allow Low Power mode + * \brief Flag to disable the low power mode even if the timestamp until the + * next event is long enough to allow low power mode */ static bool LowPowerDisableDuringTask = false; @@ -118,7 +118,7 @@ RTC_HandleTypeDef RtcHandle = { 0 }; /*! * \brief Indicates if the RTC is already Initialized or not */ -static bool RtcInitalized = false; +static bool RtcInitialized = false; /*! * \brief Indicates if the RTC Wake Up Time is calibrated or not @@ -187,7 +187,7 @@ void RtcInit( void ) { RtcCalendar_t rtcInit; - if( RtcInitalized == false ) + if( RtcInitialized == false ) { __HAL_RCC_RTC_ENABLE( ); @@ -223,7 +223,7 @@ void RtcInit( void ) HAL_NVIC_SetPriority( RTC_Alarm_IRQn, 1, 0 ); HAL_NVIC_EnableIRQ( RTC_Alarm_IRQn ); - RtcInitalized = true; + RtcInitialized = true; } } @@ -696,7 +696,7 @@ static RtcCalendar_t RtcGetCalendar( void ) HAL_RTC_GetTime( &RtcHandle, &now.CalendarTime, RTC_FORMAT_BIN ); second_read = now.CalendarTime.SubSeconds; - // make sure it is correct due to asynchronus nature of RTC + // make sure it is correct due to asynchronous nature of RTC while( first_read != second_read ) { first_read = second_read; From fad9a90b47aeda5e34ba5841103f534ad7139eb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Tue, 30 May 2017 15:28:31 +0200 Subject: [PATCH 092/161] Add documentation for RadioState_t fields --- src/radio/radio.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/radio/radio.h b/src/radio/radio.h index f6ad2b9c5..62e9acfd0 100644 --- a/src/radio/radio.h +++ b/src/radio/radio.h @@ -29,10 +29,10 @@ typedef enum */ typedef enum { - RF_IDLE = 0, - RF_RX_RUNNING, - RF_TX_RUNNING, - RF_CAD, + RF_IDLE = 0, //!< The radio is idle + RF_RX_RUNNING, //!< The radio is in reception state + RF_TX_RUNNING, //!< The radio is in transmission state + RF_CAD, //!< The radio is doing channel activity detection }RadioState_t; /*! From 8e9683f4cb924113a0038a191cdcb5a5288cea73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Tue, 30 May 2017 15:54:05 +0200 Subject: [PATCH 093/161] Update TX power computations. According to new regional parameters definitions v1.0.2rB-1. --- src/mac/LoRaMac.c | 19 ++- src/mac/LoRaMac.h | 20 ++- src/mac/region/Region.h | 202 +++++++++++++++------------- src/mac/region/RegionAS923.c | 13 +- src/mac/region/RegionAS923.h | 10 +- src/mac/region/RegionAU915.c | 17 ++- src/mac/region/RegionAU915.h | 14 +- src/mac/region/RegionCN470.c | 17 ++- src/mac/region/RegionCN470.h | 17 ++- src/mac/region/RegionCN779.c | 17 ++- src/mac/region/RegionCN779.h | 17 ++- src/mac/region/RegionCommon.c | 9 ++ src/mac/region/RegionCommon.h | 13 ++ src/mac/region/RegionEU433.c | 17 ++- src/mac/region/RegionEU433.h | 17 ++- src/mac/region/RegionEU868.c | 17 ++- src/mac/region/RegionEU868.h | 18 +-- src/mac/region/RegionIN865.c | 17 ++- src/mac/region/RegionIN865.h | 15 ++- src/mac/region/RegionKR920.c | 35 +++-- src/mac/region/RegionKR920.h | 20 ++- src/mac/region/RegionUS915-Hybrid.c | 13 +- src/mac/region/RegionUS915-Hybrid.h | 12 +- src/mac/region/RegionUS915.c | 13 +- src/mac/region/RegionUS915.h | 12 +- 25 files changed, 399 insertions(+), 192 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 2f8484e8e..26de12396 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1963,6 +1963,7 @@ static void ResetMacParameters( void ) LoRaMacParams.UplinkDwellTime = LoRaMacParamsDefaults.UplinkDwellTime; LoRaMacParams.DownlinkDwellTime = LoRaMacParamsDefaults.DownlinkDwellTime; LoRaMacParams.MaxEirp = LoRaMacParamsDefaults.MaxEirp; + LoRaMacParams.AntennaGain = LoRaMacParamsDefaults.AntennaGain; NodeAckRequested = false; SrvAckRequested = false; @@ -2144,6 +2145,7 @@ LoRaMacStatus_t SendFrameOnChannel( uint8_t channel ) txConfig.Datarate = LoRaMacParams.ChannelsDatarate; txConfig.TxPower = LoRaMacParams.ChannelsTxPower; txConfig.MaxEirp = LoRaMacParams.MaxEirp; + txConfig.AntennaGain = LoRaMacParams.AntennaGain; txConfig.PktLen = LoRaMacBufferPktLen; RegionTxConfig( LoRaMacRegion, &txConfig, &txPower, &TxTimeOnAir ); @@ -2182,6 +2184,7 @@ LoRaMacStatus_t SetTxContinuousWave( uint16_t timeout ) continuousWave.Datarate = LoRaMacParams.ChannelsDatarate; continuousWave.TxPower = LoRaMacParams.ChannelsTxPower; continuousWave.MaxEirp = LoRaMacParams.MaxEirp; + continuousWave.AntennaGain = LoRaMacParams.AntennaGain; continuousWave.Timeout = timeout; RegionSetContinuousWave( LoRaMacRegion, &continuousWave ); @@ -2306,9 +2309,11 @@ LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t *primitives, LoRaMacC getPhy.Attribute = PHY_DEF_MAX_EIRP; phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParamsDefaults.MaxEirp = phyParam.Value; + LoRaMacParamsDefaults.MaxEirp = phyParam.fValue; - LoRaMacParamsDefaults.ChannelsNbRep = 1; + getPhy.Attribute = PHY_DEF_ANTENNA_GAIN; + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + LoRaMacParamsDefaults.AntennaGain = phyParam.fValue; RegionInitDefaults( LoRaMacRegion, INIT_TYPE_INIT ); @@ -2583,6 +2588,11 @@ LoRaMacStatus_t LoRaMacMibGetRequestConfirm( MibRequestConfirm_t *mibGet ) mibGet->Param.MinRxSymbols = LoRaMacParams.MinRxSymbols; break; } + case MIB_ANTENNA_GAIN: + { + mibGet->Param.AntennaGain = LoRaMacParams.AntennaGain; + break; + } default: status = LORAMAC_STATUS_SERVICE_UNKNOWN; break; @@ -2856,6 +2866,11 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) LoRaMacParams.MinRxSymbols = LoRaMacParamsDefaults.MinRxSymbols = mibSet->Param.MinRxSymbols; break; } + case MIB_ANTENNA_GAIN: + { + LoRaMacParams.AntennaGain = mibSet->Param.AntennaGain; + break; + } default: status = LORAMAC_STATUS_SERVICE_UNKNOWN; break; diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index 385923b3a..ef9687b92 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -279,7 +279,11 @@ typedef struct sLoRaMacParams /*! * Maximum possible EIRP */ - uint8_t MaxEirp; + float MaxEirp; + /*! + * Antenna gain of the node + */ + float AntennaGain; }LoRaMacParams_t; /*! @@ -1090,6 +1094,7 @@ typedef struct sMlmeConfirm * \ref MIB_MULTICAST_CHANNEL | YES | NO * \ref MIB_SYSTEM_MAX_RX_ERROR | YES | YES * \ref MIB_MIN_RX_SYMBOLS | YES | YES + * \ref MIB_ANTENNA_GAIN | YES | YES * * The following table provides links to the function implementations of the * related MIB primitives: @@ -1306,6 +1311,13 @@ typedef enum eMib * Default: 6 symbols */ MIB_MIN_RX_SYMBOLS, + /*! + * Antenna gain of the node. Default value is region specific. + * The antenna gain is used to calculate the TX power of the node. + * The formula is: + * radioTxPower = ( int8_t )floor( maxEirp - antennaGain ) + */ + MIB_ANTENNA_GAIN }Mib_t; /*! @@ -1487,6 +1499,12 @@ typedef union uMibParam * Related MIB type: \ref MIB_MIN_RX_SYMBOLS */ uint8_t MinRxSymbols; + /*! + * Antenna gain + * + * Related MIB type: \ref MIB_ANTENNA_GAIN + */ + float AntennaGain; }MibParam_t; /*! diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index c6cf06bb0..4a973796c 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -321,128 +321,128 @@ /*! * Region | dBM * ------------ | :-----: - * AS923 | Max ERP - * AU915 | 30 - * CN470 | 17 - * CN779 | 10 - * EU433 | 10 - * EU868 | 20 - * IN865 | Max ERP - * KR920 | 20 - * US915 | 30 - * US915_HYBRID | 30 + * AS923 | Max EIRP + * AU915 | Max EIRP + * CN470 | Max EIRP + * CN779 | Max EIRP + * EU433 | Max EIRP + * EU868 | Max EIRP + * IN865 | Max EIRP + * KR920 | Max EIRP + * US915 | Max ERP + * US915_HYBRID | Max ERP */ #define TX_POWER_0 0 /*! * Region | dBM * ------------ | :-----: - * AS923 | Max ERP - 2 - * AU915 | 28 - * CN470 | 16 - * CN779 | 7 - * EU433 | 7 - * EU868 | 14 - * IN865 | Max ERP - 2 - * KR920 | 14 - * US915 | 28 - * US915_HYBRID | 28 + * AS923 | Max EIRP - 2 + * AU915 | Max EIRP - 2 + * CN470 | Max EIRP - 2 + * CN779 | Max EIRP - 2 + * EU433 | Max EIRP - 2 + * EU868 | Max EIRP - 2 + * IN865 | Max EIRP - 2 + * KR920 | Max EIRP - 2 + * US915 | Max ERP - 2 + * US915_HYBRID | Max ERP - 2 */ #define TX_POWER_1 1 /*! * Region | dBM * ------------ | :-----: - * AS923 | Max ERP - 4 - * AU915 | 26 - * CN470 | 14 - * CN779 | 4 - * EU433 | 4 - * EU868 | 11 - * IN865 | Max ERP - 4 - * KR920 | 10 - * US915 | 26 - * US915_HYBRID | 26 + * AS923 | Max EIRP - 4 + * AU915 | Max EIRP - 4 + * CN470 | Max EIRP - 4 + * CN779 | Max EIRP - 4 + * EU433 | Max EIRP - 4 + * EU868 | Max EIRP - 4 + * IN865 | Max EIRP - 4 + * KR920 | Max EIRP - 4 + * US915 | Max ERP - 4 + * US915_HYBRID | Max ERP - 4 */ #define TX_POWER_2 2 /*! * Region | dBM * ------------ | :-----: - * AS923 | Max ERP - 6 - * AU915 | 24 - * CN470 | 12 - * CN779 | 1 - * EU433 | 1 - * EU868 | 8 - * IN865 | Max ERP - 6 - * KR920 | 8 - * US915 | 24 - * US915_HYBRID | 24 + * AS923 | Max EIRP - 6 + * AU915 | Max EIRP - 6 + * CN470 | Max EIRP - 6 + * CN779 | Max EIRP - 6 + * EU433 | Max EIRP - 6 + * EU868 | Max EIRP - 6 + * IN865 | Max EIRP - 6 + * KR920 | Max EIRP - 6 + * US915 | Max ERP - 6 + * US915_HYBRID | Max ERP - 6 */ #define TX_POWER_3 3 /*! * Region | dBM * ------------ | :-----: - * AS923 | Max ERP - 8 - * AU915 | 22 - * CN470 | 10 - * CN779 | M2 - * EU433 | M2 - * EU868 | 5 - * IN865 | Max ERP - 8 - * KR920 | 5 - * US915 | 22 - * US915_HYBRID | 22 + * AS923 | Max EIRP - 8 + * AU915 | Max EIRP - 8 + * CN470 | Max EIRP - 8 + * CN779 | Max EIRP - 8 + * EU433 | Max EIRP - 8 + * EU868 | Max EIRP - 8 + * IN865 | Max EIRP - 8 + * KR920 | Max EIRP - 8 + * US915 | Max ERP - 8 + * US915_HYBRID | Max ERP - 8 */ #define TX_POWER_4 4 /*! * Region | dBM * ------------ | :-----: - * AS923 | Max ERP - 10 - * AU915 | 20 - * CN470 | 7 - * CN779 | M5 - * EU433 | M5 - * EU868 | 2 - * IN865 | Max ERP - 10 - * KR920 | 2 - * US915 | 20 - * US915_HYBRID | 20 + * AS923 | Max EIRP - 10 + * AU915 | Max EIRP - 10 + * CN470 | Max EIRP - 10 + * CN779 | Max EIRP - 10 + * EU433 | Max EIRP - 10 + * EU868 | Max EIRP - 10 + * IN865 | Max EIRP - 10 + * KR920 | Max EIRP - 10 + * US915 | Max ERP - 10 + * US915_HYBRID | Max ERP - 10 */ #define TX_POWER_5 5 /*! * Region | dBM * ------------ | :-----: - * AS923 | - - * AU915 | 18 - * CN470 | 5 + * AS923 | Max EIRP - 12 + * AU915 | Max EIRP - 12 + * CN470 | Max EIRP - 12 * CN779 | - * EU433 | - - * EU868 | - - * IN865 | Max ERP - 12 - * KR920 | 0 - * US915 | 18 - * US915_HYBRID | 18 + * EU868 | Max EIRP - 12 + * IN865 | Max EIRP - 12 + * KR920 | Max EIRP - 12 + * US915 | Max ERP - 12 + * US915_HYBRID | Max ERP - 12 */ #define TX_POWER_6 6 /*! * Region | dBM * ------------ | :-----: - * AS923 | - - * AU915 | 16 - * CN470 | 2 + * AS923 | Max EIRP - 14 + * AU915 | Max EIRP - 14 + * CN470 | Max EIRP - 14 * CN779 | - * EU433 | - - * EU868 | - - * IN865 | Max ERP - 14 - * KR920 | - - * US915 | 16 - * US915_HYBRID | 16 + * EU868 | Max EIRP - 14 + * IN865 | Max EIRP - 14 + * KR920 | Max EIRP - 14 + * US915 | Max ERP - 14 + * US915_HYBRID | Max ERP - 14 */ #define TX_POWER_7 7 @@ -450,15 +450,15 @@ * Region | dBM * ------------ | :-----: * AS923 | - - * AU915 | 14 + * AU915 | Max EIRP - 16 * CN470 | - * CN779 | - * EU433 | - * EU868 | - - * IN865 | Max ERP - 16 - * KR920 | 0 - * US915 | 14 - * US915_HYBRID | 14 + * IN865 | Max EIRP - 16 + * KR920 | Max EIRP - 16 + * US915 | Max ERP - 16 + * US915_HYBRID | Max ERP -16 */ #define TX_POWER_8 8 @@ -466,15 +466,15 @@ * Region | dBM * ------------ | :-----: * AS923 | - - * AU915 | 12 + * AU915 | Max EIRP - 18 * CN470 | - * CN779 | - * EU433 | - * EU868 | - - * IN865 | Max ERP - 18 - * KR920 | 0 - * US915 | 12 - * US915_HYBRID | 12 + * IN865 | Max EIRP - 18 + * KR920 | Max EIRP - 18 + * US915 | Max ERP - 16 + * US915_HYBRID | Max ERP - 16 */ #define TX_POWER_9 9 @@ -482,15 +482,15 @@ * Region | dBM * ------------ | :-----: * AS923 | - - * AU915 | 10 + * AU915 | Max EIRP - 20 * CN470 | - * CN779 | - * EU433 | - * EU868 | - - * IN865 | Max ERP - 20 - * KR920 | 0 - * US915 | 10 - * US915_HYBRID | 10 + * IN865 | Max EIRP - 20 + * KR920 | Max EIRP - 20 + * US915 | Max ERP - 10 + * US915_HYBRID | Max ERP - 10 */ #define TX_POWER_10 10 @@ -642,6 +642,10 @@ typedef enum ePhyAttribute * Default value of the MaxEIRP. */ PHY_DEF_MAX_EIRP, + /*! + * Default value of the antenna gain. + */ + PHY_DEF_ANTENNA_GAIN, /*! * Value for the number of join trials. */ @@ -688,6 +692,10 @@ typedef union uPhyParam * A parameter value. */ uint32_t Value; + /*! + * A floating point value. + */ + float fValue; /*! * Pointer to the channels mask. */ @@ -905,7 +913,11 @@ typedef struct sTxConfigParams /*! * The Max EIRP, if applicable. */ - uint8_t MaxEirp; + float MaxEirp; + /*! + * The antenna gain, if applicable. + */ + float AntennaGain; /*! * Frame length to setup. */ @@ -1106,7 +1118,11 @@ typedef struct sContinuousWaveParams /*! * Max EIRP, if applicable. */ - uint8_t MaxEirp; + float MaxEirp; + /*! + * The antenna gain, if applicable. + */ + float AntennaGain; /*! * Specifies the time the radio will stay in CW mode. */ diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index 98499bfe7..8e40423f5 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -290,7 +290,12 @@ PhyParam_t RegionAS923GetPhyParam( GetPhyParams_t* getPhy ) } case PHY_DEF_MAX_EIRP: { - phyParam.Value = AS923_DEFAULT_MAX_EIRP; + phyParam.fValue = AS923_DEFAULT_MAX_EIRP; + break; + } + case PHY_DEF_ANTENNA_GAIN: + { + phyParam.fValue = AS923_DEFAULT_ANTENNA_GAIN; break; } case PHY_NB_JOIN_TRIALS: @@ -615,7 +620,8 @@ bool RegionAS923TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); int8_t phyTxPower = 0; - phyTxPower = txConfig->MaxEirp - ( txPowerLimited * 2U ); + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, txConfig->MaxEirp, txConfig->AntennaGain ); // Setup the radio frequency Radio.SetChannel( Channels[txConfig->Channel].Frequency ); @@ -1057,7 +1063,8 @@ void RegionAS923SetContinuousWave( ContinuousWaveParams_t* continuousWave ) int8_t phyTxPower = 0; uint32_t frequency = Channels[continuousWave->Channel].Frequency; - phyTxPower = continuousWave->MaxEirp - ( txPowerLimited * 2U ); + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, continuousWave->MaxEirp, continuousWave->AntennaGain ); Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } diff --git a/src/mac/region/RegionAS923.h b/src/mac/region/RegionAS923.h index b14193542..a0a7c100b 100644 --- a/src/mac/region/RegionAS923.h +++ b/src/mac/region/RegionAS923.h @@ -119,7 +119,12 @@ /*! * Default Max EIRP */ -#define AS923_DEFAULT_MAX_EIRP 14 +#define AS923_DEFAULT_MAX_EIRP 16.0f + +/*! + * Default antenna gain + */ +#define AS923_DEFAULT_ANTENNA_GAIN 2.15f /*! * ADR Ack limit @@ -268,9 +273,6 @@ static const uint8_t MaxPayloadOfDatarateDwell1DownAS923[] = { 0, 0, 11, 53, 126 */ static const int8_t EffectiveRx1DrOffsetAS923[] = { 0, 1, 2, 3, 4, 5, -1, -2 }; - - - /*! * \brief The function gets a value of a specific phy attribute. * diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index f9e40e70e..507242f31 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -246,11 +246,20 @@ PhyParam_t RegionAU915GetPhyParam( GetPhyParams_t* getPhy ) } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: - case PHY_DEF_MAX_EIRP: { phyParam.Value = 0; break; } + case PHY_DEF_MAX_EIRP: + { + phyParam.fValue = AU915_DEFAULT_MAX_EIRP; + break; + } + case PHY_DEF_ANTENNA_GAIN: + { + phyParam.fValue = AU915_DEFAULT_ANTENNA_GAIN; + break; + } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { @@ -536,7 +545,8 @@ bool RegionAU915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); int8_t phyTxPower = 0; - phyTxPower = TxPowersAU915[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, txConfig->MaxEirp, txConfig->AntennaGain ); Radio.SetChannel( Channels[txConfig->Channel].Frequency ); @@ -818,7 +828,8 @@ void RegionAU915SetContinuousWave( ContinuousWaveParams_t* continuousWave ) int8_t phyTxPower = 0; uint32_t frequency = Channels[continuousWave->Channel].Frequency; - phyTxPower = TxPowersAU915[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, continuousWave->MaxEirp, continuousWave->AntennaGain ); Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } diff --git a/src/mac/region/RegionAU915.h b/src/mac/region/RegionAU915.h index 6ce00abe6..f753efacd 100644 --- a/src/mac/region/RegionAU915.h +++ b/src/mac/region/RegionAU915.h @@ -95,6 +95,16 @@ */ #define AU915_DEFAULT_TX_POWER TX_POWER_5 +/*! + * Default Max EIRP + */ +#define AU915_DEFAULT_MAX_EIRP 30.0f + +/*! + * Default antenna gain + */ +#define AU915_DEFAULT_ANTENNA_GAIN 2.15f + /*! * ADR Ack limit */ @@ -218,10 +228,6 @@ static const uint8_t MaxPayloadOfDatarateAU915[] = { 11, 53, 126, 242, 242, 0, 0 */ static const uint8_t MaxPayloadOfDatarateRepeaterAU915[] = { 11, 53, 126, 242, 242, 0, 0, 0, 33, 109, 222, 222, 222, 222, 0, 0 }; -/*! - * Tx output powers table definition - */ -static const int8_t TxPowersAU915[] = { 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10 }; diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index 3e0d26488..8c8dcc929 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -230,11 +230,20 @@ PhyParam_t RegionCN470GetPhyParam( GetPhyParams_t* getPhy ) } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: - case PHY_DEF_MAX_EIRP: { phyParam.Value = 0; break; } + case PHY_DEF_MAX_EIRP: + { + phyParam.fValue = CN470_DEFAULT_MAX_EIRP; + break; + } + case PHY_DEF_ANTENNA_GAIN: + { + phyParam.fValue = CN470_DEFAULT_ANTENNA_GAIN; + break; + } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { @@ -484,7 +493,8 @@ bool RegionCN470TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band].TxMaxPower, txConfig->Datarate, ChannelsMask ); int8_t phyTxPower = 0; - phyTxPower = TxPowersCN470[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, txConfig->MaxEirp, txConfig->AntennaGain ); // Setup the radio frequency Radio.SetChannel( Channels[txConfig->Channel].Frequency ); @@ -756,7 +766,8 @@ void RegionCN470SetContinuousWave( ContinuousWaveParams_t* continuousWave ) int8_t phyTxPower = 0; uint32_t frequency = Channels[continuousWave->Channel].Frequency; - phyTxPower = TxPowersCN470[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, continuousWave->MaxEirp, continuousWave->AntennaGain ); Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } diff --git a/src/mac/region/RegionCN470.h b/src/mac/region/RegionCN470.h index 943c29ecb..bc2e52676 100644 --- a/src/mac/region/RegionCN470.h +++ b/src/mac/region/RegionCN470.h @@ -95,6 +95,16 @@ */ #define CN470_DEFAULT_TX_POWER TX_POWER_2 +/*! + * Default Max EIRP + */ +#define CN470_DEFAULT_MAX_EIRP 19.15f + +/*! + * Default antenna gain + */ +#define CN470_DEFAULT_ANTENNA_GAIN 2.15f + /*! * ADR Ack limit */ @@ -206,13 +216,6 @@ static const uint8_t MaxPayloadOfDatarateCN470[] = { 51, 51, 51, 115, 222, 222 } */ static const uint8_t MaxPayloadOfDatarateRepeaterCN470[] = { 51, 51, 51, 115, 222, 222 }; -/*! - * Tx output powers table definition - */ -static const int8_t TxPowersCN470[] = { 17, 16, 14, 12, 10, 7, 5, 2 }; - - - /*! * \brief The function gets a value of a specific phy attribute. * diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index 560a72884..861f3c063 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -252,11 +252,20 @@ PhyParam_t RegionCN779GetPhyParam( GetPhyParams_t* getPhy ) } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: - case PHY_DEF_MAX_EIRP: { phyParam.Value = 0; break; } + case PHY_DEF_MAX_EIRP: + { + phyParam.fValue = CN779_DEFAULT_MAX_EIRP; + break; + } + case PHY_DEF_ANTENNA_GAIN: + { + phyParam.fValue = CN779_DEFAULT_ANTENNA_GAIN; + break; + } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { @@ -547,7 +556,8 @@ bool RegionCN779TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); int8_t phyTxPower = 0; - phyTxPower = TxPowersCN779[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, txConfig->MaxEirp, txConfig->AntennaGain ); // Setup the radio frequency Radio.SetChannel( Channels[txConfig->Channel].Frequency ); @@ -986,7 +996,8 @@ void RegionCN779SetContinuousWave( ContinuousWaveParams_t* continuousWave ) int8_t phyTxPower = 0; uint32_t frequency = Channels[continuousWave->Channel].Frequency; - phyTxPower = TxPowersCN779[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, continuousWave->MaxEirp, continuousWave->AntennaGain ); Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } diff --git a/src/mac/region/RegionCN779.h b/src/mac/region/RegionCN779.h index a66119bb1..286a81076 100644 --- a/src/mac/region/RegionCN779.h +++ b/src/mac/region/RegionCN779.h @@ -100,6 +100,16 @@ */ #define CN779_DEFAULT_TX_POWER TX_POWER_0 +/*! + * Default Max EIRP + */ +#define CN779_DEFAULT_MAX_EIRP 12.15f + +/*! + * Default antenna gain + */ +#define CN779_DEFAULT_ANTENNA_GAIN 2.15f + /*! * ADR Ack limit */ @@ -225,13 +235,6 @@ static const uint8_t MaxPayloadOfDatarateCN779[] = { 51, 51, 51, 115, 242, 242, */ static const uint8_t MaxPayloadOfDatarateRepeaterCN779[] = { 51, 51, 51, 115, 222, 222, 222, 222 }; -/*! - * Tx output powers table definition - */ -static const int8_t TxPowersCN779[] = { 10, 7, 4, 1, -2, -5 }; - - - /*! * \brief The function gets a value of a specific phy attribute. * diff --git a/src/mac/region/RegionCommon.c b/src/mac/region/RegionCommon.c index 7ab57868d..9a361e194 100644 --- a/src/mac/region/RegionCommon.c +++ b/src/mac/region/RegionCommon.c @@ -219,3 +219,12 @@ void RegionCommonComputeRxWindowParameters( double tSymbol, uint8_t minRxSymbols *windowTimeout = MAX( ( uint32_t )ceil( ( ( 2 * minRxSymbols - 8 ) * tSymbol + 2 * rxError ) / tSymbol ), minRxSymbols ); // Computed number of symbols *windowOffset = ( int32_t )ceil( ( 4.0 * tSymbol ) - ( ( *windowTimeout * tSymbol ) / 2.0 ) - wakeUpTime ); } + +int8_t RegionCommonComputeTxPower( int8_t txPowerIndex, float maxEirp, float antennaGain ) +{ + int8_t phyTxPower = 0; + + phyTxPower = ( int8_t )floor( ( maxEirp - ( txPowerIndex * 2U ) ) - antennaGain ); + + return phyTxPower; +} diff --git a/src/mac/region/RegionCommon.h b/src/mac/region/RegionCommon.h index b0c49a914..7db59bb6b 100644 --- a/src/mac/region/RegionCommon.h +++ b/src/mac/region/RegionCommon.h @@ -222,6 +222,19 @@ double RegionCommonComputeSymbolTimeFsk( uint8_t phyDr ); */ void RegionCommonComputeRxWindowParameters( double tSymbol, uint8_t minRxSymbols, uint32_t rxError, uint32_t wakeUpTime, uint32_t* windowTimeout, int32_t* windowOffset ); +/*! + * \brief Computes the txPower, based on the max EIRP and the antenna gain. + * + * \param [IN] txPower TX power index. + * + * \param [IN] maxEirp Maximum EIRP. + * + * \param [IN] antennaGain Antenna gain. + * + * \retval Returns the physical TX power. + */ +int8_t RegionCommonComputeTxPower( int8_t txPowerIndex, float maxEirp, float antennaGain ); + /*! \} defgroup REGIONCOMMON */ #endif // __REGIONCOMMON_H__ diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index 73a8ebdae..52f2dbfc1 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -252,11 +252,20 @@ PhyParam_t RegionEU433GetPhyParam( GetPhyParams_t* getPhy ) } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: - case PHY_DEF_MAX_EIRP: { phyParam.Value = 0; break; } + case PHY_DEF_MAX_EIRP: + { + phyParam.fValue = EU433_DEFAULT_MAX_EIRP; + break; + } + case PHY_DEF_ANTENNA_GAIN: + { + phyParam.fValue = EU433_DEFAULT_ANTENNA_GAIN; + break; + } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { @@ -547,7 +556,8 @@ bool RegionEU433TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); int8_t phyTxPower = 0; - phyTxPower = TxPowersEU433[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, txConfig->MaxEirp, txConfig->AntennaGain ); // Setup the radio frequency Radio.SetChannel( Channels[txConfig->Channel].Frequency ); @@ -986,7 +996,8 @@ void RegionEU433SetContinuousWave( ContinuousWaveParams_t* continuousWave ) int8_t phyTxPower = 0; uint32_t frequency = Channels[continuousWave->Channel].Frequency; - phyTxPower = TxPowersEU433[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, continuousWave->MaxEirp, continuousWave->AntennaGain ); Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } diff --git a/src/mac/region/RegionEU433.h b/src/mac/region/RegionEU433.h index 9f9d97985..de17cf12e 100644 --- a/src/mac/region/RegionEU433.h +++ b/src/mac/region/RegionEU433.h @@ -100,6 +100,16 @@ */ #define EU433_DEFAULT_TX_POWER TX_POWER_0 +/*! + * Default Max EIRP + */ +#define EU433_DEFAULT_MAX_EIRP 12.15f + +/*! + * Default antenna gain + */ +#define EU433_DEFAULT_ANTENNA_GAIN 2.15f + /*! * ADR Ack limit */ @@ -226,13 +236,6 @@ static const uint8_t MaxPayloadOfDatarateEU433[] = { 51, 51, 51, 115, 242, 242, */ static const uint8_t MaxPayloadOfDatarateRepeaterEU433[] = { 51, 51, 51, 115, 222, 222, 222, 222 }; -/*! - * Tx output powers table definition - */ -static const int8_t TxPowersEU433[] = { 10, 7, 4, 1, -2, -5 }; - - - /*! * \brief The function gets a value of a specific phy attribute. * diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index 8e17e6ffa..d0953d01c 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -281,11 +281,20 @@ PhyParam_t RegionEU868GetPhyParam( GetPhyParams_t* getPhy ) } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: - case PHY_DEF_MAX_EIRP: { phyParam.Value = 0; break; } + case PHY_DEF_MAX_EIRP: + { + phyParam.fValue = EU868_DEFAULT_MAX_EIRP; + break; + } + case PHY_DEF_ANTENNA_GAIN: + { + phyParam.fValue = EU868_DEFAULT_ANTENNA_GAIN; + break; + } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { @@ -577,7 +586,8 @@ bool RegionEU868TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); int8_t phyTxPower = 0; - phyTxPower = TxPowersEU868[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, txConfig->MaxEirp, txConfig->AntennaGain ); // Setup the radio frequency Radio.SetChannel( Channels[txConfig->Channel].Frequency ); @@ -1018,7 +1028,8 @@ void RegionEU868SetContinuousWave( ContinuousWaveParams_t* continuousWave ) int8_t phyTxPower = 0; uint32_t frequency = Channels[continuousWave->Channel].Frequency; - phyTxPower = TxPowersEU868[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, continuousWave->MaxEirp, continuousWave->AntennaGain ); Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } diff --git a/src/mac/region/RegionEU868.h b/src/mac/region/RegionEU868.h index cf4a94e86..8f88300fe 100644 --- a/src/mac/region/RegionEU868.h +++ b/src/mac/region/RegionEU868.h @@ -100,6 +100,16 @@ */ #define EU868_DEFAULT_TX_POWER TX_POWER_1 +/*! + * Default Max EIRP + */ +#define EU868_DEFAULT_MAX_EIRP 16.0f + +/*! + * Default antenna gain + */ +#define EU868_DEFAULT_ANTENNA_GAIN 2.15f + /*! * ADR Ack limit */ @@ -247,14 +257,6 @@ static const uint8_t MaxPayloadOfDatarateEU868[] = { 51, 51, 51, 115, 242, 242, */ static const uint8_t MaxPayloadOfDatarateRepeaterEU868[] = { 51, 51, 51, 115, 222, 222, 222, 222 }; -/*! - * Tx output powers table definition - */ -static const int8_t TxPowersEU868[] = { 20, 14, 11, 8, 5, 2 }; - - - - /*! * \brief The function gets a value of a specific phy attribute. * diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index 9b517a56f..a6388ead8 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -252,11 +252,20 @@ PhyParam_t RegionIN865GetPhyParam( GetPhyParams_t* getPhy ) } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: - case PHY_DEF_MAX_EIRP: { phyParam.Value = 0; break; } + case PHY_DEF_MAX_EIRP: + { + phyParam.fValue = IN865_DEFAULT_MAX_EIRP; + break; + } + case PHY_DEF_ANTENNA_GAIN: + { + phyParam.fValue = IN865_DEFAULT_ANTENNA_GAIN; + break; + } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { @@ -547,7 +556,8 @@ bool RegionIN865TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); int8_t phyTxPower = 0; - phyTxPower = TxPowersIN865[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, txConfig->MaxEirp, txConfig->AntennaGain ); // Setup the radio frequency Radio.SetChannel( Channels[txConfig->Channel].Frequency ); @@ -987,7 +997,8 @@ void RegionIN865SetContinuousWave( ContinuousWaveParams_t* continuousWave ) int8_t phyTxPower = 0; uint32_t frequency = Channels[continuousWave->Channel].Frequency; - phyTxPower = TxPowersIN865[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, continuousWave->MaxEirp, continuousWave->AntennaGain ); Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } diff --git a/src/mac/region/RegionIN865.h b/src/mac/region/RegionIN865.h index 1481a5559..3564ad169 100644 --- a/src/mac/region/RegionIN865.h +++ b/src/mac/region/RegionIN865.h @@ -100,6 +100,16 @@ */ #define IN865_DEFAULT_TX_POWER TX_POWER_0 +/*! + * Default Max EIRP + */ +#define IN865_DEFAULT_MAX_EIRP 30.0f + +/*! + * Default antenna gain + */ +#define IN865_DEFAULT_ANTENNA_GAIN 2.15f + /*! * ADR Ack limit */ @@ -223,11 +233,6 @@ static const uint8_t MaxPayloadOfDatarateIN865[] = { 51, 51, 51, 115, 242, 242, */ static const uint8_t MaxPayloadOfDatarateRepeaterIN865[] = { 51, 51, 51, 115, 222, 222, 222, 222 }; -/*! - * Tx output powers table definition - */ -static const int8_t TxPowersIN865[] = { 20, 18, 16, 14, 12, 10, 8, 6, 4, 2, 0 }; - /*! * Effective datarate offsets for receive window 1. */ diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 3368b283b..90e01234e 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -59,14 +59,14 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; // Static functions -static int8_t GetMaxBandTxPower( uint32_t freq ) +static int8_t GetMaxEIRP( uint32_t freq ) { if( freq >= 922100000 ) {// Limit to 14dBm - return TX_POWER_1; + return KR920_DEFAULT_MAX_EIRP_HIGH; } // Limit to 10dBm - return TX_POWER_2; + return KR920_DEFAULT_MAX_EIRP_LOW; } static uint32_t GetBandwidth( uint32_t drIndex ) @@ -267,11 +267,24 @@ PhyParam_t RegionKR920GetPhyParam( GetPhyParams_t* getPhy ) } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: - case PHY_DEF_MAX_EIRP: { phyParam.Value = 0; break; } + case PHY_DEF_MAX_EIRP: + { + // We set the lower maximum EIRP as default value. + // The reason for this is, that the frequency may + // change during a channel selection for the next uplink. + // The value has to be recalculated in the TX configuration. + phyParam.fValue = KR920_DEFAULT_MAX_EIRP_LOW; + break; + } + case PHY_DEF_ANTENNA_GAIN: + { + phyParam.fValue = KR920_DEFAULT_ANTENNA_GAIN; + break; + } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { @@ -539,12 +552,17 @@ bool RegionKR920RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) bool RegionKR920TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir ) { int8_t phyDr = DataratesKR920[txConfig->Datarate]; - int8_t maxTxPower = MAX( GetMaxBandTxPower( Channels[txConfig->Channel].Frequency ), Bands[Channels[txConfig->Channel].Band].TxMaxPower ); - int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, maxTxPower, txConfig->Datarate, ChannelsMask ); + int8_t txPowerLimited = LimitTxPower( txConfig->TxPower, Bands[Channels[txConfig->Channel].Band].TxMaxPower, txConfig->Datarate, ChannelsMask ); uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); + float maxEIRP = GetMaxEIRP( Channels[txConfig->Channel].Frequency ); int8_t phyTxPower = 0; - phyTxPower = TxPowersKR920[txPowerLimited]; + // Take the minimum between the maxEIRP and txConfig->MaxEirp. + // The value of txConfig->MaxEirp could have changed during runtime, e.g. due to a MAC command. + maxEIRP = MIN( txConfig->MaxEirp, maxEIRP ); + + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, maxEIRP, txConfig->AntennaGain ); // Setup the radio frequency Radio.SetChannel( Channels[txConfig->Channel].Frequency ); @@ -992,7 +1010,8 @@ void RegionKR920SetContinuousWave( ContinuousWaveParams_t* continuousWave ) int8_t phyTxPower = 0; uint32_t frequency = Channels[continuousWave->Channel].Frequency; - phyTxPower = TxPowersKR920[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, continuousWave->MaxEirp, continuousWave->AntennaGain ); Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } diff --git a/src/mac/region/RegionKR920.h b/src/mac/region/RegionKR920.h index 0fab9061e..8ce7a48dc 100644 --- a/src/mac/region/RegionKR920.h +++ b/src/mac/region/RegionKR920.h @@ -100,6 +100,21 @@ */ #define KR920_DEFAULT_TX_POWER TX_POWER_1 +/*! + * Default Max EIRP for frequency 920.9 MHz - 921.9 MHz + */ +#define KR920_DEFAULT_MAX_EIRP_LOW 10.0f + +/*! + * Default Max EIRP for frequency 922.1 MHz - 923.3 MHz + */ +#define KR920_DEFAULT_MAX_EIRP_HIGH 14.0f + +/*! + * Default antenna gain + */ +#define KR920_DEFAULT_ANTENNA_GAIN 2.15f + /*! * ADR Ack limit */ @@ -229,12 +244,7 @@ static const uint32_t BandwidthsKR920[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 1 static const uint8_t MaxPayloadOfDatarateKR920[] = { 65, 151, 242, 242, 242, 242 }; /*! - * Tx output powers table definition */ -static const int8_t TxPowersKR920[] = { 20, 14, 10, 8, 5, 2, 0 }; - - - /*! * \brief The function gets a value of a specific phy attribute. diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index 130ea4218..d8a61cdf1 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -335,11 +335,16 @@ PhyParam_t RegionUS915HybridGetPhyParam( GetPhyParams_t* getPhy ) } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: - case PHY_DEF_MAX_EIRP: { phyParam.Value = 0; break; } + case PHY_DEF_MAX_EIRP: + case PHY_DEF_ANTENNA_GAIN: + { + phyParam.fValue = 0; + break; + } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { @@ -622,7 +627,8 @@ bool RegionUS915HybridTxConfig( TxConfigParams_t* txConfig, int8_t* txPower, Tim uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); int8_t phyTxPower = 0; - phyTxPower = TxPowersUS915_HYBRID[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, US915_HYBRID_DEFAULT_MAX_ERP, 0 ); Radio.SetChannel( Channels[txConfig->Channel].Frequency ); @@ -909,7 +915,8 @@ void RegionUS915HybridSetContinuousWave( ContinuousWaveParams_t* continuousWave int8_t phyTxPower = 0; uint32_t frequency = Channels[continuousWave->Channel].Frequency; - phyTxPower = TxPowersUS915_HYBRID[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, US915_HYBRID_DEFAULT_MAX_ERP, 0 ); Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } diff --git a/src/mac/region/RegionUS915-Hybrid.h b/src/mac/region/RegionUS915-Hybrid.h index 187e1e424..398a8cf10 100644 --- a/src/mac/region/RegionUS915-Hybrid.h +++ b/src/mac/region/RegionUS915-Hybrid.h @@ -95,6 +95,11 @@ */ #define US915_HYBRID_DEFAULT_TX_POWER TX_POWER_5 +/*! + * Default Max ERP + */ +#define US915_HYBRID_DEFAULT_MAX_ERP 30.0f + /*! * ADR Ack limit */ @@ -218,13 +223,6 @@ static const uint8_t MaxPayloadOfDatarateUS915_HYBRID[] = { 11, 53, 125, 242, 24 */ static const uint8_t MaxPayloadOfDatarateRepeaterUS915_HYBRID[] = { 11, 53, 125, 242, 242, 0, 0, 0, 33, 109, 222, 222, 222, 222, 0, 0 }; -/*! - * Tx output powers table definition - */ -static const int8_t TxPowersUS915_HYBRID[] = { 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10 }; - - - /*! * \brief The function gets a value of a specific phy attribute. * diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index f841aae5d..9809b85a9 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -246,11 +246,16 @@ PhyParam_t RegionUS915GetPhyParam( GetPhyParams_t* getPhy ) } case PHY_DEF_UPLINK_DWELL_TIME: case PHY_DEF_DOWNLINK_DWELL_TIME: - case PHY_DEF_MAX_EIRP: { phyParam.Value = 0; break; } + case PHY_DEF_MAX_EIRP: + case PHY_DEF_ANTENNA_GAIN: + { + phyParam.fValue = 0; + break; + } case PHY_NB_JOIN_TRIALS: case PHY_DEF_NB_JOIN_TRIALS: { @@ -534,7 +539,8 @@ bool RegionUS915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint32_t bandwidth = GetBandwidth( txConfig->Datarate ); int8_t phyTxPower = 0; - phyTxPower = TxPowersUS915[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, US915_DEFAULT_MAX_ERP, 0 ); Radio.SetChannel( Channels[txConfig->Channel].Frequency ); @@ -816,7 +822,8 @@ void RegionUS915SetContinuousWave( ContinuousWaveParams_t* continuousWave ) int8_t phyTxPower = 0; uint32_t frequency = Channels[continuousWave->Channel].Frequency; - phyTxPower = TxPowersUS915[txPowerLimited]; + // Calculate physical TX power + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, US915_DEFAULT_MAX_ERP, 0 ); Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } diff --git a/src/mac/region/RegionUS915.h b/src/mac/region/RegionUS915.h index d2c92a140..a67617f9a 100644 --- a/src/mac/region/RegionUS915.h +++ b/src/mac/region/RegionUS915.h @@ -95,6 +95,11 @@ */ #define US915_DEFAULT_TX_POWER TX_POWER_5 +/*! + * Default Max ERP + */ +#define US915_DEFAULT_MAX_ERP 30.0f + /*! * ADR Ack limit */ @@ -218,13 +223,6 @@ static const uint8_t MaxPayloadOfDatarateUS915[] = { 11, 53, 125, 242, 242, 0, 0 */ static const uint8_t MaxPayloadOfDatarateRepeaterUS915[] = { 11, 53, 125, 242, 242, 0, 0, 0, 33, 109, 222, 222, 222, 222, 0, 0 }; -/*! - * Tx output powers table definition - */ -static const int8_t TxPowersUS915[] = { 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10 }; - - - /*! * \brief The function gets a value of a specific phy attribute. * From a7ee146057508a5e1e30f0ee4468ecfb7d060615 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Tue, 30 May 2017 15:56:33 +0200 Subject: [PATCH 094/161] Update regional definitions of AS923. According to regional specification v1.0.2rB-1. --- src/mac/region/RegionAS923.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mac/region/RegionAS923.h b/src/mac/region/RegionAS923.h index a0a7c100b..09b26fc95 100644 --- a/src/mac/region/RegionAS923.h +++ b/src/mac/region/RegionAS923.h @@ -94,7 +94,7 @@ /*! * Minimal Tx output power that can be used by the node */ -#define AS923_MIN_TX_POWER TX_POWER_5 +#define AS923_MIN_TX_POWER TX_POWER_7 /*! * Maximal Tx output power that can be used by the node From c766d0635dd9410e3b39efd1aa61afe762b5eebc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Tue, 30 May 2017 15:57:17 +0200 Subject: [PATCH 095/161] Update regional definitions of AU915. According to regional specification v1.0.2rB-1. --- src/mac/region/RegionAU915.h | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/mac/region/RegionAU915.h b/src/mac/region/RegionAU915.h index f753efacd..d4245ba55 100644 --- a/src/mac/region/RegionAU915.h +++ b/src/mac/region/RegionAU915.h @@ -48,7 +48,7 @@ /*! * Maximal datarate that can be used by the node */ -#define AU915_TX_MAX_DATARATE DR_4 +#define AU915_TX_MAX_DATARATE DR_6 /*! * Minimal datarate that can be used by the node @@ -199,12 +199,12 @@ /*! * Data rates table definition */ -static const uint8_t DataratesAU915[] = { 10, 9, 8, 7, 8, 0, 0, 0, 12, 11, 10, 9, 8, 7, 0, 0 }; +static const uint8_t DataratesAU915[] = { 12, 11, 10, 9, 8, 7, 8, 0, 12, 11, 10, 9, 8, 7, 0, 0 }; /*! * Bandwidths table definition in Hz */ -static const uint32_t BandwidthsAU915[] = { 125e3, 125e3, 125e3, 125e3, 500e3, 0, 0, 0, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 0, 0 }; +static const uint32_t BandwidthsAU915[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3, 500e3, 0, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 0, 0 }; /*! * Up/Down link data rates offset definition @@ -221,15 +221,12 @@ static const int8_t DatarateOffsetsAU915[5][4] = /*! * Maximum payload with respect to the datarate index. Cannot operate with repeater. */ -static const uint8_t MaxPayloadOfDatarateAU915[] = { 11, 53, 126, 242, 242, 0, 0, 0, 53, 129, 242, 242, 242, 242, 0, 0 }; +static const uint8_t MaxPayloadOfDatarateAU915[] = { 51, 51, 51, 115, 242, 242, 242, 0, 53, 129, 242, 242, 242, 242, 0, 0 }; /*! * Maximum payload with respect to the datarate index. Can operate with repeater. */ -static const uint8_t MaxPayloadOfDatarateRepeaterAU915[] = { 11, 53, 126, 242, 242, 0, 0, 0, 33, 109, 222, 222, 222, 222, 0, 0 }; - - - +static const uint8_t MaxPayloadOfDatarateRepeaterAU915[] = { 51, 51, 51, 115, 222, 222, 222, 0, 33, 109, 222, 222, 222, 222, 0, 0 }; /*! * \brief The function gets a value of a specific phy attribute. From dc87d5e60856d8a473ac22dcd71650c605876c41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Tue, 30 May 2017 15:57:57 +0200 Subject: [PATCH 096/161] Issue(239): Update regional definitions of AU915. According to regional specification v1.0.2rB-1. --- src/mac/region/RegionAU915.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 507242f31..6a1582c28 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -85,17 +85,6 @@ static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datara // Limit tx power to the band max txPowerResult = MAX( txPower, maxBandTxPower ); - if( ( datarate == DR_4 ) || ( ( datarate >= DR_8 ) && ( datarate <= DR_13 ) ) ) - {// Limit tx power to max 26dBm - txPowerResult = MAX( txPower, TX_POWER_2 ); - } - else - { - if( RegionCommonCountChannels( channelsMask, 0, 4 ) < 50 ) - {// Limit tx power to max 21dBm - txPowerResult = MAX( txPower, TX_POWER_5 ); - } - } return txPowerResult; } From 56120a5e9070f16dcfe10466d3b260ca582d003a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Tue, 30 May 2017 15:58:46 +0200 Subject: [PATCH 097/161] Update regional definitions of EU868. According to regional specification v1.0.2rB-1. --- src/mac/region/RegionEU868.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mac/region/RegionEU868.h b/src/mac/region/RegionEU868.h index 8f88300fe..40cffe575 100644 --- a/src/mac/region/RegionEU868.h +++ b/src/mac/region/RegionEU868.h @@ -88,7 +88,7 @@ /*! * Minimal Tx output power that can be used by the node */ -#define EU868_MIN_TX_POWER TX_POWER_5 +#define EU868_MIN_TX_POWER TX_POWER_7 /*! * Maximal Tx output power that can be used by the node From aca8b6daf015bf3977aa47d214c7d96de8e6f8aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Tue, 30 May 2017 15:59:30 +0200 Subject: [PATCH 098/161] Update regional definitions of KR920. According to regional specification v1.0.2rB-1. --- src/mac/region/RegionKR920.c | 6 +++++- src/mac/region/RegionKR920.h | 6 ++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 90e01234e..0cb4f4373 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -185,11 +185,15 @@ PhyParam_t RegionKR920GetPhyParam( GetPhyParams_t* getPhy ) break; } case PHY_MAX_PAYLOAD: - case PHY_MAX_PAYLOAD_REPEATER: { phyParam.Value = MaxPayloadOfDatarateKR920[getPhy->Datarate]; break; } + case PHY_MAX_PAYLOAD_REPEATER: + { + phyParam.Value = MaxPayloadOfDatarateRepeaterKR920[getPhy->Datarate]; + break; + } case PHY_DUTY_CYCLE: { phyParam.Value = KR920_DUTY_CYCLE_ENABLED; diff --git a/src/mac/region/RegionKR920.h b/src/mac/region/RegionKR920.h index 8ce7a48dc..a544f6cc3 100644 --- a/src/mac/region/RegionKR920.h +++ b/src/mac/region/RegionKR920.h @@ -88,7 +88,7 @@ /*! * Minimal Tx output power that can be used by the node */ -#define KR920_MIN_TX_POWER TX_POWER_6 +#define KR920_MIN_TX_POWER TX_POWER_10 /*! * Maximal Tx output power that can be used by the node @@ -241,10 +241,12 @@ static const uint32_t BandwidthsKR920[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 1 /*! * Maximum payload with respect to the datarate index. Can operate with and without a repeater. */ -static const uint8_t MaxPayloadOfDatarateKR920[] = { 65, 151, 242, 242, 242, 242 }; +static const uint8_t MaxPayloadOfDatarateKR920[] = { 51, 51, 51, 115, 242, 242 }; /*! + * Maximum payload with respect to the datarate index. Can operate with repeater. */ +static const uint8_t MaxPayloadOfDatarateRepeaterKR920[] = { 51, 51, 51, 115, 222, 222 }; /*! * \brief The function gets a value of a specific phy attribute. From ee2e7c1b7a65c4ae6fb9c188af43d706f3aa77cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Tue, 30 May 2017 16:01:58 +0200 Subject: [PATCH 099/161] Group initializations --- src/mac/LoRaMac.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 26de12396..574e59707 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2263,10 +2263,6 @@ LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t *primitives, LoRaMacC phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); LoRaMacParamsDefaults.ChannelsDatarate = phyParam.Value; - LoRaMacParamsDefaults.SystemMaxRxError = 10; - - LoRaMacParamsDefaults.MinRxSymbols = 6; - getPhy.Attribute = PHY_MAX_RX_WINDOW; phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); LoRaMacParamsDefaults.MaxRxWindow = phyParam.Value; @@ -2318,6 +2314,10 @@ LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t *primitives, LoRaMacC RegionInitDefaults( LoRaMacRegion, INIT_TYPE_INIT ); // Init parameters which are not set in function ResetMacParameters + LoRaMacParamsDefaults.ChannelsNbRep = 1; + LoRaMacParamsDefaults.SystemMaxRxError = 10; + LoRaMacParamsDefaults.MinRxSymbols = 6; + LoRaMacParams.SystemMaxRxError = LoRaMacParamsDefaults.SystemMaxRxError; LoRaMacParams.MinRxSymbols = LoRaMacParamsDefaults.MinRxSymbols; LoRaMacParams.MaxRxWindow = LoRaMacParamsDefaults.MaxRxWindow; From 4c3d208d31fa866a36c15bfc2e6cb343c13c91e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Tue, 30 May 2017 16:05:53 +0200 Subject: [PATCH 100/161] Add a ommand to get the next lower datarate. --- src/mac/LoRaMac.c | 5 ++-- src/mac/region/Region.h | 6 ++++- src/mac/region/RegionAS923.c | 37 +++++++++++++++++++++++++---- src/mac/region/RegionAU915.c | 36 +++++++++++++++++++++------- src/mac/region/RegionCN470.c | 32 +++++++++++++++++++++---- src/mac/region/RegionCN779.c | 32 +++++++++++++++++++++---- src/mac/region/RegionEU433.c | 32 +++++++++++++++++++++---- src/mac/region/RegionEU868.c | 32 +++++++++++++++++++++---- src/mac/region/RegionIN865.c | 36 ++++++++++++++++++++++++---- src/mac/region/RegionKR920.c | 32 +++++++++++++++++++++---- src/mac/region/RegionUS915-Hybrid.c | 36 +++++++++++++++++++++------- src/mac/region/RegionUS915.c | 36 +++++++++++++++++++++------- 12 files changed, 297 insertions(+), 55 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 574e59707..a1c1f9e2a 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1253,10 +1253,11 @@ static void OnMacStateCheckTimerEvent( void ) if( ( AckTimeoutRetriesCounter % 2 ) == 1 ) { - getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; getPhy.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; + getPhy.Datarate = LoRaMacParams.ChannelsDatarate; phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); - LoRaMacParams.ChannelsDatarate = MAX( LoRaMacParams.ChannelsDatarate - 1, phyParam.Value ); + LoRaMacParams.ChannelsDatarate = phyParam.Value; } // Try to send the frame again if( ScheduleTx( ) == LORAMAC_STATUS_OK ) diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index 4a973796c..c4db211ac 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -653,7 +653,11 @@ typedef enum ePhyAttribute /*! * Default value for the number of join trials. */ - PHY_DEF_NB_JOIN_TRIALS + PHY_DEF_NB_JOIN_TRIALS, + /*! + * Next lower datarate. + */ + PHY_NEXT_LOWER_TX_DR }PhyAttribute_t; /*! diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index 8e40423f5..fd67d376f 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -59,6 +59,21 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; // Static functions +static int8_t GetNextLowerTxDr( int8_t dr, int8_t minDr ) +{ + uint8_t nextLowerDr = 0; + + if( dr == minDr ) + { + nextLowerDr = minDr; + } + else + { + nextLowerDr = dr - 1; + } + return nextLowerDr; +} + static uint32_t GetBandwidth( uint32_t drIndex ) { switch( BandwidthsAS923[drIndex] ) @@ -174,6 +189,18 @@ PhyParam_t RegionAS923GetPhyParam( GetPhyParams_t* getPhy ) phyParam.Value = AS923_DEFAULT_DATARATE; break; } + case PHY_NEXT_LOWER_TX_DR: + { + if( getPhy->UplinkDwellTime == 0 ) + { + phyParam.Value = GetNextLowerTxDr( getPhy->Datarate, AS923_TX_MIN_DATARATE ); + } + else + { + phyParam.Value = GetNextLowerTxDr( getPhy->Datarate, AS923_DWELL_LIMIT_DATARATE ); + } + break; + } case PHY_DEF_TX_POWER: { phyParam.Value = AS923_DEFAULT_TX_POWER; @@ -503,10 +530,12 @@ bool RegionAS923AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO { if( ( adrNext->AdrAckCounter % AS923_ADR_ACK_DELAY ) == 1 ) { - if( datarate > minTxDatarate ) - { - datarate--; - } + // Decrease the datarate + getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; + getPhy.Datarate = datarate; + getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; + phyParam = RegionAS923GetPhyParam( &getPhy ); + datarate = phyParam.Value; if( datarate == minTxDatarate ) { diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 6a1582c28..d37a0f706 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -64,6 +64,21 @@ static uint16_t ChannelsMaskRemaining[CHANNELS_MASK_SIZE]; static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; // Static functions +static int8_t GetNextLowerTxDr( int8_t dr, int8_t minDr ) +{ + uint8_t nextLowerDr = 0; + + if( dr == minDr ) + { + nextLowerDr = minDr; + } + else + { + nextLowerDr = dr - 1; + } + return nextLowerDr; +} + static uint32_t GetBandwidth( uint32_t drIndex ) { switch( BandwidthsAU915[drIndex] ) @@ -143,6 +158,11 @@ PhyParam_t RegionAU915GetPhyParam( GetPhyParams_t* getPhy ) phyParam.Value = AU915_DEFAULT_DATARATE; break; } + case PHY_NEXT_LOWER_TX_DR: + { + phyParam.Value = GetNextLowerTxDr( getPhy->Datarate, AU915_TX_MIN_DATARATE ); + break; + } case PHY_DEF_TX_POWER: { phyParam.Value = AU915_DEFAULT_TX_POWER; @@ -410,6 +430,8 @@ bool RegionAU915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO bool adrAckReq = false; int8_t datarate = adrNext->Datarate; int8_t txPower = adrNext->TxPower; + GetPhyParams_t getPhy; + PhyParam_t phyParam; // Report back the adr ack counter *adrAckCounter = adrNext->AdrAckCounter; @@ -436,14 +458,12 @@ bool RegionAU915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO { if( ( adrNext->AdrAckCounter % AU915_ADR_ACK_DELAY ) == 1 ) { - if( ( datarate > AU915_TX_MIN_DATARATE ) && ( datarate == DR_8 ) ) - { - datarate = DR_4; - } - else if( datarate > AU915_TX_MIN_DATARATE ) - { - datarate--; - } + // Decrease the datarate + getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; + getPhy.Datarate = datarate; + getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; + phyParam = RegionAU915GetPhyParam( &getPhy ); + datarate = phyParam.Value; if( datarate == AU915_TX_MIN_DATARATE ) { diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index 8c8dcc929..fb5c49991 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -59,6 +59,21 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; // Static functions +static int8_t GetNextLowerTxDr( int8_t dr, int8_t minDr ) +{ + uint8_t nextLowerDr = 0; + + if( dr == minDr ) + { + nextLowerDr = minDr; + } + else + { + nextLowerDr = dr - 1; + } + return nextLowerDr; +} + static uint32_t GetBandwidth( uint32_t drIndex ) { switch( BandwidthsCN470[drIndex] ) @@ -138,6 +153,11 @@ PhyParam_t RegionCN470GetPhyParam( GetPhyParams_t* getPhy ) phyParam.Value = CN470_DEFAULT_DATARATE; break; } + case PHY_NEXT_LOWER_TX_DR: + { + phyParam.Value = GetNextLowerTxDr( getPhy->Datarate, CN470_TX_MIN_DATARATE ); + break; + } case PHY_DEF_TX_POWER: { phyParam.Value = CN470_DEFAULT_TX_POWER; @@ -374,6 +394,8 @@ bool RegionCN470AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO bool adrAckReq = false; int8_t datarate = adrNext->Datarate; int8_t txPower = adrNext->TxPower; + GetPhyParams_t getPhy; + PhyParam_t phyParam; // Report back the adr ack counter *adrAckCounter = adrNext->AdrAckCounter; @@ -400,10 +422,12 @@ bool RegionCN470AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO { if( ( adrNext->AdrAckCounter % CN470_ADR_ACK_DELAY ) == 1 ) { - if( datarate > CN470_TX_MIN_DATARATE ) - { - datarate--; - } + // Decrease the datarate + getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; + getPhy.Datarate = datarate; + getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; + phyParam = RegionCN470GetPhyParam( &getPhy ); + datarate = phyParam.Value; if( datarate == CN470_TX_MIN_DATARATE ) { diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index 861f3c063..a7e83cd7a 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -59,6 +59,21 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; // Static functions +static int8_t GetNextLowerTxDr( int8_t dr, int8_t minDr ) +{ + uint8_t nextLowerDr = 0; + + if( dr == minDr ) + { + nextLowerDr = minDr; + } + else + { + nextLowerDr = dr - 1; + } + return nextLowerDr; +} + static uint32_t GetBandwidth( uint32_t drIndex ) { switch( BandwidthsCN779[drIndex] ) @@ -160,6 +175,11 @@ PhyParam_t RegionCN779GetPhyParam( GetPhyParams_t* getPhy ) phyParam.Value = CN779_DEFAULT_DATARATE; break; } + case PHY_NEXT_LOWER_TX_DR: + { + phyParam.Value = GetNextLowerTxDr( getPhy->Datarate, CN779_TX_MIN_DATARATE ); + break; + } case PHY_DEF_TX_POWER: { phyParam.Value = CN779_DEFAULT_TX_POWER; @@ -425,6 +445,8 @@ bool RegionCN779AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO bool adrAckReq = false; int8_t datarate = adrNext->Datarate; int8_t txPower = adrNext->TxPower; + GetPhyParams_t getPhy; + PhyParam_t phyParam; // Report back the adr ack counter *adrAckCounter = adrNext->AdrAckCounter; @@ -451,10 +473,12 @@ bool RegionCN779AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO { if( ( adrNext->AdrAckCounter % CN779_ADR_ACK_DELAY ) == 1 ) { - if( datarate > CN779_TX_MIN_DATARATE ) - { - datarate--; - } + // Decrease the datarate + getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; + getPhy.Datarate = datarate; + getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; + phyParam = RegionCN779GetPhyParam( &getPhy ); + datarate = phyParam.Value; if( datarate == CN779_TX_MIN_DATARATE ) { diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index 52f2dbfc1..006795829 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -59,6 +59,21 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; // Static functions +static int8_t GetNextLowerTxDr( int8_t dr, int8_t minDr ) +{ + uint8_t nextLowerDr = 0; + + if( dr == minDr ) + { + nextLowerDr = minDr; + } + else + { + nextLowerDr = dr - 1; + } + return nextLowerDr; +} + static uint32_t GetBandwidth( uint32_t drIndex ) { switch( BandwidthsEU433[drIndex] ) @@ -160,6 +175,11 @@ PhyParam_t RegionEU433GetPhyParam( GetPhyParams_t* getPhy ) phyParam.Value = EU433_DEFAULT_DATARATE; break; } + case PHY_NEXT_LOWER_TX_DR: + { + phyParam.Value = GetNextLowerTxDr( getPhy->Datarate, EU433_TX_MIN_DATARATE ); + break; + } case PHY_DEF_TX_POWER: { phyParam.Value = EU433_DEFAULT_TX_POWER; @@ -425,6 +445,8 @@ bool RegionEU433AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO bool adrAckReq = false; int8_t datarate = adrNext->Datarate; int8_t txPower = adrNext->TxPower; + GetPhyParams_t getPhy; + PhyParam_t phyParam; // Report back the adr ack counter *adrAckCounter = adrNext->AdrAckCounter; @@ -451,10 +473,12 @@ bool RegionEU433AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO { if( ( adrNext->AdrAckCounter % EU433_ADR_ACK_DELAY ) == 1 ) { - if( datarate > EU433_TX_MIN_DATARATE ) - { - datarate--; - } + // Decrease the datarate + getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; + getPhy.Datarate = datarate; + getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; + phyParam = RegionEU433GetPhyParam( &getPhy ); + datarate = phyParam.Value; if( datarate == EU433_TX_MIN_DATARATE ) { diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index d0953d01c..aa7b7abe2 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -63,6 +63,21 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; // Static functions +static int8_t GetNextLowerTxDr( int8_t dr, int8_t minDr ) +{ + uint8_t nextLowerDr = 0; + + if( dr == minDr ) + { + nextLowerDr = minDr; + } + else + { + nextLowerDr = dr - 1; + } + return nextLowerDr; +} + static uint32_t GetBandwidth( uint32_t drIndex ) { switch( BandwidthsEU868[drIndex] ) @@ -189,6 +204,11 @@ PhyParam_t RegionEU868GetPhyParam( GetPhyParams_t* getPhy ) phyParam.Value = EU868_DEFAULT_DATARATE; break; } + case PHY_NEXT_LOWER_TX_DR: + { + phyParam.Value = GetNextLowerTxDr( getPhy->Datarate, EU868_TX_MIN_DATARATE ); + break; + } case PHY_DEF_TX_POWER: { phyParam.Value = EU868_DEFAULT_TX_POWER; @@ -454,6 +474,8 @@ bool RegionEU868AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO bool adrAckReq = false; int8_t datarate = adrNext->Datarate; int8_t txPower = adrNext->TxPower; + GetPhyParams_t getPhy; + PhyParam_t phyParam; // Report back the adr ack counter *adrAckCounter = adrNext->AdrAckCounter; @@ -480,10 +502,12 @@ bool RegionEU868AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO { if( ( adrNext->AdrAckCounter % EU868_ADR_ACK_DELAY ) == 1 ) { - if( datarate > EU868_TX_MIN_DATARATE ) - { - datarate--; - } + // Decrease the datarate + getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; + getPhy.Datarate = datarate; + getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; + phyParam = RegionEU868GetPhyParam( &getPhy ); + datarate = phyParam.Value; if( datarate == EU868_TX_MIN_DATARATE ) { diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index a6388ead8..e6adae1c7 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -59,6 +59,25 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; // Static functions +static int8_t GetNextLowerTxDr( int8_t dr, int8_t minDr ) +{ + uint8_t nextLowerDr = 0; + + if( dr == minDr ) + { + nextLowerDr = minDr; + } + else if( dr == DR_7 ) + { + nextLowerDr = DR_5; + } + else + { + nextLowerDr = dr - 1; + } + return nextLowerDr; +} + static uint32_t GetBandwidth( uint32_t drIndex ) { switch( BandwidthsIN865[drIndex] ) @@ -160,6 +179,11 @@ PhyParam_t RegionIN865GetPhyParam( GetPhyParams_t* getPhy ) phyParam.Value = IN865_DEFAULT_DATARATE; break; } + case PHY_NEXT_LOWER_TX_DR: + { + phyParam.Value = GetNextLowerTxDr( getPhy->Datarate, IN865_TX_MIN_DATARATE ); + break; + } case PHY_DEF_TX_POWER: { phyParam.Value = IN865_DEFAULT_TX_POWER; @@ -425,6 +449,8 @@ bool RegionIN865AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO bool adrAckReq = false; int8_t datarate = adrNext->Datarate; int8_t txPower = adrNext->TxPower; + GetPhyParams_t getPhy; + PhyParam_t phyParam; // Report back the adr ack counter *adrAckCounter = adrNext->AdrAckCounter; @@ -451,10 +477,12 @@ bool RegionIN865AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO { if( ( adrNext->AdrAckCounter % IN865_ADR_ACK_DELAY ) == 1 ) { - if( datarate > IN865_TX_MIN_DATARATE ) - { - datarate--; - } + // Decrease the datarate + getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; + getPhy.Datarate = datarate; + getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; + phyParam = RegionIN865GetPhyParam( &getPhy ); + datarate = phyParam.Value; if( datarate == IN865_TX_MIN_DATARATE ) { diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 0cb4f4373..559ec647a 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -59,6 +59,21 @@ static uint16_t ChannelsMask[CHANNELS_MASK_SIZE]; static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; // Static functions +static int8_t GetNextLowerTxDr( int8_t dr, int8_t minDr ) +{ + uint8_t nextLowerDr = 0; + + if( dr == minDr ) + { + nextLowerDr = minDr; + } + else + { + nextLowerDr = dr - 1; + } + return nextLowerDr; +} + static int8_t GetMaxEIRP( uint32_t freq ) { if( freq >= 922100000 ) @@ -179,6 +194,11 @@ PhyParam_t RegionKR920GetPhyParam( GetPhyParams_t* getPhy ) phyParam.Value = KR920_DEFAULT_DATARATE; break; } + case PHY_NEXT_LOWER_TX_DR: + { + phyParam.Value = GetNextLowerTxDr( getPhy->Datarate, KR920_TX_MIN_DATARATE ); + break; + } case PHY_DEF_TX_POWER: { phyParam.Value = KR920_DEFAULT_TX_POWER; @@ -448,6 +468,8 @@ bool RegionKR920AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO bool adrAckReq = false; int8_t datarate = adrNext->Datarate; int8_t txPower = adrNext->TxPower; + GetPhyParams_t getPhy; + PhyParam_t phyParam; // Report back the adr ack counter *adrAckCounter = adrNext->AdrAckCounter; @@ -474,10 +496,12 @@ bool RegionKR920AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO { if( ( adrNext->AdrAckCounter % KR920_ADR_ACK_DELAY ) == 1 ) { - if( datarate > KR920_TX_MIN_DATARATE ) - { - datarate--; - } + // Decrease the datarate + getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; + getPhy.Datarate = datarate; + getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; + phyParam = RegionKR920GetPhyParam( &getPhy ); + datarate = phyParam.Value; if( datarate == KR920_TX_MIN_DATARATE ) { diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index d8a61cdf1..c2eddf1b9 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -64,6 +64,21 @@ static uint16_t ChannelsMaskRemaining[CHANNELS_MASK_SIZE]; static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; // Static functions +static int8_t GetNextLowerTxDr( int8_t dr, int8_t minDr ) +{ + uint8_t nextLowerDr = 0; + + if( dr == minDr ) + { + nextLowerDr = minDr; + } + else + { + nextLowerDr = dr - 1; + } + return nextLowerDr; +} + static uint32_t GetBandwidth( uint32_t drIndex ) { switch( BandwidthsUS915_HYBRID[drIndex] ) @@ -243,6 +258,11 @@ PhyParam_t RegionUS915HybridGetPhyParam( GetPhyParams_t* getPhy ) phyParam.Value = US915_HYBRID_DEFAULT_DATARATE; break; } + case PHY_NEXT_LOWER_TX_DR: + { + phyParam.Value = GetNextLowerTxDr( getPhy->Datarate, US915_HYBRID_TX_MIN_DATARATE ); + break; + } case PHY_DEF_TX_POWER: { phyParam.Value = US915_HYBRID_DEFAULT_TX_POWER; @@ -508,6 +528,8 @@ bool RegionUS915HybridAdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* bool adrAckReq = false; int8_t datarate = adrNext->Datarate; int8_t txPower = adrNext->TxPower; + GetPhyParams_t getPhy; + PhyParam_t phyParam; // Report back the adr ack counter *adrAckCounter = adrNext->AdrAckCounter; @@ -534,14 +556,12 @@ bool RegionUS915HybridAdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* { if( ( adrNext->AdrAckCounter % US915_HYBRID_ADR_ACK_DELAY ) == 1 ) { - if( ( datarate > US915_HYBRID_TX_MIN_DATARATE ) && ( datarate == DR_8 ) ) - { - datarate = DR_4; - } - else if( datarate > US915_HYBRID_TX_MIN_DATARATE ) - { - datarate--; - } + // Decrease the datarate + getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; + getPhy.Datarate = datarate; + getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; + phyParam = RegionUS915HybridGetPhyParam( &getPhy ); + datarate = phyParam.Value; if( datarate == US915_HYBRID_TX_MIN_DATARATE ) { diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 9809b85a9..2cdb0e120 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -64,6 +64,21 @@ static uint16_t ChannelsMaskRemaining[CHANNELS_MASK_SIZE]; static uint16_t ChannelsDefaultMask[CHANNELS_MASK_SIZE]; // Static functions +static int8_t GetNextLowerTxDr( int8_t dr, int8_t minDr ) +{ + uint8_t nextLowerDr = 0; + + if( dr == minDr ) + { + nextLowerDr = minDr; + } + else + { + nextLowerDr = dr - 1; + } + return nextLowerDr; +} + static uint32_t GetBandwidth( uint32_t drIndex ) { switch( BandwidthsUS915[drIndex] ) @@ -154,6 +169,11 @@ PhyParam_t RegionUS915GetPhyParam( GetPhyParams_t* getPhy ) phyParam.Value = US915_DEFAULT_DATARATE; break; } + case PHY_NEXT_LOWER_TX_DR: + { + phyParam.Value = GetNextLowerTxDr( getPhy->Datarate, US915_TX_MIN_DATARATE ); + break; + } case PHY_DEF_TX_POWER: { phyParam.Value = US915_DEFAULT_TX_POWER; @@ -415,6 +435,8 @@ bool RegionUS915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO bool adrAckReq = false; int8_t datarate = adrNext->Datarate; int8_t txPower = adrNext->TxPower; + GetPhyParams_t getPhy; + PhyParam_t phyParam; // Report back the adr ack counter *adrAckCounter = adrNext->AdrAckCounter; @@ -441,14 +463,12 @@ bool RegionUS915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO { if( ( adrNext->AdrAckCounter % US915_ADR_ACK_DELAY ) == 1 ) { - if( ( datarate > US915_TX_MIN_DATARATE ) && ( datarate == DR_8 ) ) - { - datarate = DR_4; - } - else if( datarate > US915_TX_MIN_DATARATE ) - { - datarate--; - } + // Decrease the datarate + getPhy.Attribute = PHY_NEXT_LOWER_TX_DR; + getPhy.Datarate = datarate; + getPhy.UplinkDwellTime = adrNext->UplinkDwellTime; + phyParam = RegionUS915GetPhyParam( &getPhy ); + datarate = phyParam.Value; if( datarate == US915_TX_MIN_DATARATE ) { From 34a8fbb1d59577418da09681073066ecff59539c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Tue, 30 May 2017 16:06:53 +0200 Subject: [PATCH 101/161] Issue(229): Fix issue when receiving frames in second RX2 in Class C. --- src/mac/LoRaMac.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index a1c1f9e2a..ef89cf541 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1135,7 +1135,11 @@ static void OnRadioRxTimeout( void ) McpsConfirm.Status = LORAMAC_EVENT_INFO_STATUS_RX2_TIMEOUT; } MlmeConfirm.Status = LORAMAC_EVENT_INFO_STATUS_RX2_TIMEOUT; - LoRaMacFlags.Bits.MacDone = 1; + + if( LoRaMacDeviceClass != CLASS_C ) + { + LoRaMacFlags.Bits.MacDone = 1; + } } } From 470bf6ab339183539d970bcc9de54167dace03ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Tue, 30 May 2017 16:07:26 +0200 Subject: [PATCH 102/161] Bug fix in function RegionAU915Verify. --- src/mac/region/RegionAU915.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index d37a0f706..63d1304ed 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -349,12 +349,9 @@ bool RegionAU915Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) switch( phyAttribute ) { case PHY_TX_DR: - { - return RegionCommonValueInRange( verify->DatarateParams.Datarate, AU915_TX_MIN_DATARATE, AU915_TX_MAX_DATARATE ); - } case PHY_DEF_TX_DR: { - return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, AU915_TX_MIN_DATARATE, AU915_TX_MAX_DATARATE ); } case PHY_RX_DR: { From 90ed2ea0d0bd9fffd9977467e6762611bfa84647 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Tue, 30 May 2017 16:07:26 +0200 Subject: [PATCH 103/161] Bug fix in function RegionCN470Verify. --- src/mac/region/RegionCN470.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index fb5c49991..1ed069d2c 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -329,12 +329,9 @@ bool RegionCN470Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute ) switch( phyAttribute ) { case PHY_TX_DR: - { - return RegionCommonValueInRange( verify->DatarateParams.Datarate, CN470_TX_MIN_DATARATE, CN470_TX_MAX_DATARATE ); - } case PHY_DEF_TX_DR: { - return RegionCommonValueInRange( verify->DatarateParams.Datarate, DR_0, DR_5 ); + return RegionCommonValueInRange( verify->DatarateParams.Datarate, CN470_TX_MIN_DATARATE, CN470_TX_MAX_DATARATE ); } case PHY_RX_DR: { From d7f955666a88aac547c386933fd407020e09ef0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Tue, 30 May 2017 16:07:26 +0200 Subject: [PATCH 104/161] Update LimitTxPower for US915. Remove RX datarate checks. --- src/mac/region/RegionUS915-Hybrid.c | 2 +- src/mac/region/RegionUS915.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index c2eddf1b9..8e75c6b3a 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -134,7 +134,7 @@ static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datara // Limit tx power to the band max txPowerResult = MAX( txPower, maxBandTxPower ); - if( ( datarate == DR_4 ) || ( ( datarate >= DR_8 ) && ( datarate <= DR_13 ) ) ) + if( datarate == DR_4 ) {// Limit tx power to max 26dBm txPowerResult = MAX( txPower, TX_POWER_2 ); } diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 2cdb0e120..24368aee1 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -100,7 +100,7 @@ static int8_t LimitTxPower( int8_t txPower, int8_t maxBandTxPower, int8_t datara // Limit tx power to the band max txPowerResult = MAX( txPower, maxBandTxPower ); - if( ( datarate == DR_4 ) || ( ( datarate >= DR_8 ) && ( datarate <= DR_13 ) ) ) + if( datarate == DR_4 ) {// Limit tx power to max 26dBm txPowerResult = MAX( txPower, TX_POWER_2 ); } From 75591a6992e773f899cf0ed0320875e6c1505636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Tue, 30 May 2017 16:12:42 +0200 Subject: [PATCH 105/161] Issue(239): Update band TX power to the maximum. --- src/mac/region/RegionAS923.h | 2 +- src/mac/region/RegionAU915.h | 2 +- src/mac/region/RegionCN470.h | 2 +- src/mac/region/RegionCN779.h | 2 +- src/mac/region/RegionEU433.h | 2 +- src/mac/region/RegionEU868.h | 10 +++++----- src/mac/region/RegionIN865.h | 2 +- src/mac/region/RegionKR920.h | 2 +- src/mac/region/RegionUS915-Hybrid.h | 2 +- src/mac/region/RegionUS915.h | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/mac/region/RegionAS923.h b/src/mac/region/RegionAS923.h index 09b26fc95..de0987de5 100644 --- a/src/mac/region/RegionAS923.h +++ b/src/mac/region/RegionAS923.h @@ -204,7 +204,7 @@ * Band 0 definition * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define AS923_BAND0 { 100, AS923_DEFAULT_TX_POWER, 0, 0 } // 1.0 % +#define AS923_BAND0 { 100, AS923_MAX_TX_POWER, 0, 0 } // 1.0 % /*! * LoRaMac default channel 1 diff --git a/src/mac/region/RegionAU915.h b/src/mac/region/RegionAU915.h index d4245ba55..9e954990d 100644 --- a/src/mac/region/RegionAU915.h +++ b/src/mac/region/RegionAU915.h @@ -179,7 +179,7 @@ * Band 0 definition * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define AU915_BAND0 { 1, AU915_DEFAULT_TX_POWER, 0, 0 } // 100.0 % +#define AU915_BAND0 { 1, AU915_MAX_TX_POWER, 0, 0 } // 100.0 % /*! * Defines the first channel for RX window 1 for US band diff --git a/src/mac/region/RegionCN470.h b/src/mac/region/RegionCN470.h index bc2e52676..91dd43e9a 100644 --- a/src/mac/region/RegionCN470.h +++ b/src/mac/region/RegionCN470.h @@ -179,7 +179,7 @@ * Band 0 definition * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define CN470_BAND0 { 1, CN470_DEFAULT_TX_POWER, 0, 0 } // 100.0 % +#define CN470_BAND0 { 1, CN470_MAX_TX_POWER, 0, 0 } // 100.0 % /*! * Defines the first channel for RX window 1 for CN470 band diff --git a/src/mac/region/RegionCN779.h b/src/mac/region/RegionCN779.h index 286a81076..08b7f6731 100644 --- a/src/mac/region/RegionCN779.h +++ b/src/mac/region/RegionCN779.h @@ -191,7 +191,7 @@ * Band 0 definition * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define CN779_BAND0 { 100, CN779_DEFAULT_TX_POWER, 0, 0 } // 1.0 % +#define CN779_BAND0 { 100, CN779_MAX_TX_POWER, 0, 0 } // 1.0 % /*! * LoRaMac default channel 1 diff --git a/src/mac/region/RegionEU433.h b/src/mac/region/RegionEU433.h index de17cf12e..6b2cd2de4 100644 --- a/src/mac/region/RegionEU433.h +++ b/src/mac/region/RegionEU433.h @@ -191,7 +191,7 @@ * Band 0 definition * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define EU433_BAND0 { 100, EU433_DEFAULT_TX_POWER, 0, 0 } // 1.0 % +#define EU433_BAND0 { 100, EU433_MAX_TX_POWER, 0, 0 } // 1.0 % /*! * LoRaMac default channel 1 diff --git a/src/mac/region/RegionEU868.h b/src/mac/region/RegionEU868.h index 40cffe575..460768a6c 100644 --- a/src/mac/region/RegionEU868.h +++ b/src/mac/region/RegionEU868.h @@ -188,31 +188,31 @@ * Band 0 definition * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define EU868_BAND0 { 100 , TX_POWER_1, 0, 0 } // 1.0 % +#define EU868_BAND0 { 100 , EU868_MAX_TX_POWER, 0, 0 } // 1.0 % /*! * Band 1 definition * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define EU868_BAND1 { 100 , TX_POWER_1, 0, 0 } // 1.0 % +#define EU868_BAND1 { 100 , EU868_MAX_TX_POWER, 0, 0 } // 1.0 % /*! * Band 2 definition * Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define EU868_BAND2 { 1000, TX_POWER_1, 0, 0 } // 0.1 % +#define EU868_BAND2 { 1000, EU868_MAX_TX_POWER, 0, 0 } // 0.1 % /*! * Band 2 definition * Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define EU868_BAND3 { 10 , TX_POWER_1, 0, 0 } // 10.0 % +#define EU868_BAND3 { 10 , EU868_MAX_TX_POWER, 0, 0 } // 10.0 % /*! * Band 2 definition * Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define EU868_BAND4 { 100 , TX_POWER_1, 0, 0 } // 1.0 % +#define EU868_BAND4 { 100 , EU868_MAX_TX_POWER, 0, 0 } // 1.0 % /*! * LoRaMac default channel 1 diff --git a/src/mac/region/RegionIN865.h b/src/mac/region/RegionIN865.h index 3564ad169..5f9528195 100644 --- a/src/mac/region/RegionIN865.h +++ b/src/mac/region/RegionIN865.h @@ -188,7 +188,7 @@ * Band 0 definition * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define IN865_BAND0 { 1 , IN865_DEFAULT_TX_POWER, 0, 0 } // 100.0 % +#define IN865_BAND0 { 1 , IN865_MAX_TX_POWER, 0, 0 } // 100.0 % /*! * LoRaMac default channel 1 diff --git a/src/mac/region/RegionKR920.h b/src/mac/region/RegionKR920.h index a544f6cc3..978de751e 100644 --- a/src/mac/region/RegionKR920.h +++ b/src/mac/region/RegionKR920.h @@ -193,7 +193,7 @@ * Band 0 definition * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define KR920_BAND0 { 1 , KR920_DEFAULT_TX_POWER, 0, 0 } // 100.0 % +#define KR920_BAND0 { 1 , KR920_MAX_TX_POWER, 0, 0 } // 100.0 % /*! * LoRaMac default channel 1 diff --git a/src/mac/region/RegionUS915-Hybrid.h b/src/mac/region/RegionUS915-Hybrid.h index 398a8cf10..5abe219c2 100644 --- a/src/mac/region/RegionUS915-Hybrid.h +++ b/src/mac/region/RegionUS915-Hybrid.h @@ -174,7 +174,7 @@ * Band 0 definition * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define US915_HYBRID_BAND0 { 1, US915_HYBRID_DEFAULT_TX_POWER, 0, 0 } // 100.0 % +#define US915_HYBRID_BAND0 { 1, US915_HYBRID_MAX_TX_POWER, 0, 0 } // 100.0 % /*! * Defines the first channel for RX window 1 for US band diff --git a/src/mac/region/RegionUS915.h b/src/mac/region/RegionUS915.h index a67617f9a..da40c0ead 100644 --- a/src/mac/region/RegionUS915.h +++ b/src/mac/region/RegionUS915.h @@ -174,7 +174,7 @@ * Band 0 definition * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } */ -#define US915_BAND0 { 1, US915_DEFAULT_TX_POWER, 0, 0 } // 100.0 % +#define US915_BAND0 { 1, US915_MAX_TX_POWER, 0, 0 } // 100.0 % /*! * Defines the first channel for RX window 1 for US band From 54b814bdc78ba6c5b8f1ae28ff86042e3b269906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Tue, 30 May 2017 16:13:59 +0200 Subject: [PATCH 106/161] Issue(232): Relocate function call to CalculateBackOff. Otherwise the duty cycle will not be updated after a valid join. --- src/mac/LoRaMac.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index ef89cf541..2affbf4b4 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -258,6 +258,11 @@ static bool DutyCycleOn; */ static uint8_t Channel; +/*! + * Current channel index + */ +static uint8_t LastTxChannel; + /*! * Stores the time at LoRaMac initialization. * @@ -632,14 +637,14 @@ static void OnRadioTxDone( void ) LoRaMacFlags.Bits.MacDone = 1; } + // Store last Tx channel + LastTxChannel = Channel; // Update last tx done time for the current channel txDone.Channel = Channel; txDone.LastTxDoneTime = curTime; RegionSetBandTxDone( LoRaMacRegion, &txDone ); // Update Aggregated last tx done time AggregatedLastTxDoneTime = curTime; - // Update Backoff - CalculateBackOff( Channel ); if( NodeAckRequested == false ) { @@ -1861,6 +1866,9 @@ static LoRaMacStatus_t ScheduleTx( void ) AggregatedTimeOff = 0; } + // Update Backoff + CalculateBackOff( LastTxChannel ); + nextChan.AggrTimeOff = AggregatedTimeOff; nextChan.Datarate = LoRaMacParams.ChannelsDatarate; nextChan.DutyCycleEnabled = DutyCycleOn; @@ -1984,6 +1992,7 @@ static void ResetMacParameters( void ) // Initialize channel index. Channel = 0; + LastTxChannel = Channel; } LoRaMacStatus_t PrepareFrame( LoRaMacHeader_t *macHdr, LoRaMacFrameCtrl_t *fCtrl, uint8_t fPort, void *fBuffer, uint16_t fBufferSize ) From 59a21a5e1b5891819ba51d9d1bcc6f268644772b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Tue, 30 May 2017 16:15:41 +0200 Subject: [PATCH 107/161] Issue(234): Report back the aggregated time off. --- src/mac/LoRaMac.c | 2 +- src/mac/region/Region.c | 22 +++++++++++----------- src/mac/region/Region.h | 4 +++- src/mac/region/RegionAS923.c | 5 ++++- src/mac/region/RegionAS923.h | 4 +++- src/mac/region/RegionAU915.c | 5 ++++- src/mac/region/RegionAU915.h | 4 +++- src/mac/region/RegionCN470.c | 5 ++++- src/mac/region/RegionCN470.h | 4 +++- src/mac/region/RegionCN779.c | 5 ++++- src/mac/region/RegionCN779.h | 4 +++- src/mac/region/RegionEU433.c | 5 ++++- src/mac/region/RegionEU433.h | 4 +++- src/mac/region/RegionEU868.c | 5 ++++- src/mac/region/RegionEU868.h | 4 +++- src/mac/region/RegionIN865.c | 5 ++++- src/mac/region/RegionIN865.h | 4 +++- src/mac/region/RegionKR920.c | 5 ++++- src/mac/region/RegionKR920.h | 4 +++- src/mac/region/RegionUS915-Hybrid.c | 5 ++++- src/mac/region/RegionUS915-Hybrid.h | 4 +++- src/mac/region/RegionUS915.c | 5 ++++- src/mac/region/RegionUS915.h | 4 +++- 23 files changed, 85 insertions(+), 33 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 2affbf4b4..c44cea147 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1876,7 +1876,7 @@ static LoRaMacStatus_t ScheduleTx( void ) nextChan.LastAggrTx = AggregatedLastTxDoneTime; // Select channel - while( RegionNextChannel( LoRaMacRegion, &nextChan, &Channel, &dutyCycleTimeOff ) == false ) + while( RegionNextChannel( LoRaMacRegion, &nextChan, &Channel, &dutyCycleTimeOff, &AggregatedTimeOff ) == false ) { // Set the default datarate LoRaMacParams.ChannelsDatarate = LoRaMacParamsDefaults.ChannelsDatarate; diff --git a/src/mac/region/Region.c b/src/mac/region/Region.c index dc2bb2f90..1d0be81e4 100644 --- a/src/mac/region/Region.c +++ b/src/mac/region/Region.c @@ -53,7 +53,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define AS923_DL_CHANNEL_REQ( ) AS923_CASE { return RegionAS923DlChannelReq( dlChannelReq ); } #define AS923_ALTERNATE_DR( ) AS923_CASE { return RegionAS923AlternateDr( alternateDr ); } #define AS923_CALC_BACKOFF( ) AS923_CASE { RegionAS923CalcBackOff( calcBackOff ); break; } -#define AS923_NEXT_CHANNEL( ) AS923_CASE { return RegionAS923NextChannel( nextChanParams, channel, time ); } +#define AS923_NEXT_CHANNEL( ) AS923_CASE { return RegionAS923NextChannel( nextChanParams, channel, time, aggregatedTimeOff ); } #define AS923_CHANNEL_ADD( ) AS923_CASE { return RegionAS923ChannelAdd( channelAdd ); } #define AS923_CHANNEL_REMOVE( ) AS923_CASE { return RegionAS923ChannelsRemove( channelRemove ); } #define AS923_SET_CONTINUOUS_WAVE( ) AS923_CASE { RegionAS923SetContinuousWave( continuousWave ); break; } @@ -105,7 +105,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define AU915_DL_CHANNEL_REQ( ) AU915_CASE { return RegionAU915DlChannelReq( dlChannelReq ); } #define AU915_ALTERNATE_DR( ) AU915_CASE { return RegionAU915AlternateDr( alternateDr ); } #define AU915_CALC_BACKOFF( ) AU915_CASE { RegionAU915CalcBackOff( calcBackOff ); break; } -#define AU915_NEXT_CHANNEL( ) AU915_CASE { return RegionAU915NextChannel( nextChanParams, channel, time ); } +#define AU915_NEXT_CHANNEL( ) AU915_CASE { return RegionAU915NextChannel( nextChanParams, channel, time, aggregatedTimeOff ); } #define AU915_CHANNEL_ADD( ) AU915_CASE { return RegionAU915ChannelAdd( channelAdd ); } #define AU915_CHANNEL_REMOVE( ) AU915_CASE { return RegionAU915ChannelsRemove( channelRemove ); } #define AU915_SET_CONTINUOUS_WAVE( ) AU915_CASE { RegionAU915SetContinuousWave( continuousWave ); break; } @@ -157,7 +157,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define CN470_DL_CHANNEL_REQ( ) CN470_CASE { return RegionCN470DlChannelReq( dlChannelReq ); } #define CN470_ALTERNATE_DR( ) CN470_CASE { return RegionCN470AlternateDr( alternateDr ); } #define CN470_CALC_BACKOFF( ) CN470_CASE { RegionCN470CalcBackOff( calcBackOff ); break; } -#define CN470_NEXT_CHANNEL( ) CN470_CASE { return RegionCN470NextChannel( nextChanParams, channel, time ); } +#define CN470_NEXT_CHANNEL( ) CN470_CASE { return RegionCN470NextChannel( nextChanParams, channel, time, aggregatedTimeOff ); } #define CN470_CHANNEL_ADD( ) CN470_CASE { return RegionCN470ChannelAdd( channelAdd ); } #define CN470_CHANNEL_REMOVE( ) CN470_CASE { return RegionCN470ChannelsRemove( channelRemove ); } #define CN470_SET_CONTINUOUS_WAVE( ) CN470_CASE { RegionCN470SetContinuousWave( continuousWave ); break; } @@ -209,7 +209,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define CN779_DL_CHANNEL_REQ( ) CN779_CASE { return RegionCN779DlChannelReq( dlChannelReq ); } #define CN779_ALTERNATE_DR( ) CN779_CASE { return RegionCN779AlternateDr( alternateDr ); } #define CN779_CALC_BACKOFF( ) CN779_CASE { RegionCN779CalcBackOff( calcBackOff ); break; } -#define CN779_NEXT_CHANNEL( ) CN779_CASE { return RegionCN779NextChannel( nextChanParams, channel, time ); } +#define CN779_NEXT_CHANNEL( ) CN779_CASE { return RegionCN779NextChannel( nextChanParams, channel, time, aggregatedTimeOff ); } #define CN779_CHANNEL_ADD( ) CN779_CASE { return RegionCN779ChannelAdd( channelAdd ); } #define CN779_CHANNEL_REMOVE( ) CN779_CASE { return RegionCN779ChannelsRemove( channelRemove ); } #define CN779_SET_CONTINUOUS_WAVE( ) CN779_CASE { RegionCN779SetContinuousWave( continuousWave ); break; } @@ -261,7 +261,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define EU433_DL_CHANNEL_REQ( ) EU433_CASE { return RegionEU433DlChannelReq( dlChannelReq ); } #define EU433_ALTERNATE_DR( ) EU433_CASE { return RegionEU433AlternateDr( alternateDr ); } #define EU433_CALC_BACKOFF( ) EU433_CASE { RegionEU433CalcBackOff( calcBackOff ); break; } -#define EU433_NEXT_CHANNEL( ) EU433_CASE { return RegionEU433NextChannel( nextChanParams, channel, time ); } +#define EU433_NEXT_CHANNEL( ) EU433_CASE { return RegionEU433NextChannel( nextChanParams, channel, time, aggregatedTimeOff ); } #define EU433_CHANNEL_ADD( ) EU433_CASE { return RegionEU433ChannelAdd( channelAdd ); } #define EU433_CHANNEL_REMOVE( ) EU433_CASE { return RegionEU433ChannelsRemove( channelRemove ); } #define EU433_SET_CONTINUOUS_WAVE( ) EU433_CASE { RegionEU433SetContinuousWave( continuousWave ); break; } @@ -313,7 +313,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define EU868_DL_CHANNEL_REQ( ) EU868_CASE { return RegionEU868DlChannelReq( dlChannelReq ); } #define EU868_ALTERNATE_DR( ) EU868_CASE { return RegionEU868AlternateDr( alternateDr ); } #define EU868_CALC_BACKOFF( ) EU868_CASE { RegionEU868CalcBackOff( calcBackOff ); break; } -#define EU868_NEXT_CHANNEL( ) EU868_CASE { return RegionEU868NextChannel( nextChanParams, channel, time ); } +#define EU868_NEXT_CHANNEL( ) EU868_CASE { return RegionEU868NextChannel( nextChanParams, channel, time, aggregatedTimeOff ); } #define EU868_CHANNEL_ADD( ) EU868_CASE { return RegionEU868ChannelAdd( channelAdd ); } #define EU868_CHANNEL_REMOVE( ) EU868_CASE { return RegionEU868ChannelsRemove( channelRemove ); } #define EU868_SET_CONTINUOUS_WAVE( ) EU868_CASE { RegionEU868SetContinuousWave( continuousWave ); break; } @@ -365,7 +365,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define KR920_DL_CHANNEL_REQ( ) KR920_CASE { return RegionKR920DlChannelReq( dlChannelReq ); } #define KR920_ALTERNATE_DR( ) KR920_CASE { return RegionKR920AlternateDr( alternateDr ); } #define KR920_CALC_BACKOFF( ) KR920_CASE { RegionKR920CalcBackOff( calcBackOff ); break; } -#define KR920_NEXT_CHANNEL( ) KR920_CASE { return RegionKR920NextChannel( nextChanParams, channel, time ); } +#define KR920_NEXT_CHANNEL( ) KR920_CASE { return RegionKR920NextChannel( nextChanParams, channel, time, aggregatedTimeOff ); } #define KR920_CHANNEL_ADD( ) KR920_CASE { return RegionKR920ChannelAdd( channelAdd ); } #define KR920_CHANNEL_REMOVE( ) KR920_CASE { return RegionKR920ChannelsRemove( channelRemove ); } #define KR920_SET_CONTINUOUS_WAVE( ) KR920_CASE { RegionKR920SetContinuousWave( continuousWave ); break; } @@ -417,7 +417,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define IN865_DL_CHANNEL_REQ( ) IN865_CASE { return RegionIN865DlChannelReq( dlChannelReq ); } #define IN865_ALTERNATE_DR( ) IN865_CASE { return RegionIN865AlternateDr( alternateDr ); } #define IN865_CALC_BACKOFF( ) IN865_CASE { RegionIN865CalcBackOff( calcBackOff ); break; } -#define IN865_NEXT_CHANNEL( ) IN865_CASE { return RegionIN865NextChannel( nextChanParams, channel, time ); } +#define IN865_NEXT_CHANNEL( ) IN865_CASE { return RegionIN865NextChannel( nextChanParams, channel, time, aggregatedTimeOff ); } #define IN865_CHANNEL_ADD( ) IN865_CASE { return RegionIN865ChannelAdd( channelAdd ); } #define IN865_CHANNEL_REMOVE( ) IN865_CASE { return RegionIN865ChannelsRemove( channelRemove ); } #define IN865_SET_CONTINUOUS_WAVE( ) IN865_CASE { RegionIN865SetContinuousWave( continuousWave ); break; } @@ -469,7 +469,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define US915_DL_CHANNEL_REQ( ) US915_CASE { return RegionUS915DlChannelReq( dlChannelReq ); } #define US915_ALTERNATE_DR( ) US915_CASE { return RegionUS915AlternateDr( alternateDr ); } #define US915_CALC_BACKOFF( ) US915_CASE { RegionUS915CalcBackOff( calcBackOff ); break; } -#define US915_NEXT_CHANNEL( ) US915_CASE { return RegionUS915NextChannel( nextChanParams, channel, time ); } +#define US915_NEXT_CHANNEL( ) US915_CASE { return RegionUS915NextChannel( nextChanParams, channel, time, aggregatedTimeOff ); } #define US915_CHANNEL_ADD( ) US915_CASE { return RegionUS915ChannelAdd( channelAdd ); } #define US915_CHANNEL_REMOVE( ) US915_CASE { return RegionUS915ChannelsRemove( channelRemove ); } #define US915_SET_CONTINUOUS_WAVE( ) US915_CASE { RegionUS915SetContinuousWave( continuousWave ); break; } @@ -521,7 +521,7 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae #define US915_HYBRID_DL_CHANNEL_REQ( ) US915_HYBRID_CASE { return RegionUS915HybridDlChannelReq( dlChannelReq ); } #define US915_HYBRID_ALTERNATE_DR( ) US915_HYBRID_CASE { return RegionUS915HybridAlternateDr( alternateDr ); } #define US915_HYBRID_CALC_BACKOFF( ) US915_HYBRID_CASE { RegionUS915HybridCalcBackOff( calcBackOff ); break; } -#define US915_HYBRID_NEXT_CHANNEL( ) US915_HYBRID_CASE { return RegionUS915HybridNextChannel( nextChanParams, channel, time ); } +#define US915_HYBRID_NEXT_CHANNEL( ) US915_HYBRID_CASE { return RegionUS915HybridNextChannel( nextChanParams, channel, time, aggregatedTimeOff ); } #define US915_HYBRID_CHANNEL_ADD( ) US915_HYBRID_CASE { return RegionUS915HybridChannelAdd( channelAdd ); } #define US915_HYBRID_CHANNEL_REMOVE( ) US915_HYBRID_CASE { return RegionUS915HybridChannelsRemove( channelRemove ); } #define US915_HYBRID_SET_CONTINUOUS_WAVE( ) US915_HYBRID_CASE { RegionUS915HybridSetContinuousWave( continuousWave ); break; } @@ -931,7 +931,7 @@ void RegionCalcBackOff( LoRaMacRegion_t region, CalcBackOffParams_t* calcBackOff } } -bool RegionNextChannel( LoRaMacRegion_t region, NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +bool RegionNextChannel( LoRaMacRegion_t region, NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) { switch( region ) { diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index c4db211ac..78623c169 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -1395,9 +1395,11 @@ void RegionCalcBackOff( LoRaMacRegion_t region, CalcBackOffParams_t* calcBackOff * \param [OUT] time Time to wait for the next transmission according to the duty * cycle. * + * \param [OUT] aggregatedTimeOff Updates the aggregated time off. + * * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate]. */ -bool RegionNextChannel( LoRaMacRegion_t region, NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); +bool RegionNextChannel( LoRaMacRegion_t region, NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ); /*! * \brief Adds a channel. diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index fd67d376f..650b1ce52 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -919,7 +919,7 @@ void RegionAS923CalcBackOff( CalcBackOffParams_t* calcBackOff ) } } -bool RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +bool RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) { uint8_t channelNext = 0; uint8_t nbEnabledChannels = 0; @@ -936,6 +936,9 @@ bool RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) { + // Reset Aggregated time off + *aggregatedTimeOff = 0; + // Update bands Time OFF nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, AS923_MAX_NB_BANDS ); diff --git a/src/mac/region/RegionAS923.h b/src/mac/region/RegionAS923.h index de0987de5..800cd8395 100644 --- a/src/mac/region/RegionAS923.h +++ b/src/mac/region/RegionAS923.h @@ -449,9 +449,11 @@ void RegionAS923CalcBackOff( CalcBackOffParams_t* calcBackOff ); * \param [OUT] time Time to wait for the next transmission according to the duty * cycle. * + * \param [OUT] aggregatedTimeOff Updates the aggregated time off. + * * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] */ -bool RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); +bool RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ); /*! * \brief Adds a channel. diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 63d1304ed..ad07f54b6 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -760,7 +760,7 @@ void RegionAU915CalcBackOff( CalcBackOffParams_t* calcBackOff ) } } -bool RegionAU915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +bool RegionAU915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) { uint8_t nbEnabledChannels = 0; uint8_t delayTx = 0; @@ -783,6 +783,9 @@ bool RegionAU915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) { + // Reset Aggregated time off + *aggregatedTimeOff = 0; + // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, ChannelsMask, Channels, diff --git a/src/mac/region/RegionAU915.h b/src/mac/region/RegionAU915.h index 9e954990d..6e5d2f6ac 100644 --- a/src/mac/region/RegionAU915.h +++ b/src/mac/region/RegionAU915.h @@ -404,9 +404,11 @@ void RegionAU915CalcBackOff( CalcBackOffParams_t* calcBackOff ); * \param [OUT] time Time to wait for the next transmission according to the duty * cycle. * + * \param [OUT] aggregatedTimeOff Updates the aggregated time off. + * * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] */ -bool RegionAU915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); +bool RegionAU915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ); /*! * \brief Adds a channel. diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index 1ed069d2c..f4a7dd562 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -718,7 +718,7 @@ void RegionCN470CalcBackOff( CalcBackOffParams_t* calcBackOff ) } } -bool RegionCN470NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +bool RegionCN470NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) { uint8_t nbEnabledChannels = 0; uint8_t delayTx = 0; @@ -738,6 +738,9 @@ bool RegionCN470NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) { + // Reset Aggregated time off + *aggregatedTimeOff = 0; + // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, ChannelsMask, Channels, diff --git a/src/mac/region/RegionCN470.h b/src/mac/region/RegionCN470.h index 91dd43e9a..c79688f8e 100644 --- a/src/mac/region/RegionCN470.h +++ b/src/mac/region/RegionCN470.h @@ -392,9 +392,11 @@ void RegionCN470CalcBackOff( CalcBackOffParams_t* calcBackOff ); * \param [OUT] time Time to wait for the next transmission according to the duty * cycle. * + * \param [OUT] aggregatedTimeOff Updates the aggregated time off. + * * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] */ -bool RegionCN470NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); +bool RegionCN470NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ); /*! * \brief Adds a channel. diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index a7e83cd7a..dde1ab782 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -873,7 +873,7 @@ void RegionCN779CalcBackOff( CalcBackOffParams_t* calcBackOff ) } } -bool RegionCN779NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +bool RegionCN779NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) { uint8_t nbEnabledChannels = 0; uint8_t delayTx = 0; @@ -887,6 +887,9 @@ bool RegionCN779NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) { + // Reset Aggregated time off + *aggregatedTimeOff = 0; + // Update bands Time OFF nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, CN779_MAX_NB_BANDS ); diff --git a/src/mac/region/RegionCN779.h b/src/mac/region/RegionCN779.h index 08b7f6731..698d28778 100644 --- a/src/mac/region/RegionCN779.h +++ b/src/mac/region/RegionCN779.h @@ -411,9 +411,11 @@ void RegionCN779CalcBackOff( CalcBackOffParams_t* calcBackOff ); * \param [OUT] time Time to wait for the next transmission according to the duty * cycle. * + * \param [OUT] aggregatedTimeOff Updates the aggregated time off. + * * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] */ -bool RegionCN779NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); +bool RegionCN779NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ); /*! * \brief Adds a channel. diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index 006795829..5aa05301c 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -873,7 +873,7 @@ void RegionEU433CalcBackOff( CalcBackOffParams_t* calcBackOff ) } } -bool RegionEU433NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +bool RegionEU433NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) { uint8_t nbEnabledChannels = 0; uint8_t delayTx = 0; @@ -887,6 +887,9 @@ bool RegionEU433NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) { + // Reset Aggregated time off + *aggregatedTimeOff = 0; + // Update bands Time OFF nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, EU433_MAX_NB_BANDS ); diff --git a/src/mac/region/RegionEU433.h b/src/mac/region/RegionEU433.h index 6b2cd2de4..f1dae86a2 100644 --- a/src/mac/region/RegionEU433.h +++ b/src/mac/region/RegionEU433.h @@ -412,9 +412,11 @@ void RegionEU433CalcBackOff( CalcBackOffParams_t* calcBackOff ); * \param [OUT] time Time to wait for the next transmission according to the duty * cycle. * + * \param [OUT] aggregatedTimeOff Updates the aggregated time off. + * * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] */ -bool RegionEU433NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); +bool RegionEU433NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ); /*! * \brief Adds a channel. diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index aa7b7abe2..1c488d38c 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -905,7 +905,7 @@ void RegionEU868CalcBackOff( CalcBackOffParams_t* calcBackOff ) } } -bool RegionEU868NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +bool RegionEU868NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) { uint8_t nbEnabledChannels = 0; uint8_t delayTx = 0; @@ -919,6 +919,9 @@ bool RegionEU868NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) { + // Reset Aggregated time off + *aggregatedTimeOff = 0; + // Update bands Time OFF nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, EU868_MAX_NB_BANDS ); diff --git a/src/mac/region/RegionEU868.h b/src/mac/region/RegionEU868.h index 460768a6c..5a23737e8 100644 --- a/src/mac/region/RegionEU868.h +++ b/src/mac/region/RegionEU868.h @@ -433,9 +433,11 @@ void RegionEU868CalcBackOff( CalcBackOffParams_t* calcBackOff ); * \param [OUT] time Time to wait for the next transmission according to the duty * cycle. * + * \param [OUT] aggregatedTimeOff Updates the aggregated time off. + * * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] */ -bool RegionEU868NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); +bool RegionEU868NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ); /*! * \brief Adds a channel. diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index e6adae1c7..d5eb5f878 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -878,7 +878,7 @@ void RegionIN865CalcBackOff( CalcBackOffParams_t* calcBackOff ) } } -bool RegionIN865NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +bool RegionIN865NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) { uint8_t nbEnabledChannels = 0; uint8_t delayTx = 0; @@ -892,6 +892,9 @@ bool RegionIN865NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) { + // Reset Aggregated time off + *aggregatedTimeOff = 0; + // Update bands Time OFF nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, IN865_MAX_NB_BANDS ); diff --git a/src/mac/region/RegionIN865.h b/src/mac/region/RegionIN865.h index 5f9528195..cbff6df7b 100644 --- a/src/mac/region/RegionIN865.h +++ b/src/mac/region/RegionIN865.h @@ -414,9 +414,11 @@ void RegionIN865CalcBackOff( CalcBackOffParams_t* calcBackOff ); * \param [OUT] time Time to wait for the next transmission according to the duty * cycle. * + * \param [OUT] aggregatedTimeOff Updates the aggregated time off. + * * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] */ -bool RegionIN865NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); +bool RegionIN865NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ); /*! * \brief Adds a channel. diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 559ec647a..e9bae3e1d 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -874,7 +874,7 @@ void RegionKR920CalcBackOff( CalcBackOffParams_t* calcBackOff ) } } -bool RegionKR920NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +bool RegionKR920NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) { uint8_t channelNext = 0; uint8_t nbEnabledChannels = 0; @@ -891,6 +891,9 @@ bool RegionKR920NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) { + // Reset Aggregated time off + *aggregatedTimeOff = 0; + // Update bands Time OFF nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, KR920_MAX_NB_BANDS ); diff --git a/src/mac/region/RegionKR920.h b/src/mac/region/RegionKR920.h index 978de751e..b2df13ecd 100644 --- a/src/mac/region/RegionKR920.h +++ b/src/mac/region/RegionKR920.h @@ -424,9 +424,11 @@ void RegionKR920CalcBackOff( CalcBackOffParams_t* calcBackOff ); * \param [OUT] time Time to wait for the next transmission according to the duty * cycle. * + * \param [OUT] aggregatedTimeOff Updates the aggregated time off. + * * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] */ -bool RegionKR920NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); +bool RegionKR920NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ); /*! * \brief Adds a channel. diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index 8e75c6b3a..5979c9153 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -861,7 +861,7 @@ void RegionUS915HybridCalcBackOff( CalcBackOffParams_t* calcBackOff ) } } -bool RegionUS915HybridNextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +bool RegionUS915HybridNextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) { uint8_t nbEnabledChannels = 0; uint8_t delayTx = 0; @@ -884,6 +884,9 @@ bool RegionUS915HybridNextChannel( NextChanParams_t* nextChanParams, uint8_t* ch if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) { + // Reset Aggregated time off + *aggregatedTimeOff = 0; + // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, ChannelsMask, Channels, diff --git a/src/mac/region/RegionUS915-Hybrid.h b/src/mac/region/RegionUS915-Hybrid.h index 5abe219c2..b01189a5d 100644 --- a/src/mac/region/RegionUS915-Hybrid.h +++ b/src/mac/region/RegionUS915-Hybrid.h @@ -399,9 +399,11 @@ void RegionUS915HybridCalcBackOff( CalcBackOffParams_t* calcBackOff ); * \param [OUT] time Time to wait for the next transmission according to the duty * cycle. * + * \param [OUT] aggregatedTimeOff Updates the aggregated time off. + * * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] */ -bool RegionUS915HybridNextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); +bool RegionUS915HybridNextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ); /*! * \brief Adds a channel. diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 24368aee1..02599e810 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -768,7 +768,7 @@ void RegionUS915CalcBackOff( CalcBackOffParams_t* calcBackOff ) } } -bool RegionUS915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ) +bool RegionUS915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) { uint8_t nbEnabledChannels = 0; uint8_t delayTx = 0; @@ -791,6 +791,9 @@ bool RegionUS915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, if( nextChanParams->AggrTimeOff <= TimerGetElapsedTime( nextChanParams->LastAggrTx ) ) { + // Reset Aggregated time off + *aggregatedTimeOff = 0; + // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, ChannelsMask, Channels, diff --git a/src/mac/region/RegionUS915.h b/src/mac/region/RegionUS915.h index da40c0ead..6a2bb25df 100644 --- a/src/mac/region/RegionUS915.h +++ b/src/mac/region/RegionUS915.h @@ -399,9 +399,11 @@ void RegionUS915CalcBackOff( CalcBackOffParams_t* calcBackOff ); * \param [OUT] time Time to wait for the next transmission according to the duty * cycle. * + * \param [OUT] aggregatedTimeOff Updates the aggregated time off. + * * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate] */ -bool RegionUS915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time ); +bool RegionUS915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ); /*! * \brief Adds a channel. From d95ab107eba75749958e18bbdbaab9860ba2e240 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Tue, 30 May 2017 16:15:41 +0200 Subject: [PATCH 108/161] Issue(238): Update initialization value of nextTxDelay. --- src/mac/region/RegionAU915.c | 2 +- src/mac/region/RegionCN470.c | 2 +- src/mac/region/RegionUS915-Hybrid.c | 2 +- src/mac/region/RegionUS915.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index ad07f54b6..a1ae98f24 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -765,7 +765,7 @@ bool RegionAU915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, uint8_t nbEnabledChannels = 0; uint8_t delayTx = 0; uint8_t enabledChannels[AU915_MAX_NB_CHANNELS] = { 0 }; - TimerTime_t nextTxDelay = ( TimerTime_t )( -1 ); + TimerTime_t nextTxDelay = 0; // Count 125kHz channels if( RegionCommonCountChannels( ChannelsMaskRemaining, 0, 4 ) == 0 ) diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index f4a7dd562..fd41cf9b5 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -723,7 +723,7 @@ bool RegionCN470NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, uint8_t nbEnabledChannels = 0; uint8_t delayTx = 0; uint8_t enabledChannels[CN470_MAX_NB_CHANNELS] = { 0 }; - TimerTime_t nextTxDelay = ( TimerTime_t )( -1 ); + TimerTime_t nextTxDelay = 0; // Count 125kHz channels if( RegionCommonCountChannels( ChannelsMask, 0, 6 ) == 0 ) diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index 5979c9153..9fa7c0bf6 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -866,7 +866,7 @@ bool RegionUS915HybridNextChannel( NextChanParams_t* nextChanParams, uint8_t* ch uint8_t nbEnabledChannels = 0; uint8_t delayTx = 0; uint8_t enabledChannels[US915_HYBRID_MAX_NB_CHANNELS] = { 0 }; - TimerTime_t nextTxDelay = ( TimerTime_t )( -1 ); + TimerTime_t nextTxDelay = 0; // Count 125kHz channels if( RegionCommonCountChannels( ChannelsMaskRemaining, 0, 4 ) == 0 ) diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 02599e810..39f9c9a28 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -773,7 +773,7 @@ bool RegionUS915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, uint8_t nbEnabledChannels = 0; uint8_t delayTx = 0; uint8_t enabledChannels[US915_MAX_NB_CHANNELS] = { 0 }; - TimerTime_t nextTxDelay = ( TimerTime_t )( -1 ); + TimerTime_t nextTxDelay = 0; // Count 125kHz channels if( RegionCommonCountChannels( ChannelsMaskRemaining, 0, 4 ) == 0 ) From 1f35250cbcfd58b0ca8cc3f6fbadeb213808799e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Tue, 30 May 2017 16:15:41 +0200 Subject: [PATCH 109/161] Issue(235): Update functions RegionXXNextChannel. Use the channels mask remaining for searching a valid channel. --- src/mac/region/RegionAU915.c | 2 +- src/mac/region/RegionUS915-Hybrid.c | 2 +- src/mac/region/RegionUS915.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index a1ae98f24..a781b17a4 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -788,7 +788,7 @@ bool RegionAU915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, - ChannelsMask, Channels, + ChannelsMaskRemaining, Channels, Bands, enabledChannels, &delayTx ); } else diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index 9fa7c0bf6..dbcd90678 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -889,7 +889,7 @@ bool RegionUS915HybridNextChannel( NextChanParams_t* nextChanParams, uint8_t* ch // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, - ChannelsMask, Channels, + ChannelsMaskRemaining, Channels, Bands, enabledChannels, &delayTx ); } else diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 39f9c9a28..2ff409d10 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -796,7 +796,7 @@ bool RegionUS915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, - ChannelsMask, Channels, + ChannelsMaskRemaining, Channels, Bands, enabledChannels, &delayTx ); } else From bfcf5160fb42cbac9409d62ccc06759c01898d2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Tue, 30 May 2017 16:15:41 +0200 Subject: [PATCH 110/161] Spell check. --- src/mac/LoRaMac.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index ef9687b92..d66c885c9 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -1591,7 +1591,7 @@ typedef enum eLoRaMacStatus }LoRaMacStatus_t; /*! - * LoRaMAC region eunumeration + * LoRaMAC region enumeration */ typedef enum eLoRaMacRegion_t { From 0de6c5c438f84cb31ba76522978d4efbc60ddedf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Tue, 30 May 2017 16:15:41 +0200 Subject: [PATCH 111/161] Remove trailing spaces. --- src/mac/LoRaMac.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index c44cea147..e3b10cc38 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -933,7 +933,7 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t // This must be done before parsing the payload and the MAC commands. // We need to reset the MacCommandsBufferIndex here, since we need - // to take retransmissions and repititions into account. Error cases + // to take retransmissions and repetitions into account. Error cases // will be handled in function OnMacStateCheckTimerEvent. if( McpsConfirm.McpsRequest == MCPS_CONFIRMED ) { From e2f35db75c1b449379d3b520c2d4e5922a9f5c81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=83=C2=A4ckle?= Date: Tue, 30 May 2017 16:15:41 +0200 Subject: [PATCH 112/161] Add comments. --- src/mac/region/Region.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index 78623c169..5db80a96f 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -720,15 +720,21 @@ typedef struct sGetPhyParams */ PhyAttribute_t Attribute; /*! - * Datarate. The parameter is only used to query maximum payload lengths. + * Datarate. + * The parameter is needed for the following queries: + * PHY_MAX_PAYLOAD, PHY_MAX_PAYLOAD_REPEATER, PHY_NEXT_LOWER_TX_DR. */ int8_t Datarate; /*! * Uplink dwell time. + * The parameter is needed for the following queries: + * PHY_MIN_TX_DR, PHY_MAX_PAYLOAD, PHY_MAX_PAYLOAD_REPEATER, PHY_NEXT_LOWER_TX_DR. */ uint8_t UplinkDwellTime; /*! * Downlink dwell time. + * The parameter is needed for the following queries: + * PHY_MIN_RX_DR, PHY_MAX_PAYLOAD, PHY_MAX_PAYLOAD_REPEATER. */ uint8_t DownlinkDwellTime; }GetPhyParams_t; From 9ddf6307728cc72ac94925edffeeef24517175e4 Mon Sep 17 00:00:00 2001 From: Christopher LE MEHAUTE Date: Fri, 30 Jun 2017 11:39:35 +0200 Subject: [PATCH 113/161] AU915: update Downstream datarate table according to LoRaWan 1.0.2rB --- src/mac/region/RegionAU915.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/mac/region/RegionAU915.h b/src/mac/region/RegionAU915.h index 6e5d2f6ac..7c0b60632 100644 --- a/src/mac/region/RegionAU915.h +++ b/src/mac/region/RegionAU915.h @@ -73,7 +73,7 @@ /*! * Maximal Rx1 receive datarate offset */ -#define AU915_MAX_RX1_DR_OFFSET 3 +#define AU915_MAX_RX1_DR_OFFSET 6 /*! * Default Rx1 receive datarate offset @@ -209,13 +209,15 @@ static const uint32_t BandwidthsAU915[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 1 /*! * Up/Down link data rates offset definition */ -static const int8_t DatarateOffsetsAU915[5][4] = +static const int8_t DatarateOffsetsAU915[7][6] = { - { DR_10, DR_9 , DR_8 , DR_8 }, // DR_0 - { DR_11, DR_10, DR_9 , DR_8 }, // DR_1 - { DR_12, DR_11, DR_10, DR_9 }, // DR_2 - { DR_13, DR_12, DR_11, DR_10 }, // DR_3 - { DR_13, DR_13, DR_12, DR_11 }, // DR_4 + { DR_8 , DR_8 , DR_8 , DR_8 , DR_8 , DR_8 }, // DR_0 + { DR_9 , DR_8 , DR_8 , DR_8 , DR_8 , DR_8 }, // DR_1 + { DR_10, DR_9 , DR_8 , DR_8 , DR_8 , DR_8 }, // DR_2 + { DR_11, DR_10, DR_9 , DR_8 , DR_8 , DR_8 }, // DR_3 + { DR_12, DR_11, DR_10, DR_9 , DR_8 , DR_8 }, // DR_4 + { DR_13, DR_12, DR_11, DR_10, DR_9 , DR_8 }, // DR_5 + { DR_13, DR_13, DR_12, DR_11, DR_10, DR_9 }, // DR_6 }; /*! From bd7459dc5d27a768f7617a3576fe5f92746c5cef Mon Sep 17 00:00:00 2001 From: Christopher LE MEHAUTE Date: Fri, 30 Jun 2017 11:55:28 +0200 Subject: [PATCH 114/161] AU915: update Datarate limits according to LoRaWan 1.0.2rB --- src/mac/region/RegionAU915.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index a781b17a4..09ca0dfab 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -300,14 +300,14 @@ void RegionAU915InitDefaults( InitType_t type ) for( uint8_t i = 0; i < AU915_MAX_NB_CHANNELS - 8; i++ ) { Channels[i].Frequency = 915.2e6 + i * 200e3; - Channels[i].DrRange.Value = ( DR_3 << 4 ) | DR_0; + Channels[i].DrRange.Value = ( DR_5 << 4 ) | DR_0; Channels[i].Band = 0; } // 500 kHz channels for( uint8_t i = AU915_MAX_NB_CHANNELS - 8; i < AU915_MAX_NB_CHANNELS; i++ ) { Channels[i].Frequency = 915.9e6 + ( i - ( AU915_MAX_NB_CHANNELS - 8 ) ) * 1.6e6; - Channels[i].DrRange.Value = ( DR_4 << 4 ) | DR_4; + Channels[i].DrRange.Value = ( DR_6 << 4 ) | DR_6; Channels[i].Band = 0; } @@ -621,7 +621,7 @@ uint8_t RegionAU915LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in } // FCC 15.247 paragraph F mandates to hop on at least 2 125 kHz channels - if( ( linkAdrParams.Datarate < DR_4 ) && ( RegionCommonCountChannels( channelsMask, 0, 4 ) < 2 ) ) + if( ( linkAdrParams.Datarate < DR_6 ) && ( RegionCommonCountChannels( channelsMask, 0, 4 ) < 2 ) ) { status &= 0xFE; // Channel mask KO } @@ -693,7 +693,7 @@ uint8_t RegionAU915RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) { status &= 0xFD; // Datarate KO } - if( ( RegionCommonValueInRange( rxParamSetupReq->Datarate, DR_5, DR_7 ) == true ) || + if( ( rxParamSetupReq->Datarate == DR_7 ) || ( rxParamSetupReq->Datarate > DR_13 ) ) { status &= 0xFD; // Datarate KO @@ -733,7 +733,7 @@ int8_t RegionAU915AlternateDr( AlternateDrParams_t* alternateDr ) if( ( alternateDr->NbTrials & 0x01 ) == 0x01 ) { - datarate = DR_4; + datarate = DR_6; } else { @@ -773,7 +773,7 @@ bool RegionAU915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, RegionCommonChanMaskCopy( ChannelsMaskRemaining, ChannelsMask, 4 ); } // Check other channels - if( nextChanParams->Datarate >= DR_4 ) + if( nextChanParams->Datarate >= DR_6 ) { if( ( ChannelsMaskRemaining[4] & 0x00FF ) == 0 ) { From 11ff931cb228cd630e52556f2d977e4ce85b62da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 09:57:17 +0200 Subject: [PATCH 115/161] Change scientific notation to numeric notation --- src/apps/ping-pong/LoRaMote/main.c | 8 +++--- src/apps/ping-pong/MoteII/main.c | 8 +++--- src/apps/ping-pong/NAMote72/main.c | 8 +++--- src/apps/ping-pong/SK-iM880A/main.c | 8 +++--- src/apps/ping-pong/SensorNode/main.c | 8 +++--- src/apps/rx-sensi/LoRaMote/main.c | 6 ++--- src/apps/rx-sensi/MoteII/main.c | 6 ++--- src/apps/rx-sensi/NAMote72/main.c | 6 ++--- src/apps/rx-sensi/SK-iM880A/main.c | 6 ++--- src/apps/rx-sensi/SensorNode/main.c | 6 ++--- src/mac/LoRaMac.c | 8 +++--- src/mac/region/RegionAS923.c | 6 ++--- src/mac/region/RegionAS923.h | 2 +- src/mac/region/RegionAU915.c | 8 +++--- src/mac/region/RegionAU915.h | 8 +++--- src/mac/region/RegionCN470.c | 4 +-- src/mac/region/RegionCN470.h | 8 +++--- src/mac/region/RegionCN779.c | 6 ++--- src/mac/region/RegionCN779.h | 2 +- src/mac/region/RegionCommon.c | 2 +- src/mac/region/RegionEU433.c | 6 ++--- src/mac/region/RegionEU433.h | 2 +- src/mac/region/RegionEU868.c | 6 ++--- src/mac/region/RegionEU868.h | 2 +- src/mac/region/RegionIN865.c | 6 ++--- src/mac/region/RegionIN865.h | 2 +- src/mac/region/RegionKR920.c | 2 +- src/mac/region/RegionKR920.h | 2 +- src/mac/region/RegionUS915-Hybrid.c | 6 ++--- src/mac/region/RegionUS915-Hybrid.h | 8 +++--- src/mac/region/RegionUS915.c | 6 ++--- src/mac/region/RegionUS915.h | 8 +++--- src/radio/sx1272/sx1272.c | 14 +++++----- src/radio/sx1276/sx1276.c | 40 ++++++++++++++-------------- 34 files changed, 118 insertions(+), 116 deletions(-) diff --git a/src/apps/ping-pong/LoRaMote/main.c b/src/apps/ping-pong/LoRaMote/main.c index f9f29e647..24d13b65f 100644 --- a/src/apps/ping-pong/LoRaMote/main.c +++ b/src/apps/ping-pong/LoRaMote/main.c @@ -48,10 +48,10 @@ Maintainer: Miguel Luis and Gregory Cristian #elif defined( USE_MODEM_FSK ) -#define FSK_FDEV 25e3 // Hz -#define FSK_DATARATE 50e3 // bps -#define FSK_BANDWIDTH 50e3 // Hz -#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_FDEV 25000 // Hz +#define FSK_DATARATE 50000 // bps +#define FSK_BANDWIDTH 50000 // Hz +#define FSK_AFC_BANDWIDTH 83333 // Hz #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx #define FSK_FIX_LENGTH_PAYLOAD_ON false diff --git a/src/apps/ping-pong/MoteII/main.c b/src/apps/ping-pong/MoteII/main.c index 043d1704f..011f2ab2c 100644 --- a/src/apps/ping-pong/MoteII/main.c +++ b/src/apps/ping-pong/MoteII/main.c @@ -48,10 +48,10 @@ Maintainer: Miguel Luis and Gregory Cristian #elif defined( USE_MODEM_FSK ) -#define FSK_FDEV 25e3 // Hz -#define FSK_DATARATE 50e3 // bps -#define FSK_BANDWIDTH 50e3 // Hz -#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_FDEV 25000 // Hz +#define FSK_DATARATE 50000 // bps +#define FSK_BANDWIDTH 50000 // Hz +#define FSK_AFC_BANDWIDTH 83333 // Hz #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx #define FSK_FIX_LENGTH_PAYLOAD_ON false diff --git a/src/apps/ping-pong/NAMote72/main.c b/src/apps/ping-pong/NAMote72/main.c index f054f9edd..324558ac3 100644 --- a/src/apps/ping-pong/NAMote72/main.c +++ b/src/apps/ping-pong/NAMote72/main.c @@ -48,10 +48,10 @@ Maintainer: Miguel Luis and Gregory Cristian #elif defined( USE_MODEM_FSK ) -#define FSK_FDEV 25e3 // Hz -#define FSK_DATARATE 50e3 // bps -#define FSK_BANDWIDTH 50e3 // Hz -#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_FDEV 25000 // Hz +#define FSK_DATARATE 50000 // bps +#define FSK_BANDWIDTH 50000 // Hz +#define FSK_AFC_BANDWIDTH 83333 // Hz #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx #define FSK_FIX_LENGTH_PAYLOAD_ON false diff --git a/src/apps/ping-pong/SK-iM880A/main.c b/src/apps/ping-pong/SK-iM880A/main.c index c1ee81ce2..4a1f36243 100644 --- a/src/apps/ping-pong/SK-iM880A/main.c +++ b/src/apps/ping-pong/SK-iM880A/main.c @@ -37,10 +37,10 @@ Maintainer: Miguel Luis and Gregory Cristian #elif defined( USE_MODEM_FSK ) -#define FSK_FDEV 25e3 // Hz -#define FSK_DATARATE 50e3 // bps -#define FSK_BANDWIDTH 50e3 // Hz -#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_FDEV 25000 // Hz +#define FSK_DATARATE 50000 // bps +#define FSK_BANDWIDTH 50000 // Hz +#define FSK_AFC_BANDWIDTH 83333 // Hz #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx #define FSK_FIX_LENGTH_PAYLOAD_ON false diff --git a/src/apps/ping-pong/SensorNode/main.c b/src/apps/ping-pong/SensorNode/main.c index 53a36bd5c..a0c3eda72 100644 --- a/src/apps/ping-pong/SensorNode/main.c +++ b/src/apps/ping-pong/SensorNode/main.c @@ -56,10 +56,10 @@ Maintainer: Miguel Luis and Gregory Cristian #elif defined( USE_MODEM_FSK ) -#define FSK_FDEV 25e3 // Hz -#define FSK_DATARATE 50e3 // bps -#define FSK_BANDWIDTH 50e3 // Hz -#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_FDEV 25000 // Hz +#define FSK_DATARATE 50000 // bps +#define FSK_BANDWIDTH 50000 // Hz +#define FSK_AFC_BANDWIDTH 83333 // Hz #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx #define FSK_FIX_LENGTH_PAYLOAD_ON false diff --git a/src/apps/rx-sensi/LoRaMote/main.c b/src/apps/rx-sensi/LoRaMote/main.c index 1564c4713..26d7df638 100644 --- a/src/apps/rx-sensi/LoRaMote/main.c +++ b/src/apps/rx-sensi/LoRaMote/main.c @@ -50,9 +50,9 @@ Maintainer: Miguel Luis and Gregory Cristian #elif defined( USE_MODEM_FSK ) -#define FSK_DATARATE 50e3 // bps -#define FSK_BANDWIDTH 50e3 // Hz -#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_DATARATE 50000 // bps +#define FSK_BANDWIDTH 50000 // Hz +#define FSK_AFC_BANDWIDTH 83333 // Hz #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx #define FSK_FIX_LENGTH_PAYLOAD_ON false diff --git a/src/apps/rx-sensi/MoteII/main.c b/src/apps/rx-sensi/MoteII/main.c index 1564c4713..26d7df638 100644 --- a/src/apps/rx-sensi/MoteII/main.c +++ b/src/apps/rx-sensi/MoteII/main.c @@ -50,9 +50,9 @@ Maintainer: Miguel Luis and Gregory Cristian #elif defined( USE_MODEM_FSK ) -#define FSK_DATARATE 50e3 // bps -#define FSK_BANDWIDTH 50e3 // Hz -#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_DATARATE 50000 // bps +#define FSK_BANDWIDTH 50000 // Hz +#define FSK_AFC_BANDWIDTH 83333 // Hz #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx #define FSK_FIX_LENGTH_PAYLOAD_ON false diff --git a/src/apps/rx-sensi/NAMote72/main.c b/src/apps/rx-sensi/NAMote72/main.c index 956dbb764..4aa69b327 100644 --- a/src/apps/rx-sensi/NAMote72/main.c +++ b/src/apps/rx-sensi/NAMote72/main.c @@ -50,9 +50,9 @@ Maintainer: Miguel Luis and Gregory Cristian #elif defined( USE_MODEM_FSK ) -#define FSK_DATARATE 50e3 // bps -#define FSK_BANDWIDTH 50e3 // Hz -#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_DATARATE 50000 // bps +#define FSK_BANDWIDTH 50000 // Hz +#define FSK_AFC_BANDWIDTH 83333 // Hz #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx #define FSK_FIX_LENGTH_PAYLOAD_ON false diff --git a/src/apps/rx-sensi/SK-iM880A/main.c b/src/apps/rx-sensi/SK-iM880A/main.c index 743a6c300..e8d8a1317 100644 --- a/src/apps/rx-sensi/SK-iM880A/main.c +++ b/src/apps/rx-sensi/SK-iM880A/main.c @@ -40,9 +40,9 @@ Maintainer: Miguel Luis and Gregory Cristian #elif defined( USE_MODEM_FSK ) -#define FSK_DATARATE 50e3 // bps -#define FSK_BANDWIDTH 50e3 // Hz -#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_DATARATE 50000 // bps +#define FSK_BANDWIDTH 50000 // Hz +#define FSK_AFC_BANDWIDTH 83333 // Hz #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx #define FSK_FIX_LENGTH_PAYLOAD_ON false diff --git a/src/apps/rx-sensi/SensorNode/main.c b/src/apps/rx-sensi/SensorNode/main.c index 3bdfdbfb6..768ba8128 100644 --- a/src/apps/rx-sensi/SensorNode/main.c +++ b/src/apps/rx-sensi/SensorNode/main.c @@ -58,9 +58,9 @@ Maintainer: Miguel Luis and Gregory Cristian #elif defined( USE_MODEM_FSK ) -#define FSK_DATARATE 50e3 // bps -#define FSK_BANDWIDTH 50e3 // Hz -#define FSK_AFC_BANDWIDTH 83.333e3 // Hz +#define FSK_DATARATE 50000 // bps +#define FSK_BANDWIDTH 50000 // Hz +#define FSK_AFC_BANDWIDTH 83333 // Hz #define FSK_PREAMBLE_LENGTH 5 // Same for Tx and Rx #define FSK_FIX_LENGTH_PAYLOAD_ON false diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index e3b10cc38..8e0bdf530 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -762,8 +762,8 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t { LoRaMacParams.ReceiveDelay1 = 1; } - LoRaMacParams.ReceiveDelay1 *= 1e3; - LoRaMacParams.ReceiveDelay2 = LoRaMacParams.ReceiveDelay1 + 1e3; + LoRaMacParams.ReceiveDelay1 *= 1000; + LoRaMacParams.ReceiveDelay2 = LoRaMacParams.ReceiveDelay1 + 1000; // Apply CF list applyCFList.Payload = &LoRaMacRxPayload[13]; @@ -1762,8 +1762,8 @@ static void ProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t comm { delay++; } - LoRaMacParams.ReceiveDelay1 = delay * 1e3; - LoRaMacParams.ReceiveDelay2 = LoRaMacParams.ReceiveDelay1 + 1e3; + LoRaMacParams.ReceiveDelay1 = delay * 1000; + LoRaMacParams.ReceiveDelay2 = LoRaMacParams.ReceiveDelay1 + 1000; AddMacCommand( MOTE_MAC_RX_TIMING_SETUP_ANS, 0, 0 ); } break; diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index 650b1ce52..d8a46e709 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -607,7 +607,7 @@ bool RegionAS923RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( dr == DR_7 ) { modem = MODEM_FSK; - Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, 50000, phyDr * 1000, 0, 83333, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); } else { @@ -658,12 +658,12 @@ bool RegionAS923TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime if( txConfig->Datarate == DR_7 ) { // High Speed FSK channel modem = MODEM_FSK; - Radio.SetTxConfig( modem, phyTxPower, 25e3, bandwidth, phyDr * 1e3, 0, 5, false, true, 0, 0, false, 3e3 ); + Radio.SetTxConfig( modem, phyTxPower, 25000, bandwidth, phyDr * 1000, 0, 5, false, true, 0, 0, false, 3000 ); } else { modem = MODEM_LORA; - Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); } // Setup maximum payload lenght of the radio driver diff --git a/src/mac/region/RegionAS923.h b/src/mac/region/RegionAS923.h index 800cd8395..661bdb854 100644 --- a/src/mac/region/RegionAS923.h +++ b/src/mac/region/RegionAS923.h @@ -241,7 +241,7 @@ static const uint8_t DataratesAS923[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; /*! * Bandwidths table definition in Hz */ -static const uint32_t BandwidthsAS923[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3, 250e3, 0 }; +static const uint32_t BandwidthsAS923[] = { 125000, 125000, 125000, 125000, 125000, 125000, 250000, 0 }; /*! * Maximum payload with respect to the datarate index. Cannot operate with repeater. diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index a781b17a4..5abf2b03b 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -299,14 +299,14 @@ void RegionAU915InitDefaults( InitType_t type ) // 125 kHz channels for( uint8_t i = 0; i < AU915_MAX_NB_CHANNELS - 8; i++ ) { - Channels[i].Frequency = 915.2e6 + i * 200e3; + Channels[i].Frequency = 915200000 + i * 200000; Channels[i].DrRange.Value = ( DR_3 << 4 ) | DR_0; Channels[i].Band = 0; } // 500 kHz channels for( uint8_t i = AU915_MAX_NB_CHANNELS - 8; i < AU915_MAX_NB_CHANNELS; i++ ) { - Channels[i].Frequency = 915.9e6 + ( i - ( AU915_MAX_NB_CHANNELS - 8 ) ) * 1.6e6; + Channels[i].Frequency = 915900000 + ( i - ( AU915_MAX_NB_CHANNELS - 8 ) ) * 1600000; Channels[i].DrRange.Value = ( DR_4 << 4 ) | DR_4; Channels[i].Band = 0; } @@ -556,8 +556,10 @@ bool RegionAU915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime Radio.SetChannel( Channels[txConfig->Channel].Frequency ); + Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); + + // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); - Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); *txPower = txPowerLimited; diff --git a/src/mac/region/RegionAU915.h b/src/mac/region/RegionAU915.h index 6e5d2f6ac..beca9d05d 100644 --- a/src/mac/region/RegionAU915.h +++ b/src/mac/region/RegionAU915.h @@ -184,17 +184,17 @@ /*! * Defines the first channel for RX window 1 for US band */ -#define AU915_FIRST_RX1_CHANNEL ( (uint32_t) 923.3e6 ) +#define AU915_FIRST_RX1_CHANNEL ( (uint32_t) 923300000 ) /*! * Defines the last channel for RX window 1 for US band */ -#define AU915_LAST_RX1_CHANNEL ( (uint32_t) 927.5e6 ) +#define AU915_LAST_RX1_CHANNEL ( (uint32_t) 927500000 ) /*! * Defines the step width of the channels for RX window 1 */ -#define AU915_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 600e3 ) +#define AU915_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 600000 ) /*! * Data rates table definition @@ -204,7 +204,7 @@ static const uint8_t DataratesAU915[] = { 12, 11, 10, 9, 8, 7, 8, 0, 12, 11, 10 /*! * Bandwidths table definition in Hz */ -static const uint32_t BandwidthsAU915[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3, 500e3, 0, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 0, 0 }; +static const uint32_t BandwidthsAU915[] = { 125000, 125000, 125000, 125000, 125000, 125000, 500000, 0, 500000, 500000, 500000, 500000, 500000, 500000, 0, 0 }; /*! * Up/Down link data rates offset definition diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index fd41cf9b5..5304cb406 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -294,7 +294,7 @@ void RegionCN470InitDefaults( InitType_t type ) // 125 kHz channels for( uint8_t i = 0; i < CN470_MAX_NB_CHANNELS; i++ ) { - Channels[i].Frequency = 470.3e6 + i * 200e3; + Channels[i].Frequency = 470300000 + i * 200000; Channels[i].DrRange.Value = ( DR_5 << 4 ) | DR_0; Channels[i].Band = 0; } @@ -520,9 +520,9 @@ bool RegionCN470TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime // Setup the radio frequency Radio.SetChannel( Channels[txConfig->Channel].Frequency ); + Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, 0, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); - Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, 0, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); // Get the time-on-air of the next tx frame *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); diff --git a/src/mac/region/RegionCN470.h b/src/mac/region/RegionCN470.h index c79688f8e..bc48bfa94 100644 --- a/src/mac/region/RegionCN470.h +++ b/src/mac/region/RegionCN470.h @@ -184,17 +184,17 @@ /*! * Defines the first channel for RX window 1 for CN470 band */ -#define CN470_FIRST_RX1_CHANNEL ( (uint32_t) 500.3e6 ) +#define CN470_FIRST_RX1_CHANNEL ( (uint32_t) 500300000 ) /*! * Defines the last channel for RX window 1 for CN470 band */ -#define CN470_LAST_RX1_CHANNEL ( (uint32_t) 509.7e6 ) +#define CN470_LAST_RX1_CHANNEL ( (uint32_t) 509700000 ) /*! * Defines the step width of the channels for RX window 1 */ -#define CN470_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 200e3 ) +#define CN470_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 200000 ) /*! * Data rates table definition @@ -204,7 +204,7 @@ static const uint8_t DataratesCN470[] = { 12, 11, 10, 9, 8, 7 }; /*! * Bandwidths table definition in Hz */ -static const uint32_t BandwidthsCN470[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3 }; +static const uint32_t BandwidthsCN470[] = { 125000, 125000, 125000, 125000, 125000, 125000 }; /*! * Maximum payload with respect to the datarate index. Cannot operate with repeater. diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index dde1ab782..a15fc7fc1 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -550,7 +550,7 @@ bool RegionCN779RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( dr == DR_7 ) { modem = MODEM_FSK; - Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, 50000, phyDr * 1000, 0, 83333, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); } else { @@ -589,12 +589,12 @@ bool RegionCN779TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime if( txConfig->Datarate == DR_7 ) { // High Speed FSK channel modem = MODEM_FSK; - Radio.SetTxConfig( modem, phyTxPower, 25e3, bandwidth, phyDr * 1e3, 0, 5, false, true, 0, 0, false, 3e3 ); + Radio.SetTxConfig( modem, phyTxPower, 25000, bandwidth, phyDr * 1000, 0, 5, false, true, 0, 0, false, 3000 ); } else { modem = MODEM_LORA; - Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); } // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); diff --git a/src/mac/region/RegionCN779.h b/src/mac/region/RegionCN779.h index 698d28778..a1f8192ca 100644 --- a/src/mac/region/RegionCN779.h +++ b/src/mac/region/RegionCN779.h @@ -223,7 +223,7 @@ static const uint8_t DataratesCN779[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; /*! * Bandwidths table definition in Hz */ -static const uint32_t BandwidthsCN779[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3, 250e3, 0 }; +static const uint32_t BandwidthsCN779[] = { 125000, 125000, 125000, 125000, 125000, 125000, 250000, 0 }; /*! * Maximum payload with respect to the datarate index. Cannot operate with repeater. diff --git a/src/mac/region/RegionCommon.c b/src/mac/region/RegionCommon.c index 9a361e194..00af677e8 100644 --- a/src/mac/region/RegionCommon.c +++ b/src/mac/region/RegionCommon.c @@ -206,7 +206,7 @@ uint8_t RegionCommonParseLinkAdrReq( uint8_t* payload, LinkAdrParams_t* linkAdrP double RegionCommonComputeSymbolTimeLoRa( uint8_t phyDr, uint32_t bandwidth ) { - return ( ( double )( 1 << phyDr ) / ( double )bandwidth ) * 1e3; + return ( ( double )( 1 << phyDr ) / ( double )bandwidth ) * 1000; } double RegionCommonComputeSymbolTimeFsk( uint8_t phyDr ) diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index 5aa05301c..69b5dcd52 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -550,7 +550,7 @@ bool RegionEU433RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( dr == DR_7 ) { modem = MODEM_FSK; - Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, 50000, phyDr * 1000, 0, 83333, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); } else { @@ -589,12 +589,12 @@ bool RegionEU433TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime if( txConfig->Datarate == DR_7 ) { // High Speed FSK channel modem = MODEM_FSK; - Radio.SetTxConfig( modem, phyTxPower, 25e3, bandwidth, phyDr * 1e3, 0, 5, false, true, 0, 0, false, 3e3 ); + Radio.SetTxConfig( modem, phyTxPower, 25000, bandwidth, phyDr * 1000, 0, 5, false, true, 0, 0, false, 3000 ); } else { modem = MODEM_LORA; - Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); } // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); diff --git a/src/mac/region/RegionEU433.h b/src/mac/region/RegionEU433.h index f1dae86a2..aa9e16b9a 100644 --- a/src/mac/region/RegionEU433.h +++ b/src/mac/region/RegionEU433.h @@ -224,7 +224,7 @@ static const uint8_t DataratesEU433[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; /*! * Bandwidths table definition in Hz */ -static const uint32_t BandwidthsEU433[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3, 250e3, 0 }; +static const uint32_t BandwidthsEU433[] = { 125000, 125000, 125000, 125000, 125000, 125000, 250000, 0 }; /*! * Maximum payload with respect to the datarate index. Cannot operate with repeater. diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index 1c488d38c..efaee27a3 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -579,7 +579,7 @@ bool RegionEU868RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( dr == DR_7 ) { modem = MODEM_FSK; - Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, 50000, phyDr * 1000, 0, 83333, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); } else { @@ -619,12 +619,12 @@ bool RegionEU868TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime if( txConfig->Datarate == DR_7 ) { // High Speed FSK channel modem = MODEM_FSK; - Radio.SetTxConfig( modem, phyTxPower, 25e3, bandwidth, phyDr * 1e3, 0, 5, false, true, 0, 0, false, 3e3 ); + Radio.SetTxConfig( modem, phyTxPower, 25000, bandwidth, phyDr * 1000, 0, 5, false, true, 0, 0, false, 3000 ); } else { modem = MODEM_LORA; - Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); } // Setup maximum payload lenght of the radio driver diff --git a/src/mac/region/RegionEU868.h b/src/mac/region/RegionEU868.h index 5a23737e8..8e10f70e3 100644 --- a/src/mac/region/RegionEU868.h +++ b/src/mac/region/RegionEU868.h @@ -245,7 +245,7 @@ static const uint8_t DataratesEU868[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; /*! * Bandwidths table definition in Hz */ -static const uint32_t BandwidthsEU868[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3, 250e3, 0 }; +static const uint32_t BandwidthsEU868[] = { 125000, 125000, 125000, 125000, 125000, 125000, 250000, 0 }; /*! * Maximum payload with respect to the datarate index. Cannot operate with repeater. diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index d5eb5f878..c27fbbdb7 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -554,7 +554,7 @@ bool RegionIN865RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) if( dr == DR_7 ) { modem = MODEM_FSK; - Radio.SetRxConfig( modem, 50e3, phyDr * 1e3, 0, 83.333e3, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); + Radio.SetRxConfig( modem, 50000, phyDr * 1000, 0, 83333, 5, rxConfig->WindowTimeout, false, 0, true, 0, 0, false, rxConfig->RxContinuous ); } else { @@ -593,12 +593,12 @@ bool RegionIN865TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime if( txConfig->Datarate == DR_7 ) { // High Speed FSK channel modem = MODEM_FSK; - Radio.SetTxConfig( modem, phyTxPower, 25e3, bandwidth, phyDr * 1e3, 0, 5, false, true, 0, 0, false, 3e3 ); + Radio.SetTxConfig( modem, phyTxPower, 25000, bandwidth, phyDr * 1000, 0, 5, false, true, 0, 0, false, 3000 ); } else { modem = MODEM_LORA; - Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); } // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); diff --git a/src/mac/region/RegionIN865.h b/src/mac/region/RegionIN865.h index cbff6df7b..5246389ab 100644 --- a/src/mac/region/RegionIN865.h +++ b/src/mac/region/RegionIN865.h @@ -221,7 +221,7 @@ static const uint8_t DataratesIN865[] = { 12, 11, 10, 9, 8, 7, 7, 50 }; /*! * Bandwidths table definition in Hz */ -static const uint32_t BandwidthsIN865[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3, 250e3, 0 }; +static const uint32_t BandwidthsIN865[] = { 125000, 125000, 125000, 125000, 125000, 125000, 250000, 0 }; /*! * Maximum payload with respect to the datarate index. Cannot operate with repeater. diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index e9bae3e1d..bd64b3467 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -595,7 +595,7 @@ bool RegionKR920TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime // Setup the radio frequency Radio.SetChannel( Channels[txConfig->Channel].Frequency ); - Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 4e3 ); + Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); diff --git a/src/mac/region/RegionKR920.h b/src/mac/region/RegionKR920.h index b2df13ecd..cb7d8732f 100644 --- a/src/mac/region/RegionKR920.h +++ b/src/mac/region/RegionKR920.h @@ -236,7 +236,7 @@ static const uint8_t DataratesKR920[] = { 12, 11, 10, 9, 8, 7 }; /*! * Bandwidths table definition in Hz */ -static const uint32_t BandwidthsKR920[] = { 125e3, 125e3, 125e3, 125e3, 125e3, 125e3 }; +static const uint32_t BandwidthsKR920[] = { 125000, 125000, 125000, 125000, 125000, 125000 }; /*! * Maximum payload with respect to the datarate index. Can operate with and without a repeater. diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index dbcd90678..cf7c2e6b2 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -395,14 +395,14 @@ void RegionUS915HybridInitDefaults( InitType_t type ) // 125 kHz channels for( uint8_t i = 0; i < US915_HYBRID_MAX_NB_CHANNELS - 8; i++ ) { - Channels[i].Frequency = 902.3e6 + i * 200e3; + Channels[i].Frequency = 902300000 + i * 200000; Channels[i].DrRange.Value = ( DR_3 << 4 ) | DR_0; Channels[i].Band = 0; } // 500 kHz channels for( uint8_t i = US915_HYBRID_MAX_NB_CHANNELS - 8; i < US915_HYBRID_MAX_NB_CHANNELS; i++ ) { - Channels[i].Frequency = 903.0e6 + ( i - ( US915_HYBRID_MAX_NB_CHANNELS - 8 ) ) * 1.6e6; + Channels[i].Frequency = 903000000 + ( i - ( US915_HYBRID_MAX_NB_CHANNELS - 8 ) ) * 1600000; Channels[i].DrRange.Value = ( DR_4 << 4 ) | DR_4; Channels[i].Band = 0; } @@ -653,7 +653,7 @@ bool RegionUS915HybridTxConfig( TxConfigParams_t* txConfig, int8_t* txPower, Tim Radio.SetChannel( Channels[txConfig->Channel].Frequency ); Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); - Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); *txPower = txPowerLimited; diff --git a/src/mac/region/RegionUS915-Hybrid.h b/src/mac/region/RegionUS915-Hybrid.h index b01189a5d..38e71b370 100644 --- a/src/mac/region/RegionUS915-Hybrid.h +++ b/src/mac/region/RegionUS915-Hybrid.h @@ -179,17 +179,17 @@ /*! * Defines the first channel for RX window 1 for US band */ -#define US915_HYBRID_FIRST_RX1_CHANNEL ( (uint32_t) 923.3e6 ) +#define US915_HYBRID_FIRST_RX1_CHANNEL ( (uint32_t) 923300000 ) /*! * Defines the last channel for RX window 1 for US band */ -#define US915_HYBRID_LAST_RX1_CHANNEL ( (uint32_t) 927.5e6 ) +#define US915_HYBRID_LAST_RX1_CHANNEL ( (uint32_t) 927500000 ) /*! * Defines the step width of the channels for RX window 1 */ -#define US915_HYBRID_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 600e3 ) +#define US915_HYBRID_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 600000 ) /*! * Data rates table definition @@ -199,7 +199,7 @@ static const uint8_t DataratesUS915_HYBRID[] = { 10, 9, 8, 7, 8, 0, 0, 0, 1 /*! * Bandwidths table definition in Hz */ -static const uint32_t BandwidthsUS915_HYBRID[] = { 125e3, 125e3, 125e3, 125e3, 500e3, 0, 0, 0, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 0, 0 }; +static const uint32_t BandwidthsUS915_HYBRID[] = { 125000, 125000, 125000, 125000, 500000, 0, 0, 0, 500000, 500000, 500000, 500000, 500000, 500000, 0, 0 }; /*! * Up/Down link data rates offset definition diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 2ff409d10..868a5a8c6 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -306,14 +306,14 @@ void RegionUS915InitDefaults( InitType_t type ) // 125 kHz channels for( uint8_t i = 0; i < US915_MAX_NB_CHANNELS - 8; i++ ) { - Channels[i].Frequency = 902.3e6 + i * 200e3; + Channels[i].Frequency = 902300000 + i * 200000; Channels[i].DrRange.Value = ( DR_3 << 4 ) | DR_0; Channels[i].Band = 0; } // 500 kHz channels for( uint8_t i = US915_MAX_NB_CHANNELS - 8; i < US915_MAX_NB_CHANNELS; i++ ) { - Channels[i].Frequency = 903.0e6 + ( i - ( US915_MAX_NB_CHANNELS - 8 ) ) * 1.6e6; + Channels[i].Frequency = 903000000 + ( i - ( US915_MAX_NB_CHANNELS - 8 ) ) * 1600000; Channels[i].DrRange.Value = ( DR_4 << 4 ) | DR_4; Channels[i].Band = 0; } @@ -565,7 +565,7 @@ bool RegionUS915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime Radio.SetChannel( Channels[txConfig->Channel].Frequency ); Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); - Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3e3 ); + Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); *txPower = txPowerLimited; diff --git a/src/mac/region/RegionUS915.h b/src/mac/region/RegionUS915.h index 6a2bb25df..264fc9765 100644 --- a/src/mac/region/RegionUS915.h +++ b/src/mac/region/RegionUS915.h @@ -179,17 +179,17 @@ /*! * Defines the first channel for RX window 1 for US band */ -#define US915_FIRST_RX1_CHANNEL ( (uint32_t) 923.3e6 ) +#define US915_FIRST_RX1_CHANNEL ( (uint32_t) 923300000 ) /*! * Defines the last channel for RX window 1 for US band */ -#define US915_LAST_RX1_CHANNEL ( (uint32_t) 927.5e6 ) +#define US915_LAST_RX1_CHANNEL ( (uint32_t) 927500000 ) /*! * Defines the step width of the channels for RX window 1 */ -#define US915_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 600e3 ) +#define US915_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 600000 ) /*! * Data rates table definition @@ -199,7 +199,7 @@ static const uint8_t DataratesUS915[] = { 10, 9, 8, 7, 8, 0, 0, 0, 12, 11, /*! * Bandwidths table definition in Hz */ -static const uint32_t BandwidthsUS915[] = { 125e3, 125e3, 125e3, 125e3, 500e3, 0, 0, 0, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 0, 0 }; +static const uint32_t BandwidthsUS915[] = { 125000, 125000, 125000, 125000, 500000, 0, 0, 0, 500000, 500000, 500000, 500000, 500000, 500000, 0, 0 }; /*! * Up/Down link data rates offset definition diff --git a/src/radio/sx1272/sx1272.c b/src/radio/sx1272/sx1272.c index cca288a96..87c430c5b 100644 --- a/src/radio/sx1272/sx1272.c +++ b/src/radio/sx1272/sx1272.c @@ -352,7 +352,7 @@ void SX1272SetRxConfig( RadioModems_t modem, uint32_t bandwidth, SX1272.Settings.Fsk.IqInverted = iqInverted; SX1272.Settings.Fsk.RxContinuous = rxContinuous; SX1272.Settings.Fsk.PreambleLen = preambleLen; - SX1272.Settings.Fsk.RxSingleTimeout = symbTimeout * ( ( 1.0 / ( double )datarate ) * 8.0 ) * 1e3; + SX1272.Settings.Fsk.RxSingleTimeout = ( uint32_t )( symbTimeout * ( ( 1.0 / ( double )datarate ) * 8.0 ) * 1000 ); datarate = ( uint16_t )( ( double )XTAL_FREQ / ( double )datarate ); SX1272Write( REG_BITRATEMSB, ( uint8_t )( datarate >> 8 ) ); @@ -611,7 +611,7 @@ uint32_t SX1272GetTimeOnAir( RadioModems_t modem, uint8_t pktLen ) ( ( ( SX1272Read( REG_PACKETCONFIG1 ) & ~RF_PACKETCONFIG1_ADDRSFILTERING_MASK ) != 0x00 ) ? 1.0 : 0 ) + pktLen + ( ( SX1272.Settings.Fsk.CrcOn == 0x01 ) ? 2.0 : 0 ) ) / - SX1272.Settings.Fsk.Datarate ) * 1e3 ); + SX1272.Settings.Fsk.Datarate ) * 1000 ); } break; case MODEM_LORA: @@ -620,13 +620,13 @@ uint32_t SX1272GetTimeOnAir( RadioModems_t modem, uint8_t pktLen ) switch( SX1272.Settings.LoRa.Bandwidth ) { case 0: // 125 kHz - bw = 125e3; + bw = 125000; break; case 1: // 250 kHz - bw = 250e3; + bw = 250000; break; case 2: // 500 kHz - bw = 500e3; + bw = 500000; break; } @@ -647,7 +647,7 @@ uint32_t SX1272GetTimeOnAir( RadioModems_t modem, uint8_t pktLen ) // Time on air double tOnAir = tPreamble + tPayload; // return ms secs - airTime = floor( tOnAir * 1e3 + 0.999 ); + airTime = floor( tOnAir * 1000 + 0.999 ); } break; } @@ -963,7 +963,7 @@ void SX1272StartCad( void ) void SX1272SetTxContinuousWave( uint32_t freq, int8_t power, uint16_t time ) { - uint32_t timeout = ( uint32_t )( time * 1e3 ); + uint32_t timeout = ( uint32_t )( time * 1000 ); SX1272SetChannel( freq ); diff --git a/src/radio/sx1276/sx1276.c b/src/radio/sx1276/sx1276.c index 05e837be2..befcc9982 100644 --- a/src/radio/sx1276/sx1276.c +++ b/src/radio/sx1276/sx1276.c @@ -400,7 +400,7 @@ void SX1276SetRxConfig( RadioModems_t modem, uint32_t bandwidth, SX1276.Settings.Fsk.IqInverted = iqInverted; SX1276.Settings.Fsk.RxContinuous = rxContinuous; SX1276.Settings.Fsk.PreambleLen = preambleLen; - SX1276.Settings.Fsk.RxSingleTimeout = symbTimeout * ( ( 1.0 / ( double )datarate ) * 8.0 ) * 1e3; + SX1276.Settings.Fsk.RxSingleTimeout = ( uint32_t )( symbTimeout * ( ( 1.0 / ( double )datarate ) * 8.0 ) * 1000 ); datarate = ( uint16_t )( ( double )XTAL_FREQ / ( double )datarate ); SX1276Write( REG_BITRATEMSB, ( uint8_t )( datarate >> 8 ) ); @@ -694,7 +694,7 @@ uint32_t SX1276GetTimeOnAir( RadioModems_t modem, uint8_t pktLen ) ( ( ( SX1276Read( REG_PACKETCONFIG1 ) & ~RF_PACKETCONFIG1_ADDRSFILTERING_MASK ) != 0x00 ) ? 1.0 : 0 ) + pktLen + ( ( SX1276.Settings.Fsk.CrcOn == 0x01 ) ? 2.0 : 0 ) ) / - SX1276.Settings.Fsk.Datarate ) * 1e3 ); + SX1276.Settings.Fsk.Datarate ) * 1000 ); } break; case MODEM_LORA: @@ -704,34 +704,34 @@ uint32_t SX1276GetTimeOnAir( RadioModems_t modem, uint8_t pktLen ) switch( SX1276.Settings.LoRa.Bandwidth ) { //case 0: // 7.8 kHz - // bw = 78e2; + // bw = 7800; // break; //case 1: // 10.4 kHz - // bw = 104e2; + // bw = 10400; // break; //case 2: // 15.6 kHz - // bw = 156e2; + // bw = 15600; // break; //case 3: // 20.8 kHz - // bw = 208e2; + // bw = 20800; // break; //case 4: // 31.2 kHz - // bw = 312e2; + // bw = 31200; // break; //case 5: // 41.4 kHz - // bw = 414e2; + // bw = 41400; // break; //case 6: // 62.5 kHz - // bw = 625e2; + // bw = 62500; // break; case 7: // 125 kHz - bw = 125e3; + bw = 125000; break; case 8: // 250 kHz - bw = 250e3; + bw = 250000; break; case 9: // 500 kHz - bw = 500e3; + bw = 500000; break; } @@ -752,7 +752,7 @@ uint32_t SX1276GetTimeOnAir( RadioModems_t modem, uint8_t pktLen ) // Time on air double tOnAir = tPreamble + tPayload; // return ms secs - airTime = floor( tOnAir * 1e3 + 0.999 ); + airTime = floor( tOnAir * 1000 + 0.999 ); } break; } @@ -911,27 +911,27 @@ void SX1276SetRx( uint32_t timeout ) { case 0: // 7.8 kHz SX1276Write( REG_LR_TEST2F, 0x48 ); - SX1276SetChannel(SX1276.Settings.Channel + 7.81e3 ); + SX1276SetChannel(SX1276.Settings.Channel + 7810 ); break; case 1: // 10.4 kHz SX1276Write( REG_LR_TEST2F, 0x44 ); - SX1276SetChannel(SX1276.Settings.Channel + 10.42e3 ); + SX1276SetChannel(SX1276.Settings.Channel + 10420 ); break; case 2: // 15.6 kHz SX1276Write( REG_LR_TEST2F, 0x44 ); - SX1276SetChannel(SX1276.Settings.Channel + 15.62e3 ); + SX1276SetChannel(SX1276.Settings.Channel + 15620 ); break; case 3: // 20.8 kHz SX1276Write( REG_LR_TEST2F, 0x44 ); - SX1276SetChannel(SX1276.Settings.Channel + 20.83e3 ); + SX1276SetChannel(SX1276.Settings.Channel + 20830 ); break; case 4: // 31.2 kHz SX1276Write( REG_LR_TEST2F, 0x44 ); - SX1276SetChannel(SX1276.Settings.Channel + 31.25e3 ); + SX1276SetChannel(SX1276.Settings.Channel + 31250 ); break; case 5: // 41.4 kHz SX1276Write( REG_LR_TEST2F, 0x44 ); - SX1276SetChannel(SX1276.Settings.Channel + 41.67e3 ); + SX1276SetChannel(SX1276.Settings.Channel + 41670 ); break; case 6: // 62.5 kHz SX1276Write( REG_LR_TEST2F, 0x40 ); @@ -1115,7 +1115,7 @@ void SX1276StartCad( void ) void SX1276SetTxContinuousWave( uint32_t freq, int8_t power, uint16_t time ) { - uint32_t timeout = ( uint32_t )( time * 1e3 ); + uint32_t timeout = ( uint32_t )( time * 1000 ); SX1276SetChannel( freq ); From b7d53ee063b4a4aa0c4ce618437f03e0dca9f4ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 09:58:14 +0200 Subject: [PATCH 116/161] Issue(#257): Fix typo in OnRxWindow2TimerEvent --- src/mac/LoRaMac.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 8e0bdf530..e929fa642 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1409,7 +1409,7 @@ static void OnRxWindow2TimerEvent( void ) RxWindow2Config.Channel = Channel; RxWindow2Config.Frequency = LoRaMacParams.Rx2Channel.Frequency; - RxWindow1Config.DownlinkDwellTime = LoRaMacParams.DownlinkDwellTime; + RxWindow2Config.DownlinkDwellTime = LoRaMacParams.DownlinkDwellTime; RxWindow2Config.RepeaterSupport = RepeaterSupport; RxWindow2Config.Window = 1; From 05ace68e636d185be160751c794fb03d5d82a46f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 09:58:48 +0200 Subject: [PATCH 117/161] Issue(#259): Update comment for variable HasLoopedThroughMain --- src/system/timer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/system/timer.c b/src/system/timer.c index 5073f471d..f875e4785 100644 --- a/src/system/timer.c +++ b/src/system/timer.c @@ -17,7 +17,8 @@ Maintainer: Miguel Luis and Gregory Cristian /*! - * This flag is used to make sure we have looped through the main several time to avoid race issues + * This flag is used to loop through the main several times in order to be sure + * that all pending events have been processed. */ volatile uint8_t HasLoopedThroughMain = 0; From 9c8ba8d091c683ee3e227e7f307fdd80d3cf2f90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 10:00:14 +0200 Subject: [PATCH 118/161] Update carrier sense functionality for LBT --- src/mac/region/RegionAS923.c | 18 ++---------------- src/mac/region/RegionKR920.c | 18 ++---------------- src/radio/radio.h | 5 +++-- src/radio/sx1272/sx1272.c | 22 +++++++++++++++------- src/radio/sx1272/sx1272.h | 5 +++-- src/radio/sx1276/sx1276.c | 22 +++++++++++++++------- src/radio/sx1276/sx1276.h | 5 +++-- 7 files changed, 43 insertions(+), 52 deletions(-) diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index d8a46e709..fee3929ec 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -926,8 +926,6 @@ bool RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, uint8_t delayTx = 0; uint8_t enabledChannels[AS923_MAX_NB_CHANNELS] = { 0 }; TimerTime_t nextTxDelay = 0; - TimerTime_t carrierSenseTime = 0; - bool channelFree = false; if( RegionCommonCountChannels( ChannelsMask, 0, 1 ) == 0 ) { // Reactivate default channels @@ -960,21 +958,9 @@ bool RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, channelNext = enabledChannels[j]; j = ( j + 1 ) % nbEnabledChannels; - carrierSenseTime = TimerGetCurrentTime( ); - channelFree = true; - - // Perform carrier sense for 6ms - while( TimerGetElapsedTime( carrierSenseTime ) < AS923_CARRIER_SENSE_TIME ) - { - if( Radio.IsChannelFree( MODEM_LORA, Channels[channelNext].Frequency, AS923_RSSI_FREE_TH ) == false ) - { - channelFree = false; - break; - } - } - + // Perform carrier sense for AS923_CARRIER_SENSE_TIME // If the channel is free, we can stop the LBT mechanism - if( channelFree == true ) + if( Radio.IsChannelFree( MODEM_LORA, Channels[channelNext].Frequency, AS923_RSSI_FREE_TH, AS923_CARRIER_SENSE_TIME ) == true ) { // Free channel found *channel = channelNext; diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index bd64b3467..bc3fd9b4c 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -881,8 +881,6 @@ bool RegionKR920NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, uint8_t delayTx = 0; uint8_t enabledChannels[KR920_MAX_NB_CHANNELS] = { 0 }; TimerTime_t nextTxDelay = 0; - TimerTime_t carrierSenseTime = 0; - bool channelFree = false; if( RegionCommonCountChannels( ChannelsMask, 0, 1 ) == 0 ) { // Reactivate default channels @@ -915,21 +913,9 @@ bool RegionKR920NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, channelNext = enabledChannels[j]; j = ( j + 1 ) % nbEnabledChannels; - carrierSenseTime = TimerGetCurrentTime( ); - channelFree = true; - - // Perform carrier sense for 6ms - while( TimerGetElapsedTime( carrierSenseTime ) < KR920_CARRIER_SENSE_TIME ) - { - if( Radio.IsChannelFree( MODEM_LORA, Channels[channelNext].Frequency, KR920_RSSI_FREE_TH ) == false ) - { - channelFree = false; - break; - } - } - + // Perform carrier sense for KR920_CARRIER_SENSE_TIME // If the channel is free, we can stop the LBT mechanism - if( channelFree == true ) + if( Radio.IsChannelFree( MODEM_LORA, Channels[channelNext].Frequency, KR920_RSSI_FREE_TH, KR920_CARRIER_SENSE_TIME ) == true ) { // Free channel found *channel = channelNext; diff --git a/src/radio/radio.h b/src/radio/radio.h index 62e9acfd0..d04cabc1d 100644 --- a/src/radio/radio.h +++ b/src/radio/radio.h @@ -112,15 +112,16 @@ struct Radio_s */ void ( *SetChannel )( uint32_t freq ); /*! - * \brief Sets the channels configuration + * \brief Checks if the channel is free for the given time * * \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa] * \param [IN] freq Channel RF frequency * \param [IN] rssiThresh RSSI threshold + * \param [IN] maxCarrierSenseTime Max time while the RSSI is measured * * \retval isFree [true: Channel is free, false: Channel is not free] */ - bool ( *IsChannelFree )( RadioModems_t modem, uint32_t freq, int16_t rssiThresh ); + bool ( *IsChannelFree )( RadioModems_t modem, uint32_t freq, int16_t rssiThresh, uint32_t maxCarrierSenseTime ); /*! * \brief Generates a 32 bits random value based on the RSSI readings * diff --git a/src/radio/sx1272/sx1272.c b/src/radio/sx1272/sx1272.c index 87c430c5b..8fe1f6b96 100644 --- a/src/radio/sx1272/sx1272.c +++ b/src/radio/sx1272/sx1272.c @@ -249,9 +249,11 @@ void SX1272SetChannel( uint32_t freq ) SX1272Write( REG_FRFLSB, ( uint8_t )( freq & 0xFF ) ); } -bool SX1272IsChannelFree( RadioModems_t modem, uint32_t freq, int16_t rssiThresh ) +bool SX1272IsChannelFree( RadioModems_t modem, uint32_t freq, int16_t rssiThresh, uint32_t maxCarrierSenseTime ) { + bool status = true; int16_t rssi = 0; + uint32_t carrierSenseTime = 0; SX1272SetModem( modem ); @@ -261,15 +263,21 @@ bool SX1272IsChannelFree( RadioModems_t modem, uint32_t freq, int16_t rssiThresh DelayMs( 1 ); - rssi = SX1272ReadRssi( modem ); + carrierSenseTime = TimerGetCurrentTime( ); - SX1272SetSleep( ); - - if( rssi > rssiThresh ) + // Perform carrier sense for maxCarrierSenseTime + while( TimerGetElapsedTime( carrierSenseTime ) < maxCarrierSenseTime ) { - return false; + rssi = SX1272ReadRssi( modem ); + + if( rssi > rssiThresh ) + { + status = false; + break; + } } - return true; + SX1272SetSleep( ); + return status; } uint32_t SX1272Random( void ) diff --git a/src/radio/sx1272/sx1272.h b/src/radio/sx1272/sx1272.h index 30577e929..7b6f5ffb3 100644 --- a/src/radio/sx1272/sx1272.h +++ b/src/radio/sx1272/sx1272.h @@ -179,15 +179,16 @@ void SX1272SetModem( RadioModems_t modem ); void SX1272SetChannel( uint32_t freq ); /*! - * \brief Sets the channels configuration + * \brief Checks if the channel is free for the given time * * \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa] * \param [IN] freq Channel RF frequency * \param [IN] rssiThresh RSSI threshold + * \param [IN] maxCarrierSenseTime Max time while the RSSI is measured * * \retval isFree [true: Channel is free, false: Channel is not free] */ -bool SX1272IsChannelFree( RadioModems_t modem, uint32_t freq, int16_t rssiThresh ); +bool SX1272IsChannelFree( RadioModems_t modem, uint32_t freq, int16_t rssiThresh, uint32_t maxCarrierSenseTime ); /*! * \brief Generates a 32 bits random value based on the RSSI readings diff --git a/src/radio/sx1276/sx1276.c b/src/radio/sx1276/sx1276.c index befcc9982..94d06e60f 100644 --- a/src/radio/sx1276/sx1276.c +++ b/src/radio/sx1276/sx1276.c @@ -258,9 +258,11 @@ void SX1276SetChannel( uint32_t freq ) SX1276Write( REG_FRFLSB, ( uint8_t )( freq & 0xFF ) ); } -bool SX1276IsChannelFree( RadioModems_t modem, uint32_t freq, int16_t rssiThresh ) +bool SX1276IsChannelFree( RadioModems_t modem, uint32_t freq, int16_t rssiThresh, uint32_t maxCarrierSenseTime ) { + bool status = true; int16_t rssi = 0; + uint32_t carrierSenseTime = 0; SX1276SetModem( modem ); @@ -270,15 +272,21 @@ bool SX1276IsChannelFree( RadioModems_t modem, uint32_t freq, int16_t rssiThresh DelayMs( 1 ); - rssi = SX1276ReadRssi( modem ); + carrierSenseTime = TimerGetCurrentTime( ); - SX1276SetSleep( ); - - if( rssi > rssiThresh ) + // Perform carrier sense for maxCarrierSenseTime + while( TimerGetElapsedTime( carrierSenseTime ) < maxCarrierSenseTime ) { - return false; + rssi = SX1276ReadRssi( modem ); + + if( rssi > rssiThresh ) + { + status = false; + break; + } } - return true; + SX1276SetSleep( ); + return status; } uint32_t SX1276Random( void ) diff --git a/src/radio/sx1276/sx1276.h b/src/radio/sx1276/sx1276.h index fb4770211..53b746c2f 100644 --- a/src/radio/sx1276/sx1276.h +++ b/src/radio/sx1276/sx1276.h @@ -179,15 +179,16 @@ void SX1276SetModem( RadioModems_t modem ); void SX1276SetChannel( uint32_t freq ); /*! - * \brief Sets the channels configuration + * \brief Checks if the channel is free for the given time * * \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa] * \param [IN] freq Channel RF frequency * \param [IN] rssiThresh RSSI threshold + * \param [IN] maxCarrierSenseTime Max time while the RSSI is measured * * \retval isFree [true: Channel is free, false: Channel is not free] */ -bool SX1276IsChannelFree( RadioModems_t modem, uint32_t freq, int16_t rssiThresh ); +bool SX1276IsChannelFree( RadioModems_t modem, uint32_t freq, int16_t rssiThresh, uint32_t maxCarrierSenseTime ); /*! * \brief Generates a 32 bits random value based on the RSSI readings From baa397960849d3141ed8227d8a874f6b0388750b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 10:02:35 +0200 Subject: [PATCH 119/161] Synchronize function RegionXXTxConfig --- src/mac/region/RegionAS923.c | 4 ++-- src/mac/region/RegionAU915.c | 3 ++- src/mac/region/RegionCN470.c | 4 ++-- src/mac/region/RegionCN779.c | 5 +++-- src/mac/region/RegionEU433.c | 4 ++-- src/mac/region/RegionEU868.c | 4 ++-- src/mac/region/RegionIN865.c | 5 +++-- src/mac/region/RegionKR920.c | 4 ++-- src/mac/region/RegionUS915-Hybrid.c | 7 +++++-- src/mac/region/RegionUS915.c | 7 +++++-- 10 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index fee3929ec..c59fcae23 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -669,9 +669,9 @@ bool RegionAS923TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); // Get the time-on-air of the next tx frame - *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); + *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); - *txPower = txConfig->TxPower; + *txPower = txPowerLimited; return true; } diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 5abf2b03b..5a5be1e50 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -554,6 +554,7 @@ bool RegionAU915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime // Calculate physical TX power phyTxPower = RegionCommonComputeTxPower( txPowerLimited, txConfig->MaxEirp, txConfig->AntennaGain ); + // Setup the radio frequency Radio.SetChannel( Channels[txConfig->Channel].Frequency ); Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); @@ -561,7 +562,7 @@ bool RegionAU915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); - *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); + *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); *txPower = txPowerLimited; return true; diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index 5304cb406..7e4762caf 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -524,9 +524,9 @@ bool RegionCN470TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); // Get the time-on-air of the next tx frame - *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); + *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); + *txPower = txPowerLimited; - *txPower = txConfig->TxPower; return true; } diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index a15fc7fc1..8af12344e 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -596,12 +596,13 @@ bool RegionCN779TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime modem = MODEM_LORA; Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); } + // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); // Get the time-on-air of the next tx frame - *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); + *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); - *txPower = txConfig->TxPower; + *txPower = txPowerLimited; return true; } diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index 69b5dcd52..bbac176ec 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -599,9 +599,9 @@ bool RegionEU433TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); // Get the time-on-air of the next tx frame - *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); + *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); - *txPower = txConfig->TxPower; + *txPower = txPowerLimited; return true; } diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index efaee27a3..6ec3ae593 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -630,9 +630,9 @@ bool RegionEU868TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); // Get the time-on-air of the next tx frame - *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); + *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); - *txPower = txConfig->TxPower; + *txPower = txPowerLimited; return true; } diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index c27fbbdb7..e90b33ef5 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -600,12 +600,13 @@ bool RegionIN865TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime modem = MODEM_LORA; Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); } + // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); // Get the time-on-air of the next tx frame - *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); + *txTimeOnAir = Radio.TimeOnAir( modem, txConfig->PktLen ); - *txPower = txConfig->TxPower; + *txPower = txPowerLimited; return true; } diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index bc3fd9b4c..6837545d3 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -600,9 +600,9 @@ bool RegionKR920TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); // Get the time-on-air of the next tx frame - *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); + *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); - *txPower = txConfig->TxPower; + *txPower = txPowerLimited; return true; } diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index cf7c2e6b2..a9ec2817b 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -650,12 +650,15 @@ bool RegionUS915HybridTxConfig( TxConfigParams_t* txConfig, int8_t* txPower, Tim // Calculate physical TX power phyTxPower = RegionCommonComputeTxPower( txPowerLimited, US915_HYBRID_DEFAULT_MAX_ERP, 0 ); + // Setup the radio frequency Radio.SetChannel( Channels[txConfig->Channel].Frequency ); - Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); - *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); + // Setup maximum payload lenght of the radio driver + Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); + // Get the time-on-air of the next tx frame + *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); *txPower = txPowerLimited; return true; diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 868a5a8c6..9d6fe7448 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -562,12 +562,15 @@ bool RegionUS915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime // Calculate physical TX power phyTxPower = RegionCommonComputeTxPower( txPowerLimited, US915_DEFAULT_MAX_ERP, 0 ); + // Setup the radio frequency Radio.SetChannel( Channels[txConfig->Channel].Frequency ); - Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); Radio.SetTxConfig( MODEM_LORA, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); - *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); + // Setup maximum payload lenght of the radio driver + Radio.SetMaxPayloadLength( MODEM_LORA, txConfig->PktLen ); + // Get the time-on-air of the next tx frame + *txTimeOnAir = Radio.TimeOnAir( MODEM_LORA, txConfig->PktLen ); *txPower = txPowerLimited; return true; From 5ceeb2131256fe3c22c63149bc33a783e2db6ba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 10:02:48 +0200 Subject: [PATCH 120/161] Remove assert_param from the radio drivers --- src/radio/sx1272/sx1272.c | 4 +--- src/radio/sx1276/sx1276.c | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/radio/sx1272/sx1272.c b/src/radio/sx1272/sx1272.c index 8fe1f6b96..8528f0268 100644 --- a/src/radio/sx1272/sx1272.c +++ b/src/radio/sx1272/sx1272.c @@ -1039,8 +1039,6 @@ void SX1272SetOpMode( uint8_t opMode ) void SX1272SetModem( RadioModems_t modem ) { - assert_param( ( SX1272.Spi.Spi.Instance != NULL ) ); - if( ( SX1272Read( REG_OPMODE ) & RFLR_OPMODE_LONGRANGEMODE_ON ) != 0 ) { SX1272.Settings.Modem = MODEM_LORA; @@ -1206,7 +1204,7 @@ void SX1272OnTimeoutIrq( void ) // Tx timeout shouldn't happen. // But it has been observed that when it happens it is a result of a corrupted SPI transfer // it depends on the platform design. - // + // // The workaround is to put the radio in a known state. Thus, we re-initialize it. // BEGIN WORKAROUND diff --git a/src/radio/sx1276/sx1276.c b/src/radio/sx1276/sx1276.c index 94d06e60f..ca9389ece 100644 --- a/src/radio/sx1276/sx1276.c +++ b/src/radio/sx1276/sx1276.c @@ -1198,8 +1198,6 @@ void SX1276SetOpMode( uint8_t opMode ) void SX1276SetModem( RadioModems_t modem ) { - assert_param( ( SX1276.Spi.Spi.Instance != NULL ) ); - if( ( SX1276Read( REG_OPMODE ) & RFLR_OPMODE_LONGRANGEMODE_ON ) != 0 ) { SX1276.Settings.Modem = MODEM_LORA; @@ -1365,7 +1363,7 @@ void SX1276OnTimeoutIrq( void ) // Tx timeout shouldn't happen. // But it has been observed that when it happens it is a result of a corrupted SPI transfer // it depends on the platform design. - // + // // The workaround is to put the radio in a known state. Thus, we re-initialize it. // BEGIN WORKAROUND From f0cd7b70aa390c1f13131c0f1d4a3b223559a5fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 10:04:25 +0200 Subject: [PATCH 121/161] Initialize variable phyParam in functions RegionXXGetPhyParam --- src/mac/region/RegionAS923.c | 2 +- src/mac/region/RegionAU915.c | 2 +- src/mac/region/RegionCN470.c | 2 +- src/mac/region/RegionCN779.c | 2 +- src/mac/region/RegionEU433.c | 2 +- src/mac/region/RegionEU868.c | 2 +- src/mac/region/RegionIN865.c | 2 +- src/mac/region/RegionKR920.c | 2 +- src/mac/region/RegionUS915-Hybrid.c | 2 +- src/mac/region/RegionUS915.c | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index c59fcae23..e3312c76f 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -156,7 +156,7 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t PhyParam_t RegionAS923GetPhyParam( GetPhyParams_t* getPhy ) { - PhyParam_t phyParam; + PhyParam_t phyParam = { 0 }; switch( getPhy->Attribute ) { diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 5a5be1e50..026c55ead 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -139,7 +139,7 @@ static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMas PhyParam_t RegionAU915GetPhyParam( GetPhyParams_t* getPhy ) { - PhyParam_t phyParam; + PhyParam_t phyParam = { 0 }; switch( getPhy->Attribute ) { diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index 7e4762caf..6db812899 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -134,7 +134,7 @@ static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMas PhyParam_t RegionCN470GetPhyParam( GetPhyParams_t* getPhy ) { - PhyParam_t phyParam; + PhyParam_t phyParam = { 0 }; switch( getPhy->Attribute ) { diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index 8af12344e..f70963f32 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -156,7 +156,7 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t PhyParam_t RegionCN779GetPhyParam( GetPhyParams_t* getPhy ) { - PhyParam_t phyParam; + PhyParam_t phyParam = { 0 }; switch( getPhy->Attribute ) { diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index bbac176ec..52bd65a7d 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -156,7 +156,7 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t PhyParam_t RegionEU433GetPhyParam( GetPhyParams_t* getPhy ) { - PhyParam_t phyParam; + PhyParam_t phyParam = { 0 }; switch( getPhy->Attribute ) { diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index 6ec3ae593..edf9e21da 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -185,7 +185,7 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t PhyParam_t RegionEU868GetPhyParam( GetPhyParams_t* getPhy ) { - PhyParam_t phyParam; + PhyParam_t phyParam = { 0 }; switch( getPhy->Attribute ) { diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index e90b33ef5..5c27580f6 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -160,7 +160,7 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t PhyParam_t RegionIN865GetPhyParam( GetPhyParams_t* getPhy ) { - PhyParam_t phyParam; + PhyParam_t phyParam = { 0 }; switch( getPhy->Attribute ) { diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 6837545d3..743013b5e 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -175,7 +175,7 @@ static uint8_t CountNbOfEnabledChannels( bool joined, uint8_t datarate, uint16_t PhyParam_t RegionKR920GetPhyParam( GetPhyParams_t* getPhy ) { - PhyParam_t phyParam; + PhyParam_t phyParam = { 0 }; switch( getPhy->Attribute ) { diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index a9ec2817b..a6e5b5664 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -239,7 +239,7 @@ static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMas PhyParam_t RegionUS915HybridGetPhyParam( GetPhyParams_t* getPhy ) { - PhyParam_t phyParam; + PhyParam_t phyParam = { 0 }; switch( getPhy->Attribute ) { diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 9d6fe7448..17f13c995 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -150,7 +150,7 @@ static uint8_t CountNbOfEnabledChannels( uint8_t datarate, uint16_t* channelsMas PhyParam_t RegionUS915GetPhyParam( GetPhyParams_t* getPhy ) { - PhyParam_t phyParam; + PhyParam_t phyParam = { 0 }; switch( getPhy->Attribute ) { From 7ec74363a061c155e17d8f7a987165bfb7b05c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 12:48:21 +0200 Subject: [PATCH 122/161] Issue(#253): Delete all preconfigured channels when performing a join request --- src/mac/region/RegionAS923.c | 27 ++++++++++++++++++--------- src/mac/region/RegionAS923.h | 5 +++++ src/mac/region/RegionCN779.c | 27 ++++++++++++++++++--------- src/mac/region/RegionCN779.h | 5 +++++ src/mac/region/RegionEU433.c | 27 ++++++++++++++++++--------- src/mac/region/RegionEU433.h | 5 +++++ src/mac/region/RegionEU868.c | 27 ++++++++++++++++++--------- src/mac/region/RegionEU868.h | 5 +++++ src/mac/region/RegionIN865.c | 27 ++++++++++++++++++--------- src/mac/region/RegionIN865.h | 5 +++++ src/mac/region/RegionKR920.c | 27 ++++++++++++++++++--------- src/mac/region/RegionKR920.h | 5 +++++ 12 files changed, 138 insertions(+), 54 deletions(-) diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index e3312c76f..1e53795f7 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -439,16 +439,25 @@ void RegionAS923ApplyCFList( ApplyCFListParams_t* applyCFList ) } // Last byte is RFU, don't take it into account - for( uint8_t i = 0, chanIdx = AS923_NUMB_DEFAULT_CHANNELS; i < 15; i+=3, chanIdx++ ) + for( uint8_t i = 0, chanIdx = AS923_NUMB_DEFAULT_CHANNELS; chanIdx < AS923_MAX_NB_CHANNELS; i+=3, chanIdx++ ) { - // Channel frequency - newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; - newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); - newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); - newChannel.Frequency *= 100; - - // Initialize alternative frequency to 0 - newChannel.Rx1Frequency = 0; + if( chanIdx < ( AS923_NUMB_CHANNELS_CF_LIST + AS923_NUMB_DEFAULT_CHANNELS ) ) + { + // Channel frequency + newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); + newChannel.Frequency *= 100; + + // Initialize alternative frequency to 0 + newChannel.Rx1Frequency = 0; + } + else + { + newChannel.Frequency = 0; + newChannel.DrRange.Value = 0; + newChannel.Rx1Frequency = 0; + } if( newChannel.Frequency != 0 ) { diff --git a/src/mac/region/RegionAS923.h b/src/mac/region/RegionAS923.h index 661bdb854..22c3e470c 100644 --- a/src/mac/region/RegionAS923.h +++ b/src/mac/region/RegionAS923.h @@ -45,6 +45,11 @@ */ #define AS923_NUMB_DEFAULT_CHANNELS 2 +/*! + * Number of channels to apply for the CF list + */ +#define AS923_NUMB_CHANNELS_CF_LIST 5 + /*! * Minimal datarate that can be used by the node */ diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index f70963f32..cab0c213a 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -392,16 +392,25 @@ void RegionCN779ApplyCFList( ApplyCFListParams_t* applyCFList ) } // Last byte is RFU, don't take it into account - for( uint8_t i = 0, chanIdx = CN779_NUMB_DEFAULT_CHANNELS; i < 15; i+=3, chanIdx++ ) + for( uint8_t i = 0, chanIdx = CN779_NUMB_DEFAULT_CHANNELS; chanIdx < CN779_MAX_NB_CHANNELS; i+=3, chanIdx++ ) { - // Channel frequency - newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; - newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); - newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); - newChannel.Frequency *= 100; - - // Initialize alternative frequency to 0 - newChannel.Rx1Frequency = 0; + if( chanIdx < ( CN779_NUMB_CHANNELS_CF_LIST + CN779_NUMB_DEFAULT_CHANNELS ) ) + { + // Channel frequency + newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); + newChannel.Frequency *= 100; + + // Initialize alternative frequency to 0 + newChannel.Rx1Frequency = 0; + } + else + { + newChannel.Frequency = 0; + newChannel.DrRange.Value = 0; + newChannel.Rx1Frequency = 0; + } if( newChannel.Frequency != 0 ) { diff --git a/src/mac/region/RegionCN779.h b/src/mac/region/RegionCN779.h index a1f8192ca..2eb495c2a 100644 --- a/src/mac/region/RegionCN779.h +++ b/src/mac/region/RegionCN779.h @@ -45,6 +45,11 @@ */ #define CN779_NUMB_DEFAULT_CHANNELS 3 +/*! + * Number of channels to apply for the CF list + */ +#define CN779_NUMB_CHANNELS_CF_LIST 5 + /*! * Minimal datarate that can be used by the node */ diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index 52bd65a7d..26dccceb9 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -392,16 +392,25 @@ void RegionEU433ApplyCFList( ApplyCFListParams_t* applyCFList ) } // Last byte is RFU, don't take it into account - for( uint8_t i = 0, chanIdx = EU433_NUMB_DEFAULT_CHANNELS; i < 15; i+=3, chanIdx++ ) + for( uint8_t i = 0, chanIdx = EU433_NUMB_DEFAULT_CHANNELS; chanIdx < EU433_MAX_NB_CHANNELS; i+=3, chanIdx++ ) { - // Channel frequency - newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; - newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); - newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); - newChannel.Frequency *= 100; - - // Initialize alternative frequency to 0 - newChannel.Rx1Frequency = 0; + if( chanIdx < ( EU433_NUMB_CHANNELS_CF_LIST + EU433_NUMB_DEFAULT_CHANNELS ) ) + { + // Channel frequency + newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); + newChannel.Frequency *= 100; + + // Initialize alternative frequency to 0 + newChannel.Rx1Frequency = 0; + } + else + { + newChannel.Frequency = 0; + newChannel.DrRange.Value = 0; + newChannel.Rx1Frequency = 0; + } if( newChannel.Frequency != 0 ) { diff --git a/src/mac/region/RegionEU433.h b/src/mac/region/RegionEU433.h index aa9e16b9a..b4adc2ea0 100644 --- a/src/mac/region/RegionEU433.h +++ b/src/mac/region/RegionEU433.h @@ -45,6 +45,11 @@ */ #define EU433_NUMB_DEFAULT_CHANNELS 3 +/*! + * Number of channels to apply for the CF list + */ +#define EU433_NUMB_CHANNELS_CF_LIST 5 + /*! * Minimal datarate that can be used by the node */ diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index edf9e21da..985d49268 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -421,16 +421,25 @@ void RegionEU868ApplyCFList( ApplyCFListParams_t* applyCFList ) } // Last byte is RFU, don't take it into account - for( uint8_t i = 0, chanIdx = EU868_NUMB_DEFAULT_CHANNELS; i < 15; i+=3, chanIdx++ ) + for( uint8_t i = 0, chanIdx = EU868_NUMB_DEFAULT_CHANNELS; chanIdx < EU868_MAX_NB_CHANNELS; i+=3, chanIdx++ ) { - // Channel frequency - newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; - newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); - newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); - newChannel.Frequency *= 100; - - // Initialize alternative frequency to 0 - newChannel.Rx1Frequency = 0; + if( chanIdx < ( EU868_NUMB_CHANNELS_CF_LIST + EU868_NUMB_DEFAULT_CHANNELS ) ) + { + // Channel frequency + newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); + newChannel.Frequency *= 100; + + // Initialize alternative frequency to 0 + newChannel.Rx1Frequency = 0; + } + else + { + newChannel.Frequency = 0; + newChannel.DrRange.Value = 0; + newChannel.Rx1Frequency = 0; + } if( newChannel.Frequency != 0 ) { diff --git a/src/mac/region/RegionEU868.h b/src/mac/region/RegionEU868.h index 8e10f70e3..d272e4828 100644 --- a/src/mac/region/RegionEU868.h +++ b/src/mac/region/RegionEU868.h @@ -45,6 +45,11 @@ */ #define EU868_NUMB_DEFAULT_CHANNELS 3 +/*! + * Number of channels to apply for the CF list + */ +#define EU868_NUMB_CHANNELS_CF_LIST 5 + /*! * Minimal datarate that can be used by the node */ diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index 5c27580f6..7bf264dfb 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -396,16 +396,25 @@ void RegionIN865ApplyCFList( ApplyCFListParams_t* applyCFList ) } // Last byte is RFU, don't take it into account - for( uint8_t i = 0, chanIdx = IN865_NUMB_DEFAULT_CHANNELS; i < 15; i+=3, chanIdx++ ) + for( uint8_t i = 0, chanIdx = IN865_NUMB_DEFAULT_CHANNELS; chanIdx < IN865_MAX_NB_CHANNELS; i+=3, chanIdx++ ) { - // Channel frequency - newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; - newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); - newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); - newChannel.Frequency *= 100; - - // Initialize alternative frequency to 0 - newChannel.Rx1Frequency = 0; + if( chanIdx < ( IN865_NUMB_CHANNELS_CF_LIST + IN865_NUMB_DEFAULT_CHANNELS ) ) + { + // Channel frequency + newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); + newChannel.Frequency *= 100; + + // Initialize alternative frequency to 0 + newChannel.Rx1Frequency = 0; + } + else + { + newChannel.Frequency = 0; + newChannel.DrRange.Value = 0; + newChannel.Rx1Frequency = 0; + } if( newChannel.Frequency != 0 ) { diff --git a/src/mac/region/RegionIN865.h b/src/mac/region/RegionIN865.h index 5246389ab..9d5a7fb4d 100644 --- a/src/mac/region/RegionIN865.h +++ b/src/mac/region/RegionIN865.h @@ -45,6 +45,11 @@ */ #define IN865_NUMB_DEFAULT_CHANNELS 3 +/*! + * Number of channels to apply for the CF list + */ +#define IN865_NUMB_CHANNELS_CF_LIST 5 + /*! * Minimal datarate that can be used by the node */ diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 743013b5e..0818b4747 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -415,16 +415,25 @@ void RegionKR920ApplyCFList( ApplyCFListParams_t* applyCFList ) } // Last byte is RFU, don't take it into account - for( uint8_t i = 0, chanIdx = KR920_NUMB_DEFAULT_CHANNELS; i < 15; i+=3, chanIdx++ ) + for( uint8_t i = 0, chanIdx = KR920_NUMB_DEFAULT_CHANNELS; chanIdx < KR920_MAX_NB_CHANNELS; i+=3, chanIdx++ ) { - // Channel frequency - newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; - newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); - newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); - newChannel.Frequency *= 100; - - // Initialize alternative frequency to 0 - newChannel.Rx1Frequency = 0; + if( chanIdx < ( KR920_NUMB_CHANNELS_CF_LIST + KR920_NUMB_DEFAULT_CHANNELS ) ) + { + // Channel frequency + newChannel.Frequency = (uint32_t) applyCFList->Payload[i]; + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 1] << 8 ); + newChannel.Frequency |= ( (uint32_t) applyCFList->Payload[i + 2] << 16 ); + newChannel.Frequency *= 100; + + // Initialize alternative frequency to 0 + newChannel.Rx1Frequency = 0; + } + else + { + newChannel.Frequency = 0; + newChannel.DrRange.Value = 0; + newChannel.Rx1Frequency = 0; + } if( newChannel.Frequency != 0 ) { diff --git a/src/mac/region/RegionKR920.h b/src/mac/region/RegionKR920.h index cb7d8732f..afddb021b 100644 --- a/src/mac/region/RegionKR920.h +++ b/src/mac/region/RegionKR920.h @@ -45,6 +45,11 @@ */ #define KR920_NUMB_DEFAULT_CHANNELS 3 +/*! + * Number of channels to apply for the CF list + */ +#define KR920_NUMB_CHANNELS_CF_LIST 5 + /*! * Minimal datarate that can be used by the node */ From 2031feebf453d501329c64523c9f12d6cce0a7df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 12:49:41 +0200 Subject: [PATCH 123/161] Update implementation to allow automatic MAC answers on port 0 --- src/mac/LoRaMac.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index e929fa642..4451aa90c 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -34,7 +34,12 @@ Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jae /*! * Maximum MAC commands buffer size */ -#define LORA_MAC_COMMAND_MAX_LENGTH 15 +#define LORA_MAC_COMMAND_MAX_LENGTH 128 + +/*! + * Maximum length of the fOpts field + */ +#define LORA_MAC_COMMAND_MAX_FOPTS_LENGTH 15 /*! * LoRaMac region. @@ -2082,15 +2087,24 @@ LoRaMacStatus_t PrepareFrame( LoRaMacHeader_t *macHdr, LoRaMacFrameCtrl_t *fCtrl if( ( payload != NULL ) && ( LoRaMacTxPayloadLen > 0 ) ) { - if( ( MacCommandsBufferIndex <= LORA_MAC_COMMAND_MAX_LENGTH ) && ( MacCommandsInNextTx == true ) ) + if( MacCommandsInNextTx == true ) { - fCtrl->Bits.FOptsLen += MacCommandsBufferIndex; + if( MacCommandsBufferIndex <= LORA_MAC_COMMAND_MAX_FOPTS_LENGTH ) + { + fCtrl->Bits.FOptsLen += MacCommandsBufferIndex; - // Update FCtrl field with new value of OptionsLength - LoRaMacBuffer[0x05] = fCtrl->Value; - for( i = 0; i < MacCommandsBufferIndex; i++ ) + // Update FCtrl field with new value of OptionsLength + LoRaMacBuffer[0x05] = fCtrl->Value; + for( i = 0; i < MacCommandsBufferIndex; i++ ) + { + LoRaMacBuffer[pktHeaderLen++] = MacCommandsBuffer[i]; + } + } + else { - LoRaMacBuffer[pktHeaderLen++] = MacCommandsBuffer[i]; + LoRaMacTxPayloadLen = MacCommandsBufferIndex; + payload = MacCommandsBuffer; + framePort = 0; } } } From 2e1de561e56ffa941e1b79e4acd502c0ac4f4a77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 12:55:15 +0200 Subject: [PATCH 124/161] Issue(#238): Update the backoff procedure for all regions. Move code parts into the common section --- src/mac/LoRaMac.c | 17 ++++++ src/mac/region/Region.h | 4 ++ src/mac/region/RegionAS923.c | 39 +++++-------- src/mac/region/RegionAU915.c | 31 ++++++----- src/mac/region/RegionCN470.c | 31 ++++++----- src/mac/region/RegionCN779.c | 39 +++++-------- src/mac/region/RegionCommon.c | 85 ++++++++++++++++++++++++++--- src/mac/region/RegionCommon.h | 50 ++++++++++++++++- src/mac/region/RegionEU433.c | 39 +++++-------- src/mac/region/RegionEU868.c | 39 +++++-------- src/mac/region/RegionIN865.c | 39 +++++-------- src/mac/region/RegionKR920.c | 41 +++++--------- src/mac/region/RegionUS915-Hybrid.c | 31 ++++++----- src/mac/region/RegionUS915.c | 31 ++++++----- 14 files changed, 294 insertions(+), 222 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 4451aa90c..01faa705c 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -268,6 +268,11 @@ static uint8_t Channel; */ static uint8_t LastTxChannel; +/*! + * Set to true, if the last uplink was a join request + */ +static bool LastTxIsJoinRequest; + /*! * Stores the time at LoRaMac initialization. * @@ -642,10 +647,21 @@ static void OnRadioTxDone( void ) LoRaMacFlags.Bits.MacDone = 1; } + // Verify if the last uplink was a join request + if( ( LoRaMacFlags.Bits.MlmeReq == 1 ) && ( MlmeConfirm.MlmeRequest == MLME_JOIN ) ) + { + LastTxIsJoinRequest = true; + } + else + { + LastTxIsJoinRequest = false; + } + // Store last Tx channel LastTxChannel = Channel; // Update last tx done time for the current channel txDone.Channel = Channel; + txDone.Joined = IsLoRaMacNetworkJoined; txDone.LastTxDoneTime = curTime; RegionSetBandTxDone( LoRaMacRegion, &txDone ); // Update Aggregated last tx done time @@ -1943,6 +1959,7 @@ static void CalculateBackOff( uint8_t channel ) calcBackOff.Channel = channel; calcBackOff.ElapsedTime = TimerGetElapsedTime( LoRaMacInitializationTime ); calcBackOff.TxTimeOnAir = TxTimeOnAir; + calcBackOff.LastTxIsJoinRequest = LastTxIsJoinRequest; // Update regional back-off RegionCalcBackOff( LoRaMacRegion, &calcBackOff ); diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index 5db80a96f..b1727b5de 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -1037,6 +1037,10 @@ typedef struct sCalcBackOffParams * Set to true, if the node has already joined a network, otherwise false. */ bool Joined; + /*! + * Joined Set to true, if the last uplink was a join request + */ + bool LastTxIsJoinRequest; /*! * Set to true, if the duty cycle is enabled, otherwise false. */ diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index 1e53795f7..1dca1a95b 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -342,7 +342,7 @@ PhyParam_t RegionAS923GetPhyParam( GetPhyParams_t* getPhy ) void RegionAS923SetBandTxDone( SetBandTxDoneParams_t* txDone ) { - RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); + RegionCommonSetBandTxDone( txDone->Joined, &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); } void RegionAS923InitDefaults( InitType_t type ) @@ -903,29 +903,18 @@ int8_t RegionAS923AlternateDr( AlternateDrParams_t* alternateDr ) void RegionAS923CalcBackOff( CalcBackOffParams_t* calcBackOff ) { - uint8_t channel = calcBackOff->Channel; - uint16_t dutyCycle = Bands[Channels[channel].Band].DCycle; - uint16_t joinDutyCycle = 0; - - // Reset time-off to initial value. - Bands[Channels[channel].Band].TimeOff = 0; - - if( calcBackOff->Joined == false ) - { - // Get the join duty cycle - joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); - // Apply the most restricting duty cycle - dutyCycle = MAX( dutyCycle, joinDutyCycle ); - // Apply band time-off. - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; - } - else - { - if( calcBackOff->DutyCycleEnabled == true ) - { - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; - } - } + RegionCommonCalcBackOffParams_t calcBackOffParams; + + calcBackOffParams.Channels = Channels; + calcBackOffParams.Bands = Bands; + calcBackOffParams.LastTxIsJoinRequest = calcBackOff->LastTxIsJoinRequest; + calcBackOffParams.Joined = calcBackOff->Joined; + calcBackOffParams.DutyCycleEnabled = calcBackOff->DutyCycleEnabled; + calcBackOffParams.Channel = calcBackOff->Channel; + calcBackOffParams.ElapsedTime = calcBackOff->ElapsedTime; + calcBackOffParams.TxTimeOnAir = calcBackOff->TxTimeOnAir; + + RegionCommonCalcBackOff( &calcBackOffParams ); } bool RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) @@ -947,7 +936,7 @@ bool RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, *aggregatedTimeOff = 0; // Update bands Time OFF - nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, AS923_MAX_NB_BANDS ); + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->Joined, nextChanParams->DutyCycleEnabled, Bands, AS923_MAX_NB_BANDS ); // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Joined, nextChanParams->Datarate, diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 026c55ead..85f68756e 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -286,7 +286,7 @@ PhyParam_t RegionAU915GetPhyParam( GetPhyParams_t* getPhy ) void RegionAU915SetBandTxDone( SetBandTxDoneParams_t* txDone ) { - RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); + RegionCommonSetBandTxDone( txDone->Joined, &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); } void RegionAU915InitDefaults( InitType_t type ) @@ -747,20 +747,18 @@ int8_t RegionAU915AlternateDr( AlternateDrParams_t* alternateDr ) void RegionAU915CalcBackOff( CalcBackOffParams_t* calcBackOff ) { - uint8_t channel = calcBackOff->Channel; - uint16_t joinDutyCycle = 0; - - if( calcBackOff->Joined == false ) - { - // Get the join duty cycle - joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); - // Apply band time-off. - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * joinDutyCycle - calcBackOff->TxTimeOnAir; - } - else - { - Bands[Channels[channel].Band].TimeOff = 0; - } + RegionCommonCalcBackOffParams_t calcBackOffParams; + + calcBackOffParams.Channels = Channels; + calcBackOffParams.Bands = Bands; + calcBackOffParams.LastTxIsJoinRequest = calcBackOff->LastTxIsJoinRequest; + calcBackOffParams.Joined = calcBackOff->Joined; + calcBackOffParams.DutyCycleEnabled = calcBackOff->DutyCycleEnabled; + calcBackOffParams.Channel = calcBackOff->Channel; + calcBackOffParams.ElapsedTime = calcBackOff->ElapsedTime; + calcBackOffParams.TxTimeOnAir = calcBackOff->TxTimeOnAir; + + RegionCommonCalcBackOff( &calcBackOffParams ); } bool RegionAU915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) @@ -789,6 +787,9 @@ bool RegionAU915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, // Reset Aggregated time off *aggregatedTimeOff = 0; + // Update bands Time OFF + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->Joined, nextChanParams->DutyCycleEnabled, Bands, AU915_MAX_NB_BANDS ); + // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, ChannelsMaskRemaining, Channels, diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index 6db812899..8f7651dcb 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -281,7 +281,7 @@ PhyParam_t RegionCN470GetPhyParam( GetPhyParams_t* getPhy ) void RegionCN470SetBandTxDone( SetBandTxDoneParams_t* txDone ) { - RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); + RegionCommonSetBandTxDone( txDone->Joined, &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); } void RegionCN470InitDefaults( InitType_t type ) @@ -702,20 +702,18 @@ int8_t RegionCN470AlternateDr( AlternateDrParams_t* alternateDr ) void RegionCN470CalcBackOff( CalcBackOffParams_t* calcBackOff ) { - uint8_t channel = calcBackOff->Channel; - uint16_t joinDutyCycle = 0; - - if( calcBackOff->Joined == false ) - { - // Get the join duty cycle - joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); - // Apply band time-off. - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * joinDutyCycle - calcBackOff->TxTimeOnAir; - } - else - { - Bands[Channels[channel].Band].TimeOff = 0; - } + RegionCommonCalcBackOffParams_t calcBackOffParams; + + calcBackOffParams.Channels = Channels; + calcBackOffParams.Bands = Bands; + calcBackOffParams.LastTxIsJoinRequest = calcBackOff->LastTxIsJoinRequest; + calcBackOffParams.Joined = calcBackOff->Joined; + calcBackOffParams.DutyCycleEnabled = calcBackOff->DutyCycleEnabled; + calcBackOffParams.Channel = calcBackOff->Channel; + calcBackOffParams.ElapsedTime = calcBackOff->ElapsedTime; + calcBackOffParams.TxTimeOnAir = calcBackOff->TxTimeOnAir; + + RegionCommonCalcBackOff( &calcBackOffParams ); } bool RegionCN470NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) @@ -741,6 +739,9 @@ bool RegionCN470NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, // Reset Aggregated time off *aggregatedTimeOff = 0; + // Update bands Time OFF + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->Joined, nextChanParams->DutyCycleEnabled, Bands, CN470_MAX_NB_BANDS ); + // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, ChannelsMask, Channels, diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index cab0c213a..36c5ed8fb 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -303,7 +303,7 @@ PhyParam_t RegionCN779GetPhyParam( GetPhyParams_t* getPhy ) void RegionCN779SetBandTxDone( SetBandTxDoneParams_t* txDone ) { - RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); + RegionCommonSetBandTxDone( txDone->Joined, &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); } void RegionCN779InitDefaults( InitType_t type ) @@ -858,29 +858,18 @@ int8_t RegionCN779AlternateDr( AlternateDrParams_t* alternateDr ) void RegionCN779CalcBackOff( CalcBackOffParams_t* calcBackOff ) { - uint8_t channel = calcBackOff->Channel; - uint16_t dutyCycle = Bands[Channels[channel].Band].DCycle; - uint16_t joinDutyCycle = 0; - - // Reset time-off to initial value. - Bands[Channels[channel].Band].TimeOff = 0; - - if( calcBackOff->Joined == false ) - { - // Get the join duty cycle - joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); - // Apply the most restricting duty cycle - dutyCycle = MAX( dutyCycle, joinDutyCycle ); - // Apply band time-off. - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; - } - else - { - if( calcBackOff->DutyCycleEnabled == true ) - { - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; - } - } + RegionCommonCalcBackOffParams_t calcBackOffParams; + + calcBackOffParams.Channels = Channels; + calcBackOffParams.Bands = Bands; + calcBackOffParams.LastTxIsJoinRequest = calcBackOff->LastTxIsJoinRequest; + calcBackOffParams.Joined = calcBackOff->Joined; + calcBackOffParams.DutyCycleEnabled = calcBackOff->DutyCycleEnabled; + calcBackOffParams.Channel = calcBackOff->Channel; + calcBackOffParams.ElapsedTime = calcBackOff->ElapsedTime; + calcBackOffParams.TxTimeOnAir = calcBackOff->TxTimeOnAir; + + RegionCommonCalcBackOff( &calcBackOffParams ); } bool RegionCN779NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) @@ -901,7 +890,7 @@ bool RegionCN779NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, *aggregatedTimeOff = 0; // Update bands Time OFF - nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, CN779_MAX_NB_BANDS ); + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->Joined, nextChanParams->DutyCycleEnabled, Bands, CN779_MAX_NB_BANDS ); // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Joined, nextChanParams->Datarate, diff --git a/src/mac/region/RegionCommon.c b/src/mac/region/RegionCommon.c index 00af677e8..ba77d8708 100644 --- a/src/mac/region/RegionCommon.c +++ b/src/mac/region/RegionCommon.c @@ -147,34 +147,58 @@ void RegionCommonChanMaskCopy( uint16_t* channelsMaskDest, uint16_t* channelsMas } } -void RegionCommonSetBandTxDone( Band_t* band, TimerTime_t lastTxDone ) +void RegionCommonSetBandTxDone( bool joined, Band_t* band, TimerTime_t lastTxDone ) { - band->LastTxDoneTime = lastTxDone; + if( joined == true ) + { + band->LastTxDoneTime = lastTxDone; + } + else + { + band->LastJoinTxDoneTime = lastTxDone; + } } -TimerTime_t RegionCommonUpdateBandTimeOff( bool dutyCycle, Band_t* bands, uint8_t nbBands ) +TimerTime_t RegionCommonUpdateBandTimeOff( bool joined, bool dutyCycle, Band_t* bands, uint8_t nbBands ) { TimerTime_t nextTxDelay = ( TimerTime_t )( -1 ); // Update bands Time OFF for( uint8_t i = 0; i < nbBands; i++ ) { - if( dutyCycle == true ) + if( joined == false ) { - if( bands[i].TimeOff <= TimerGetElapsedTime( bands[i].LastTxDoneTime ) ) + uint32_t txDoneTime = MAX( TimerGetElapsedTime( bands[i].LastJoinTxDoneTime ), + ( dutyCycle == true ) ? TimerGetElapsedTime( bands[i].LastTxDoneTime ) : 0 ); + + if( bands[i].TimeOff <= txDoneTime ) { bands[i].TimeOff = 0; } if( bands[i].TimeOff != 0 ) { - nextTxDelay = MIN( bands[i].TimeOff - TimerGetElapsedTime( bands[i].LastTxDoneTime ), - nextTxDelay ); + nextTxDelay = MIN( bands[i].TimeOff - txDoneTime, nextTxDelay ); } } else { - nextTxDelay = 0; - bands[i].TimeOff = 0; + if( dutyCycle == true ) + { + if( bands[i].TimeOff <= TimerGetElapsedTime( bands[i].LastTxDoneTime ) ) + { + bands[i].TimeOff = 0; + } + if( bands[i].TimeOff != 0 ) + { + nextTxDelay = MIN( bands[i].TimeOff - TimerGetElapsedTime( bands[i].LastTxDoneTime ), + nextTxDelay ); + } + } + else + { + nextTxDelay = 0; + bands[i].TimeOff = 0; + } } } return nextTxDelay; @@ -228,3 +252,46 @@ int8_t RegionCommonComputeTxPower( int8_t txPowerIndex, float maxEirp, float ant return phyTxPower; } + +void RegionCommonCalcBackOff( RegionCommonCalcBackOffParams_t* calcBackOffParams ) +{ + uint8_t bandIdx = calcBackOffParams->Channels[calcBackOffParams->Channel].Band; + uint16_t dutyCycle = calcBackOffParams->Bands[bandIdx].DCycle; + uint16_t joinDutyCycle = 0; + + // Reset time-off to initial value. + calcBackOffParams->Bands[bandIdx].TimeOff = 0; + + if( calcBackOffParams->Joined == false ) + { + // Get the join duty cycle + joinDutyCycle = RegionCommonGetJoinDc( calcBackOffParams->ElapsedTime ); + // Apply the most restricting duty cycle + dutyCycle = MAX( dutyCycle, joinDutyCycle ); + // Reset the timeoff if the last frame was not a join request and when the duty cycle is not enabled + if( ( calcBackOffParams->DutyCycleEnabled == false ) && ( calcBackOffParams->LastTxIsJoinRequest == false ) ) + { + // This is the case when the duty cycle is off and the last uplink frame was not a join. + // This could happen in case of a rejoin, e.g. in compliance test mode. + // In this special case we have to set the time off to 0, since the join duty cycle shall only + // be applied after the first join request. + calcBackOffParams->Bands[bandIdx].TimeOff = 0; + } + else + { + // Apply band time-off. + calcBackOffParams->Bands[bandIdx].TimeOff = calcBackOffParams->TxTimeOnAir * dutyCycle - calcBackOffParams->TxTimeOnAir; + } + } + else + { + if( calcBackOffParams->DutyCycleEnabled == true ) + { + calcBackOffParams->Bands[bandIdx].TimeOff = calcBackOffParams->TxTimeOnAir * dutyCycle - calcBackOffParams->TxTimeOnAir; + } + else + { + calcBackOffParams->Bands[bandIdx].TimeOff = 0; + } + } +} diff --git a/src/mac/region/RegionCommon.h b/src/mac/region/RegionCommon.h index 7db59bb6b..3a48d40f7 100644 --- a/src/mac/region/RegionCommon.h +++ b/src/mac/region/RegionCommon.h @@ -58,6 +58,41 @@ typedef struct sLinkAdrParams */ uint16_t ChMask; }LinkAdrParams_t; +typedef struct sRegionCommonCalcBackOffParams +{ + /*! + * A pointer to region specific channels. + */ + ChannelParams_t* Channels; + /*! + * A pointer to region specific bands. + */ + Band_t* Bands; + /*! + * Set to true, if the last uplink was a join request. + */ + bool LastTxIsJoinRequest; + /*! + * Set to true, if the node is joined. + */ + bool Joined; + /*! + * Set to true, if the duty cycle is enabled. + */ + bool DutyCycleEnabled; + /*! + * The current channel. + */ + uint8_t Channel; + /*! + * The elapsed time since initialization. + */ + TimerTime_t ElapsedTime; + /*! + * The time on air of the last Tx frame. + */ + TimerTime_t TxTimeOnAir; +}RegionCommonCalcBackOffParams_t; /*! * \brief Calculates the join duty cycle. @@ -148,16 +183,20 @@ void RegionCommonChanMaskCopy( uint16_t* channelsMaskDest, uint16_t* channelsMas * \brief Sets the last tx done property. * This is a generic function and valid for all regions. * + * \param [IN] joined Set to true, if the node has joined the network + * * \param [IN] band The band to be updated. * * \param [IN] lastTxDone The time of the last TX done. */ -void RegionCommonSetBandTxDone( Band_t* band, TimerTime_t lastTxDone ); +void RegionCommonSetBandTxDone( bool joined, Band_t* band, TimerTime_t lastTxDone ); /*! * \brief Updates the time-offs of the bands. * This is a generic function and valid for all regions. * + * \param [IN] joined Set to true, if the node has joined the network + * * \param [IN] dutyCycle Set to true, if the duty cycle is enabled. * * \param [IN] bands A pointer to the bands. @@ -166,7 +205,7 @@ void RegionCommonSetBandTxDone( Band_t* band, TimerTime_t lastTxDone ); * * \retval Returns the time which must be waited to perform the next uplink. */ -TimerTime_t RegionCommonUpdateBandTimeOff( bool dutyCycle, Band_t* bands, uint8_t nbBands ); +TimerTime_t RegionCommonUpdateBandTimeOff( bool joined, bool dutyCycle, Band_t* bands, uint8_t nbBands ); /*! * \brief Parses the parameter of an LinkAdrRequest. @@ -235,6 +274,13 @@ void RegionCommonComputeRxWindowParameters( double tSymbol, uint8_t minRxSymbols */ int8_t RegionCommonComputeTxPower( int8_t txPowerIndex, float maxEirp, float antennaGain ); +/*! + * \brief Calculates the duty cycle for the current band. + * + * \param [IN] calcBackOffParams A pointer to the input parameters. + */ +void RegionCommonCalcBackOff( RegionCommonCalcBackOffParams_t* calcBackOffParams ); + /*! \} defgroup REGIONCOMMON */ #endif // __REGIONCOMMON_H__ diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index 26dccceb9..f9a8354e0 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -303,7 +303,7 @@ PhyParam_t RegionEU433GetPhyParam( GetPhyParams_t* getPhy ) void RegionEU433SetBandTxDone( SetBandTxDoneParams_t* txDone ) { - RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); + RegionCommonSetBandTxDone( txDone->Joined, &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); } void RegionEU433InitDefaults( InitType_t type ) @@ -857,29 +857,18 @@ int8_t RegionEU433AlternateDr( AlternateDrParams_t* alternateDr ) void RegionEU433CalcBackOff( CalcBackOffParams_t* calcBackOff ) { - uint8_t channel = calcBackOff->Channel; - uint16_t dutyCycle = Bands[Channels[channel].Band].DCycle; - uint16_t joinDutyCycle = 0; - - // Reset time-off to initial value. - Bands[Channels[channel].Band].TimeOff = 0; - - if( calcBackOff->Joined == false ) - { - // Get the join duty cycle - joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); - // Apply the most restricting duty cycle - dutyCycle = MAX( dutyCycle, joinDutyCycle ); - // Apply band time-off. - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; - } - else - { - if( calcBackOff->DutyCycleEnabled == true ) - { - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; - } - } + RegionCommonCalcBackOffParams_t calcBackOffParams; + + calcBackOffParams.Channels = Channels; + calcBackOffParams.Bands = Bands; + calcBackOffParams.LastTxIsJoinRequest = calcBackOff->LastTxIsJoinRequest; + calcBackOffParams.Joined = calcBackOff->Joined; + calcBackOffParams.DutyCycleEnabled = calcBackOff->DutyCycleEnabled; + calcBackOffParams.Channel = calcBackOff->Channel; + calcBackOffParams.ElapsedTime = calcBackOff->ElapsedTime; + calcBackOffParams.TxTimeOnAir = calcBackOff->TxTimeOnAir; + + RegionCommonCalcBackOff( &calcBackOffParams ); } bool RegionEU433NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) @@ -900,7 +889,7 @@ bool RegionEU433NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, *aggregatedTimeOff = 0; // Update bands Time OFF - nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, EU433_MAX_NB_BANDS ); + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->Joined, nextChanParams->DutyCycleEnabled, Bands, EU433_MAX_NB_BANDS ); // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Joined, nextChanParams->Datarate, diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index 985d49268..0248ca02f 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -332,7 +332,7 @@ PhyParam_t RegionEU868GetPhyParam( GetPhyParams_t* getPhy ) void RegionEU868SetBandTxDone( SetBandTxDoneParams_t* txDone ) { - RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); + RegionCommonSetBandTxDone( txDone->Joined, &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); } void RegionEU868InitDefaults( InitType_t type ) @@ -889,29 +889,18 @@ int8_t RegionEU868AlternateDr( AlternateDrParams_t* alternateDr ) void RegionEU868CalcBackOff( CalcBackOffParams_t* calcBackOff ) { - uint8_t channel = calcBackOff->Channel; - uint16_t dutyCycle = Bands[Channels[channel].Band].DCycle; - uint16_t joinDutyCycle = 0; - - // Reset time-off to initial value. - Bands[Channels[channel].Band].TimeOff = 0; - - if( calcBackOff->Joined == false ) - { - // Get the join duty cycle - joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); - // Apply the most restricting duty cycle - dutyCycle = MAX( dutyCycle, joinDutyCycle ); - // Apply band time-off. - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; - } - else - { - if( calcBackOff->DutyCycleEnabled == true ) - { - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; - } - } + RegionCommonCalcBackOffParams_t calcBackOffParams; + + calcBackOffParams.Channels = Channels; + calcBackOffParams.Bands = Bands; + calcBackOffParams.LastTxIsJoinRequest = calcBackOff->LastTxIsJoinRequest; + calcBackOffParams.Joined = calcBackOff->Joined; + calcBackOffParams.DutyCycleEnabled = calcBackOff->DutyCycleEnabled; + calcBackOffParams.Channel = calcBackOff->Channel; + calcBackOffParams.ElapsedTime = calcBackOff->ElapsedTime; + calcBackOffParams.TxTimeOnAir = calcBackOff->TxTimeOnAir; + + RegionCommonCalcBackOff( &calcBackOffParams ); } bool RegionEU868NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) @@ -932,7 +921,7 @@ bool RegionEU868NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, *aggregatedTimeOff = 0; // Update bands Time OFF - nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, EU868_MAX_NB_BANDS ); + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->Joined, nextChanParams->DutyCycleEnabled, Bands, EU868_MAX_NB_BANDS ); // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Joined, nextChanParams->Datarate, diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index 7bf264dfb..b56af6a57 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -307,7 +307,7 @@ PhyParam_t RegionIN865GetPhyParam( GetPhyParams_t* getPhy ) void RegionIN865SetBandTxDone( SetBandTxDoneParams_t* txDone ) { - RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); + RegionCommonSetBandTxDone( txDone->Joined, &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); } void RegionIN865InitDefaults( InitType_t type ) @@ -863,29 +863,18 @@ int8_t RegionIN865AlternateDr( AlternateDrParams_t* alternateDr ) void RegionIN865CalcBackOff( CalcBackOffParams_t* calcBackOff ) { - uint8_t channel = calcBackOff->Channel; - uint16_t dutyCycle = Bands[Channels[channel].Band].DCycle; - uint16_t joinDutyCycle = 0; - - // Reset time-off to initial value. - Bands[Channels[channel].Band].TimeOff = 0; - - if( calcBackOff->Joined == false ) - { - // Get the join duty cycle - joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); - // Apply the most restricting duty cycle - dutyCycle = MAX( dutyCycle, joinDutyCycle ); - // Apply band time-off. - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; - } - else - { - if( calcBackOff->DutyCycleEnabled == true ) - { - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; - } - } + RegionCommonCalcBackOffParams_t calcBackOffParams; + + calcBackOffParams.Channels = Channels; + calcBackOffParams.Bands = Bands; + calcBackOffParams.LastTxIsJoinRequest = calcBackOff->LastTxIsJoinRequest; + calcBackOffParams.Joined = calcBackOff->Joined; + calcBackOffParams.DutyCycleEnabled = calcBackOff->DutyCycleEnabled; + calcBackOffParams.Channel = calcBackOff->Channel; + calcBackOffParams.ElapsedTime = calcBackOff->ElapsedTime; + calcBackOffParams.TxTimeOnAir = calcBackOff->TxTimeOnAir; + + RegionCommonCalcBackOff( &calcBackOffParams ); } bool RegionIN865NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) @@ -906,7 +895,7 @@ bool RegionIN865NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, *aggregatedTimeOff = 0; // Update bands Time OFF - nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, IN865_MAX_NB_BANDS ); + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->Joined, nextChanParams->DutyCycleEnabled, Bands, IN865_MAX_NB_BANDS ); // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Joined, nextChanParams->Datarate, diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 0818b4747..0a76c21ff 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -326,7 +326,7 @@ PhyParam_t RegionKR920GetPhyParam( GetPhyParams_t* getPhy ) void RegionKR920SetBandTxDone( SetBandTxDoneParams_t* txDone ) { - RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); + RegionCommonSetBandTxDone( txDone->Joined, &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); } void RegionKR920InitDefaults( InitType_t type ) @@ -858,29 +858,18 @@ int8_t RegionKR920AlternateDr( AlternateDrParams_t* alternateDr ) void RegionKR920CalcBackOff( CalcBackOffParams_t* calcBackOff ) { - uint8_t channel = calcBackOff->Channel; - uint16_t dutyCycle = Bands[Channels[channel].Band].DCycle; - uint16_t joinDutyCycle = 0; - - // Reset time-off to initial value. - Bands[Channels[channel].Band].TimeOff = 0; - - if( calcBackOff->Joined == false ) - { - // Get the join duty cycle - joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); - // Apply the most restricting duty cycle - dutyCycle = MAX( dutyCycle, joinDutyCycle ); - // Apply band time-off. - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; - } - else - { - if( calcBackOff->DutyCycleEnabled == true ) - { - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * dutyCycle - calcBackOff->TxTimeOnAir; - } - } + RegionCommonCalcBackOffParams_t calcBackOffParams; + + calcBackOffParams.Channels = Channels; + calcBackOffParams.Bands = Bands; + calcBackOffParams.LastTxIsJoinRequest = calcBackOff->LastTxIsJoinRequest; + calcBackOffParams.Joined = calcBackOff->Joined; + calcBackOffParams.DutyCycleEnabled = calcBackOff->DutyCycleEnabled; + calcBackOffParams.Channel = calcBackOff->Channel; + calcBackOffParams.ElapsedTime = calcBackOff->ElapsedTime; + calcBackOffParams.TxTimeOnAir = calcBackOff->TxTimeOnAir; + + RegionCommonCalcBackOff( &calcBackOffParams ); } bool RegionKR920NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) @@ -902,7 +891,7 @@ bool RegionKR920NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, *aggregatedTimeOff = 0; // Update bands Time OFF - nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->DutyCycleEnabled, Bands, KR920_MAX_NB_BANDS ); + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->Joined, nextChanParams->DutyCycleEnabled, Bands, KR920_MAX_NB_BANDS ); // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Joined, nextChanParams->Datarate, @@ -1037,7 +1026,7 @@ void RegionKR920SetContinuousWave( ContinuousWaveParams_t* continuousWave ) uint32_t frequency = Channels[continuousWave->Channel].Frequency; // Calculate physical TX power - phyTxPower = RegionCommonComputeTxPower( txPowerLimited, continuousWave->MaxEirp, continuousWave->AntennaGain ); + phyTxPower = RegionCommonComputeTxPower( txPowerLimited, maxEIRP, continuousWave->AntennaGain ); Radio.SetTxContinuousWave( frequency, phyTxPower, continuousWave->Timeout ); } diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index a6e5b5664..fa19fc043 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -382,7 +382,7 @@ PhyParam_t RegionUS915HybridGetPhyParam( GetPhyParams_t* getPhy ) void RegionUS915HybridSetBandTxDone( SetBandTxDoneParams_t* txDone ) { - RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); + RegionCommonSetBandTxDone( txDone->Joined, &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); } void RegionUS915HybridInitDefaults( InitType_t type ) @@ -848,20 +848,18 @@ int8_t RegionUS915HybridAlternateDr( AlternateDrParams_t* alternateDr ) void RegionUS915HybridCalcBackOff( CalcBackOffParams_t* calcBackOff ) { - uint8_t channel = calcBackOff->Channel; - uint16_t joinDutyCycle = 0; - - if( calcBackOff->Joined == false ) - { - // Get the join duty cycle - joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); - // Apply band time-off. - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * joinDutyCycle - calcBackOff->TxTimeOnAir; - } - else - { - Bands[Channels[channel].Band].TimeOff = 0; - } + RegionCommonCalcBackOffParams_t calcBackOffParams; + + calcBackOffParams.Channels = Channels; + calcBackOffParams.Bands = Bands; + calcBackOffParams.LastTxIsJoinRequest = calcBackOff->LastTxIsJoinRequest; + calcBackOffParams.Joined = calcBackOff->Joined; + calcBackOffParams.DutyCycleEnabled = calcBackOff->DutyCycleEnabled; + calcBackOffParams.Channel = calcBackOff->Channel; + calcBackOffParams.ElapsedTime = calcBackOff->ElapsedTime; + calcBackOffParams.TxTimeOnAir = calcBackOff->TxTimeOnAir; + + RegionCommonCalcBackOff( &calcBackOffParams ); } bool RegionUS915HybridNextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) @@ -890,6 +888,9 @@ bool RegionUS915HybridNextChannel( NextChanParams_t* nextChanParams, uint8_t* ch // Reset Aggregated time off *aggregatedTimeOff = 0; + // Update bands Time OFF + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->Joined, nextChanParams->DutyCycleEnabled, Bands, US915_HYBRID_MAX_NB_BANDS ); + // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, ChannelsMaskRemaining, Channels, diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 17f13c995..0ab49a85f 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -293,7 +293,7 @@ PhyParam_t RegionUS915GetPhyParam( GetPhyParams_t* getPhy ) void RegionUS915SetBandTxDone( SetBandTxDoneParams_t* txDone ) { - RegionCommonSetBandTxDone( &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); + RegionCommonSetBandTxDone( txDone->Joined, &Bands[Channels[txDone->Channel].Band], txDone->LastTxDoneTime ); } void RegionUS915InitDefaults( InitType_t type ) @@ -755,20 +755,18 @@ int8_t RegionUS915AlternateDr( AlternateDrParams_t* alternateDr ) void RegionUS915CalcBackOff( CalcBackOffParams_t* calcBackOff ) { - uint8_t channel = calcBackOff->Channel; - uint16_t joinDutyCycle = 0; - - if( calcBackOff->Joined == false ) - { - // Get the join duty cycle - joinDutyCycle = RegionCommonGetJoinDc( calcBackOff->ElapsedTime ); - // Apply band time-off. - Bands[Channels[channel].Band].TimeOff = calcBackOff->TxTimeOnAir * joinDutyCycle - calcBackOff->TxTimeOnAir; - } - else - { - Bands[Channels[channel].Band].TimeOff = 0; - } + RegionCommonCalcBackOffParams_t calcBackOffParams; + + calcBackOffParams.Channels = Channels; + calcBackOffParams.Bands = Bands; + calcBackOffParams.LastTxIsJoinRequest = calcBackOff->LastTxIsJoinRequest; + calcBackOffParams.Joined = calcBackOff->Joined; + calcBackOffParams.DutyCycleEnabled = calcBackOff->DutyCycleEnabled; + calcBackOffParams.Channel = calcBackOff->Channel; + calcBackOffParams.ElapsedTime = calcBackOff->ElapsedTime; + calcBackOffParams.TxTimeOnAir = calcBackOff->TxTimeOnAir; + + RegionCommonCalcBackOff( &calcBackOffParams ); } bool RegionUS915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff ) @@ -797,6 +795,9 @@ bool RegionUS915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, // Reset Aggregated time off *aggregatedTimeOff = 0; + // Update bands Time OFF + nextTxDelay = RegionCommonUpdateBandTimeOff( nextChanParams->Joined, nextChanParams->DutyCycleEnabled, Bands, US915_MAX_NB_BANDS ); + // Search how many channels are enabled nbEnabledChannels = CountNbOfEnabledChannels( nextChanParams->Datarate, ChannelsMaskRemaining, Channels, From 011159be58426ba247aaaff79c2533aca4189be2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 12:58:18 +0200 Subject: [PATCH 125/161] Update the MAC to enable the server to control the Channels Mask and the number of transmissions even ADR is off --- src/mac/LoRaMac.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 01faa705c..3233e2121 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1683,6 +1683,11 @@ static void ProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t comm // Fill parameter structure linkAdrReq.Payload = &payload[macIndex - 1]; linkAdrReq.PayloadSize = commandsSize - ( macIndex - 1 ); + linkAdrReq.AdrEnabled = AdrCtrlOn; + linkAdrReq.UplinkDwellTime = LoRaMacParams.UplinkDwellTime; + linkAdrReq.CurrentDatarate = LoRaMacParams.ChannelsDatarate; + linkAdrReq.CurrentTxPower = LoRaMacParams.ChannelsTxPower; + linkAdrReq.CurrentNbRep = LoRaMacParams.ChannelsNbRep; // Process the ADR requests status = RegionLinkAdrReq( LoRaMacRegion, &linkAdrReq, &linkAdrDatarate, @@ -1690,18 +1695,9 @@ static void ProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t comm if( ( status & 0x07 ) == 0x07 ) { - if( ( AdrCtrlOn == false ) && - ( ( LoRaMacParams.ChannelsDatarate != linkAdrDatarate ) || - ( LoRaMacParams.ChannelsTxPower != linkAdrTxPower ) ) ) - { // ADR disabled don't handle ADR requests if server tries to change datarate or tx power - status = 0; - } - else - { - LoRaMacParams.ChannelsDatarate = linkAdrDatarate; - LoRaMacParams.ChannelsTxPower = linkAdrTxPower; - LoRaMacParams.ChannelsNbRep = linkAdrNbRep; - } + LoRaMacParams.ChannelsDatarate = linkAdrDatarate; + LoRaMacParams.ChannelsTxPower = linkAdrTxPower; + LoRaMacParams.ChannelsNbRep = linkAdrNbRep; } // Add the answers to the buffer From 518639fda5755067fa3b30123e731ce4c65db246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 12:58:56 +0200 Subject: [PATCH 126/161] Isse(#238): Apply missing variable in struct sBand --- src/mac/LoRaMac.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index d66c885c9..0e0dabc16 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -160,6 +160,10 @@ typedef struct sBand * Maximum Tx power */ int8_t TxMaxPower; + /*! + * Time stamp of the last JoinReq Tx frame. + */ + TimerTime_t LastJoinTxDoneTime; /*! * Time stamp of the last Tx frame */ From a0f0320b9423c21226b986edd72c722701034e28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 12:59:44 +0200 Subject: [PATCH 127/161] Bug fix in processing MAC commands for case SRV_MAC_TX_PARAM_SETUP_REQ. --- src/mac/LoRaMac.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 3233e2121..b2409a978 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1794,11 +1794,11 @@ static void ProcessMacCommands( uint8_t *payload, uint8_t macIndex, uint8_t comm if( ( eirpDwellTime & 0x20 ) == 0x20 ) { - txParamSetupReq.UplinkDwellTime = 1; + txParamSetupReq.DownlinkDwellTime = 1; } if( ( eirpDwellTime & 0x10 ) == 0x10 ) { - txParamSetupReq.DownlinkDwellTime = 1; + txParamSetupReq.UplinkDwellTime = 1; } txParamSetupReq.MaxEirp = eirpDwellTime & 0x0F; From fc00d9a7d101021ab6b687413c3a08130c7889a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 13:00:32 +0200 Subject: [PATCH 128/161] Issue(#238): Apply missing variable in sSetBandTxDoneParams --- src/mac/region/Region.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index b1727b5de..b007fbc2e 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -748,6 +748,10 @@ typedef struct sSetBandTxDoneParams * Channel to update. */ uint8_t Channel; + /*! + * Joined Set to true, if the node has joined the network + */ + bool Joined; /*! * Last TX done time. */ From 03518687ca68e50ec333f01580afa9080191f3c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 13:16:32 +0200 Subject: [PATCH 129/161] Rename data structure LinkAdrParams_t --- src/mac/region/RegionAS923.c | 2 +- src/mac/region/RegionAU915.c | 2 +- src/mac/region/RegionCN470.c | 2 +- src/mac/region/RegionCN779.c | 2 +- src/mac/region/RegionCommon.c | 2 +- src/mac/region/RegionCommon.h | 6 +++--- src/mac/region/RegionEU433.c | 2 +- src/mac/region/RegionEU868.c | 2 +- src/mac/region/RegionIN865.c | 2 +- src/mac/region/RegionKR920.c | 2 +- src/mac/region/RegionUS915-Hybrid.c | 2 +- src/mac/region/RegionUS915.c | 2 +- 12 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index 1dca1a95b..56e25dc12 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -687,7 +687,7 @@ bool RegionAS923TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint8_t RegionAS923LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) { uint8_t status = 0x07; - LinkAdrParams_t linkAdrParams; + RegionCommonLinkAdrParams_t linkAdrParams; uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t chMask = 0; diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 85f68756e..a462459d2 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -571,7 +571,7 @@ bool RegionAU915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint8_t RegionAU915LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) { uint8_t status = 0x07; - LinkAdrParams_t linkAdrParams; + RegionCommonLinkAdrParams_t linkAdrParams; uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t channelsMask[6] = { 0, 0, 0, 0, 0, 0 }; diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index 8f7651dcb..aaddd3b39 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -533,7 +533,7 @@ bool RegionCN470TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint8_t RegionCN470LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) { uint8_t status = 0x07; - LinkAdrParams_t linkAdrParams; + RegionCommonLinkAdrParams_t linkAdrParams; uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t channelsMask[6] = { 0, 0, 0, 0, 0, 0 }; diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index 36c5ed8fb..a659d6c8a 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -618,7 +618,7 @@ bool RegionCN779TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint8_t RegionCN779LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) { uint8_t status = 0x07; - LinkAdrParams_t linkAdrParams; + RegionCommonLinkAdrParams_t linkAdrParams; uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t chMask = 0; diff --git a/src/mac/region/RegionCommon.c b/src/mac/region/RegionCommon.c index ba77d8708..538ddb87e 100644 --- a/src/mac/region/RegionCommon.c +++ b/src/mac/region/RegionCommon.c @@ -204,7 +204,7 @@ TimerTime_t RegionCommonUpdateBandTimeOff( bool joined, bool dutyCycle, Band_t* return nextTxDelay; } -uint8_t RegionCommonParseLinkAdrReq( uint8_t* payload, LinkAdrParams_t* linkAdrParams ) +uint8_t RegionCommonParseLinkAdrReq( uint8_t* payload, RegionCommonLinkAdrParams_t* linkAdrParams ) { uint8_t retIndex = 0; diff --git a/src/mac/region/RegionCommon.h b/src/mac/region/RegionCommon.h index 3a48d40f7..960433572 100644 --- a/src/mac/region/RegionCommon.h +++ b/src/mac/region/RegionCommon.h @@ -35,7 +35,7 @@ #ifndef __REGIONCOMMON_H__ #define __REGIONCOMMON_H__ -typedef struct sLinkAdrParams +typedef struct sRegionCommonLinkAdrParams { /*! * Number of repetitions. @@ -57,7 +57,7 @@ typedef struct sLinkAdrParams * Channels mask field. */ uint16_t ChMask; -}LinkAdrParams_t; +}RegionCommonLinkAdrParams_t; typedef struct sRegionCommonCalcBackOffParams { /*! @@ -219,7 +219,7 @@ TimerTime_t RegionCommonUpdateBandTimeOff( bool joined, bool dutyCycle, Band_t* * \retval Returns the length of the ADR request, if a request was found. Otherwise, the * function returns 0. */ -uint8_t RegionCommonParseLinkAdrReq( uint8_t* payload, LinkAdrParams_t* parseLinkAdr ); +uint8_t RegionCommonParseLinkAdrReq( uint8_t* payload, RegionCommonLinkAdrParams_t* parseLinkAdr ); /*! * \brief Computes the symbol time for LoRa modulation. diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index f9a8354e0..ac523d201 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -617,7 +617,7 @@ bool RegionEU433TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint8_t RegionEU433LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) { uint8_t status = 0x07; - LinkAdrParams_t linkAdrParams; + RegionCommonLinkAdrParams_t linkAdrParams; uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t chMask = 0; diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index 0248ca02f..9761b7948 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -648,7 +648,7 @@ bool RegionEU868TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint8_t RegionEU868LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) { uint8_t status = 0x07; - LinkAdrParams_t linkAdrParams; + RegionCommonLinkAdrParams_t linkAdrParams; uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t chMask = 0; diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index b56af6a57..297ffc99d 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -622,7 +622,7 @@ bool RegionIN865TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint8_t RegionIN865LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) { uint8_t status = 0x07; - LinkAdrParams_t linkAdrParams; + RegionCommonLinkAdrParams_t linkAdrParams; uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t chMask = 0; diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 0a76c21ff..22434aad7 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -618,7 +618,7 @@ bool RegionKR920TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint8_t RegionKR920LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) { uint8_t status = 0x07; - LinkAdrParams_t linkAdrParams; + RegionCommonLinkAdrParams_t linkAdrParams; uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t chMask = 0; diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index fa19fc043..d27582b27 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -667,7 +667,7 @@ bool RegionUS915HybridTxConfig( TxConfigParams_t* txConfig, int8_t* txPower, Tim uint8_t RegionUS915HybridLinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) { uint8_t status = 0x07; - LinkAdrParams_t linkAdrParams; + RegionCommonLinkAdrParams_t linkAdrParams; uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t channelsMask[6] = { 0, 0, 0, 0, 0, 0 }; diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 0ab49a85f..9d8de89d1 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -579,7 +579,7 @@ bool RegionUS915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime uint8_t RegionUS915LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ) { uint8_t status = 0x07; - LinkAdrParams_t linkAdrParams; + RegionCommonLinkAdrParams_t linkAdrParams; uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t channelsMask[6] = { 0, 0, 0, 0, 0, 0 }; From f37215563ce028e8cb0d165ecd523a6bd70a43fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 13:17:23 +0200 Subject: [PATCH 130/161] Bug fix for KR920 --- src/mac/region/Region.h | 6 +++--- src/mac/region/RegionKR920.c | 4 ++-- src/mac/region/RegionKR920.h | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index b007fbc2e..6792b0b7f 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -456,7 +456,7 @@ * EU433 | - * EU868 | - * IN865 | Max EIRP - 16 - * KR920 | Max EIRP - 16 + * KR920 | - * US915 | Max ERP - 16 * US915_HYBRID | Max ERP -16 */ @@ -472,7 +472,7 @@ * EU433 | - * EU868 | - * IN865 | Max EIRP - 18 - * KR920 | Max EIRP - 18 + * KR920 | - * US915 | Max ERP - 16 * US915_HYBRID | Max ERP - 16 */ @@ -488,7 +488,7 @@ * EU433 | - * EU868 | - * IN865 | Max EIRP - 20 - * KR920 | Max EIRP - 20 + * KR920 | - * US915 | Max ERP - 10 * US915_HYBRID | Max ERP - 10 */ diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 22434aad7..19aff1c5a 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -297,11 +297,11 @@ PhyParam_t RegionKR920GetPhyParam( GetPhyParams_t* getPhy ) } case PHY_DEF_MAX_EIRP: { - // We set the lower maximum EIRP as default value. + // We set the higher maximum EIRP as default value. // The reason for this is, that the frequency may // change during a channel selection for the next uplink. // The value has to be recalculated in the TX configuration. - phyParam.fValue = KR920_DEFAULT_MAX_EIRP_LOW; + phyParam.fValue = KR920_DEFAULT_MAX_EIRP_HIGH; break; } case PHY_DEF_ANTENNA_GAIN: diff --git a/src/mac/region/RegionKR920.h b/src/mac/region/RegionKR920.h index afddb021b..1b52ea585 100644 --- a/src/mac/region/RegionKR920.h +++ b/src/mac/region/RegionKR920.h @@ -93,7 +93,7 @@ /*! * Minimal Tx output power that can be used by the node */ -#define KR920_MIN_TX_POWER TX_POWER_10 +#define KR920_MIN_TX_POWER TX_POWER_7 /*! * Maximal Tx output power that can be used by the node @@ -103,7 +103,7 @@ /*! * Default Tx output power used by the node */ -#define KR920_DEFAULT_TX_POWER TX_POWER_1 +#define KR920_DEFAULT_TX_POWER TX_POWER_0 /*! * Default Max EIRP for frequency 920.9 MHz - 921.9 MHz From 940dc665e39e2db6b1a43b26b1a1065a8f549aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 13:17:50 +0200 Subject: [PATCH 131/161] Apply variables to data structure LinkAdrReqParams_t --- src/mac/region/Region.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index 6792b0b7f..1437279ec 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -951,6 +951,26 @@ typedef struct sLinkAdrReqParams * Size of the payload. */ uint8_t PayloadSize; + /*! + * Uplink dwell time. + */ + uint8_t UplinkDwellTime; + /*! + * Set to true, if ADR is enabled. + */ + bool AdrEnabled; + /*! + * The current datarate. + */ + int8_t CurrentDatarate; + /*! + * The current TX power. + */ + int8_t CurrentTxPower; + /*! + * The current number of repetitions. + */ + uint8_t CurrentNbRep; }LinkAdrReqParams_t; /*! From 8019773dd45d7cf1ead83310807311a17ea03ab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 13:18:38 +0200 Subject: [PATCH 132/161] Update comment for function RegionLinkAdrReq --- src/mac/region/Region.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/mac/region/Region.h b/src/mac/region/Region.h index 1437279ec..656044577 100644 --- a/src/mac/region/Region.h +++ b/src/mac/region/Region.h @@ -1349,6 +1349,14 @@ bool RegionTxConfig( LoRaMacRegion_t region, TxConfigParams_t* txConfig, int8_t* * * \param [IN] linkAdrReq Pointer to the function parameters. * + * \param [OUT] drOut The datarate which was applied. + * + * \param [OUT] txPowOut The TX power which was applied. + * + * \param [OUT] nbRepOut The number of repetitions to apply. + * + * \param [OUT] nbBytesParsed The number bytes which were parsed. + * * \retval Returns the status of the operation, according to the LoRaMAC specification. */ uint8_t RegionLinkAdrReq( LoRaMacRegion_t region, LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed ); From 83b6086f33aaef251820b91e4ac2b35c9c7b4a91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 13:20:30 +0200 Subject: [PATCH 133/161] Move the verification of ADR parameters into the common section. Update all regions with the related changes --- src/mac/region/RegionAS923.c | 48 +++++++++-------- src/mac/region/RegionAU915.c | 50 +++++++++--------- src/mac/region/RegionCN470.c | 48 +++++++++-------- src/mac/region/RegionCN779.c | 50 +++++++++--------- src/mac/region/RegionCommon.c | 63 ++++++++++++++++++++++ src/mac/region/RegionCommon.h | 81 +++++++++++++++++++++++++++++ src/mac/region/RegionEU433.c | 51 +++++++++--------- src/mac/region/RegionEU868.c | 50 +++++++++--------- src/mac/region/RegionIN865.c | 50 +++++++++--------- src/mac/region/RegionKR920.c | 50 +++++++++--------- src/mac/region/RegionUS915-Hybrid.c | 50 +++++++++--------- src/mac/region/RegionUS915.c | 50 +++++++++--------- 12 files changed, 403 insertions(+), 238 deletions(-) diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index 56e25dc12..495b3f08a 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -691,6 +691,9 @@ uint8_t RegionAS923LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t chMask = 0; + GetPhyParams_t getPhy; + PhyParam_t phyParam; + RegionCommonLinkAdrReqVerifyParams_t linkAdrVerifyParams; while( bytesProcessed < linkAdrReq->PayloadSize ) { @@ -743,34 +746,33 @@ uint8_t RegionAS923LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in } } - // Verify datarate - if( RegionCommonChanVerifyDr( AS923_MAX_NB_CHANNELS, &chMask, linkAdrParams.Datarate, AS923_TX_MIN_DATARATE, AS923_TX_MAX_DATARATE, Channels ) == false ) - { - status &= 0xFD; // Datarate KO - } + // Get the minimum possible datarate + getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.UplinkDwellTime = linkAdrReq->UplinkDwellTime; + phyParam = RegionAS923GetPhyParam( &getPhy ); - // Verify tx power - if( RegionCommonValueInRange( linkAdrParams.TxPower, AS923_MAX_TX_POWER, AS923_MIN_TX_POWER ) == 0 ) - { - // Verify if the maximum TX power is exceeded - if( AS923_MAX_TX_POWER > linkAdrParams.TxPower ) - { // Apply maximum TX power. Accept TX power. - linkAdrParams.TxPower = AS923_MAX_TX_POWER; - } - else - { - status &= 0xFB; // TxPower KO - } - } + linkAdrVerifyParams.Status = status; + linkAdrVerifyParams.AdrEnabled = linkAdrReq->AdrEnabled; + linkAdrVerifyParams.Datarate = linkAdrParams.Datarate; + linkAdrVerifyParams.TxPower = linkAdrParams.TxPower; + linkAdrVerifyParams.NbRep = linkAdrParams.NbRep; + linkAdrVerifyParams.CurrentDatarate = linkAdrReq->CurrentDatarate; + linkAdrVerifyParams.CurrentTxPower = linkAdrReq->CurrentTxPower; + linkAdrVerifyParams.CurrentNbRep = linkAdrReq->CurrentNbRep; + linkAdrVerifyParams.NbChannels = AS923_MAX_NB_CHANNELS; + linkAdrVerifyParams.ChannelsMask = &chMask; + linkAdrVerifyParams.MinDatarate = ( int8_t )phyParam.Value; + linkAdrVerifyParams.MaxDatarate = AS923_TX_MAX_DATARATE; + linkAdrVerifyParams.Channels = Channels; + linkAdrVerifyParams.MinTxPower = AS923_MIN_TX_POWER; + linkAdrVerifyParams.MaxTxPower = AS923_MAX_TX_POWER; + + // Verify the parameters and update, if necessary + status = RegionCommonLinkAdrReqVerifyParams( &linkAdrVerifyParams, &linkAdrParams.Datarate, &linkAdrParams.TxPower, &linkAdrParams.NbRep ); // Update channelsMask if everything is correct if( status == 0x07 ) { - if( linkAdrParams.NbRep == 0 ) - { // Value of 0 is not allowed, revert to default. - linkAdrParams.NbRep = 1; - } - // Set the channels mask to a default value memset( ChannelsMask, 0, sizeof( ChannelsMask ) ); // Update the channels mask diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index a462459d2..b9574d1b2 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -575,6 +575,9 @@ uint8_t RegionAU915LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t channelsMask[6] = { 0, 0, 0, 0, 0, 0 }; + GetPhyParams_t getPhy; + PhyParam_t phyParam; + RegionCommonLinkAdrReqVerifyParams_t linkAdrVerifyParams; // Initialize local copy of channels mask RegionCommonChanMaskCopy( channelsMask, ChannelsMask, 6 ); @@ -629,34 +632,33 @@ uint8_t RegionAU915LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in status &= 0xFE; // Channel mask KO } - // Verify datarate - if( RegionCommonChanVerifyDr( AU915_MAX_NB_CHANNELS, channelsMask, linkAdrParams.Datarate, AU915_TX_MIN_DATARATE, AU915_TX_MAX_DATARATE, Channels ) == false ) - { - status &= 0xFD; // Datarate KO - } - - // Verify tx power - if( RegionCommonValueInRange( linkAdrParams.TxPower, AU915_MAX_TX_POWER, AU915_MIN_TX_POWER ) == 0 ) - { - // Verify if the maximum TX power is exceeded - if( AU915_MAX_TX_POWER > linkAdrParams.TxPower ) - { // Apply maximum TX power. Accept TX power. - linkAdrParams.TxPower = AU915_MAX_TX_POWER; - } - else - { - status &= 0xFB; // TxPower KO - } - } + // Get the minimum possible datarate + getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.UplinkDwellTime = linkAdrReq->UplinkDwellTime; + phyParam = RegionAU915GetPhyParam( &getPhy ); + + linkAdrVerifyParams.Status = status; + linkAdrVerifyParams.AdrEnabled = linkAdrReq->AdrEnabled; + linkAdrVerifyParams.Datarate = linkAdrParams.Datarate; + linkAdrVerifyParams.TxPower = linkAdrParams.TxPower; + linkAdrVerifyParams.NbRep = linkAdrParams.NbRep; + linkAdrVerifyParams.CurrentDatarate = linkAdrReq->CurrentDatarate; + linkAdrVerifyParams.CurrentTxPower = linkAdrReq->CurrentTxPower; + linkAdrVerifyParams.CurrentNbRep = linkAdrReq->CurrentNbRep; + linkAdrVerifyParams.NbChannels = AU915_MAX_NB_CHANNELS; + linkAdrVerifyParams.ChannelsMask = channelsMask; + linkAdrVerifyParams.MinDatarate = ( int8_t )phyParam.Value; + linkAdrVerifyParams.MaxDatarate = AU915_TX_MAX_DATARATE; + linkAdrVerifyParams.Channels = Channels; + linkAdrVerifyParams.MinTxPower = AU915_MIN_TX_POWER; + linkAdrVerifyParams.MaxTxPower = AU915_MAX_TX_POWER; + + // Verify the parameters and update, if necessary + status = RegionCommonLinkAdrReqVerifyParams( &linkAdrVerifyParams, &linkAdrParams.Datarate, &linkAdrParams.TxPower, &linkAdrParams.NbRep ); // Update channelsMask if everything is correct if( status == 0x07 ) { - if( linkAdrParams.NbRep == 0 ) - { // Value of 0 is not allowed, revert to default. - linkAdrParams.NbRep = 1; - } - // Copy Mask RegionCommonChanMaskCopy( ChannelsMask, channelsMask, 6 ); diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index aaddd3b39..70669a10d 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -537,6 +537,9 @@ uint8_t RegionCN470LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t channelsMask[6] = { 0, 0, 0, 0, 0, 0 }; + GetPhyParams_t getPhy; + PhyParam_t phyParam; + RegionCommonLinkAdrReqVerifyParams_t linkAdrVerifyParams; // Initialize local copy of channels mask RegionCommonChanMaskCopy( channelsMask, ChannelsMask, 6 ); @@ -583,34 +586,33 @@ uint8_t RegionCN470LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in } } - // Verify datarate - if( RegionCommonChanVerifyDr( CN470_MAX_NB_CHANNELS, channelsMask, linkAdrParams.Datarate, CN470_TX_MIN_DATARATE, CN470_TX_MAX_DATARATE, Channels ) == false ) - { - status &= 0xFD; // Datarate KO - } + // Get the minimum possible datarate + getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.UplinkDwellTime = linkAdrReq->UplinkDwellTime; + phyParam = RegionCN470GetPhyParam( &getPhy ); - // Verify tx power - if( RegionCommonValueInRange( linkAdrParams.TxPower, CN470_MAX_TX_POWER, CN470_MIN_TX_POWER ) == 0 ) - { - // Verify if the maximum TX power is exceeded - if( CN470_MAX_TX_POWER > linkAdrParams.TxPower ) - { // Apply maximum TX power. Accept TX power. - linkAdrParams.TxPower = CN470_MAX_TX_POWER; - } - else - { - status &= 0xFB; // TxPower KO - } - } + linkAdrVerifyParams.Status = status; + linkAdrVerifyParams.AdrEnabled = linkAdrReq->AdrEnabled; + linkAdrVerifyParams.Datarate = linkAdrParams.Datarate; + linkAdrVerifyParams.TxPower = linkAdrParams.TxPower; + linkAdrVerifyParams.NbRep = linkAdrParams.NbRep; + linkAdrVerifyParams.CurrentDatarate = linkAdrReq->CurrentDatarate; + linkAdrVerifyParams.CurrentTxPower = linkAdrReq->CurrentTxPower; + linkAdrVerifyParams.CurrentNbRep = linkAdrReq->CurrentNbRep; + linkAdrVerifyParams.NbChannels = CN470_MAX_NB_CHANNELS; + linkAdrVerifyParams.ChannelsMask = channelsMask; + linkAdrVerifyParams.MinDatarate = ( int8_t )phyParam.Value; + linkAdrVerifyParams.MaxDatarate = CN470_TX_MAX_DATARATE; + linkAdrVerifyParams.Channels = Channels; + linkAdrVerifyParams.MinTxPower = CN470_MIN_TX_POWER; + linkAdrVerifyParams.MaxTxPower = CN470_MAX_TX_POWER; + + // Verify the parameters and update, if necessary + status = RegionCommonLinkAdrReqVerifyParams( &linkAdrVerifyParams, &linkAdrParams.Datarate, &linkAdrParams.TxPower, &linkAdrParams.NbRep ); // Update channelsMask if everything is correct if( status == 0x07 ) { - if( linkAdrParams.NbRep == 0 ) - { // Value of 0 is not allowed, revert to default. - linkAdrParams.NbRep = 1; - } - // Copy Mask RegionCommonChanMaskCopy( ChannelsMask, channelsMask, 6 ); } diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index a659d6c8a..ce7dee453 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -622,6 +622,9 @@ uint8_t RegionCN779LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t chMask = 0; + GetPhyParams_t getPhy; + PhyParam_t phyParam; + RegionCommonLinkAdrReqVerifyParams_t linkAdrVerifyParams; while( bytesProcessed < linkAdrReq->PayloadSize ) { @@ -674,34 +677,33 @@ uint8_t RegionCN779LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in } } - // Verify datarate - if( RegionCommonChanVerifyDr( CN779_MAX_NB_CHANNELS, &chMask, linkAdrParams.Datarate, CN779_TX_MIN_DATARATE, CN779_TX_MAX_DATARATE, Channels ) == false ) - { - status &= 0xFD; // Datarate KO - } - - // Verify tx power - if( RegionCommonValueInRange( linkAdrParams.TxPower, CN779_MAX_TX_POWER, CN779_MIN_TX_POWER ) == 0 ) - { - // Verify if the maximum TX power is exceeded - if( CN779_MAX_TX_POWER > linkAdrParams.TxPower ) - { // Apply maximum TX power. Accept TX power. - linkAdrParams.TxPower = CN779_MAX_TX_POWER; - } - else - { - status &= 0xFB; // TxPower KO - } - } + // Get the minimum possible datarate + getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.UplinkDwellTime = linkAdrReq->UplinkDwellTime; + phyParam = RegionCN779GetPhyParam( &getPhy ); + + linkAdrVerifyParams.Status = status; + linkAdrVerifyParams.AdrEnabled = linkAdrReq->AdrEnabled; + linkAdrVerifyParams.Datarate = linkAdrParams.Datarate; + linkAdrVerifyParams.TxPower = linkAdrParams.TxPower; + linkAdrVerifyParams.NbRep = linkAdrParams.NbRep; + linkAdrVerifyParams.CurrentDatarate = linkAdrReq->CurrentDatarate; + linkAdrVerifyParams.CurrentTxPower = linkAdrReq->CurrentTxPower; + linkAdrVerifyParams.CurrentNbRep = linkAdrReq->CurrentNbRep; + linkAdrVerifyParams.NbChannels = CN779_MAX_NB_CHANNELS; + linkAdrVerifyParams.ChannelsMask = &chMask; + linkAdrVerifyParams.MinDatarate = ( int8_t )phyParam.Value; + linkAdrVerifyParams.MaxDatarate = CN779_TX_MAX_DATARATE; + linkAdrVerifyParams.Channels = Channels; + linkAdrVerifyParams.MinTxPower = CN779_MIN_TX_POWER; + linkAdrVerifyParams.MaxTxPower = CN779_MAX_TX_POWER; + + // Verify the parameters and update, if necessary + status = RegionCommonLinkAdrReqVerifyParams( &linkAdrVerifyParams, &linkAdrParams.Datarate, &linkAdrParams.TxPower, &linkAdrParams.NbRep ); // Update channelsMask if everything is correct if( status == 0x07 ) { - if( linkAdrParams.NbRep == 0 ) - { // Value of 0 is not allowed, revert to default. - linkAdrParams.NbRep = 1; - } - // Set the channels mask to a default value memset( ChannelsMask, 0, sizeof( ChannelsMask ) ); // Update the channels mask diff --git a/src/mac/region/RegionCommon.c b/src/mac/region/RegionCommon.c index 538ddb87e..933b96e3c 100644 --- a/src/mac/region/RegionCommon.c +++ b/src/mac/region/RegionCommon.c @@ -228,6 +228,69 @@ uint8_t RegionCommonParseLinkAdrReq( uint8_t* payload, RegionCommonLinkAdrParams return retIndex; } +uint8_t RegionCommonLinkAdrReqVerifyParams( RegionCommonLinkAdrReqVerifyParams_t* verifyParams, int8_t* dr, int8_t* txPow, uint8_t* nbRep ) +{ + uint8_t status = verifyParams->Status; + int8_t datarate = verifyParams->Datarate; + int8_t txPower = verifyParams->TxPower; + int8_t nbRepetitions = verifyParams->NbRep; + + // Handle the case when ADR is off. + if( verifyParams->AdrEnabled == false ) + { + // When ADR is off, we are allowed to change the channels mask and the NbRep, + // if the datarate and the TX power of the LinkAdrReq are set to 0x0F. + if( ( verifyParams->Datarate != 0x0F ) || ( verifyParams->TxPower != 0x0F ) ) + { + status = 0; + nbRepetitions = verifyParams->CurrentNbRep; + } + // Get the current datarate and tx power + datarate = verifyParams->CurrentDatarate; + txPower = verifyParams->CurrentTxPower; + } + + if( status != 0 ) + { + // Verify datarate. The variable phyParam. Value contains the minimum allowed datarate. + if( RegionCommonChanVerifyDr( verifyParams->NbChannels, verifyParams->ChannelsMask, datarate, + verifyParams->MinDatarate, verifyParams->MaxDatarate, verifyParams->Channels ) == false ) + { + status &= 0xFD; // Datarate KO + } + + // Verify tx power + if( RegionCommonValueInRange( txPower, verifyParams->MaxTxPower, verifyParams->MinTxPower ) == 0 ) + { + // Verify if the maximum TX power is exceeded + if( verifyParams->MaxTxPower > txPower ) + { // Apply maximum TX power. Accept TX power. + txPower = verifyParams->MaxTxPower; + } + else + { + status &= 0xFB; // TxPower KO + } + } + } + + // If the status is ok, verify the NbRep + if( status == 0x07 ) + { + if( nbRepetitions == 0 ) + { // Keep the current one + nbRepetitions = verifyParams->CurrentNbRep; + } + } + + // Apply changes + *dr = datarate; + *txPow = txPower; + *nbRep = nbRepetitions; + + return status; +} + double RegionCommonComputeSymbolTimeLoRa( uint8_t phyDr, uint32_t bandwidth ) { return ( ( double )( 1 << phyDr ) / ( double )bandwidth ) * 1000; diff --git a/src/mac/region/RegionCommon.h b/src/mac/region/RegionCommon.h index 960433572..1aeb38168 100644 --- a/src/mac/region/RegionCommon.h +++ b/src/mac/region/RegionCommon.h @@ -58,6 +58,71 @@ typedef struct sRegionCommonLinkAdrParams */ uint16_t ChMask; }RegionCommonLinkAdrParams_t; + +typedef struct sRegionCommonLinkAdrReqVerifyParams +{ + /*! + * The current status of the AdrLinkRequest. + */ + uint8_t Status; + /*! + * Set to true, if ADR is enabled. + */ + bool AdrEnabled; + /*! + * The datarate the AdrLinkRequest wants to set. + */ + int8_t Datarate; + /*! + * The TX power the AdrLinkRequest wants to set. + */ + int8_t TxPower; + /*! + * The number of repetitions the AdrLinkRequest wants to set. + */ + uint8_t NbRep; + /*! + * The current datarate the node is using. + */ + int8_t CurrentDatarate; + /*! + * The current TX power the node is using. + */ + int8_t CurrentTxPower; + /*! + * The current number of repetitions the node is using. + */ + int8_t CurrentNbRep; + /*! + * The number of channels. + */ + uint8_t NbChannels; + /*! + * Pointer to the first element of the channels mask. + */ + uint16_t* ChannelsMask; + /*! + * The minimum possible datarate. + */ + int8_t MinDatarate; + /*! + * The maximum possible datarate. + */ + int8_t MaxDatarate; + /*! + * Pointer to the channels. + */ + ChannelParams_t* Channels; + /*! + * The minimum possible TX power. + */ + int8_t MinTxPower; + /*! + * The maximum possible TX power. + */ + int8_t MaxTxPower; +}RegionCommonLinkAdrReqVerifyParams_t; + typedef struct sRegionCommonCalcBackOffParams { /*! @@ -221,6 +286,22 @@ TimerTime_t RegionCommonUpdateBandTimeOff( bool joined, bool dutyCycle, Band_t* */ uint8_t RegionCommonParseLinkAdrReq( uint8_t* payload, RegionCommonLinkAdrParams_t* parseLinkAdr ); +/*! + * \brief Verifies and updates the datarate, the TX power and the number of repetitions + * of a LinkAdrRequest. This depends on the configuration of ADR also. + * + * \param [IN] verifyParams Pointer to a structure containing input parameters. + * + * \param [OUT] dr The updated datarate. + * + * \param [OUT] txPow The updated TX power. + * + * \param [OUT] nbRep The updated number of repetitions. + * + * \retval Returns the status according to the LinkAdrRequest definition. + */ +uint8_t RegionCommonLinkAdrReqVerifyParams( RegionCommonLinkAdrReqVerifyParams_t* verifyParams, int8_t* dr, int8_t* txPow, uint8_t* nbRep ); + /*! * \brief Computes the symbol time for LoRa modulation. * diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index ac523d201..c6f17be0e 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -605,6 +605,7 @@ bool RegionEU433TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime modem = MODEM_LORA; Radio.SetTxConfig( modem, phyTxPower, 0, bandwidth, phyDr, 1, 8, false, true, 0, 0, false, 3000 ); } + // Setup maximum payload lenght of the radio driver Radio.SetMaxPayloadLength( modem, txConfig->PktLen ); // Get the time-on-air of the next tx frame @@ -621,6 +622,9 @@ uint8_t RegionEU433LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t chMask = 0; + GetPhyParams_t getPhy; + PhyParam_t phyParam; + RegionCommonLinkAdrReqVerifyParams_t linkAdrVerifyParams; while( bytesProcessed < linkAdrReq->PayloadSize ) { @@ -673,34 +677,33 @@ uint8_t RegionEU433LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in } } - // Verify datarate - if( RegionCommonChanVerifyDr( EU433_MAX_NB_CHANNELS, &chMask, linkAdrParams.Datarate, EU433_TX_MIN_DATARATE, EU433_TX_MAX_DATARATE, Channels ) == false ) - { - status &= 0xFD; // Datarate KO - } - - // Verify tx power - if( RegionCommonValueInRange( linkAdrParams.TxPower, EU433_MAX_TX_POWER, EU433_MIN_TX_POWER ) == 0 ) - { - // Verify if the maximum TX power is exceeded - if( EU433_MAX_TX_POWER > linkAdrParams.TxPower ) - { // Apply maximum TX power. Accept TX power. - linkAdrParams.TxPower = EU433_MAX_TX_POWER; - } - else - { - status &= 0xFB; // TxPower KO - } - } + // Get the minimum possible datarate + getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.UplinkDwellTime = linkAdrReq->UplinkDwellTime; + phyParam = RegionEU433GetPhyParam( &getPhy ); + + linkAdrVerifyParams.Status = status; + linkAdrVerifyParams.AdrEnabled = linkAdrReq->AdrEnabled; + linkAdrVerifyParams.Datarate = linkAdrParams.Datarate; + linkAdrVerifyParams.TxPower = linkAdrParams.TxPower; + linkAdrVerifyParams.NbRep = linkAdrParams.NbRep; + linkAdrVerifyParams.CurrentDatarate = linkAdrReq->CurrentDatarate; + linkAdrVerifyParams.CurrentTxPower = linkAdrReq->CurrentTxPower; + linkAdrVerifyParams.CurrentNbRep = linkAdrReq->CurrentNbRep; + linkAdrVerifyParams.NbChannels = EU433_MAX_NB_CHANNELS; + linkAdrVerifyParams.ChannelsMask = &chMask; + linkAdrVerifyParams.MinDatarate = ( int8_t )phyParam.Value; + linkAdrVerifyParams.MaxDatarate = EU433_TX_MAX_DATARATE; + linkAdrVerifyParams.Channels = Channels; + linkAdrVerifyParams.MinTxPower = EU433_MIN_TX_POWER; + linkAdrVerifyParams.MaxTxPower = EU433_MAX_TX_POWER; + + // Verify the parameters and update, if necessary + status = RegionCommonLinkAdrReqVerifyParams( &linkAdrVerifyParams, &linkAdrParams.Datarate, &linkAdrParams.TxPower, &linkAdrParams.NbRep ); // Update channelsMask if everything is correct if( status == 0x07 ) { - if( linkAdrParams.NbRep == 0 ) - { // Value of 0 is not allowed, revert to default. - linkAdrParams.NbRep = 1; - } - // Set the channels mask to a default value memset( ChannelsMask, 0, sizeof( ChannelsMask ) ); // Update the channels mask diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index 9761b7948..1150e6880 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -652,6 +652,9 @@ uint8_t RegionEU868LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t chMask = 0; + GetPhyParams_t getPhy; + PhyParam_t phyParam; + RegionCommonLinkAdrReqVerifyParams_t linkAdrVerifyParams; while( bytesProcessed < linkAdrReq->PayloadSize ) { @@ -704,34 +707,33 @@ uint8_t RegionEU868LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in } } - // Verify datarate - if( RegionCommonChanVerifyDr( EU868_MAX_NB_CHANNELS, &chMask, linkAdrParams.Datarate, EU868_TX_MIN_DATARATE, EU868_TX_MAX_DATARATE, Channels ) == false ) - { - status &= 0xFD; // Datarate KO - } - - // Verify tx power - if( RegionCommonValueInRange( linkAdrParams.TxPower, EU868_MAX_TX_POWER, EU868_MIN_TX_POWER ) == 0 ) - { - // Verify if the maximum TX power is exceeded - if( EU868_MAX_TX_POWER > linkAdrParams.TxPower ) - { // Apply maximum TX power. Accept TX power. - linkAdrParams.TxPower = EU868_MAX_TX_POWER; - } - else - { - status &= 0xFB; // TxPower KO - } - } + // Get the minimum possible datarate + getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.UplinkDwellTime = linkAdrReq->UplinkDwellTime; + phyParam = RegionEU868GetPhyParam( &getPhy ); + + linkAdrVerifyParams.Status = status; + linkAdrVerifyParams.AdrEnabled = linkAdrReq->AdrEnabled; + linkAdrVerifyParams.Datarate = linkAdrParams.Datarate; + linkAdrVerifyParams.TxPower = linkAdrParams.TxPower; + linkAdrVerifyParams.NbRep = linkAdrParams.NbRep; + linkAdrVerifyParams.CurrentDatarate = linkAdrReq->CurrentDatarate; + linkAdrVerifyParams.CurrentTxPower = linkAdrReq->CurrentTxPower; + linkAdrVerifyParams.CurrentNbRep = linkAdrReq->CurrentNbRep; + linkAdrVerifyParams.NbChannels = EU868_MAX_NB_CHANNELS; + linkAdrVerifyParams.ChannelsMask = &chMask; + linkAdrVerifyParams.MinDatarate = ( int8_t )phyParam.Value; + linkAdrVerifyParams.MaxDatarate = EU868_TX_MAX_DATARATE; + linkAdrVerifyParams.Channels = Channels; + linkAdrVerifyParams.MinTxPower = EU868_MIN_TX_POWER; + linkAdrVerifyParams.MaxTxPower = EU868_MAX_TX_POWER; + + // Verify the parameters and update, if necessary + status = RegionCommonLinkAdrReqVerifyParams( &linkAdrVerifyParams, &linkAdrParams.Datarate, &linkAdrParams.TxPower, &linkAdrParams.NbRep ); // Update channelsMask if everything is correct if( status == 0x07 ) { - if( linkAdrParams.NbRep == 0 ) - { // Value of 0 is not allowed, revert to default. - linkAdrParams.NbRep = 1; - } - // Set the channels mask to a default value memset( ChannelsMask, 0, sizeof( ChannelsMask ) ); // Update the channels mask diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index 297ffc99d..418279eee 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -626,6 +626,9 @@ uint8_t RegionIN865LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t chMask = 0; + GetPhyParams_t getPhy; + PhyParam_t phyParam; + RegionCommonLinkAdrReqVerifyParams_t linkAdrVerifyParams; while( bytesProcessed < linkAdrReq->PayloadSize ) { @@ -678,34 +681,33 @@ uint8_t RegionIN865LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in } } - // Verify datarate - if( RegionCommonChanVerifyDr( IN865_MAX_NB_CHANNELS, &chMask, linkAdrParams.Datarate, IN865_TX_MIN_DATARATE, IN865_TX_MAX_DATARATE, Channels ) == false ) - { - status &= 0xFD; // Datarate KO - } - - // Verify tx power - if( RegionCommonValueInRange( linkAdrParams.TxPower, IN865_MAX_TX_POWER, IN865_MIN_TX_POWER ) == 0 ) - { - // Verify if the maximum TX power is exceeded - if( IN865_MAX_TX_POWER > linkAdrParams.TxPower ) - { // Apply maximum TX power. Accept TX power. - linkAdrParams.TxPower = IN865_MAX_TX_POWER; - } - else - { - status &= 0xFB; // TxPower KO - } - } + // Get the minimum possible datarate + getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.UplinkDwellTime = linkAdrReq->UplinkDwellTime; + phyParam = RegionIN865GetPhyParam( &getPhy ); + + linkAdrVerifyParams.Status = status; + linkAdrVerifyParams.AdrEnabled = linkAdrReq->AdrEnabled; + linkAdrVerifyParams.Datarate = linkAdrParams.Datarate; + linkAdrVerifyParams.TxPower = linkAdrParams.TxPower; + linkAdrVerifyParams.NbRep = linkAdrParams.NbRep; + linkAdrVerifyParams.CurrentDatarate = linkAdrReq->CurrentDatarate; + linkAdrVerifyParams.CurrentTxPower = linkAdrReq->CurrentTxPower; + linkAdrVerifyParams.CurrentNbRep = linkAdrReq->CurrentNbRep; + linkAdrVerifyParams.NbChannels = IN865_MAX_NB_CHANNELS; + linkAdrVerifyParams.ChannelsMask = &chMask; + linkAdrVerifyParams.MinDatarate = ( int8_t )phyParam.Value; + linkAdrVerifyParams.MaxDatarate = IN865_TX_MAX_DATARATE; + linkAdrVerifyParams.Channels = Channels; + linkAdrVerifyParams.MinTxPower = IN865_MIN_TX_POWER; + linkAdrVerifyParams.MaxTxPower = IN865_MAX_TX_POWER; + + // Verify the parameters and update, if necessary + status = RegionCommonLinkAdrReqVerifyParams( &linkAdrVerifyParams, &linkAdrParams.Datarate, &linkAdrParams.TxPower, &linkAdrParams.NbRep ); // Update channelsMask if everything is correct if( status == 0x07 ) { - if( linkAdrParams.NbRep == 0 ) - { // Value of 0 is not allowed, revert to default. - linkAdrParams.NbRep = 1; - } - // Set the channels mask to a default value memset( ChannelsMask, 0, sizeof( ChannelsMask ) ); // Update the channels mask diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index 19aff1c5a..b4ed651b7 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -622,6 +622,9 @@ uint8_t RegionKR920LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t chMask = 0; + GetPhyParams_t getPhy; + PhyParam_t phyParam; + RegionCommonLinkAdrReqVerifyParams_t linkAdrVerifyParams; while( bytesProcessed < linkAdrReq->PayloadSize ) { @@ -674,34 +677,33 @@ uint8_t RegionKR920LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in } } - // Verify datarate - if( RegionCommonChanVerifyDr( KR920_MAX_NB_CHANNELS, &chMask, linkAdrParams.Datarate, KR920_TX_MIN_DATARATE, KR920_TX_MAX_DATARATE, Channels ) == false ) - { - status &= 0xFD; // Datarate KO - } - - // Verify tx power - if( RegionCommonValueInRange( linkAdrParams.TxPower, KR920_MAX_TX_POWER, KR920_MIN_TX_POWER ) == 0 ) - { - // Verify if the maximum TX power is exceeded - if( KR920_MAX_TX_POWER > linkAdrParams.TxPower ) - { // Apply maximum TX power. Accept TX power. - linkAdrParams.TxPower = KR920_MAX_TX_POWER; - } - else - { - status &= 0xFB; // TxPower KO - } - } + // Get the minimum possible datarate + getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.UplinkDwellTime = linkAdrReq->UplinkDwellTime; + phyParam = RegionKR920GetPhyParam( &getPhy ); + + linkAdrVerifyParams.Status = status; + linkAdrVerifyParams.AdrEnabled = linkAdrReq->AdrEnabled; + linkAdrVerifyParams.Datarate = linkAdrParams.Datarate; + linkAdrVerifyParams.TxPower = linkAdrParams.TxPower; + linkAdrVerifyParams.NbRep = linkAdrParams.NbRep; + linkAdrVerifyParams.CurrentDatarate = linkAdrReq->CurrentDatarate; + linkAdrVerifyParams.CurrentTxPower = linkAdrReq->CurrentTxPower; + linkAdrVerifyParams.CurrentNbRep = linkAdrReq->CurrentNbRep; + linkAdrVerifyParams.NbChannels = KR920_MAX_NB_CHANNELS; + linkAdrVerifyParams.ChannelsMask = &chMask; + linkAdrVerifyParams.MinDatarate = ( int8_t )phyParam.Value; + linkAdrVerifyParams.MaxDatarate = KR920_TX_MAX_DATARATE; + linkAdrVerifyParams.Channels = Channels; + linkAdrVerifyParams.MinTxPower = KR920_MIN_TX_POWER; + linkAdrVerifyParams.MaxTxPower = KR920_MAX_TX_POWER; + + // Verify the parameters and update, if necessary + status = RegionCommonLinkAdrReqVerifyParams( &linkAdrVerifyParams, &linkAdrParams.Datarate, &linkAdrParams.TxPower, &linkAdrParams.NbRep ); // Update channelsMask if everything is correct if( status == 0x07 ) { - if( linkAdrParams.NbRep == 0 ) - { // Value of 0 is not allowed, revert to default. - linkAdrParams.NbRep = 1; - } - // Set the channels mask to a default value memset( ChannelsMask, 0, sizeof( ChannelsMask ) ); // Update the channels mask diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index d27582b27..638e34aab 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -671,6 +671,9 @@ uint8_t RegionUS915HybridLinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drO uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t channelsMask[6] = { 0, 0, 0, 0, 0, 0 }; + GetPhyParams_t getPhy; + PhyParam_t phyParam; + RegionCommonLinkAdrReqVerifyParams_t linkAdrVerifyParams; // Initialize local copy of channels mask RegionCommonChanMaskCopy( channelsMask, ChannelsMask, 6 ); @@ -730,34 +733,33 @@ uint8_t RegionUS915HybridLinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drO status &= 0xFE; // Channel mask KO } - // Verify datarate - if( RegionCommonChanVerifyDr( US915_HYBRID_MAX_NB_CHANNELS, channelsMask, linkAdrParams.Datarate, US915_HYBRID_TX_MIN_DATARATE, US915_HYBRID_TX_MAX_DATARATE, Channels ) == false ) - { - status &= 0xFD; // Datarate KO - } - - // Verify tx power - if( RegionCommonValueInRange( linkAdrParams.TxPower, US915_HYBRID_MAX_TX_POWER, US915_HYBRID_MIN_TX_POWER ) == 0 ) - { - // Verify if the maximum TX power is exceeded - if( US915_HYBRID_MAX_TX_POWER > linkAdrParams.TxPower ) - { // Apply maximum TX power. Accept TX power. - linkAdrParams.TxPower = US915_HYBRID_MAX_TX_POWER; - } - else - { - status &= 0xFB; // TxPower KO - } - } + // Get the minimum possible datarate + getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.UplinkDwellTime = linkAdrReq->UplinkDwellTime; + phyParam = RegionUS915HybridGetPhyParam( &getPhy ); + + linkAdrVerifyParams.Status = status; + linkAdrVerifyParams.AdrEnabled = linkAdrReq->AdrEnabled; + linkAdrVerifyParams.Datarate = linkAdrParams.Datarate; + linkAdrVerifyParams.TxPower = linkAdrParams.TxPower; + linkAdrVerifyParams.NbRep = linkAdrParams.NbRep; + linkAdrVerifyParams.CurrentDatarate = linkAdrReq->CurrentDatarate; + linkAdrVerifyParams.CurrentTxPower = linkAdrReq->CurrentTxPower; + linkAdrVerifyParams.CurrentNbRep = linkAdrReq->CurrentNbRep; + linkAdrVerifyParams.NbChannels = US915_HYBRID_MAX_NB_CHANNELS; + linkAdrVerifyParams.ChannelsMask = channelsMask; + linkAdrVerifyParams.MinDatarate = ( int8_t )phyParam.Value; + linkAdrVerifyParams.MaxDatarate = US915_HYBRID_TX_MAX_DATARATE; + linkAdrVerifyParams.Channels = Channels; + linkAdrVerifyParams.MinTxPower = US915_HYBRID_MIN_TX_POWER; + linkAdrVerifyParams.MaxTxPower = US915_HYBRID_MAX_TX_POWER; + + // Verify the parameters and update, if necessary + status = RegionCommonLinkAdrReqVerifyParams( &linkAdrVerifyParams, &linkAdrParams.Datarate, &linkAdrParams.TxPower, &linkAdrParams.NbRep ); // Update channelsMask if everything is correct if( status == 0x07 ) { - if( linkAdrParams.NbRep == 0 ) - { // Value of 0 is not allowed, revert to default. - linkAdrParams.NbRep = 1; - } - // Copy Mask RegionCommonChanMaskCopy( ChannelsMask, channelsMask, 6 ); diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 9d8de89d1..8b42b87a6 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -583,6 +583,9 @@ uint8_t RegionUS915LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in uint8_t nextIndex = 0; uint8_t bytesProcessed = 0; uint16_t channelsMask[6] = { 0, 0, 0, 0, 0, 0 }; + GetPhyParams_t getPhy; + PhyParam_t phyParam; + RegionCommonLinkAdrReqVerifyParams_t linkAdrVerifyParams; // Initialize local copy of channels mask RegionCommonChanMaskCopy( channelsMask, ChannelsMask, 6 ); @@ -637,34 +640,33 @@ uint8_t RegionUS915LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, in status &= 0xFE; // Channel mask KO } - // Verify datarate - if( RegionCommonChanVerifyDr( US915_MAX_NB_CHANNELS, channelsMask, linkAdrParams.Datarate, US915_TX_MIN_DATARATE, US915_TX_MAX_DATARATE, Channels ) == false ) - { - status &= 0xFD; // Datarate KO - } - - // Verify tx power - if( RegionCommonValueInRange( linkAdrParams.TxPower, US915_MAX_TX_POWER, US915_MIN_TX_POWER ) == 0 ) - { - // Verify if the maximum TX power is exceeded - if( US915_MAX_TX_POWER > linkAdrParams.TxPower ) - { // Apply maximum TX power. Accept TX power. - linkAdrParams.TxPower = US915_MAX_TX_POWER; - } - else - { - status &= 0xFB; // TxPower KO - } - } + // Get the minimum possible datarate + getPhy.Attribute = PHY_MIN_TX_DR; + getPhy.UplinkDwellTime = linkAdrReq->UplinkDwellTime; + phyParam = RegionUS915GetPhyParam( &getPhy ); + + linkAdrVerifyParams.Status = status; + linkAdrVerifyParams.AdrEnabled = linkAdrReq->AdrEnabled; + linkAdrVerifyParams.Datarate = linkAdrParams.Datarate; + linkAdrVerifyParams.TxPower = linkAdrParams.TxPower; + linkAdrVerifyParams.NbRep = linkAdrParams.NbRep; + linkAdrVerifyParams.CurrentDatarate = linkAdrReq->CurrentDatarate; + linkAdrVerifyParams.CurrentTxPower = linkAdrReq->CurrentTxPower; + linkAdrVerifyParams.CurrentNbRep = linkAdrReq->CurrentNbRep; + linkAdrVerifyParams.NbChannels = US915_MAX_NB_CHANNELS; + linkAdrVerifyParams.ChannelsMask = channelsMask; + linkAdrVerifyParams.MinDatarate = ( int8_t )phyParam.Value; + linkAdrVerifyParams.MaxDatarate = US915_TX_MAX_DATARATE; + linkAdrVerifyParams.Channels = Channels; + linkAdrVerifyParams.MinTxPower = US915_MIN_TX_POWER; + linkAdrVerifyParams.MaxTxPower = US915_MAX_TX_POWER; + + // Verify the parameters and update, if necessary + status = RegionCommonLinkAdrReqVerifyParams( &linkAdrVerifyParams, &linkAdrParams.Datarate, &linkAdrParams.TxPower, &linkAdrParams.NbRep ); // Update channelsMask if everything is correct if( status == 0x07 ) { - if( linkAdrParams.NbRep == 0 ) - { // Value of 0 is not allowed, revert to default. - linkAdrParams.NbRep = 1; - } - // Copy Mask RegionCommonChanMaskCopy( ChannelsMask, channelsMask, 6 ); From a741d8a387c78fc16834308ac2b048c0c960c50f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 13:21:44 +0200 Subject: [PATCH 134/161] Update function RegionCommonChanVerifyDr. Perform an 'AND' operation for security --- src/mac/region/RegionCommon.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mac/region/RegionCommon.c b/src/mac/region/RegionCommon.c index 933b96e3c..60aec27d8 100644 --- a/src/mac/region/RegionCommon.c +++ b/src/mac/region/RegionCommon.c @@ -84,7 +84,8 @@ bool RegionCommonChanVerifyDr( uint8_t nbChannels, uint16_t* channelsMask, int8_ { if( ( ( channelsMask[k] & ( 1 << j ) ) != 0 ) ) {// Check datarate validity for enabled channels - if( RegionCommonValueInRange( dr, channels[i + j].DrRange.Fields.Min, channels[i + j].DrRange.Fields.Max ) == 1 ) + if( RegionCommonValueInRange( dr, ( channels[i + j].DrRange.Fields.Min & 0x0F ), + ( channels[i + j].DrRange.Fields.Max & 0x0F ) ) == 1 ) { // At least 1 channel has been found we can return OK. return true; From 66b81e5a1d61f3873f1e93ddc318be2d0342ac4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 13:23:21 +0200 Subject: [PATCH 135/161] Bug fix in AS923 - for RX use always the payload limitation of dwell 0 --- src/mac/region/RegionAS923.c | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index 495b3f08a..b70fb52ca 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -624,24 +624,14 @@ bool RegionAS923RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate ) Radio.SetRxConfig( modem, rxConfig->Bandwidth, phyDr, 1, 0, 8, rxConfig->WindowTimeout, false, 0, false, 0, 0, true, rxConfig->RxContinuous ); } - // Check the downlink dwell time - if( rxConfig->DownlinkDwellTime == 0 ) + // Check for repeater support + if( rxConfig->RepeaterSupport == true ) { - // Check for repeater support - if( rxConfig->RepeaterSupport == true ) - { - maxPayload = MaxPayloadOfDatarateRepeaterDwell0AS923[dr]; - } - else - { - maxPayload = MaxPayloadOfDatarateDwell0AS923[dr]; - } + maxPayload = MaxPayloadOfDatarateRepeaterDwell0AS923[dr]; } else { - // Same table for repeater and non-repeater support for dwell time - // configuration 1. - maxPayload = MaxPayloadOfDatarateDwell1DownAS923[dr]; + maxPayload = MaxPayloadOfDatarateDwell0AS923[dr]; } Radio.SetMaxPayloadLength( modem, maxPayload + LORA_MAC_FRMPAYLOAD_OVERHEAD ); From 93eb1b24a70ab9580e88fd22a4d9adc4076b979c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 13:23:40 +0200 Subject: [PATCH 136/161] Bug fix in IN865 - Update the band of the default channels --- src/mac/region/RegionIN865.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mac/region/RegionIN865.h b/src/mac/region/RegionIN865.h index 9d5a7fb4d..b8feccdf2 100644 --- a/src/mac/region/RegionIN865.h +++ b/src/mac/region/RegionIN865.h @@ -199,19 +199,19 @@ * LoRaMac default channel 1 * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } */ -#define IN865_LC1 { 865062500, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 } +#define IN865_LC1 { 865062500, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } /*! * LoRaMac default channel 2 * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } */ -#define IN865_LC2 { 865402500, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 } +#define IN865_LC2 { 865402500, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } /*! * LoRaMac default channel 3 * Channel = { Frequency [Hz], RX1 Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } */ -#define IN865_LC3 { 865985000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 } +#define IN865_LC3 { 865985000, 0, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 } /*! * LoRaMac channels which are allowed for the join procedure From c0835af82e8f6e0c15f219fea88d20dfa295aadd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 13:24:32 +0200 Subject: [PATCH 137/161] Bug fix in KR920 - update the maxEIRP calculation for continuous wave --- src/mac/region/RegionKR920.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index b4ed651b7..fcef25eeb 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -1024,9 +1024,14 @@ bool RegionKR920ChannelsRemove( ChannelRemoveParams_t* channelRemove ) void RegionKR920SetContinuousWave( ContinuousWaveParams_t* continuousWave ) { int8_t txPowerLimited = LimitTxPower( continuousWave->TxPower, Bands[Channels[continuousWave->Channel].Band].TxMaxPower, continuousWave->Datarate, ChannelsMask ); + float maxEIRP = GetMaxEIRP( Channels[continuousWave->Channel].Frequency ); int8_t phyTxPower = 0; uint32_t frequency = Channels[continuousWave->Channel].Frequency; + // Take the minimum between the maxEIRP and continuousWave->MaxEirp. + // The value of continuousWave->MaxEirp could have changed during runtime, e.g. due to a MAC command. + maxEIRP = MIN( continuousWave->MaxEirp, maxEIRP ); + // Calculate physical TX power phyTxPower = RegionCommonComputeTxPower( txPowerLimited, maxEIRP, continuousWave->AntennaGain ); From 0934361c97dc71a87c895666b1e67902821bb218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20J=C3=A4ckle?= Date: Thu, 6 Jul 2017 17:22:57 +0200 Subject: [PATCH 138/161] Updated all regions to use MAX output power by default. --- src/mac/region/RegionAU915.h | 2 +- src/mac/region/RegionCN470.h | 2 +- src/mac/region/RegionEU868.h | 2 +- src/mac/region/RegionUS915-Hybrid.h | 2 +- src/mac/region/RegionUS915.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mac/region/RegionAU915.h b/src/mac/region/RegionAU915.h index 7d0f52ec9..9dd3dd839 100644 --- a/src/mac/region/RegionAU915.h +++ b/src/mac/region/RegionAU915.h @@ -93,7 +93,7 @@ /*! * Default Tx output power used by the node */ -#define AU915_DEFAULT_TX_POWER TX_POWER_5 +#define AU915_DEFAULT_TX_POWER TX_POWER_0 /*! * Default Max EIRP diff --git a/src/mac/region/RegionCN470.h b/src/mac/region/RegionCN470.h index bc48bfa94..a60cd99e9 100644 --- a/src/mac/region/RegionCN470.h +++ b/src/mac/region/RegionCN470.h @@ -93,7 +93,7 @@ /*! * Default Tx output power used by the node */ -#define CN470_DEFAULT_TX_POWER TX_POWER_2 +#define CN470_DEFAULT_TX_POWER TX_POWER_0 /*! * Default Max EIRP diff --git a/src/mac/region/RegionEU868.h b/src/mac/region/RegionEU868.h index d272e4828..706a62ea2 100644 --- a/src/mac/region/RegionEU868.h +++ b/src/mac/region/RegionEU868.h @@ -103,7 +103,7 @@ /*! * Default Tx output power used by the node */ -#define EU868_DEFAULT_TX_POWER TX_POWER_1 +#define EU868_DEFAULT_TX_POWER TX_POWER_0 /*! * Default Max EIRP diff --git a/src/mac/region/RegionUS915-Hybrid.h b/src/mac/region/RegionUS915-Hybrid.h index 38e71b370..60e6aeb8a 100644 --- a/src/mac/region/RegionUS915-Hybrid.h +++ b/src/mac/region/RegionUS915-Hybrid.h @@ -93,7 +93,7 @@ /*! * Default Tx output power used by the node */ -#define US915_HYBRID_DEFAULT_TX_POWER TX_POWER_5 +#define US915_HYBRID_DEFAULT_TX_POWER TX_POWER_0 /*! * Default Max ERP diff --git a/src/mac/region/RegionUS915.h b/src/mac/region/RegionUS915.h index 264fc9765..53bfe2a94 100644 --- a/src/mac/region/RegionUS915.h +++ b/src/mac/region/RegionUS915.h @@ -93,7 +93,7 @@ /*! * Default Tx output power used by the node */ -#define US915_DEFAULT_TX_POWER TX_POWER_5 +#define US915_DEFAULT_TX_POWER TX_POWER_0 /*! * Default Max ERP From f40f6367c96a2e588b561f2cb067356a56e2e128 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 25 Jul 2017 13:37:27 +0200 Subject: [PATCH 139/161] Added missing Rx1 timeout handling. Fix for timeout issue described on Issue #217 --- src/mac/LoRaMac.c | 15 ++++++++++++++- src/mac/LoRaMac.h | 4 ++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index b2409a978..97ae1141a 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1154,7 +1154,20 @@ static void OnRadioRxTimeout( void ) OnRxWindow2TimerEvent( ); } - if( RxSlot == 1 ) + if( RxSlot == 0 ) + { + if( NodeAckRequested == true ) + { + McpsConfirm.Status = LORAMAC_EVENT_INFO_STATUS_RX1_TIMEOUT; + } + MlmeConfirm.Status = LORAMAC_EVENT_INFO_STATUS_RX1_TIMEOUT; + + if( TimerGetElapsedTime( AggregatedLastTxDoneTime ) >= RxWindow2Delay ) + { + LoRaMacFlags.Bits.MacDone = 1; + } + } + else { if( NodeAckRequested == true ) { diff --git a/src/mac/LoRaMac.h b/src/mac/LoRaMac.h index 0e0dabc16..c0a44ca66 100644 --- a/src/mac/LoRaMac.h +++ b/src/mac/LoRaMac.h @@ -558,6 +558,10 @@ typedef enum eLoRaMacEventInfoStatus * A Tx timeout occurred */ LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT, + /*! + * An Rx timeout occurred on receive window 1 + */ + LORAMAC_EVENT_INFO_STATUS_RX1_TIMEOUT, /*! * An Rx timeout occurred on receive window 2 */ From 101162129973574c808dad0db8612cea5afe79fb Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 25 Jul 2017 13:38:21 +0200 Subject: [PATCH 140/161] Added verification of payload size for Unconfirmed and Confirmed messages depending on Dwell time. Necessary to pass AS923 certification. --- src/mac/LoRaMac.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 97ae1141a..06ff42280 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -805,6 +805,24 @@ static void OnRadioRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t case FRAME_TYPE_DATA_CONFIRMED_DOWN: case FRAME_TYPE_DATA_UNCONFIRMED_DOWN: { + // Check if the received payload size is valid + getPhy.UplinkDwellTime = LoRaMacParams.DownlinkDwellTime; + getPhy.Datarate = McpsIndication.RxDatarate; + getPhy.Attribute = PHY_MAX_PAYLOAD; + + // Get the maximum payload length + if( RepeaterSupport == true ) + { + getPhy.Attribute = PHY_MAX_PAYLOAD_REPEATER; + } + phyParam = RegionGetPhyParam( LoRaMacRegion, &getPhy ); + if( MAX( 0, ( int16_t )( ( int16_t )size - ( int16_t )LORA_MAC_FRMPAYLOAD_OVERHEAD ) ) > phyParam.Value ) + { + McpsIndication.Status = LORAMAC_EVENT_INFO_STATUS_ERROR; + PrepareRxDoneAbort( ); + return; + } + address = payload[pktHeaderLen++]; address |= ( (uint32_t)payload[pktHeaderLen++] << 8 ); address |= ( (uint32_t)payload[pktHeaderLen++] << 16 ); From 7d1b0eabaf2d79198dfe846bcdb81c91fdf61b4f Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 25 Jul 2017 13:39:01 +0200 Subject: [PATCH 141/161] Fixed RegionCommonSetBandTxDone in order to also update band->LastTxDoneTime when performing the Join procedure. A JoinReq transmission must also be accounted as a normal transmission. --- src/mac/region/RegionCommon.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mac/region/RegionCommon.c b/src/mac/region/RegionCommon.c index 60aec27d8..fb0b139b7 100644 --- a/src/mac/region/RegionCommon.c +++ b/src/mac/region/RegionCommon.c @@ -156,6 +156,7 @@ void RegionCommonSetBandTxDone( bool joined, Band_t* band, TimerTime_t lastTxDon } else { + band->LastTxDoneTime = lastTxDone; band->LastJoinTxDoneTime = lastTxDone; } } From ade1fd1fd227e072146f41d1d7f6c61ed2501e5c Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 25 Jul 2017 13:39:33 +0200 Subject: [PATCH 142/161] Removed trailing spaces. --- src/radio/radio.h | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/radio/radio.h b/src/radio/radio.h index d04cabc1d..86d22c20c 100644 --- a/src/radio/radio.h +++ b/src/radio/radio.h @@ -102,7 +102,7 @@ struct Radio_s /*! * \brief Configures the radio with the given modem * - * \param [IN] modem Modem to be used [0: FSK, 1: LoRa] + * \param [IN] modem Modem to be used [0: FSK, 1: LoRa] */ void ( *SetModem )( RadioModems_t modem ); /*! @@ -125,7 +125,7 @@ struct Radio_s /*! * \brief Generates a 32 bits random value based on the RSSI readings * - * \remark This function sets the radio in LoRa modem mode and disables + * \remark This function sets the radio in LoRa modem mode and disables * all interrupts. * After calling this function either Radio.SetRxConfig or * Radio.SetTxConfig functions must be called. @@ -140,19 +140,19 @@ struct Radio_s * \param [IN] bandwidth Sets the bandwidth * FSK : >= 2600 and <= 250000 Hz * LoRa: [0: 125 kHz, 1: 250 kHz, - * 2: 500 kHz, 3: Reserved] + * 2: 500 kHz, 3: Reserved] * \param [IN] datarate Sets the Datarate * FSK : 600..300000 bits/s * LoRa: [6: 64, 7: 128, 8: 256, 9: 512, * 10: 1024, 11: 2048, 12: 4096 chips] * \param [IN] coderate Sets the coding rate (LoRa only) * FSK : N/A ( set to 0 ) - * LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] - * \param [IN] bandwidthAfc Sets the AFC Bandwidth (FSK only) + * LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] + * \param [IN] bandwidthAfc Sets the AFC Bandwidth (FSK only) * FSK : >= 2600 and <= 250000 Hz - * LoRa: N/A ( set to 0 ) + * LoRa: N/A ( set to 0 ) * \param [IN] preambleLen Sets the Preamble length - * FSK : Number of bytes + * FSK : Number of bytes * LoRa: Length in symbols (the hardware adds 4 more symbols) * \param [IN] symbTimeout Sets the RxSingle timeout value * FSK : timeout in number of bytes @@ -182,7 +182,7 @@ struct Radio_s /*! * \brief Sets the transmission parameters * - * \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa] + * \param [IN] modem Radio modem to be used [0: FSK, 1: LoRa] * \param [IN] power Sets the output power [dBm] * \param [IN] fdev Sets the frequency deviation (FSK only) * FSK : [Hz] @@ -190,16 +190,16 @@ struct Radio_s * \param [IN] bandwidth Sets the bandwidth (LoRa only) * FSK : 0 * LoRa: [0: 125 kHz, 1: 250 kHz, - * 2: 500 kHz, 3: Reserved] + * 2: 500 kHz, 3: Reserved] * \param [IN] datarate Sets the Datarate * FSK : 600..300000 bits/s * LoRa: [6: 64, 7: 128, 8: 256, 9: 512, * 10: 1024, 11: 2048, 12: 4096 chips] * \param [IN] coderate Sets the coding rate (LoRa only) * FSK : N/A ( set to 0 ) - * LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] + * LoRa: [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] * \param [IN] preambleLen Sets the preamble length - * FSK : Number of bytes + * FSK : Number of bytes * LoRa: Length in symbols (the hardware adds 4 more symbols) * \param [IN] fixLen Fixed length packets [0: variable, 1: fixed] * \param [IN] crcOn Enables disables the CRC [0: OFF, 1: ON] @@ -214,7 +214,7 @@ struct Radio_s * LoRa: [0: not inverted, 1: inverted] * \param [IN] timeout Transmission timeout [ms] */ - void ( *SetTxConfig )( RadioModems_t modem, int8_t power, uint32_t fdev, + void ( *SetTxConfig )( RadioModems_t modem, int8_t power, uint32_t fdev, uint32_t bandwidth, uint32_t datarate, uint8_t coderate, uint16_t preambleLen, bool fixLen, bool crcOn, bool FreqHopOn, From 9e9bbc464f3185b4a0ea0cd55eb6e35d83e70029 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 25 Jul 2017 13:40:22 +0200 Subject: [PATCH 143/161] Applied coding conventions. --- src/mac/LoRaMac.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 06ff42280..bbdb20a26 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2154,7 +2154,7 @@ LoRaMacStatus_t PrepareFrame( LoRaMacHeader_t *macHdr, LoRaMacFrameCtrl_t *fCtrl } else { - if( ( MacCommandsBufferIndex > 0 ) && ( MacCommandsInNextTx ) ) + if( ( MacCommandsBufferIndex > 0 ) && ( MacCommandsInNextTx == true ) ) { LoRaMacTxPayloadLen = MacCommandsBufferIndex; payload = MacCommandsBuffer; From 2337f8a95809ff2ba85ea5c680e73c0e5eec1bce Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 25 Jul 2017 13:41:09 +0200 Subject: [PATCH 144/161] MacCommandsBufferIndex must be reset when the mac commands are being sent on port 0. --- src/mac/LoRaMac.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index bbdb20a26..1b661f40e 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2175,6 +2175,8 @@ LoRaMacStatus_t PrepareFrame( LoRaMacHeader_t *macHdr, LoRaMacFrameCtrl_t *fCtrl if( framePort == 0 ) { + // Reset buffer index as the mac commands are being sent on port 0 + MacCommandsBufferIndex = 0; LoRaMacPayloadEncrypt( (uint8_t* ) payload, LoRaMacTxPayloadLen, LoRaMacNwkSKey, LoRaMacDevAddr, UP_LINK, UpLinkCounter, &LoRaMacBuffer[pktHeaderLen] ); } else From 1f044cf1d4972c6f1d2c49c687d19163296c7982 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 25 Jul 2017 13:42:27 +0200 Subject: [PATCH 145/161] AdrAckReq bit must be set to false as soon as we reach the lowest datarate. --- src/mac/region/RegionAS923.c | 2 ++ src/mac/region/RegionAU915.c | 2 ++ src/mac/region/RegionCN470.c | 2 ++ src/mac/region/RegionCN779.c | 2 ++ src/mac/region/RegionEU433.c | 2 ++ src/mac/region/RegionEU868.c | 2 ++ src/mac/region/RegionIN865.c | 2 ++ src/mac/region/RegionKR920.c | 2 ++ src/mac/region/RegionUS915-Hybrid.c | 2 ++ src/mac/region/RegionUS915.c | 2 ++ 10 files changed, 20 insertions(+) diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index b70fb52ca..ef7d2cc82 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -548,6 +548,8 @@ bool RegionAS923AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO if( datarate == minTxDatarate ) { + // We must set adrAckReq to false as soon as we reach the lowest datarate + adrAckReq = false; if( adrNext->UpdateChanMask == true ) { // Re-enable default channels diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 7693a14f6..2cc8fa173 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -464,6 +464,8 @@ bool RegionAU915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO if( datarate == AU915_TX_MIN_DATARATE ) { + // We must set adrAckReq to false as soon as we reach the lowest datarate + adrAckReq = false; if( adrNext->UpdateChanMask == true ) { // Re-enable default channels diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index 70669a10d..f49195a8e 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -428,6 +428,8 @@ bool RegionCN470AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO if( datarate == CN470_TX_MIN_DATARATE ) { + // We must set adrAckReq to false as soon as we reach the lowest datarate + adrAckReq = false; if( adrNext->UpdateChanMask == true ) { // Re-enable default channels diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index ce7dee453..27c50941e 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -491,6 +491,8 @@ bool RegionCN779AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO if( datarate == CN779_TX_MIN_DATARATE ) { + // We must set adrAckReq to false as soon as we reach the lowest datarate + adrAckReq = false; if( adrNext->UpdateChanMask == true ) { // Re-enable default channels diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index c6f17be0e..6d1c4b31f 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -491,6 +491,8 @@ bool RegionEU433AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO if( datarate == EU433_TX_MIN_DATARATE ) { + // We must set adrAckReq to false as soon as we reach the lowest datarate + adrAckReq = false; if( adrNext->UpdateChanMask == true ) { // Re-enable default channels diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index 1150e6880..5fb12b4ae 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -520,6 +520,8 @@ bool RegionEU868AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO if( datarate == EU868_TX_MIN_DATARATE ) { + // We must set adrAckReq to false as soon as we reach the lowest datarate + adrAckReq = false; if( adrNext->UpdateChanMask == true ) { // Re-enable default channels diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index 418279eee..b0ae2622f 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -495,6 +495,8 @@ bool RegionIN865AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO if( datarate == IN865_TX_MIN_DATARATE ) { + // We must set adrAckReq to false as soon as we reach the lowest datarate + adrAckReq = false; if( adrNext->UpdateChanMask == true ) { // Re-enable default channels diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index fcef25eeb..f71610cc7 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -514,6 +514,8 @@ bool RegionKR920AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO if( datarate == KR920_TX_MIN_DATARATE ) { + // We must set adrAckReq to false as soon as we reach the lowest datarate + adrAckReq = false; if( adrNext->UpdateChanMask == true ) { // Re-enable default channels diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index 638e34aab..9d6cdf2cf 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -565,6 +565,8 @@ bool RegionUS915HybridAdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* if( datarate == US915_HYBRID_TX_MIN_DATARATE ) { + // We must set adrAckReq to false as soon as we reach the lowest datarate + adrAckReq = false; if( adrNext->UpdateChanMask == true ) { // Re-enable default channels diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 8b42b87a6..643b13413 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -472,6 +472,8 @@ bool RegionUS915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowO if( datarate == US915_TX_MIN_DATARATE ) { + // We must set adrAckReq to false as soon as we reach the lowest datarate + adrAckReq = false; if( adrNext->UpdateChanMask == true ) { // Re-enable default channels From 3197008ae46cdc3ee62ab02c8d08f1a29491b358 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 25 Jul 2017 13:44:19 +0200 Subject: [PATCH 146/161] Bug fix for RX window 2 in class c mode. When changing the RX2 window parameters, this will take effect immediately now. GitHub Issue #250 --- src/mac/LoRaMac.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 1b661f40e..2e929ad84 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -2782,6 +2782,33 @@ LoRaMacStatus_t LoRaMacMibSetRequestConfirm( MibRequestConfirm_t *mibSet ) if( RegionVerify( LoRaMacRegion, &verify, PHY_RX_DR ) == true ) { LoRaMacParams.Rx2Channel = mibSet->Param.Rx2Channel; + + if( ( LoRaMacDeviceClass == CLASS_C ) && ( IsLoRaMacNetworkJoined == true ) ) + { + // Compute Rx2 windows parameters + RegionComputeRxWindowParameters( LoRaMacRegion, + LoRaMacParams.Rx2Channel.Datarate, + LoRaMacParams.MinRxSymbols, + LoRaMacParams.SystemMaxRxError, + &RxWindow2Config ); + + RxWindow2Config.Channel = Channel; + RxWindow2Config.Frequency = LoRaMacParams.Rx2Channel.Frequency; + RxWindow2Config.DownlinkDwellTime = LoRaMacParams.DownlinkDwellTime; + RxWindow2Config.RepeaterSupport = RepeaterSupport; + RxWindow2Config.Window = 1; + RxWindow2Config.RxContinuous = true; + + if( RegionRxConfig( LoRaMacRegion, &RxWindow2Config, ( int8_t* )&McpsIndication.RxDatarate ) == true ) + { + RxWindowSetup( RxWindow2Config.RxContinuous, LoRaMacParams.MaxRxWindow ); + RxSlot = RxWindow2Config.Window; + } + else + { + status = LORAMAC_STATUS_PARAMETER_INVALID; + } + } } else { From a6ee2bbe3a0cb8409a37b53958f9f408600d4781 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 25 Jul 2017 13:47:27 +0200 Subject: [PATCH 147/161] Enhancement for regions without FSK modulation support. Update all regions with a datarate bounds verification. GitHub Issue #276 --- src/mac/region/RegionAS923.c | 11 ++++++----- src/mac/region/RegionAU915.c | 14 ++++---------- src/mac/region/RegionCN470.c | 14 ++++---------- src/mac/region/RegionCN779.c | 11 ++++++----- src/mac/region/RegionEU433.c | 11 ++++++----- src/mac/region/RegionEU868.c | 11 ++++++----- src/mac/region/RegionIN865.c | 11 ++++++----- src/mac/region/RegionKR920.c | 14 ++++---------- src/mac/region/RegionUS915-Hybrid.c | 14 ++++---------- src/mac/region/RegionUS915.c | 14 ++++---------- 10 files changed, 50 insertions(+), 75 deletions(-) diff --git a/src/mac/region/RegionAS923.c b/src/mac/region/RegionAS923.c index ef7d2cc82..2677d0ccd 100644 --- a/src/mac/region/RegionAS923.c +++ b/src/mac/region/RegionAS923.c @@ -570,16 +570,17 @@ void RegionAS923ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols { double tSymbol = 0.0; - rxConfigParams->Datarate = datarate; - rxConfigParams->Bandwidth = GetBandwidth( datarate ); + // Get the datarate, perform a boundary check + rxConfigParams->Datarate = MIN( datarate, AS923_RX_MAX_DATARATE ); + rxConfigParams->Bandwidth = GetBandwidth( rxConfigParams->Datarate ); - if( datarate == DR_7 ) + if( rxConfigParams->Datarate == DR_7 ) { // FSK - tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesAS923[datarate] ); + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesAS923[rxConfigParams->Datarate] ); } else { // LoRa - tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesAS923[datarate], BandwidthsAS923[datarate] ); + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesAS923[rxConfigParams->Datarate], BandwidthsAS923[rxConfigParams->Datarate] ); } RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); diff --git a/src/mac/region/RegionAU915.c b/src/mac/region/RegionAU915.c index 2cc8fa173..4c8fc332d 100644 --- a/src/mac/region/RegionAU915.c +++ b/src/mac/region/RegionAU915.c @@ -491,17 +491,11 @@ void RegionAU915ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols { double tSymbol = 0.0; - rxConfigParams->Datarate = datarate; - rxConfigParams->Bandwidth = GetBandwidth( datarate ); + // Get the datarate, perform a boundary check + rxConfigParams->Datarate = MIN( datarate, AU915_RX_MAX_DATARATE ); + rxConfigParams->Bandwidth = GetBandwidth( rxConfigParams->Datarate ); - if( datarate == DR_7 ) - { // FSK - tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesAU915[datarate] ); - } - else - { // LoRa - tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesAU915[datarate], BandwidthsAU915[datarate] ); - } + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesAU915[rxConfigParams->Datarate], BandwidthsAU915[rxConfigParams->Datarate] ); RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } diff --git a/src/mac/region/RegionCN470.c b/src/mac/region/RegionCN470.c index f49195a8e..dbbc7451f 100644 --- a/src/mac/region/RegionCN470.c +++ b/src/mac/region/RegionCN470.c @@ -455,17 +455,11 @@ void RegionCN470ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols { double tSymbol = 0.0; - rxConfigParams->Datarate = datarate; - rxConfigParams->Bandwidth = GetBandwidth( datarate ); + // Get the datarate, perform a boundary check + rxConfigParams->Datarate = MIN( datarate, CN470_RX_MAX_DATARATE ); + rxConfigParams->Bandwidth = GetBandwidth( rxConfigParams->Datarate ); - if( datarate == DR_7 ) - { // FSK - tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesCN470[datarate] ); - } - else - { // LoRa - tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesCN470[datarate], BandwidthsCN470[datarate] ); - } + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesCN470[rxConfigParams->Datarate], BandwidthsCN470[rxConfigParams->Datarate] ); RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } diff --git a/src/mac/region/RegionCN779.c b/src/mac/region/RegionCN779.c index 27c50941e..c5d9b7b82 100644 --- a/src/mac/region/RegionCN779.c +++ b/src/mac/region/RegionCN779.c @@ -513,16 +513,17 @@ void RegionCN779ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols { double tSymbol = 0.0; - rxConfigParams->Datarate = datarate; - rxConfigParams->Bandwidth = GetBandwidth( datarate ); + // Get the datarate, perform a boundary check + rxConfigParams->Datarate = MIN( datarate, CN779_RX_MAX_DATARATE ); + rxConfigParams->Bandwidth = GetBandwidth( rxConfigParams->Datarate ); - if( datarate == DR_7 ) + if( rxConfigParams->Datarate == DR_7 ) { // FSK - tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesCN779[datarate] ); + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesCN779[rxConfigParams->Datarate] ); } else { // LoRa - tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesCN779[datarate], BandwidthsCN779[datarate] ); + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesCN779[rxConfigParams->Datarate], BandwidthsCN779[rxConfigParams->Datarate] ); } RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); diff --git a/src/mac/region/RegionEU433.c b/src/mac/region/RegionEU433.c index 6d1c4b31f..5446c51e4 100644 --- a/src/mac/region/RegionEU433.c +++ b/src/mac/region/RegionEU433.c @@ -513,16 +513,17 @@ void RegionEU433ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols { double tSymbol = 0.0; - rxConfigParams->Datarate = datarate; - rxConfigParams->Bandwidth = GetBandwidth( datarate ); + // Get the datarate, perform a boundary check + rxConfigParams->Datarate = MIN( datarate, EU433_RX_MAX_DATARATE ); + rxConfigParams->Bandwidth = GetBandwidth( rxConfigParams->Datarate ); - if( datarate == DR_7 ) + if( rxConfigParams->Datarate == DR_7 ) { // FSK - tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesEU433[datarate] ); + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesEU433[rxConfigParams->Datarate] ); } else { // LoRa - tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesEU433[datarate], BandwidthsEU433[datarate] ); + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesEU433[rxConfigParams->Datarate], BandwidthsEU433[rxConfigParams->Datarate] ); } RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); diff --git a/src/mac/region/RegionEU868.c b/src/mac/region/RegionEU868.c index 5fb12b4ae..f4385a56a 100644 --- a/src/mac/region/RegionEU868.c +++ b/src/mac/region/RegionEU868.c @@ -542,16 +542,17 @@ void RegionEU868ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols { double tSymbol = 0.0; - rxConfigParams->Datarate = datarate; - rxConfigParams->Bandwidth = GetBandwidth( datarate ); + // Get the datarate, perform a boundary check + rxConfigParams->Datarate = MIN( datarate, EU868_RX_MAX_DATARATE ); + rxConfigParams->Bandwidth = GetBandwidth( rxConfigParams->Datarate ); - if( datarate == DR_7 ) + if( rxConfigParams->Datarate == DR_7 ) { // FSK - tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesEU868[datarate] ); + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesEU868[rxConfigParams->Datarate] ); } else { // LoRa - tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesEU868[datarate], BandwidthsEU868[datarate] ); + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesEU868[rxConfigParams->Datarate], BandwidthsEU868[rxConfigParams->Datarate] ); } RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); diff --git a/src/mac/region/RegionIN865.c b/src/mac/region/RegionIN865.c index b0ae2622f..75e2a4b1d 100644 --- a/src/mac/region/RegionIN865.c +++ b/src/mac/region/RegionIN865.c @@ -517,16 +517,17 @@ void RegionIN865ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols { double tSymbol = 0.0; - rxConfigParams->Datarate = datarate; - rxConfigParams->Bandwidth = GetBandwidth( datarate ); + // Get the datarate, perform a boundary check + rxConfigParams->Datarate = MIN( datarate, IN865_RX_MAX_DATARATE ); + rxConfigParams->Bandwidth = GetBandwidth( rxConfigParams->Datarate ); - if( datarate == DR_7 ) + if( rxConfigParams->Datarate == DR_7 ) { // FSK - tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesIN865[datarate] ); + tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesIN865[rxConfigParams->Datarate] ); } else { // LoRa - tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesIN865[datarate], BandwidthsIN865[datarate] ); + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesIN865[rxConfigParams->Datarate], BandwidthsIN865[rxConfigParams->Datarate] ); } RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); diff --git a/src/mac/region/RegionKR920.c b/src/mac/region/RegionKR920.c index f71610cc7..eda6652d3 100644 --- a/src/mac/region/RegionKR920.c +++ b/src/mac/region/RegionKR920.c @@ -536,17 +536,11 @@ void RegionKR920ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols { double tSymbol = 0.0; - rxConfigParams->Datarate = datarate; - rxConfigParams->Bandwidth = GetBandwidth( datarate ); + // Get the datarate, perform a boundary check + rxConfigParams->Datarate = MIN( datarate, KR920_RX_MAX_DATARATE ); + rxConfigParams->Bandwidth = GetBandwidth( rxConfigParams->Datarate ); - if( datarate == DR_7 ) - { // FSK - tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesKR920[datarate] ); - } - else - { // LoRa - tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesKR920[datarate], BandwidthsKR920[datarate] ); - } + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesKR920[rxConfigParams->Datarate], BandwidthsKR920[rxConfigParams->Datarate] ); RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } diff --git a/src/mac/region/RegionUS915-Hybrid.c b/src/mac/region/RegionUS915-Hybrid.c index 9d6cdf2cf..426e40dd6 100644 --- a/src/mac/region/RegionUS915-Hybrid.c +++ b/src/mac/region/RegionUS915-Hybrid.c @@ -587,17 +587,11 @@ void RegionUS915HybridComputeRxWindowParameters( int8_t datarate, uint8_t minRxS { double tSymbol = 0.0; - rxConfigParams->Datarate = datarate; - rxConfigParams->Bandwidth = GetBandwidth( datarate ); + // Get the datarate, perform a boundary check + rxConfigParams->Datarate = MIN( datarate, US915_HYBRID_RX_MAX_DATARATE ); + rxConfigParams->Bandwidth = GetBandwidth( rxConfigParams->Datarate ); - if( datarate == DR_7 ) - { // FSK - tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesUS915_HYBRID[datarate] ); - } - else - { // LoRa - tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesUS915_HYBRID[datarate], BandwidthsUS915_HYBRID[datarate] ); - } + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesUS915_HYBRID[rxConfigParams->Datarate], BandwidthsUS915_HYBRID[rxConfigParams->Datarate] ); RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } diff --git a/src/mac/region/RegionUS915.c b/src/mac/region/RegionUS915.c index 643b13413..8aa788a75 100644 --- a/src/mac/region/RegionUS915.c +++ b/src/mac/region/RegionUS915.c @@ -499,17 +499,11 @@ void RegionUS915ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols { double tSymbol = 0.0; - rxConfigParams->Datarate = datarate; - rxConfigParams->Bandwidth = GetBandwidth( datarate ); + // Get the datarate, perform a boundary check + rxConfigParams->Datarate = MIN( datarate, US915_RX_MAX_DATARATE ); + rxConfigParams->Bandwidth = GetBandwidth( rxConfigParams->Datarate ); - if( datarate == DR_7 ) - { // FSK - tSymbol = RegionCommonComputeSymbolTimeFsk( DataratesUS915[datarate] ); - } - else - { // LoRa - tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesUS915[datarate], BandwidthsUS915[datarate] ); - } + tSymbol = RegionCommonComputeSymbolTimeLoRa( DataratesUS915[rxConfigParams->Datarate], BandwidthsUS915[rxConfigParams->Datarate] ); RegionCommonComputeRxWindowParameters( tSymbol, minRxSymbols, rxError, RADIO_WAKEUP_TIME, &rxConfigParams->WindowTimeout, &rxConfigParams->WindowOffset ); } From 318e5f04e33c1fe1180a0343a852839fa96c36f3 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 25 Jul 2017 13:52:21 +0200 Subject: [PATCH 148/161] Changed assert_failed printf to use %u instead of %d as uint32_t is unsigned. As proposed by @GuntherSchulz on pull request #272 and Issue #263 --- src/apps/BootLoader/LoRaMote/main.c | 3 ++- src/apps/BootLoader/SensorNode/main.c | 3 ++- src/boards/LoRaMote/board.c | 3 ++- src/boards/MoteII/board.c | 4 ++-- src/boards/NAMote72/board.c | 4 ++-- src/boards/SK-iM880A/board.c | 3 ++- src/boards/SensorNode/board.c | 3 ++- 7 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/apps/BootLoader/LoRaMote/main.c b/src/apps/BootLoader/LoRaMote/main.c index e9195e8af..2afc3e0bd 100644 --- a/src/apps/BootLoader/LoRaMote/main.c +++ b/src/apps/BootLoader/LoRaMote/main.c @@ -176,8 +176,9 @@ void USB_LP_IRQHandler( void ) void assert_failed( uint8_t* file, uint32_t line ) { /* User can add his own implementation to report the file name and line number, - ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + ex: printf("Wrong parameters value: file %s on line %u\r\n", file, line) */ + printf( "Wrong parameters value: file %s on line %u\r\n", ( const char* )file, line ); /* Infinite loop */ while( 1 ) { diff --git a/src/apps/BootLoader/SensorNode/main.c b/src/apps/BootLoader/SensorNode/main.c index 916fac167..63b8bebfa 100644 --- a/src/apps/BootLoader/SensorNode/main.c +++ b/src/apps/BootLoader/SensorNode/main.c @@ -169,8 +169,9 @@ void USB_LP_IRQHandler( void ) void assert_failed( uint8_t* file, uint32_t line ) { /* User can add his own implementation to report the file name and line number, - ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + ex: printf("Wrong parameters value: file %s on line %u\r\n", file, line) */ + printf( "Wrong parameters value: file %s on line %u\r\n", ( const char* )file, line ); /* Infinite loop */ while( 1 ) { diff --git a/src/boards/LoRaMote/board.c b/src/boards/LoRaMote/board.c index 8612986b7..d0d5050fa 100644 --- a/src/boards/LoRaMote/board.c +++ b/src/boards/LoRaMote/board.c @@ -491,8 +491,9 @@ uint8_t GetBoardPowerSource( void ) void assert_failed( uint8_t* file, uint32_t line ) { /* User can add his own implementation to report the file name and line number, - ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + ex: printf("Wrong parameters value: file %s on line %u\r\n", file, line) */ + printf( "Wrong parameters value: file %s on line %u\r\n", ( const char* )file, line ); /* Infinite loop */ while( 1 ) { diff --git a/src/boards/MoteII/board.c b/src/boards/MoteII/board.c index a6c7bf729..172507bc8 100644 --- a/src/boards/MoteII/board.c +++ b/src/boards/MoteII/board.c @@ -461,9 +461,9 @@ uint8_t GetBoardPowerSource( void ) void assert_failed( uint8_t* file, uint32_t line ) { /* User can add his own implementation to report the file name and line number, - ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + ex: printf("Wrong parameters value: file %s on line %u\r\n", file, line) */ - printf( "Wrong parameters value: file %s on line %d\r\n", file, line ); + printf( "Wrong parameters value: file %s on line %u\r\n", ( const char* )file, line ); /* Infinite loop */ while( 1 ) { diff --git a/src/boards/NAMote72/board.c b/src/boards/NAMote72/board.c index 3d5fa3104..591c1730b 100644 --- a/src/boards/NAMote72/board.c +++ b/src/boards/NAMote72/board.c @@ -540,9 +540,9 @@ BoardVersion_t BoardGetVersion( void ) void assert_failed( uint8_t* file, uint32_t line ) { /* User can add his own implementation to report the file name and line number, - ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + ex: printf("Wrong parameters value: file %s on line %u\r\n", file, line) */ - printf( "Wrong parameters value: file %s on line %d\r\n", file, line ); + printf( "Wrong parameters value: file %s on line %u\r\n", ( const char* )file, line ); /* Infinite loop */ while( 1 ) { diff --git a/src/boards/SK-iM880A/board.c b/src/boards/SK-iM880A/board.c index d9e8df5eb..3765a67d7 100644 --- a/src/boards/SK-iM880A/board.c +++ b/src/boards/SK-iM880A/board.c @@ -447,8 +447,9 @@ uint8_t GetBoardPowerSource( void ) void assert_failed( uint8_t* file, uint32_t line ) { /* User can add his own implementation to report the file name and line number, - ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + ex: printf("Wrong parameters value: file %s on line %u\r\n", file, line) */ + printf( "Wrong parameters value: file %s on line %u\r\n", ( const char* )file, line ); /* Infinite loop */ while( 1 ) { diff --git a/src/boards/SensorNode/board.c b/src/boards/SensorNode/board.c index ceb1d1321..e1dbdade3 100644 --- a/src/boards/SensorNode/board.c +++ b/src/boards/SensorNode/board.c @@ -480,8 +480,9 @@ uint8_t GetBoardPowerSource( void ) void assert_failed( uint8_t* file, uint32_t line ) { /* User can add his own implementation to report the file name and line number, - ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + ex: printf("Wrong parameters value: file %s on line %u\r\n", file, line) */ + printf( "Wrong parameters value: file %s on line %u\r\n", ( const char* )file, line ); /* Infinite loop */ while( 1 ) { From b1829fb05bfa3023dc9c51029c0fd32883c1de89 Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 25 Jul 2017 13:56:36 +0200 Subject: [PATCH 149/161] Increased maximum application buffer size to 242 in order to be able to handle all the LoRaWAN certification tests. Fixed certification tests command 0x04 to only answer up to LORAWAN_APP_DATA_MAX_SIZE. Avoids buffer overflow in case the maximum application buffer is less than 242 bytes. --- src/apps/LoRaMac/classA/LoRaMote/main.c | 4 ++-- src/apps/LoRaMac/classA/MoteII/main.c | 4 ++-- src/apps/LoRaMac/classA/NAMote72/main.c | 4 ++-- src/apps/LoRaMac/classA/SK-iM880A/main.c | 4 ++-- src/apps/LoRaMac/classA/SensorNode/main.c | 4 ++-- src/apps/LoRaMac/classB/LoRaMote/main.c | 4 ++-- src/apps/LoRaMac/classB/MoteII/main.c | 4 ++-- src/apps/LoRaMac/classB/NAMote72/main.c | 4 ++-- src/apps/LoRaMac/classB/SK-iM880A/main.c | 4 ++-- src/apps/LoRaMac/classB/SensorNode/main.c | 4 ++-- src/apps/LoRaMac/classC/LoRaMote/main.c | 4 ++-- src/apps/LoRaMac/classC/MoteII/main.c | 4 ++-- src/apps/LoRaMac/classC/NAMote72/main.c | 4 ++-- src/apps/LoRaMac/classC/SK-iM880A/main.c | 4 ++-- src/apps/LoRaMac/classC/SensorNode/main.c | 4 ++-- 15 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/apps/LoRaMac/classA/LoRaMote/main.c b/src/apps/LoRaMac/classA/LoRaMote/main.c index f1284efb0..d000c1015 100644 --- a/src/apps/LoRaMac/classA/LoRaMote/main.c +++ b/src/apps/LoRaMac/classA/LoRaMote/main.c @@ -125,7 +125,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -555,7 +555,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classA/MoteII/main.c b/src/apps/LoRaMac/classA/MoteII/main.c index 02018a328..6988884f3 100644 --- a/src/apps/LoRaMac/classA/MoteII/main.c +++ b/src/apps/LoRaMac/classA/MoteII/main.c @@ -121,7 +121,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -604,7 +604,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classA/NAMote72/main.c b/src/apps/LoRaMac/classA/NAMote72/main.c index adf7cbb23..d60270815 100644 --- a/src/apps/LoRaMac/classA/NAMote72/main.c +++ b/src/apps/LoRaMac/classA/NAMote72/main.c @@ -123,7 +123,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -570,7 +570,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classA/SK-iM880A/main.c b/src/apps/LoRaMac/classA/SK-iM880A/main.c index f5843e63c..4759ce994 100644 --- a/src/apps/LoRaMac/classA/SK-iM880A/main.c +++ b/src/apps/LoRaMac/classA/SK-iM880A/main.c @@ -114,7 +114,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -501,7 +501,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classA/SensorNode/main.c b/src/apps/LoRaMac/classA/SensorNode/main.c index d73b41691..3ef1191c8 100644 --- a/src/apps/LoRaMac/classA/SensorNode/main.c +++ b/src/apps/LoRaMac/classA/SensorNode/main.c @@ -122,7 +122,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -567,7 +567,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classB/LoRaMote/main.c b/src/apps/LoRaMac/classB/LoRaMote/main.c index 342132a4f..b50d73d7c 100644 --- a/src/apps/LoRaMac/classB/LoRaMote/main.c +++ b/src/apps/LoRaMac/classB/LoRaMote/main.c @@ -125,7 +125,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -555,7 +555,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classB/MoteII/main.c b/src/apps/LoRaMac/classB/MoteII/main.c index 91d66c6e7..d3a7d05e8 100644 --- a/src/apps/LoRaMac/classB/MoteII/main.c +++ b/src/apps/LoRaMac/classB/MoteII/main.c @@ -121,7 +121,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -604,7 +604,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classB/NAMote72/main.c b/src/apps/LoRaMac/classB/NAMote72/main.c index a9afffdbd..391d46536 100644 --- a/src/apps/LoRaMac/classB/NAMote72/main.c +++ b/src/apps/LoRaMac/classB/NAMote72/main.c @@ -123,7 +123,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -570,7 +570,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classB/SK-iM880A/main.c b/src/apps/LoRaMac/classB/SK-iM880A/main.c index 3c45ccd5a..8785429ca 100644 --- a/src/apps/LoRaMac/classB/SK-iM880A/main.c +++ b/src/apps/LoRaMac/classB/SK-iM880A/main.c @@ -114,7 +114,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -501,7 +501,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classB/SensorNode/main.c b/src/apps/LoRaMac/classB/SensorNode/main.c index 054e65dc5..cec24468e 100644 --- a/src/apps/LoRaMac/classB/SensorNode/main.c +++ b/src/apps/LoRaMac/classB/SensorNode/main.c @@ -122,7 +122,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -567,7 +567,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classC/LoRaMote/main.c b/src/apps/LoRaMac/classC/LoRaMote/main.c index f524f74fe..6c6cc3b86 100644 --- a/src/apps/LoRaMac/classC/LoRaMote/main.c +++ b/src/apps/LoRaMac/classC/LoRaMote/main.c @@ -125,7 +125,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -555,7 +555,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classC/MoteII/main.c b/src/apps/LoRaMac/classC/MoteII/main.c index 09fbc6368..06953f8e3 100644 --- a/src/apps/LoRaMac/classC/MoteII/main.c +++ b/src/apps/LoRaMac/classC/MoteII/main.c @@ -121,7 +121,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -604,7 +604,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classC/NAMote72/main.c b/src/apps/LoRaMac/classC/NAMote72/main.c index 1a1368829..55f84f41a 100644 --- a/src/apps/LoRaMac/classC/NAMote72/main.c +++ b/src/apps/LoRaMac/classC/NAMote72/main.c @@ -123,7 +123,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -570,7 +570,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classC/SK-iM880A/main.c b/src/apps/LoRaMac/classC/SK-iM880A/main.c index d75edbb9b..b3340ec3b 100644 --- a/src/apps/LoRaMac/classC/SK-iM880A/main.c +++ b/src/apps/LoRaMac/classC/SK-iM880A/main.c @@ -114,7 +114,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -501,7 +501,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } diff --git a/src/apps/LoRaMac/classC/SensorNode/main.c b/src/apps/LoRaMac/classC/SensorNode/main.c index 186a71bd6..5c53ebd1e 100644 --- a/src/apps/LoRaMac/classC/SensorNode/main.c +++ b/src/apps/LoRaMac/classC/SensorNode/main.c @@ -122,7 +122,7 @@ static uint8_t AppDataSize = LORAWAN_APP_DATA_SIZE; /*! * User application data buffer size */ -#define LORAWAN_APP_DATA_MAX_SIZE 64 +#define LORAWAN_APP_DATA_MAX_SIZE 242 /*! * User application data @@ -567,7 +567,7 @@ static void McpsIndication( McpsIndication_t *mcpsIndication ) AppDataSize = mcpsIndication->BufferSize; AppData[0] = 4; - for( uint8_t i = 1; i < AppDataSize; i++ ) + for( uint8_t i = 1; i < MIN( AppDataSize, LORAWAN_APP_DATA_MAX_SIZE ); i++ ) { AppData[i] = mcpsIndication->Buffer[i] + 1; } From 137e55be396e67f1656d9123f9f603aeac6478fe Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 25 Jul 2017 14:00:32 +0200 Subject: [PATCH 150/161] Updated the main application examples in order to support the different regions. It has also been proposed by @GuntherSchulz on pull request #272 and Issue #263 --- src/apps/LoRaMac/classA/LoRaMote/main.c | 24 ++++++++++--- src/apps/LoRaMac/classA/MoteII/main.c | 25 ++++++++++---- src/apps/LoRaMac/classA/NAMote72/main.c | 32 ++++++++++++----- src/apps/LoRaMac/classA/SK-iM880A/main.c | 19 +++++++++- src/apps/LoRaMac/classA/SensorNode/main.c | 14 +++++--- src/apps/LoRaMac/classB/LoRaMote/main.c | 24 ++++++++++--- src/apps/LoRaMac/classB/MoteII/main.c | 25 ++++++++++---- src/apps/LoRaMac/classB/NAMote72/main.c | 32 ++++++++++++----- src/apps/LoRaMac/classB/SK-iM880A/main.c | 19 +++++++++- src/apps/LoRaMac/classB/SensorNode/main.c | 14 +++++--- src/apps/LoRaMac/classC/LoRaMote/main.c | 24 ++++++++++--- src/apps/LoRaMac/classC/MoteII/main.c | 25 ++++++++++---- src/apps/LoRaMac/classC/NAMote72/main.c | 32 ++++++++++++----- src/apps/LoRaMac/classC/SK-iM880A/main.c | 19 +++++++++- src/apps/LoRaMac/classC/SensorNode/main.c | 14 +++++--- src/apps/ping-pong/LoRaMote/main.c | 28 +++++++++++++-- src/apps/ping-pong/MoteII/main.c | 28 +++++++++++++-- src/apps/ping-pong/NAMote72/main.c | 28 +++++++++++++-- src/apps/ping-pong/SK-iM880A/main.c | 35 +++++++++++++++++++ src/apps/ping-pong/SensorNode/main.c | 36 +++++++++++++++---- src/apps/rx-sensi/LoRaMote/main.c | 28 +++++++++++++-- src/apps/rx-sensi/MoteII/main.c | 28 +++++++++++++-- src/apps/rx-sensi/NAMote72/main.c | 28 +++++++++++++-- src/apps/rx-sensi/SK-iM880A/main.c | 34 ++++++++++++++++++ src/apps/rx-sensi/SensorNode/main.c | 36 +++++++++++++++---- src/apps/tx-cw/LoRaMote/main.c | 28 +++++++++++++-- src/apps/tx-cw/MoteII/main.c | 28 +++++++++++++-- src/apps/tx-cw/NAMote72/main.c | 28 +++++++++++++-- src/apps/tx-cw/SK-iM880A/main.c | 37 ++++++++++++++++++++ src/apps/tx-cw/SensorNode/main.c | 42 +++++++++++++++++++---- 30 files changed, 703 insertions(+), 111 deletions(-) diff --git a/src/apps/LoRaMac/classA/LoRaMote/main.c b/src/apps/LoRaMac/classA/LoRaMote/main.c index d000c1015..40a514c61 100644 --- a/src/apps/LoRaMac/classA/LoRaMote/main.c +++ b/src/apps/LoRaMac/classA/LoRaMote/main.c @@ -86,14 +86,18 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 +#else + +#error "Please define a region in the compiler options." + #endif static uint8_t DevEui[] = LORAWAN_DEVICE_EUI; @@ -205,7 +209,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -236,7 +240,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -703,8 +707,18 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; -#if defined( REGION_EU868 ) +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); #elif defined( REGION_US915 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); #elif defined( REGION_US915_HYBRID ) diff --git a/src/apps/LoRaMac/classA/MoteII/main.c b/src/apps/LoRaMac/classA/MoteII/main.c index 6988884f3..f50c14668 100644 --- a/src/apps/LoRaMac/classA/MoteII/main.c +++ b/src/apps/LoRaMac/classA/MoteII/main.c @@ -87,14 +87,18 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 +#else + +#error "Please define a region in the compiler options." + #endif static uint8_t DevEui[] = LORAWAN_DEVICE_EUI; @@ -216,7 +220,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) LoRaMacUplinkStatus.Pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 LoRaMacUplinkStatus.Temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 LoRaMacUplinkStatus.AltitudeBar = ( int16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 @@ -241,7 +245,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = LoRaMacUplinkStatus.Longitude & 0xFF; AppData[14] = ( LoRaMacUplinkStatus.AltitudeGps >> 8 ) & 0xFF; AppData[15] = LoRaMacUplinkStatus.AltitudeGps & 0xFF; -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) LoRaMacUplinkStatus.Temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 LoRaMacUplinkStatus.BatteryLevel = BoardGetBatteryLevel( ); // 1 (very low) to 254 (fully charged) @@ -793,8 +797,18 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; -#if defined( REGION_EU868 ) +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); #elif defined( REGION_US915 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); #elif defined( REGION_US915_HYBRID ) @@ -802,7 +816,6 @@ int main( void ) #else #error "Please define a region in the compiler options." #endif - TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led1Timer, OnLed1TimerEvent ); diff --git a/src/apps/LoRaMac/classA/NAMote72/main.c b/src/apps/LoRaMac/classA/NAMote72/main.c index d60270815..d3adae970 100644 --- a/src/apps/LoRaMac/classA/NAMote72/main.c +++ b/src/apps/LoRaMac/classA/NAMote72/main.c @@ -84,14 +84,18 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 +#else + +#error "Please define a region in the compiler options." + #endif static uint8_t DevEui[] = LORAWAN_DEVICE_EUI; @@ -199,18 +203,18 @@ struct ComplianceTest_s */ static void PrepareTxFrame( uint8_t port ) { -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#if defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) MibRequestConfirm_t mibReq; if( BoardGetBatteryVoltage( ) < LOW_BAT_THRESHOLD ) { mibReq.Type = MIB_CHANNELS_TX_POWER; LoRaMacMibGetRequestConfirm( &mibReq ); - // TX_POWER_30_DBM = 0, TX_POWER_28_DBM = 1, ..., TX_POWER_20_DBM = 5, ..., TX_POWER_10_DBM = 10 + // 30 dBm = TX_POWER_0, 28 dBm = TX_POWER_1, ..., 20 dBm = TX_POWER_5, ..., 10 dBm = TX_POWER_10 // The if condition is then "less than" to check if the power is greater than 20 dBm - if( mibReq.Param.ChannelsTxPower < TX_POWER_20_DBM ) + if( mibReq.Param.ChannelsTxPower < TX_POWER_5 ) { - mibReq.Param.ChannelsTxPower = TX_POWER_20_DBM; + mibReq.Param.ChannelsTxPower = TX_POWER_5; LoRaMacMibSetRequestConfirm( &mibReq ); } } @@ -220,7 +224,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -251,7 +255,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -718,8 +722,18 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; -#if defined( REGION_EU868 ) +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); #elif defined( REGION_US915 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); #elif defined( REGION_US915_HYBRID ) diff --git a/src/apps/LoRaMac/classA/SK-iM880A/main.c b/src/apps/LoRaMac/classA/SK-iM880A/main.c index 4759ce994..843d79bf9 100644 --- a/src/apps/LoRaMac/classA/SK-iM880A/main.c +++ b/src/apps/LoRaMac/classA/SK-iM880A/main.c @@ -648,8 +648,25 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); - +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led4Timer, OnLed4TimerEvent ); diff --git a/src/apps/LoRaMac/classA/SensorNode/main.c b/src/apps/LoRaMac/classA/SensorNode/main.c index 3ef1191c8..52a0e900d 100644 --- a/src/apps/LoRaMac/classA/SensorNode/main.c +++ b/src/apps/LoRaMac/classA/SensorNode/main.c @@ -83,14 +83,18 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( REGION_EU433 ) || defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU868 ) +#if defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU433 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 +#else + +#error "Please define a region in the compiler options." + #endif static uint8_t DevEui[] = LORAWAN_DEVICE_EUI; @@ -207,7 +211,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( REGION_EU433 ) || defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU868 ) +#if defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU433 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -238,7 +242,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -727,6 +731,8 @@ int main( void ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU433 ); #elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); #elif defined( REGION_KR920 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); #elif defined( REGION_US915 ) diff --git a/src/apps/LoRaMac/classB/LoRaMote/main.c b/src/apps/LoRaMac/classB/LoRaMote/main.c index b50d73d7c..fbeac18f4 100644 --- a/src/apps/LoRaMac/classB/LoRaMote/main.c +++ b/src/apps/LoRaMac/classB/LoRaMote/main.c @@ -86,14 +86,18 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 +#else + +#error "Please define a region in the compiler options." + #endif static uint8_t DevEui[] = LORAWAN_DEVICE_EUI; @@ -205,7 +209,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -236,7 +240,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -703,8 +707,18 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; -#if defined( REGION_EU868 ) +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); #elif defined( REGION_US915 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); #elif defined( REGION_US915_HYBRID ) diff --git a/src/apps/LoRaMac/classB/MoteII/main.c b/src/apps/LoRaMac/classB/MoteII/main.c index d3a7d05e8..ba2c4e096 100644 --- a/src/apps/LoRaMac/classB/MoteII/main.c +++ b/src/apps/LoRaMac/classB/MoteII/main.c @@ -87,14 +87,18 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 +#else + +#error "Please define a region in the compiler options." + #endif static uint8_t DevEui[] = LORAWAN_DEVICE_EUI; @@ -216,7 +220,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) LoRaMacUplinkStatus.Pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 LoRaMacUplinkStatus.Temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 LoRaMacUplinkStatus.AltitudeBar = ( int16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 @@ -241,7 +245,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = LoRaMacUplinkStatus.Longitude & 0xFF; AppData[14] = ( LoRaMacUplinkStatus.AltitudeGps >> 8 ) & 0xFF; AppData[15] = LoRaMacUplinkStatus.AltitudeGps & 0xFF; -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) LoRaMacUplinkStatus.Temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 LoRaMacUplinkStatus.BatteryLevel = BoardGetBatteryLevel( ); // 1 (very low) to 254 (fully charged) @@ -793,8 +797,18 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; -#if defined( REGION_EU868 ) +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); #elif defined( REGION_US915 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); #elif defined( REGION_US915_HYBRID ) @@ -802,7 +816,6 @@ int main( void ) #else #error "Please define a region in the compiler options." #endif - TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led1Timer, OnLed1TimerEvent ); diff --git a/src/apps/LoRaMac/classB/NAMote72/main.c b/src/apps/LoRaMac/classB/NAMote72/main.c index 391d46536..a33d089ab 100644 --- a/src/apps/LoRaMac/classB/NAMote72/main.c +++ b/src/apps/LoRaMac/classB/NAMote72/main.c @@ -84,14 +84,18 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 +#else + +#error "Please define a region in the compiler options." + #endif static uint8_t DevEui[] = LORAWAN_DEVICE_EUI; @@ -199,18 +203,18 @@ struct ComplianceTest_s */ static void PrepareTxFrame( uint8_t port ) { -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#if defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) MibRequestConfirm_t mibReq; if( BoardGetBatteryVoltage( ) < LOW_BAT_THRESHOLD ) { mibReq.Type = MIB_CHANNELS_TX_POWER; LoRaMacMibGetRequestConfirm( &mibReq ); - // TX_POWER_30_DBM = 0, TX_POWER_28_DBM = 1, ..., TX_POWER_20_DBM = 5, ..., TX_POWER_10_DBM = 10 + // 30 dBm = TX_POWER_0, 28 dBm = TX_POWER_1, ..., 20 dBm = TX_POWER_5, ..., 10 dBm = TX_POWER_10 // The if condition is then "less than" to check if the power is greater than 20 dBm - if( mibReq.Param.ChannelsTxPower < TX_POWER_20_DBM ) + if( mibReq.Param.ChannelsTxPower < TX_POWER_5 ) { - mibReq.Param.ChannelsTxPower = TX_POWER_20_DBM; + mibReq.Param.ChannelsTxPower = TX_POWER_5; LoRaMacMibSetRequestConfirm( &mibReq ); } } @@ -220,7 +224,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -251,7 +255,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -718,8 +722,18 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; -#if defined( REGION_EU868 ) +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); #elif defined( REGION_US915 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); #elif defined( REGION_US915_HYBRID ) diff --git a/src/apps/LoRaMac/classB/SK-iM880A/main.c b/src/apps/LoRaMac/classB/SK-iM880A/main.c index 8785429ca..87f3bf042 100644 --- a/src/apps/LoRaMac/classB/SK-iM880A/main.c +++ b/src/apps/LoRaMac/classB/SK-iM880A/main.c @@ -648,8 +648,25 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); - +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led4Timer, OnLed4TimerEvent ); diff --git a/src/apps/LoRaMac/classB/SensorNode/main.c b/src/apps/LoRaMac/classB/SensorNode/main.c index cec24468e..9de9fe6e0 100644 --- a/src/apps/LoRaMac/classB/SensorNode/main.c +++ b/src/apps/LoRaMac/classB/SensorNode/main.c @@ -83,14 +83,18 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( REGION_EU433 ) || defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU868 ) +#if defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU433 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 +#else + +#error "Please define a region in the compiler options." + #endif static uint8_t DevEui[] = LORAWAN_DEVICE_EUI; @@ -207,7 +211,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( REGION_EU433 ) || defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU868 ) +#if defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU433 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -238,7 +242,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -727,6 +731,8 @@ int main( void ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU433 ); #elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); #elif defined( REGION_KR920 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); #elif defined( REGION_US915 ) diff --git a/src/apps/LoRaMac/classC/LoRaMote/main.c b/src/apps/LoRaMac/classC/LoRaMote/main.c index 6c6cc3b86..f2e95f030 100644 --- a/src/apps/LoRaMac/classC/LoRaMote/main.c +++ b/src/apps/LoRaMac/classC/LoRaMote/main.c @@ -86,14 +86,18 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 +#else + +#error "Please define a region in the compiler options." + #endif static uint8_t DevEui[] = LORAWAN_DEVICE_EUI; @@ -205,7 +209,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -236,7 +240,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -703,8 +707,18 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; -#if defined( REGION_EU868 ) +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); #elif defined( REGION_US915 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); #elif defined( REGION_US915_HYBRID ) diff --git a/src/apps/LoRaMac/classC/MoteII/main.c b/src/apps/LoRaMac/classC/MoteII/main.c index 06953f8e3..77a60b56b 100644 --- a/src/apps/LoRaMac/classC/MoteII/main.c +++ b/src/apps/LoRaMac/classC/MoteII/main.c @@ -87,14 +87,18 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 +#else + +#error "Please define a region in the compiler options." + #endif static uint8_t DevEui[] = LORAWAN_DEVICE_EUI; @@ -216,7 +220,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) LoRaMacUplinkStatus.Pressure = ( uint16_t )( MPL3115ReadPressure( ) / 10 ); // in hPa / 10 LoRaMacUplinkStatus.Temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 LoRaMacUplinkStatus.AltitudeBar = ( int16_t )( MPL3115ReadAltitude( ) * 10 ); // in m * 10 @@ -241,7 +245,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = LoRaMacUplinkStatus.Longitude & 0xFF; AppData[14] = ( LoRaMacUplinkStatus.AltitudeGps >> 8 ) & 0xFF; AppData[15] = LoRaMacUplinkStatus.AltitudeGps & 0xFF; -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) LoRaMacUplinkStatus.Temperature = ( int16_t )( MPL3115ReadTemperature( ) * 100 ); // in °C * 100 LoRaMacUplinkStatus.BatteryLevel = BoardGetBatteryLevel( ); // 1 (very low) to 254 (fully charged) @@ -793,8 +797,18 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; -#if defined( REGION_EU868 ) +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); #elif defined( REGION_US915 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); #elif defined( REGION_US915_HYBRID ) @@ -802,7 +816,6 @@ int main( void ) #else #error "Please define a region in the compiler options." #endif - TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led1Timer, OnLed1TimerEvent ); diff --git a/src/apps/LoRaMac/classC/NAMote72/main.c b/src/apps/LoRaMac/classC/NAMote72/main.c index 55f84f41a..a638b518a 100644 --- a/src/apps/LoRaMac/classC/NAMote72/main.c +++ b/src/apps/LoRaMac/classC/NAMote72/main.c @@ -84,14 +84,18 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 +#else + +#error "Please define a region in the compiler options." + #endif static uint8_t DevEui[] = LORAWAN_DEVICE_EUI; @@ -199,18 +203,18 @@ struct ComplianceTest_s */ static void PrepareTxFrame( uint8_t port ) { -#if defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID ) +#if defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) MibRequestConfirm_t mibReq; if( BoardGetBatteryVoltage( ) < LOW_BAT_THRESHOLD ) { mibReq.Type = MIB_CHANNELS_TX_POWER; LoRaMacMibGetRequestConfirm( &mibReq ); - // TX_POWER_30_DBM = 0, TX_POWER_28_DBM = 1, ..., TX_POWER_20_DBM = 5, ..., TX_POWER_10_DBM = 10 + // 30 dBm = TX_POWER_0, 28 dBm = TX_POWER_1, ..., 20 dBm = TX_POWER_5, ..., 10 dBm = TX_POWER_10 // The if condition is then "less than" to check if the power is greater than 20 dBm - if( mibReq.Param.ChannelsTxPower < TX_POWER_20_DBM ) + if( mibReq.Param.ChannelsTxPower < TX_POWER_5 ) { - mibReq.Param.ChannelsTxPower = TX_POWER_20_DBM; + mibReq.Param.ChannelsTxPower = TX_POWER_5; LoRaMacMibSetRequestConfirm( &mibReq ); } } @@ -220,7 +224,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( REGION_EU868 ) +#if defined( REGION_CN779 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -251,7 +255,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -718,8 +722,18 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; -#if defined( REGION_EU868 ) +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); #elif defined( REGION_US915 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); #elif defined( REGION_US915_HYBRID ) diff --git a/src/apps/LoRaMac/classC/SK-iM880A/main.c b/src/apps/LoRaMac/classC/SK-iM880A/main.c index b3340ec3b..04fb5c570 100644 --- a/src/apps/LoRaMac/classC/SK-iM880A/main.c +++ b/src/apps/LoRaMac/classC/SK-iM880A/main.c @@ -648,8 +648,25 @@ int main( void ) LoRaMacPrimitives.MacMcpsIndication = McpsIndication; LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm; LoRaMacCallbacks.GetBatteryLevel = BoardGetBatteryLevel; +#if defined( REGION_AS923 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AS923 ); +#elif defined( REGION_AU915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_AU915 ); +#elif defined( REGION_CN779 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_CN779 ); +#elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); - +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); +#elif defined( REGION_KR920 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); +#elif defined( REGION_US915 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915 ); +#elif defined( REGION_US915_HYBRID ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_US915_HYBRID ); +#else + #error "Please define a region in the compiler options." +#endif TimerInit( &TxNextPacketTimer, OnTxNextPacketTimerEvent ); TimerInit( &Led4Timer, OnLed4TimerEvent ); diff --git a/src/apps/LoRaMac/classC/SensorNode/main.c b/src/apps/LoRaMac/classC/SensorNode/main.c index 5c53ebd1e..d41ed33ca 100644 --- a/src/apps/LoRaMac/classC/SensorNode/main.c +++ b/src/apps/LoRaMac/classC/SensorNode/main.c @@ -83,14 +83,18 @@ Maintainer: Miguel Luis and Gregory Cristian /*! * User application data buffer size */ -#if defined( REGION_EU433 ) || defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU868 ) +#if defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU433 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) #define LORAWAN_APP_DATA_SIZE 16 -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) #define LORAWAN_APP_DATA_SIZE 11 +#else + +#error "Please define a region in the compiler options." + #endif static uint8_t DevEui[] = LORAWAN_DEVICE_EUI; @@ -207,7 +211,7 @@ static void PrepareTxFrame( uint8_t port ) { case 2: { -#if defined( REGION_EU433 ) || defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU868 ) +#if defined( REGION_CN470 ) || defined( REGION_CN779 ) || defined( REGION_EU433 ) || defined( REGION_EU868 ) || defined( REGION_IN865 ) || defined( REGION_KR920 ) uint16_t pressure = 0; int16_t altitudeBar = 0; int16_t temperature = 0; @@ -238,7 +242,7 @@ static void PrepareTxFrame( uint8_t port ) AppData[13] = longitude & 0xFF; AppData[14] = ( altitudeGps >> 8 ) & 0xFF; AppData[15] = altitudeGps & 0xFF; -#elif defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) +#elif defined( REGION_AS923 ) || defined( REGION_AU915 ) || defined( REGION_US915 ) || defined( REGION_US915_HYBRID ) int16_t temperature = 0; int32_t latitude, longitude = 0; uint16_t altitudeGps = 0xFFFF; @@ -727,6 +731,8 @@ int main( void ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU433 ); #elif defined( REGION_EU868 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_EU868 ); +#elif defined( REGION_IN865 ) + LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_IN865 ); #elif defined( REGION_KR920 ) LoRaMacInitialization( &LoRaMacPrimitives, &LoRaMacCallbacks, LORAMAC_REGION_KR920 ); #elif defined( REGION_US915 ) diff --git a/src/apps/ping-pong/LoRaMote/main.c b/src/apps/ping-pong/LoRaMote/main.c index 24d13b65f..1f427a5d9 100644 --- a/src/apps/ping-pong/LoRaMote/main.c +++ b/src/apps/ping-pong/LoRaMote/main.c @@ -16,11 +16,35 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" -#if defined( USE_BAND_868 ) +#if defined( REGION_AS923 ) + +#define RF_FREQUENCY 923000000 // Hz + +#elif defined( REGION_AU915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU868 ) #define RF_FREQUENCY 868000000 // Hz -#elif defined( USE_BAND_915 ) +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) #define RF_FREQUENCY 915000000 // Hz diff --git a/src/apps/ping-pong/MoteII/main.c b/src/apps/ping-pong/MoteII/main.c index 011f2ab2c..09555a226 100644 --- a/src/apps/ping-pong/MoteII/main.c +++ b/src/apps/ping-pong/MoteII/main.c @@ -16,11 +16,35 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" -#if defined( USE_BAND_868 ) +#if defined( REGION_AS923 ) + +#define RF_FREQUENCY 923000000 // Hz + +#elif defined( REGION_AU915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU868 ) #define RF_FREQUENCY 868000000 // Hz -#elif defined( USE_BAND_915 ) +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) #define RF_FREQUENCY 915000000 // Hz diff --git a/src/apps/ping-pong/NAMote72/main.c b/src/apps/ping-pong/NAMote72/main.c index 324558ac3..d1627f939 100644 --- a/src/apps/ping-pong/NAMote72/main.c +++ b/src/apps/ping-pong/NAMote72/main.c @@ -16,11 +16,35 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" -#if defined( USE_BAND_868 ) +#if defined( REGION_AS923 ) + +#define RF_FREQUENCY 923000000 // Hz + +#elif defined( REGION_AU915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU868 ) #define RF_FREQUENCY 868000000 // Hz -#elif defined( USE_BAND_915 ) +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) #define RF_FREQUENCY 915000000 // Hz diff --git a/src/apps/ping-pong/SK-iM880A/main.c b/src/apps/ping-pong/SK-iM880A/main.c index 4a1f36243..61fbeb151 100644 --- a/src/apps/ping-pong/SK-iM880A/main.c +++ b/src/apps/ping-pong/SK-iM880A/main.c @@ -16,7 +16,42 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" +#if defined( REGION_AS923 ) + +#define RF_FREQUENCY 923000000 // Hz + +#elif defined( REGION_AU915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU868 ) + #define RF_FREQUENCY 868000000 // Hz + +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) + +#define RF_FREQUENCY 915000000 // Hz + +#else + #error "Please define a frequency band in the compiler options." +#endif + #define TX_OUTPUT_POWER 14 // dBm #if defined( USE_MODEM_LORA ) diff --git a/src/apps/ping-pong/SensorNode/main.c b/src/apps/ping-pong/SensorNode/main.c index a0c3eda72..f14acf9f6 100644 --- a/src/apps/ping-pong/SensorNode/main.c +++ b/src/apps/ping-pong/SensorNode/main.c @@ -16,19 +16,43 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" -#if defined( USE_BAND_433 ) +#if defined( REGION_AS923 ) -#define RF_FREQUENCY 434000000 // Hz +#define RF_FREQUENCY 923000000 // Hz -#elif defined( USE_BAND_780 ) +#elif defined( REGION_AU915 ) -#define RF_FREQUENCY 780000000 // Hz +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN470 ) + +#define RF_FREQUENCY 470000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU433 ) + +#define RF_FREQUENCY 433000000 // Hz -#elif defined( USE_BAND_868 ) +#elif defined( REGION_EU868 ) #define RF_FREQUENCY 868000000 // Hz -#elif defined( USE_BAND_915 ) +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) #define RF_FREQUENCY 915000000 // Hz diff --git a/src/apps/rx-sensi/LoRaMote/main.c b/src/apps/rx-sensi/LoRaMote/main.c index 26d7df638..5c0fb892e 100644 --- a/src/apps/rx-sensi/LoRaMote/main.c +++ b/src/apps/rx-sensi/LoRaMote/main.c @@ -20,11 +20,35 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" -#if defined( USE_BAND_868 ) +#if defined( REGION_AS923 ) + +#define RF_FREQUENCY 923000000 // Hz + +#elif defined( REGION_AU915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU868 ) #define RF_FREQUENCY 868000000 // Hz -#elif defined( USE_BAND_915 ) +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) #define RF_FREQUENCY 915000000 // Hz diff --git a/src/apps/rx-sensi/MoteII/main.c b/src/apps/rx-sensi/MoteII/main.c index 26d7df638..5c0fb892e 100644 --- a/src/apps/rx-sensi/MoteII/main.c +++ b/src/apps/rx-sensi/MoteII/main.c @@ -20,11 +20,35 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" -#if defined( USE_BAND_868 ) +#if defined( REGION_AS923 ) + +#define RF_FREQUENCY 923000000 // Hz + +#elif defined( REGION_AU915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU868 ) #define RF_FREQUENCY 868000000 // Hz -#elif defined( USE_BAND_915 ) +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) #define RF_FREQUENCY 915000000 // Hz diff --git a/src/apps/rx-sensi/NAMote72/main.c b/src/apps/rx-sensi/NAMote72/main.c index 4aa69b327..0ff91e267 100644 --- a/src/apps/rx-sensi/NAMote72/main.c +++ b/src/apps/rx-sensi/NAMote72/main.c @@ -20,11 +20,35 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" -#if defined( USE_BAND_868 ) +#if defined( REGION_AS923 ) + +#define RF_FREQUENCY 923000000 // Hz + +#elif defined( REGION_AU915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU868 ) #define RF_FREQUENCY 868000000 // Hz -#elif defined( USE_BAND_915 ) +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) #define RF_FREQUENCY 915000000 // Hz diff --git a/src/apps/rx-sensi/SK-iM880A/main.c b/src/apps/rx-sensi/SK-iM880A/main.c index e8d8a1317..4c728adb1 100644 --- a/src/apps/rx-sensi/SK-iM880A/main.c +++ b/src/apps/rx-sensi/SK-iM880A/main.c @@ -20,8 +20,42 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" +#if defined( REGION_AS923 ) + +#define RF_FREQUENCY 923000000 // Hz + +#elif defined( REGION_AU915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU868 ) + #define RF_FREQUENCY 868000000 // Hz +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) + +#define RF_FREQUENCY 915000000 // Hz + +#else + #error "Please define a frequency band in the compiler options." +#endif + #if defined( USE_MODEM_LORA ) #define LORA_BANDWIDTH 0 // [0: 125 kHz, diff --git a/src/apps/rx-sensi/SensorNode/main.c b/src/apps/rx-sensi/SensorNode/main.c index 768ba8128..a4c91c482 100644 --- a/src/apps/rx-sensi/SensorNode/main.c +++ b/src/apps/rx-sensi/SensorNode/main.c @@ -20,19 +20,43 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" -#if defined( USE_BAND_433 ) +#if defined( REGION_AS923 ) -#define RF_FREQUENCY 434000000 // Hz +#define RF_FREQUENCY 923000000 // Hz -#elif defined( USE_BAND_780 ) +#elif defined( REGION_AU915 ) -#define RF_FREQUENCY 780000000 // Hz +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN470 ) + +#define RF_FREQUENCY 470000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU433 ) + +#define RF_FREQUENCY 433000000 // Hz -#elif defined( USE_BAND_868 ) +#elif defined( REGION_EU868 ) #define RF_FREQUENCY 868000000 // Hz -#elif defined( USE_BAND_915 ) +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) #define RF_FREQUENCY 915000000 // Hz diff --git a/src/apps/tx-cw/LoRaMote/main.c b/src/apps/tx-cw/LoRaMote/main.c index 50194747c..dabf45d28 100644 --- a/src/apps/tx-cw/LoRaMote/main.c +++ b/src/apps/tx-cw/LoRaMote/main.c @@ -16,11 +16,35 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" -#if defined( USE_BAND_868 ) +#if defined( REGION_AS923 ) + +#define RF_FREQUENCY 923000000 // Hz + +#elif defined( REGION_AU915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU868 ) #define RF_FREQUENCY 868000000 // Hz -#elif defined( USE_BAND_915 ) +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) #define RF_FREQUENCY 915000000 // Hz diff --git a/src/apps/tx-cw/MoteII/main.c b/src/apps/tx-cw/MoteII/main.c index 7c4b707c8..ebe71e036 100644 --- a/src/apps/tx-cw/MoteII/main.c +++ b/src/apps/tx-cw/MoteII/main.c @@ -16,11 +16,35 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" -#if defined( USE_BAND_868 ) +#if defined( REGION_AS923 ) + +#define RF_FREQUENCY 923000000 // Hz + +#elif defined( REGION_AU915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU868 ) #define RF_FREQUENCY 868000000 // Hz -#elif defined( USE_BAND_915 ) +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) #define RF_FREQUENCY 915000000 // Hz diff --git a/src/apps/tx-cw/NAMote72/main.c b/src/apps/tx-cw/NAMote72/main.c index 50194747c..dabf45d28 100644 --- a/src/apps/tx-cw/NAMote72/main.c +++ b/src/apps/tx-cw/NAMote72/main.c @@ -16,11 +16,35 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" -#if defined( USE_BAND_868 ) +#if defined( REGION_AS923 ) + +#define RF_FREQUENCY 923000000 // Hz + +#elif defined( REGION_AU915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU868 ) #define RF_FREQUENCY 868000000 // Hz -#elif defined( USE_BAND_915 ) +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) #define RF_FREQUENCY 915000000 // Hz diff --git a/src/apps/tx-cw/SK-iM880A/main.c b/src/apps/tx-cw/SK-iM880A/main.c index fb05ab253..7ff685600 100644 --- a/src/apps/tx-cw/SK-iM880A/main.c +++ b/src/apps/tx-cw/SK-iM880A/main.c @@ -16,7 +16,44 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" +#if defined( REGION_AS923 ) + +#define RF_FREQUENCY 923000000 // Hz + +#elif defined( REGION_AU915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz + +#elif defined( REGION_EU868 ) + #define RF_FREQUENCY 868000000 // Hz + +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz + +#elif defined( REGION_US915_HYBRID ) + +#define RF_FREQUENCY 915000000 // Hz + +#else + + #error "Please define a frequency band in the compiler options." + +#endif + #define TX_OUTPUT_POWER 20 // 20 dBm #define TX_TIMEOUT 65535 // seconds (MAX value) diff --git a/src/apps/tx-cw/SensorNode/main.c b/src/apps/tx-cw/SensorNode/main.c index 7e0bcc392..3085edab9 100644 --- a/src/apps/tx-cw/SensorNode/main.c +++ b/src/apps/tx-cw/SensorNode/main.c @@ -16,22 +16,52 @@ Maintainer: Miguel Luis and Gregory Cristian #include "board.h" #include "radio.h" -#if defined( USE_BAND_433 ) +#if defined( REGION_AS923 ) -#define RF_FREQUENCY 434000000 // Hz +#define RF_FREQUENCY 923000000 // Hz +#define TX_OUTPUT_POWER 14 // 14 dBm + +#elif defined( REGION_AU915 ) + +#define RF_FREQUENCY 915000000 // Hz +#define TX_OUTPUT_POWER 14 // 14 dBm + +#elif defined( REGION_CN470 ) + +#define RF_FREQUENCY 470000000 // Hz #define TX_OUTPUT_POWER 20 // 20 dBm -#elif defined( USE_BAND_780 ) +#elif defined( REGION_CN779 ) + +#define RF_FREQUENCY 779000000 // Hz +#define TX_OUTPUT_POWER 14 // 14 dBm + +#elif defined( REGION_EU433 ) -#define RF_FREQUENCY 780000000 // Hz +#define RF_FREQUENCY 433000000 // Hz #define TX_OUTPUT_POWER 20 // 20 dBm -#elif defined( USE_BAND_868 ) +#elif defined( REGION_EU868 ) #define RF_FREQUENCY 868000000 // Hz #define TX_OUTPUT_POWER 14 // 14 dBm -#elif defined( USE_BAND_915 ) +#elif defined( REGION_KR920 ) + +#define RF_FREQUENCY 920000000 // Hz +#define TX_OUTPUT_POWER 14 // 14 dBm + +#elif defined( REGION_IN865 ) + +#define RF_FREQUENCY 865000000 // Hz +#define TX_OUTPUT_POWER 14 // 14 dBm + +#elif defined( REGION_US915 ) + +#define RF_FREQUENCY 915000000 // Hz +#define TX_OUTPUT_POWER 14 // 14 dBm + +#elif defined( REGION_US915_HYBRID ) #define RF_FREQUENCY 915000000 // Hz #define TX_OUTPUT_POWER 14 // 14 dBm From 2b7ca7e7d670c0a88d7a6e47c65ca8f3630a5b3c Mon Sep 17 00:00:00 2001 From: Miguel Luis Date: Tue, 25 Jul 2017 14:07:21 +0200 Subject: [PATCH 151/161] Updated all Keil and coIDE example projects in order to support the different regions. --- Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvopt | 878 ++- Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvproj | 3921 +++++++++++- Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvopt | 878 ++- Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvproj | 3921 +++++++++++- Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvopt | 878 ++- Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvproj | 3921 +++++++++++- Keil/LoRaMote/ping-pong/Ping-Pong.uvopt | 442 +- Keil/LoRaMote/ping-pong/Ping-Pong.uvproj | 104 +- Keil/LoRaMote/rx-sensi/rx-sensi.uvopt | 527 +- Keil/LoRaMote/rx-sensi/rx-sensi.uvproj | 184 +- Keil/LoRaMote/tx-cw/tx-cw.uvopt | 212 +- Keil/LoRaMote/tx-cw/tx-cw.uvproj | 52 +- Keil/MoteII/LoRaMac/classA/LoRaMac.uvoptx | 1358 +++- Keil/MoteII/LoRaMac/classA/LoRaMac.uvprojx | 4646 +++++++++++++- Keil/MoteII/LoRaMac/classB/LoRaMac.uvoptx | 1358 +++- Keil/MoteII/LoRaMac/classB/LoRaMac.uvprojx | 4646 +++++++++++++- Keil/MoteII/LoRaMac/classC/LoRaMac.uvoptx | 1358 +++- Keil/MoteII/LoRaMac/classC/LoRaMac.uvprojx | 4646 +++++++++++++- Keil/MoteII/ping-pong/Ping-Pong.uvoptx | 100 +- Keil/MoteII/ping-pong/Ping-Pong.uvprojx | 62 +- Keil/MoteII/rx-sensi/rx-sensi.uvoptx | 117 +- Keil/MoteII/rx-sensi/rx-sensi.uvprojx | 62 +- Keil/MoteII/tx-cw/tx-cw.uvoptx | 92 +- Keil/MoteII/tx-cw/tx-cw.uvprojx | 34 +- Keil/NAMote72/LoRaMac/classA/LoRaMac.uvopt | 1074 +++- Keil/NAMote72/LoRaMac/classA/LoRaMac.uvproj | 4650 +++++++++++++- Keil/NAMote72/LoRaMac/classB/LoRaMac.uvopt | 1074 +++- Keil/NAMote72/LoRaMac/classB/LoRaMac.uvproj | 4650 +++++++++++++- Keil/NAMote72/LoRaMac/classC/LoRaMac.uvopt | 1076 +++- Keil/NAMote72/LoRaMac/classC/LoRaMac.uvproj | 4650 +++++++++++++- Keil/NAMote72/ping-pong/Ping-Pong.uvopt | 280 +- Keil/NAMote72/ping-pong/Ping-Pong.uvproj | 54 +- Keil/NAMote72/rx-sensi/rx-sensi.uvopt | 286 +- Keil/NAMote72/rx-sensi/rx-sensi.uvproj | 54 +- Keil/NAMote72/tx-cw/tx-cw.uvopt | 140 +- Keil/NAMote72/tx-cw/tx-cw.uvproj | 26 +- Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt | 1118 +++- Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj | 5099 ++++++++++++++- Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt | 1118 +++- Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj | 5099 ++++++++++++++- Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvopt | 1118 +++- Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvproj | 5099 ++++++++++++++- Keil/SK-iM880A/ping-pong/Ping-Pong.uvopt | 28 +- Keil/SK-iM880A/ping-pong/Ping-Pong.uvproj | 24 +- Keil/SK-iM880A/rx-sensi/rx-sensi.uvopt | 106 +- Keil/SK-iM880A/rx-sensi/rx-sensi.uvproj | 28 +- Keil/SK-iM880A/tx-cw/tx-cw.uvopt | 14 +- Keil/SK-iM880A/tx-cw/tx-cw.uvproj | 14 +- Keil/SensorNode/LoRaMac/classA/LoRaMac.uvopt | 1481 ++++- Keil/SensorNode/LoRaMac/classA/LoRaMac.uvproj | 5545 ++++++++++++++++- Keil/SensorNode/LoRaMac/classB/LoRaMac.uvopt | 1481 ++++- Keil/SensorNode/LoRaMac/classB/LoRaMac.uvproj | 5545 ++++++++++++++++- Keil/SensorNode/LoRaMac/classC/LoRaMac.uvopt | 1481 ++++- Keil/SensorNode/LoRaMac/classC/LoRaMac.uvproj | 5545 ++++++++++++++++- Keil/SensorNode/ping-pong/Ping-Pong.uvopt | 1152 +--- Keil/SensorNode/ping-pong/Ping-Pong.uvproj | 192 +- Keil/SensorNode/rx-sensi/rx-sensi.uvopt | 1184 +--- Keil/SensorNode/rx-sensi/rx-sensi.uvproj | 194 +- Keil/SensorNode/tx-cw/tx-cw.uvopt | 576 +- Keil/SensorNode/tx-cw/tx-cw.uvproj | 112 +- coIDE/LoRaMote/Bootloader/Bootloader.coproj | 9 +- .../LoRaMac/classA/LoRaMacClassA.coproj | 499 +- .../LoRaMac/classB/LoRaMacClassB.coproj | 491 +- .../LoRaMac/classC/LoRaMacClassC.coproj | 491 +- coIDE/LoRaMote/ping-pong/Ping-Pong.coproj | 432 +- .../LoRaMac/classA/LoRaMacClassA.coproj | 465 +- .../LoRaMac/classB/LoRaMacClassB.coproj | 459 +- .../LoRaMac/classC/LoRaMacClassC.coproj | 459 +- coIDE/MoteII/ping-pong/Ping-Pong.coproj | 208 +- .../LoRaMac/classA/LoRaMacClassA.coproj | 513 +- .../LoRaMac/classB/LoRaMacClassB.coproj | 513 +- .../LoRaMac/classC/LoRaMacClassC.coproj | 513 +- coIDE/NAMote72/ping-pong/Ping-Pong.coproj | 266 +- .../LoRaMac/classA/LoRaMacClassA.coproj | 536 +- .../LoRaMac/classB/LoRaMacClassB.coproj | 534 +- .../LoRaMac/classC/LoRaMacClassC.coproj | 534 +- coIDE/SK-iM880A/ping-pong/Ping-Pong.coproj | 104 +- coIDE/SensorNode/Bootloader/Bootloader.coproj | 21 +- .../LoRaMac/classA/LoRaMacClassA.coproj | 421 +- .../LoRaMac/classB/LoRaMacClassB.coproj | 421 +- .../LoRaMac/classC/LoRaMacClassC.coproj | 427 +- coIDE/SensorNode/ping-pong/Ping-Pong.coproj | 1060 +++- 82 files changed, 98932 insertions(+), 6208 deletions(-) diff --git a/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvopt b/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvopt index 58d43f22c..04122d40d 100644 --- a/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvopt +++ b/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvopt @@ -8,7 +8,7 @@ *.c *.s*; *.src; *.a* - *.obj + *.obj; *.o *.lib *.txt; *.h; *.inc *.plm @@ -22,7 +22,7 @@ - LoRaMac-868 + LoRaMac-eu868 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-eu868\ 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -117,7 +118,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -163,14 +164,17 @@ 0 - - - 0 + 0 + 0 + + + + - LoRaMac-868-Bootloader + LoRaMac-eu868-Bootloader 0x4 ARM-ADS @@ -193,7 +197,7 @@ 79 66 8 - .\lst\LoRaMac-868-Bootloader\ + .\lst\LoRaMac-eu868-Bootloader\ 1 @@ -248,6 +252,7 @@ 1 0 0 + 1 11 @@ -265,7 +270,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -311,14 +316,17 @@ 0 - - - 0 + 0 + 0 + + + + - LoRaMac-915 + LoRaMac-us915 0x4 ARM-ADS @@ -341,7 +349,7 @@ 79 66 8 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-us915\ 1 @@ -396,6 +404,7 @@ 1 0 0 + 1 11 @@ -413,7 +422,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -459,14 +468,17 @@ 0 - - - 0 + 0 + 0 + + + + - LoRaMac-915-Bootloader + LoRaMac-us915-Bootloader 0x4 ARM-ADS @@ -489,7 +501,7 @@ 79 66 8 - .\lst\LoRaMac-915-Bootloader\ + .\lst\LoRaMac-us915-Bootloader\ 1 @@ -544,6 +556,7 @@ 1 0 0 + 1 11 @@ -561,7 +574,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -607,9 +620,772 @@ 0 - - - 0 + 0 + 0 + + + + + + + + + LoRaMac-as923-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-as923-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-au915-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-au915-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-kr920-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-kr920-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-in865-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-in865-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + @@ -1047,7 +1823,7 @@ mac\region - 0 + 1 0 0 0 @@ -1154,6 +1930,18 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 ..\..\..\..\src\mac\region\RegionKR920.c RegionKR920.c 0 @@ -1161,7 +1949,7 @@ 7 - 42 + 43 1 0 0 @@ -1173,7 +1961,7 @@ 7 - 43 + 44 1 0 0 @@ -1193,7 +1981,7 @@ 0 8 - 44 + 45 1 0 0 @@ -1205,7 +1993,7 @@ 8 - 45 + 46 1 0 0 @@ -1217,7 +2005,7 @@ 8 - 46 + 47 1 0 0 @@ -1229,7 +2017,7 @@ 8 - 47 + 48 1 0 0 @@ -1241,7 +2029,7 @@ 8 - 48 + 49 1 0 0 @@ -1253,7 +2041,7 @@ 8 - 49 + 50 1 0 0 @@ -1273,7 +2061,7 @@ 0 9 - 50 + 51 1 0 0 @@ -1293,7 +2081,7 @@ 0 10 - 51 + 52 1 0 0 @@ -1305,7 +2093,7 @@ 10 - 52 + 53 1 0 0 @@ -1317,7 +2105,7 @@ 10 - 53 + 54 1 0 0 @@ -1329,7 +2117,7 @@ 10 - 54 + 55 1 0 0 @@ -1341,7 +2129,7 @@ 10 - 55 + 56 1 0 0 @@ -1353,7 +2141,7 @@ 10 - 56 + 57 1 0 0 @@ -1365,7 +2153,7 @@ 10 - 57 + 58 1 0 0 @@ -1377,7 +2165,7 @@ 10 - 58 + 59 1 0 0 @@ -1397,7 +2185,7 @@ 0 11 - 59 + 60 1 0 0 @@ -1409,7 +2197,7 @@ 11 - 60 + 61 1 0 0 diff --git a/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvproj b/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvproj index 02ac589fd..c0fe31e7f 100644 --- a/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvproj +++ b/Keil/LoRaMote/LoRaMac/classA/LoRaMac.uvproj @@ -7,10 +7,10 @@ - LoRaMac-868 + LoRaMac-eu868 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac-868\ - LoRaMac + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 1 0 1 1 1 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-eu868\ 1 0 0 @@ -648,6 +648,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -773,10 +778,10 @@ - LoRaMac-868-Bootloader + LoRaMac-eu868-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -811,14 +816,14 @@ 0 1 - .\obj\LoRaMac-868-Bootloader\ - LoRaMac + .\obj\LoRaMac-eu868-Bootloader\ + LoRaMac-eu868 1 0 1 1 1 - .\lst\LoRaMac-868-Bootloader\ + .\lst\LoRaMac-eu868-Bootloader\ 1 0 0 @@ -852,7 +857,7 @@ 0 0 - 0 + 1 @@ -1414,6 +1419,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -1539,10 +1549,10 @@ - LoRaMac-915 + LoRaMac-us915 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -1577,14 +1587,14 @@ 0 1 - .\obj\LoRaMac-915\ - LoRaMac + .\obj\LoRaMac-us915\ + LoRaMac-us915 1 0 1 1 1 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-us915\ 1 0 0 @@ -2180,6 +2190,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -2305,10 +2320,10 @@ - LoRaMac-915-Bootloader + LoRaMac-us915-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -2343,14 +2358,14 @@ 0 1 - .\obj\LoRaMac-915-Bootloader\ - LoRaMac + .\obj\LoRaMac-us915-Bootloader\ + LoRaMac-us915 1 0 1 1 1 - .\lst\LoRaMac-915-Bootloader\ + .\lst\LoRaMac-us915-Bootloader\ 1 0 0 @@ -2384,7 +2399,7 @@ 0 0 - 0 + 1 @@ -2647,7 +2662,7 @@ 1 - 3 + 2 0 0 1 @@ -2946,6 +2961,3866 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-as923-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-as923-Bootloader\ + LoRaMac-as923 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-as923-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AS923 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-au915-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-au915-Bootloader\ + LoRaMac-au915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-au915-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AU915 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-kr920-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-kr920-Bootloader\ + LoRaMac-kr920 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-kr920-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_KR920 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-in865-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-in865-Bootloader\ + LoRaMac-in865 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-in865-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_IN865 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779-Bootloader\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 diff --git a/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvopt b/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvopt index 3a4344a59..a6359dc99 100644 --- a/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvopt +++ b/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvopt @@ -8,7 +8,7 @@ *.c *.s*; *.src; *.a* - *.obj + *.obj; *.o *.lib *.txt; *.h; *.inc *.plm @@ -22,7 +22,7 @@ - LoRaMac-868 + LoRaMac-eu868 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-eu868\ 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -117,7 +118,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -163,14 +164,17 @@ 0 - - - 0 + 0 + 0 + + + + - LoRaMac-868-Bootloader + LoRaMac-eu868-Bootloader 0x4 ARM-ADS @@ -193,7 +197,7 @@ 79 66 8 - .\lst\LoRaMac-868-Bootloader\ + .\lst\LoRaMac-eu868-Bootloader\ 1 @@ -248,6 +252,7 @@ 1 0 0 + 1 11 @@ -265,7 +270,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -311,14 +316,17 @@ 0 - - - 0 + 0 + 0 + + + + - LoRaMac-915 + LoRaMac-us915 0x4 ARM-ADS @@ -341,7 +349,7 @@ 79 66 8 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-us915\ 1 @@ -396,6 +404,7 @@ 1 0 0 + 1 11 @@ -413,7 +422,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -459,14 +468,17 @@ 0 - - - 0 + 0 + 0 + + + + - LoRaMac-915-Bootloader + LoRaMac-us915-Bootloader 0x4 ARM-ADS @@ -489,7 +501,7 @@ 79 66 8 - .\lst\LoRaMac-915-Bootloader\ + .\lst\LoRaMac-us915-Bootloader\ 1 @@ -544,6 +556,7 @@ 1 0 0 + 1 11 @@ -561,7 +574,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -607,9 +620,772 @@ 0 - - - 0 + 0 + 0 + + + + + + + + + LoRaMac-as923-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-as923-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-au915-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-au915-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-kr920-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-kr920-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-in865-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-in865-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + @@ -1047,7 +1823,7 @@ mac\region - 0 + 1 0 0 0 @@ -1154,6 +1930,18 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 ..\..\..\..\src\mac\region\RegionKR920.c RegionKR920.c 0 @@ -1161,7 +1949,7 @@ 7 - 42 + 43 1 0 0 @@ -1173,7 +1961,7 @@ 7 - 43 + 44 1 0 0 @@ -1193,7 +1981,7 @@ 0 8 - 44 + 45 1 0 0 @@ -1205,7 +1993,7 @@ 8 - 45 + 46 1 0 0 @@ -1217,7 +2005,7 @@ 8 - 46 + 47 1 0 0 @@ -1229,7 +2017,7 @@ 8 - 47 + 48 1 0 0 @@ -1241,7 +2029,7 @@ 8 - 48 + 49 1 0 0 @@ -1253,7 +2041,7 @@ 8 - 49 + 50 1 0 0 @@ -1273,7 +2061,7 @@ 0 9 - 50 + 51 1 0 0 @@ -1293,7 +2081,7 @@ 0 10 - 51 + 52 1 0 0 @@ -1305,7 +2093,7 @@ 10 - 52 + 53 1 0 0 @@ -1317,7 +2105,7 @@ 10 - 53 + 54 1 0 0 @@ -1329,7 +2117,7 @@ 10 - 54 + 55 1 0 0 @@ -1341,7 +2129,7 @@ 10 - 55 + 56 1 0 0 @@ -1353,7 +2141,7 @@ 10 - 56 + 57 1 0 0 @@ -1365,7 +2153,7 @@ 10 - 57 + 58 1 0 0 @@ -1377,7 +2165,7 @@ 10 - 58 + 59 1 0 0 @@ -1397,7 +2185,7 @@ 0 11 - 59 + 60 1 0 0 @@ -1409,7 +2197,7 @@ 11 - 60 + 61 1 0 0 diff --git a/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvproj b/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvproj index 2981bcef1..32035b1bf 100644 --- a/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvproj +++ b/Keil/LoRaMote/LoRaMac/classB/LoRaMac.uvproj @@ -7,10 +7,10 @@ - LoRaMac-868 + LoRaMac-eu868 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac-868\ - LoRaMac + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 1 0 1 1 1 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-eu868\ 1 0 0 @@ -648,6 +648,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -773,10 +778,10 @@ - LoRaMac-868-Bootloader + LoRaMac-eu868-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -811,14 +816,14 @@ 0 1 - .\obj\LoRaMac-868-Bootloader\ - LoRaMac + .\obj\LoRaMac-eu868-Bootloader\ + LoRaMac-eu868 1 0 1 1 1 - .\lst\LoRaMac-868-Bootloader\ + .\lst\LoRaMac-eu868-Bootloader\ 1 0 0 @@ -852,7 +857,7 @@ 0 0 - 0 + 1 @@ -1414,6 +1419,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -1539,10 +1549,10 @@ - LoRaMac-915 + LoRaMac-us915 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -1577,14 +1587,14 @@ 0 1 - .\obj\LoRaMac-915\ - LoRaMac + .\obj\LoRaMac-us915\ + LoRaMac-us915 1 0 1 1 1 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-us915\ 1 0 0 @@ -2180,6 +2190,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -2305,10 +2320,10 @@ - LoRaMac-915-Bootloader + LoRaMac-us915-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -2343,14 +2358,14 @@ 0 1 - .\obj\LoRaMac-915-Bootloader\ - LoRaMac + .\obj\LoRaMac-us915-Bootloader\ + LoRaMac-us915 1 0 1 1 1 - .\lst\LoRaMac-915-Bootloader\ + .\lst\LoRaMac-us915-Bootloader\ 1 0 0 @@ -2384,7 +2399,7 @@ 0 0 - 0 + 1 @@ -2647,7 +2662,7 @@ 1 - 3 + 2 0 0 1 @@ -2946,6 +2961,3866 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-as923-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-as923-Bootloader\ + LoRaMac-as923 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-as923-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AS923 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-au915-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-au915-Bootloader\ + LoRaMac-au915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-au915-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AU915 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-kr920-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-kr920-Bootloader\ + LoRaMac-kr920 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-kr920-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_KR920 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-in865-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-in865-Bootloader\ + LoRaMac-in865 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-in865-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_IN865 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779-Bootloader\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 diff --git a/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvopt b/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvopt index 3f590037b..b9bf977b5 100644 --- a/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvopt +++ b/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvopt @@ -8,7 +8,7 @@ *.c *.s*; *.src; *.a* - *.obj + *.obj; *.o *.lib *.txt; *.h; *.inc *.plm @@ -22,7 +22,7 @@ - LoRaMac-868 + LoRaMac-eu868 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-eu868\ 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -117,7 +118,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -163,14 +164,17 @@ 0 - - - 0 + 0 + 0 + + + + - LoRaMac-868-Bootloader + LoRaMac-eu868-Bootloader 0x4 ARM-ADS @@ -193,7 +197,7 @@ 79 66 8 - .\lst\LoRaMac-868-Bootloader\ + .\lst\LoRaMac-eu868-Bootloader\ 1 @@ -248,6 +252,7 @@ 1 0 0 + 1 11 @@ -265,7 +270,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -311,14 +316,17 @@ 0 - - - 0 + 0 + 0 + + + + - LoRaMac-915 + LoRaMac-us915 0x4 ARM-ADS @@ -341,7 +349,7 @@ 79 66 8 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-us915\ 1 @@ -396,6 +404,7 @@ 1 0 0 + 1 11 @@ -413,7 +422,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -459,14 +468,17 @@ 0 - - - 0 + 0 + 0 + + + + - LoRaMac-915-Bootloader + LoRaMac-us915-Bootloader 0x4 ARM-ADS @@ -489,7 +501,7 @@ 79 66 8 - .\lst\LoRaMac-915-Bootloader\ + .\lst\LoRaMac-us915-Bootloader\ 1 @@ -544,6 +556,7 @@ 1 0 0 + 1 11 @@ -561,7 +574,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -607,9 +620,772 @@ 0 - - - 0 + 0 + 0 + + + + + + + + + LoRaMac-as923-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-as923-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-au915-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-au915-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-kr920-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-kr920-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-in865-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-in865-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779-Bootloader + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + @@ -1047,7 +1823,7 @@ mac\region - 0 + 1 0 0 0 @@ -1154,6 +1930,18 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 ..\..\..\..\src\mac\region\RegionKR920.c RegionKR920.c 0 @@ -1161,7 +1949,7 @@ 7 - 42 + 43 1 0 0 @@ -1173,7 +1961,7 @@ 7 - 43 + 44 1 0 0 @@ -1193,7 +1981,7 @@ 0 8 - 44 + 45 1 0 0 @@ -1205,7 +1993,7 @@ 8 - 45 + 46 1 0 0 @@ -1217,7 +2005,7 @@ 8 - 46 + 47 1 0 0 @@ -1229,7 +2017,7 @@ 8 - 47 + 48 1 0 0 @@ -1241,7 +2029,7 @@ 8 - 48 + 49 1 0 0 @@ -1253,7 +2041,7 @@ 8 - 49 + 50 1 0 0 @@ -1273,7 +2061,7 @@ 0 9 - 50 + 51 1 0 0 @@ -1293,7 +2081,7 @@ 0 10 - 51 + 52 1 0 0 @@ -1305,7 +2093,7 @@ 10 - 52 + 53 1 0 0 @@ -1317,7 +2105,7 @@ 10 - 53 + 54 1 0 0 @@ -1329,7 +2117,7 @@ 10 - 54 + 55 1 0 0 @@ -1341,7 +2129,7 @@ 10 - 55 + 56 1 0 0 @@ -1353,7 +2141,7 @@ 10 - 56 + 57 1 0 0 @@ -1365,7 +2153,7 @@ 10 - 57 + 58 1 0 0 @@ -1377,7 +2165,7 @@ 10 - 58 + 59 1 0 0 @@ -1397,7 +2185,7 @@ 0 11 - 59 + 60 1 0 0 @@ -1409,7 +2197,7 @@ 11 - 60 + 61 1 0 0 diff --git a/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvproj b/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvproj index aa909cba5..1db59806f 100644 --- a/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvproj +++ b/Keil/LoRaMote/LoRaMac/classC/LoRaMac.uvproj @@ -7,10 +7,10 @@ - LoRaMac-868 + LoRaMac-eu868 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac-868\ - LoRaMac + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 1 0 1 1 1 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-eu868\ 1 0 0 @@ -648,6 +648,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -773,10 +778,10 @@ - LoRaMac-868-Bootloader + LoRaMac-eu868-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -811,14 +816,14 @@ 0 1 - .\obj\LoRaMac-868-Bootloader\ - LoRaMac + .\obj\LoRaMac-eu868-Bootloader\ + LoRaMac-eu868 1 0 1 1 1 - .\lst\LoRaMac-868-Bootloader\ + .\lst\LoRaMac-eu868-Bootloader\ 1 0 0 @@ -852,7 +857,7 @@ 0 0 - 0 + 1 @@ -1414,6 +1419,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -1539,10 +1549,10 @@ - LoRaMac-915 + LoRaMac-us915 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -1577,14 +1587,14 @@ 0 1 - .\obj\LoRaMac-915\ - LoRaMac + .\obj\LoRaMac-us915\ + LoRaMac-us915 1 0 1 1 1 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-us915\ 1 0 0 @@ -2180,6 +2190,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -2305,10 +2320,10 @@ - LoRaMac-915-Bootloader + LoRaMac-us915-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -2343,14 +2358,14 @@ 0 1 - .\obj\LoRaMac-915-Bootloader\ - LoRaMac + .\obj\LoRaMac-us915-Bootloader\ + LoRaMac-us915 1 0 1 1 1 - .\lst\LoRaMac-915-Bootloader\ + .\lst\LoRaMac-us915-Bootloader\ 1 0 0 @@ -2384,7 +2399,7 @@ 0 0 - 0 + 1 @@ -2647,7 +2662,7 @@ 1 - 3 + 2 0 0 1 @@ -2946,6 +2961,3866 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-as923-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-as923-Bootloader\ + LoRaMac-as923 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-as923-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AS923 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-au915-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-au915-Bootloader\ + LoRaMac-au915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-au915-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AU915 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-kr920-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-kr920-Bootloader\ + LoRaMac-kr920 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-kr920-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_KR920 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-in865-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-in865-Bootloader\ + LoRaMac-in865 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-in865-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_IN865 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779-Bootloader\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\LoRaMote;..\..\..\..\src\boards\LoRaMote\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\LoRaMote\main.c + + + + + boards\LoRaMote + + + adc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\LoRaMote\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\LoRaMote\uart-board.c + + + + + boards\LoRaMote\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\LoRaMote\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\LoRaMote\cmsis\system_stm32l1xx.c + + + + + boards\LoRaMote\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 diff --git a/Keil/LoRaMote/ping-pong/Ping-Pong.uvopt b/Keil/LoRaMote/ping-pong/Ping-Pong.uvopt index 0911259b7..7bd63426b 100644 --- a/Keil/LoRaMote/ping-pong/Ping-Pong.uvopt +++ b/Keil/LoRaMote/ping-pong/Ping-Pong.uvopt @@ -22,13 +22,13 @@ - Ping-Pong-868-lora + Ping-Pong-eu868-lora 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -45,7 +45,7 @@ 79 66 8 - .\lst\Ping-Pong-868-lora\ + .\lst\Ping-Pong-eu868-lora\ 1 @@ -75,9 +75,9 @@ 1 0 - 0 + 1 - 255 + 0 0 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -114,35 +115,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -151,13 +127,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -178,20 +154,23 @@ 0 - - - 0 + 0 + 0 + + + + - Ping-Pong-868-fsk + Ping-Pong-eu868-fsk 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -208,7 +187,7 @@ 79 66 8 - .\lst\Ping-Pong-868-fsk\ + .\lst\Ping-Pong-eu868-fsk\ 1 @@ -236,11 +215,11 @@ 0 - 1 + 0 0 0 - 255 + 0 0 1 @@ -263,6 +242,7 @@ 1 0 0 + 1 11 @@ -277,35 +257,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -314,13 +269,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -341,20 +296,23 @@ 0 - - - 0 + 0 + 0 + + + + - Ping-Pong-868-lora-Bootloader + Ping-Pong-eu868-lora-Bootloader 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -371,7 +329,7 @@ 79 66 8 - .\lst\Ping-Pong-868-lora-Bootloader\ + .\lst\Ping-Pong-eu868-lora-Bootloader\ 1 @@ -399,11 +357,11 @@ 0 - 1 + 0 0 0 - 255 + 0 0 1 @@ -426,6 +384,7 @@ 1 0 0 + 1 11 @@ -440,35 +399,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -477,13 +411,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -504,20 +438,23 @@ 0 - - - 0 + 0 + 0 + + + + - Ping-Pong-868-fsk-Bootloader + Ping-Pong-eu868-fsk-Bootloader 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -534,7 +471,7 @@ 79 66 8 - .\lst\Ping-Pong-868-fsk-Bootloader\ + .\lst\Ping-Pong-eu868-fsk-Bootloader\ 1 @@ -562,11 +499,11 @@ 0 - 1 + 0 0 - 1 + 0 - 255 + 0 0 1 @@ -589,6 +526,7 @@ 1 0 0 + 1 11 @@ -603,35 +541,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -U -O206 -S0 -C0 -P00 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -640,13 +553,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -667,20 +580,23 @@ 0 - - - 0 + 0 + 0 + + + + - Ping-Pong-915-lora + Ping-Pong-us915-lora 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -697,7 +613,7 @@ 79 66 8 - .\lst\Ping-Pong-915-lora\ + .\lst\Ping-Pong-us915-lora\ 1 @@ -725,11 +641,11 @@ 0 - 1 + 0 0 0 - 255 + 0 0 1 @@ -752,6 +668,7 @@ 1 0 0 + 1 11 @@ -766,35 +683,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -803,13 +695,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -830,20 +722,23 @@ 0 - - - 0 + 0 + 0 + + + + - Ping-Pong-915-fsk + Ping-Pong-us915-fsk 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -860,7 +755,7 @@ 79 66 8 - .\lst\Ping-Pong-915-fsk\ + .\lst\Ping-Pong-us915-fsk\ 1 @@ -888,11 +783,11 @@ 0 - 1 + 0 0 0 - 255 + 0 0 1 @@ -915,6 +810,7 @@ 1 0 0 + 1 11 @@ -929,35 +825,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -966,13 +837,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -993,20 +864,23 @@ 0 - - - 0 + 0 + 0 + + + + - Ping-Pong-915-lora-Bootloader + Ping-Pong-us915-lora-Bootloader 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -1023,7 +897,7 @@ 79 66 8 - .\lst\Ping-Pong-915-lora-Bootloader\ + .\lst\Ping-Pong-us915-lora-Bootloader\ 1 @@ -1051,11 +925,11 @@ 0 - 1 + 0 0 0 - 255 + 0 0 1 @@ -1078,6 +952,7 @@ 1 0 0 + 1 11 @@ -1092,35 +967,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1129,13 +979,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1156,20 +1006,23 @@ 0 - - - 0 + 0 + 0 + + + + - Ping-Pong-915-fsk-Bootloader + Ping-Pong-us915-fsk-Bootloader 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -1186,7 +1039,7 @@ 79 66 8 - .\lst\Ping-Pong-915-fsk-Bootloader\ + .\lst\Ping-Pong-us915-fsk-Bootloader\ 1 @@ -1214,11 +1067,11 @@ 0 - 1 + 0 0 0 - 255 + 0 0 1 @@ -1241,6 +1094,7 @@ 1 0 0 + 1 11 @@ -1255,35 +1109,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1292,13 +1121,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1319,9 +1148,12 @@ 0 - - - 0 + 0 + 0 + + + + diff --git a/Keil/LoRaMote/ping-pong/Ping-Pong.uvproj b/Keil/LoRaMote/ping-pong/Ping-Pong.uvproj index 4b24cb043..245145d4e 100644 --- a/Keil/LoRaMote/ping-pong/Ping-Pong.uvproj +++ b/Keil/LoRaMote/ping-pong/Ping-Pong.uvproj @@ -7,10 +7,10 @@ - Ping-Pong-868-lora + Ping-Pong-eu868-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -45,14 +45,14 @@ 0 1 - .\obj\Ping-Pong-868-lora\ - Ping-Pong + .\obj\Ping-Pong-eu868-lora\ + Ping-Pong-eu868-lora 1 0 1 1 1 - .\lst\Ping-Pong-868-lora\ + .\lst\Ping-Pong-eu868-lora\ 1 0 0 @@ -372,7 +372,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -683,10 +683,10 @@ - Ping-Pong-868-fsk + Ping-Pong-eu868-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -721,14 +721,14 @@ 0 1 - .\obj\Ping-Pong-868-fsk\ - Ping-Pong + .\obj\Ping-Pong-eu868-fsk\ + Ping-Pong-eu868-fsk 1 0 1 1 1 - .\lst\Ping-Pong-868-fsk\ + .\lst\Ping-Pong-eu868-fsk\ 1 0 0 @@ -1048,7 +1048,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1359,10 +1359,10 @@ - Ping-Pong-868-lora-Bootloader + Ping-Pong-eu868-lora-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -1397,14 +1397,14 @@ 0 1 - .\obj\Ping-Pong-868-lora-Bootloader\ - Ping-Pong + .\obj\Ping-Pong-eu868-lora-Bootloader\ + Ping-Pong-eu868-lora 1 0 1 1 1 - .\lst\Ping-Pong-868-lora-Bootloader\ + .\lst\Ping-Pong-eu868-lora-Bootloader\ 1 0 0 @@ -1438,7 +1438,7 @@ 0 0 - 0 + 1 @@ -1724,7 +1724,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_LORA USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2035,10 +2035,10 @@ - Ping-Pong-868-fsk-Bootloader + Ping-Pong-eu868-fsk-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -2073,14 +2073,14 @@ 0 1 - .\obj\Ping-Pong-868-fsk-Bootloader\ - Ping-Pong + .\obj\Ping-Pong-eu868-fsk-Bootloader\ + Ping-Pong-eu868-fsk 1 0 1 1 1 - .\lst\Ping-Pong-868-fsk-Bootloader\ + .\lst\Ping-Pong-eu868-fsk-Bootloader\ 1 0 0 @@ -2114,7 +2114,7 @@ 0 0 - 0 + 1 @@ -2400,7 +2400,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_FSK USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2711,10 +2711,10 @@ - Ping-Pong-915-lora + Ping-Pong-us915-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -2749,14 +2749,14 @@ 0 1 - .\obj\Ping-Pong-915-lora\ - Ping-Pong + .\obj\Ping-Pong-us915-lora\ + Ping-Pong-us915-lora 1 0 1 1 1 - .\lst\Ping-Pong-915-lora\ + .\lst\Ping-Pong-us915-lora\ 1 0 0 @@ -3076,7 +3076,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -3387,10 +3387,10 @@ - Ping-Pong-915-fsk + Ping-Pong-us915-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -3425,14 +3425,14 @@ 0 1 - .\obj\Ping-Pong-915-fsk\ - Ping-Pong + .\obj\Ping-Pong-us915-fsk\ + Ping-Pong-us915-fsk 1 0 1 1 1 - .\lst\Ping-Pong-915-fsk\ + .\lst\Ping-Pong-us915-fsk\ 1 0 0 @@ -3752,7 +3752,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -4063,10 +4063,10 @@ - Ping-Pong-915-lora-Bootloader + Ping-Pong-us915-lora-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -4101,14 +4101,14 @@ 0 1 - .\obj\Ping-Pong-915-lora-Bootloader\ - Ping-Pong + .\obj\Ping-Pong-us915-lora-Bootloader\ + Ping-Pong-us915-lora 1 0 1 1 1 - .\lst\Ping-Pong-915-lora-Bootloader\ + .\lst\Ping-Pong-us915-lora-Bootloader\ 1 0 0 @@ -4142,7 +4142,7 @@ 0 0 - 0 + 1 @@ -4428,7 +4428,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_LORA USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -4739,10 +4739,10 @@ - Ping-Pong-915-fsk-Bootloader + Ping-Pong-us915-fsk-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -4777,14 +4777,14 @@ 0 1 - .\obj\Ping-Pong-915-fsk-Bootloader\ - Ping-Pong + .\obj\Ping-Pong-us915-fsk-Bootloader\ + Ping-Pong-us915-fsk 1 0 1 1 1 - .\lst\Ping-Pong-915-fsk-Bootloader\ + .\lst\Ping-Pong-us915-fsk-Bootloader\ 1 0 0 @@ -4818,7 +4818,7 @@ 0 0 - 0 + 1 @@ -5104,7 +5104,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_FSK USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto diff --git a/Keil/LoRaMote/rx-sensi/rx-sensi.uvopt b/Keil/LoRaMote/rx-sensi/rx-sensi.uvopt index 23a83e2f9..153c325d7 100644 --- a/Keil/LoRaMote/rx-sensi/rx-sensi.uvopt +++ b/Keil/LoRaMote/rx-sensi/rx-sensi.uvopt @@ -22,13 +22,13 @@ - rx-sensi-868-lora + rx-sensi-eu868-lora 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -45,7 +45,7 @@ 79 66 8 - .\lst\rx-sensi-868-lora\ + .\lst\rx-sensi-eu868-lora\ 1 @@ -77,7 +77,7 @@ 0 1 - 255 + 0 0 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -114,35 +115,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -151,13 +127,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -178,20 +154,23 @@ 0 - - - 0 + 0 + 0 + + + + - rx-sensi-868-fsk + rx-sensi-eu868-fsk 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -208,7 +187,7 @@ 79 66 8 - .\lst\rx-sensi-868-fsk\ + .\lst\rx-sensi-eu868-fsk\ 1 @@ -236,11 +215,11 @@ 0 - 1 + 0 0 0 - 255 + 0 0 1 @@ -263,6 +242,7 @@ 1 0 0 + 1 11 @@ -276,51 +256,19 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - - - 0 - ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) - - 0 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -341,20 +289,23 @@ 0 - - - 0 + 0 + 0 + + + + - rx-sensi-868-lora-Bootloader + rx-sensi-eu868-lora-Bootloader 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -371,7 +322,7 @@ 79 66 8 - .\lst\rx-sensi-868-lora-Bootloader\ + .\lst\rx-sensi-eu868-lora-Bootloader\ 1 @@ -399,11 +350,11 @@ 0 - 1 + 0 0 0 - 255 + 0 0 1 @@ -426,6 +377,7 @@ 1 0 0 + 1 11 @@ -440,35 +392,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -477,13 +404,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -504,20 +431,23 @@ 0 - - - 0 + 0 + 0 + + + + - rx-sensi-868-fsk-Bootloader + rx-sensi-eu868-fsk-Bootloader 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -534,7 +464,7 @@ 79 66 8 - .\lst\rx-sensi-868-fsk-Bootloader\ + .\lst\rx-sensi-eu868-fsk-Bootloader\ 1 @@ -562,11 +492,11 @@ 0 - 1 + 0 0 0 - 255 + 0 0 1 @@ -589,6 +519,7 @@ 1 0 0 + 1 11 @@ -603,35 +534,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -U -O206 -S0 -C0 -P00 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -640,13 +546,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -667,20 +573,23 @@ 0 - - - 0 + 0 + 0 + + + + - rx-sensi-915-lora + rx-sensi-us915-lora 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -697,7 +606,7 @@ 79 66 8 - .\lst\rx-sensi-915-lora\ + .\lst\rx-sensi-us915-lora\ 1 @@ -725,11 +634,11 @@ 0 - 1 + 0 0 0 - 255 + 0 0 1 @@ -752,6 +661,7 @@ 1 0 0 + 1 11 @@ -765,51 +675,19 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - - - 0 - ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) - - 0 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -830,20 +708,23 @@ 0 - - - 0 + 0 + 0 + + + + - rx-sensi-915-fsk + rx-sensi-us915-fsk 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -860,7 +741,7 @@ 79 66 8 - .\lst\rx-sensi-915-fsk\ + .\lst\rx-sensi-us915-fsk\ 1 @@ -888,11 +769,11 @@ 0 - 1 + 0 0 0 - 255 + 0 0 1 @@ -915,6 +796,7 @@ 1 0 0 + 1 11 @@ -928,51 +810,19 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - - - 0 - ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) - - 0 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -993,20 +843,23 @@ 0 - - - 0 + 0 + 0 + + + + - rx-sensi-915-lora-Bootloader + rx-sensi-us915-lora-Bootloader 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -1023,7 +876,7 @@ 79 66 8 - .\lst\rx-sensi-915-lora-Bootloader\ + .\lst\rx-sensi-us915-lora-Bootloader\ 1 @@ -1051,11 +904,11 @@ 0 - 1 + 0 0 0 - 255 + 0 0 1 @@ -1078,6 +931,7 @@ 1 0 0 + 1 11 @@ -1092,35 +946,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1129,13 +958,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1156,20 +985,23 @@ 0 - - - 0 + 0 + 0 + + + + - rx-sensi-915-fsk-Bootloader + rx-sensi-us915-fsk-Bootloader 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -1186,7 +1018,7 @@ 79 66 8 - .\lst\rx-sensi-915-fsk-Bootloader\ + .\lst\rx-sensi-us915-fsk-Bootloader\ 1 @@ -1214,11 +1046,11 @@ 0 - 1 + 0 0 0 - 255 + 0 0 1 @@ -1241,6 +1073,7 @@ 1 0 0 + 1 11 @@ -1255,35 +1088,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1292,13 +1100,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1319,9 +1127,12 @@ 0 - - - 0 + 0 + 0 + + + + @@ -1590,30 +1401,6 @@ 0 0 0 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd.c - stm32l1xx_hal_pcd.c - 0 - 0 - - - 4 - 21 - 1 - 0 - 0 - 0 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd_ex.c - stm32l1xx_hal_pcd_ex.c - 0 - 0 - - - 4 - 22 - 1 - 0 - 0 - 0 ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c stm32l1xx_hal_pwr.c 0 @@ -1621,7 +1408,7 @@ 4 - 23 + 21 1 0 0 @@ -1633,7 +1420,7 @@ 4 - 24 + 22 1 0 0 @@ -1645,7 +1432,7 @@ 4 - 25 + 23 1 0 0 @@ -1657,7 +1444,7 @@ 4 - 26 + 24 1 0 0 @@ -1669,7 +1456,7 @@ 4 - 27 + 25 1 0 0 @@ -1681,7 +1468,7 @@ 4 - 28 + 26 1 0 0 @@ -1693,7 +1480,7 @@ 4 - 29 + 27 1 0 0 @@ -1705,7 +1492,7 @@ 4 - 30 + 28 1 0 0 @@ -1725,7 +1512,7 @@ 0 5 - 31 + 29 1 0 0 @@ -1737,7 +1524,7 @@ 5 - 32 + 30 1 0 0 @@ -1757,7 +1544,7 @@ 0 6 - 33 + 31 1 0 0 @@ -1769,7 +1556,7 @@ 6 - 34 + 32 1 0 0 @@ -1781,7 +1568,7 @@ 6 - 35 + 33 1 0 0 @@ -1793,7 +1580,7 @@ 6 - 36 + 34 1 0 0 @@ -1805,7 +1592,7 @@ 6 - 37 + 35 1 0 0 @@ -1817,7 +1604,7 @@ 6 - 38 + 36 1 0 0 @@ -1837,7 +1624,7 @@ 0 7 - 39 + 37 1 0 0 @@ -1857,7 +1644,7 @@ 0 8 - 40 + 38 1 0 0 @@ -1869,7 +1656,7 @@ 8 - 41 + 39 1 0 0 @@ -1881,7 +1668,7 @@ 8 - 42 + 40 1 0 0 @@ -1893,7 +1680,7 @@ 8 - 43 + 41 1 0 0 @@ -1905,7 +1692,7 @@ 8 - 44 + 42 1 0 0 @@ -1917,7 +1704,7 @@ 8 - 45 + 43 1 0 0 @@ -1929,7 +1716,7 @@ 8 - 46 + 44 1 0 0 @@ -1941,7 +1728,7 @@ 8 - 47 + 45 1 0 0 diff --git a/Keil/LoRaMote/rx-sensi/rx-sensi.uvproj b/Keil/LoRaMote/rx-sensi/rx-sensi.uvproj index c1f60e2ee..4dbb2af58 100644 --- a/Keil/LoRaMote/rx-sensi/rx-sensi.uvproj +++ b/Keil/LoRaMote/rx-sensi/rx-sensi.uvproj @@ -7,10 +7,10 @@ - rx-sensi-868-lora + rx-sensi-eu868-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -45,14 +45,14 @@ 0 1 - .\obj\rx-sensi-868-lora\ - rx-sensi + .\obj\rx-sensi-eu868-lora\ + rx-sensi-eu868-lora 1 0 1 1 1 - .\lst\rx-sensi-868-lora\ + .\lst\rx-sensi-eu868-lora\ 1 0 0 @@ -372,7 +372,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -528,16 +528,6 @@ 1 ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c - - stm32l1xx_hal_pcd.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd.c - - - stm32l1xx_hal_pcd_ex.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd_ex.c - stm32l1xx_hal_pwr.c 1 @@ -693,10 +683,10 @@ - rx-sensi-868-fsk + rx-sensi-eu868-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -731,14 +721,14 @@ 0 1 - .\obj\rx-sensi-868-fsk\ - rx-sensi + .\obj\rx-sensi-eu868-fsk\ + rx-sensi-eu868-fsk 1 0 1 1 1 - .\lst\rx-sensi-868-fsk\ + .\lst\rx-sensi-eu868-fsk\ 1 0 0 @@ -1058,7 +1048,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1214,16 +1204,6 @@ 1 ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c - - stm32l1xx_hal_pcd.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd.c - - - stm32l1xx_hal_pcd_ex.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd_ex.c - stm32l1xx_hal_pwr.c 1 @@ -1379,10 +1359,10 @@ - rx-sensi-868-lora-Bootloader + rx-sensi-eu868-lora-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -1417,14 +1397,14 @@ 0 1 - .\obj\rx-sensi-868-lora-Bootloader\ - rx-sensi + .\obj\rx-sensi-eu868-lora-Bootloader\ + rx-sensi-eu868-lora 1 0 1 1 1 - .\lst\rx-sensi-868-lora-Bootloader\ + .\lst\rx-sensi-eu868-lora-Bootloader\ 1 0 0 @@ -1458,7 +1438,7 @@ 0 0 - 0 + 1 @@ -1744,7 +1724,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_LORA USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1900,16 +1880,6 @@ 1 ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c - - stm32l1xx_hal_pcd.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd.c - - - stm32l1xx_hal_pcd_ex.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd_ex.c - stm32l1xx_hal_pwr.c 1 @@ -2065,10 +2035,10 @@ - rx-sensi-868-fsk-Bootloader + rx-sensi-eu868-fsk-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -2103,14 +2073,14 @@ 0 1 - .\obj\rx-sensi-868-fsk-Bootloader\ - rx-sensi + .\obj\rx-sensi-eu868-fsk-Bootloader\ + rx-sensi-eu868-fsk 1 0 1 1 1 - .\lst\rx-sensi-868-fsk-Bootloader\ + .\lst\rx-sensi-eu868-fsk-Bootloader\ 1 0 0 @@ -2144,7 +2114,7 @@ 0 0 - 0 + 1 @@ -2430,7 +2400,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_FSK USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2586,16 +2556,6 @@ 1 ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c - - stm32l1xx_hal_pcd.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd.c - - - stm32l1xx_hal_pcd_ex.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd_ex.c - stm32l1xx_hal_pwr.c 1 @@ -2751,10 +2711,10 @@ - rx-sensi-915-lora + rx-sensi-us915-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -2789,14 +2749,14 @@ 0 1 - .\obj\rx-sensi-915-lora\ - rx-sensi + .\obj\rx-sensi-us915-lora\ + rx-sensi-us915-lora 1 0 1 1 1 - .\lst\rx-sensi-915-lora\ + .\lst\rx-sensi-us915-lora\ 1 0 0 @@ -3116,7 +3076,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -3272,16 +3232,6 @@ 1 ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c - - stm32l1xx_hal_pcd.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd.c - - - stm32l1xx_hal_pcd_ex.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd_ex.c - stm32l1xx_hal_pwr.c 1 @@ -3437,10 +3387,10 @@ - rx-sensi-915-fsk + rx-sensi-us915-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -3475,14 +3425,14 @@ 0 1 - .\obj\rx-sensi-915-fsk\ - rx-sensi + .\obj\rx-sensi-us915-fsk\ + rx-sensi-us915-fsk 1 0 1 1 1 - .\lst\rx-sensi-915-fsk\ + .\lst\rx-sensi-us915-fsk\ 1 0 0 @@ -3802,7 +3752,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -3958,16 +3908,6 @@ 1 ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c - - stm32l1xx_hal_pcd.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd.c - - - stm32l1xx_hal_pcd_ex.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd_ex.c - stm32l1xx_hal_pwr.c 1 @@ -4123,10 +4063,10 @@ - rx-sensi-915-lora-Bootloader + rx-sensi-us915-lora-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -4161,14 +4101,14 @@ 0 1 - .\obj\rx-sensi-915-lora-Bootloader\ - rx-sensi + .\obj\rx-sensi-us915-lora-Bootloader\ + rx-sensi-us915-lora 1 0 1 1 1 - .\lst\rx-sensi-915-lora-Bootloader\ + .\lst\rx-sensi-us915-lora-Bootloader\ 1 0 0 @@ -4202,7 +4142,7 @@ 0 0 - 0 + 1 @@ -4488,7 +4428,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_LORA USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -4644,16 +4584,6 @@ 1 ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c - - stm32l1xx_hal_pcd.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd.c - - - stm32l1xx_hal_pcd_ex.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd_ex.c - stm32l1xx_hal_pwr.c 1 @@ -4809,10 +4739,10 @@ - rx-sensi-915-fsk-Bootloader + rx-sensi-us915-fsk-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -4847,14 +4777,14 @@ 0 1 - .\obj\rx-sensi-915-fsk-Bootloader\ - rx-sensi + .\obj\rx-sensi-us915-fsk-Bootloader\ + rx-sensi-us915-fsk 1 0 1 1 1 - .\lst\rx-sensi-915-fsk-Bootloader\ + .\lst\rx-sensi-us915-fsk-Bootloader\ 1 0 0 @@ -4888,7 +4818,7 @@ 0 0 - 0 + 1 @@ -5174,7 +5104,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_FSK USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -5330,16 +5260,6 @@ 1 ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c - - stm32l1xx_hal_pcd.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd.c - - - stm32l1xx_hal_pcd_ex.c - 1 - ..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pcd_ex.c - stm32l1xx_hal_pwr.c 1 diff --git a/Keil/LoRaMote/tx-cw/tx-cw.uvopt b/Keil/LoRaMote/tx-cw/tx-cw.uvopt index 748c0943d..cb8a7edc6 100644 --- a/Keil/LoRaMote/tx-cw/tx-cw.uvopt +++ b/Keil/LoRaMote/tx-cw/tx-cw.uvopt @@ -22,13 +22,13 @@ - tx-cw-868 + tx-cw-eu868 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -45,7 +45,7 @@ 79 66 8 - .\lst\tx-cw-868\ + .\lst\tx-cw-eu868\ 1 @@ -77,7 +77,7 @@ 0 0 - 255 + 0 0 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -114,35 +115,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -151,13 +127,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -178,20 +154,23 @@ 0 - - - 0 + 0 + 0 + + + + - tx-cw-868-Bootloader + tx-cw-eu868-Bootloader 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -208,7 +187,7 @@ 79 66 8 - .\lst\tx-cw-868-Bootloader\ + .\lst\tx-cw-eu868-Bootloader\ 1 @@ -240,7 +219,7 @@ 0 1 - 255 + 0 0 1 @@ -263,6 +242,7 @@ 1 0 0 + 1 11 @@ -277,35 +257,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -314,13 +269,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -341,20 +296,23 @@ 0 - - - 0 + 0 + 0 + + + + - tx-cw-915 + tx-cw-us915 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -371,7 +329,7 @@ 79 66 8 - .\lst\tx-cw-915\ + .\lst\tx-cw-us915\ 1 @@ -403,7 +361,7 @@ 0 0 - 255 + 0 0 1 @@ -426,6 +384,7 @@ 1 0 0 + 1 11 @@ -440,35 +399,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -477,13 +411,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -504,20 +438,23 @@ 0 - - - 0 + 0 + 0 + + + + - tx-cw-915-Bootloader + tx-cw-us915-Bootloader 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -534,7 +471,7 @@ 79 66 8 - .\lst\tx-cw-915-Bootloader\ + .\lst\tx-cw-us915-Bootloader\ 1 @@ -566,7 +503,7 @@ 0 0 - 255 + 0 0 1 @@ -589,6 +526,7 @@ 1 0 0 + 1 11 @@ -603,35 +541,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -640,13 +553,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -667,9 +580,12 @@ 0 - - - 0 + 0 + 0 + + + + diff --git a/Keil/LoRaMote/tx-cw/tx-cw.uvproj b/Keil/LoRaMote/tx-cw/tx-cw.uvproj index 6c312349e..10fb14352 100644 --- a/Keil/LoRaMote/tx-cw/tx-cw.uvproj +++ b/Keil/LoRaMote/tx-cw/tx-cw.uvproj @@ -7,10 +7,10 @@ - tx-cw-868 + tx-cw-eu868 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -45,14 +45,14 @@ 0 1 - .\obj\tx-cw-868\ - tx-cw + .\obj\tx-cw-eu868\ + tx-cw-eu868 1 0 1 1 1 - .\lst\tx-cw-868\ + .\lst\tx-cw-eu868\ 1 0 0 @@ -372,7 +372,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -683,10 +683,10 @@ - tx-cw-868-Bootloader + tx-cw-eu868-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -721,14 +721,14 @@ 0 1 - .\obj\tx-cw-868-Bootloader\ - tx-cw + .\obj\tx-cw-eu868-Bootloader\ + tx-cw-eu868 1 0 1 1 1 - .\lst\tx-cw-868-Bootloader\ + .\lst\tx-cw-eu868-Bootloader\ 1 0 0 @@ -762,7 +762,7 @@ 0 0 - 0 + 1 @@ -1048,7 +1048,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1359,10 +1359,10 @@ - tx-cw-915 + tx-cw-us915 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -1397,14 +1397,14 @@ 0 1 - .\obj\tx-cw-915\ - tx-cw + .\obj\tx-cw-us915\ + tx-cw-us915 1 0 1 1 1 - .\lst\tx-cw-915\ + .\lst\tx-cw-us915\ 1 0 0 @@ -1724,7 +1724,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2035,10 +2035,10 @@ - tx-cw-915-Bootloader + tx-cw-us915-Bootloader 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -2073,14 +2073,14 @@ 0 1 - .\obj\tx-cw-915-Bootloader\ - tx-cw + .\obj\tx-cw-us915-Bootloader\ + tx-cw-us915 1 0 1 1 1 - .\lst\tx-cw-915-Bootloader\ + .\lst\tx-cw-us915-Bootloader\ 1 0 0 @@ -2114,7 +2114,7 @@ 0 0 - 0 + 1 @@ -2400,7 +2400,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\LoRaMote;..\..\..\src\boards\LoRaMote\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto diff --git a/Keil/MoteII/LoRaMac/classA/LoRaMac.uvoptx b/Keil/MoteII/LoRaMac/classA/LoRaMac.uvoptx index 4e6c0b410..34583f925 100644 --- a/Keil/MoteII/LoRaMac/classA/LoRaMac.uvoptx +++ b/Keil/MoteII/LoRaMac/classA/LoRaMac.uvoptx @@ -8,7 +8,7 @@ *.c *.s*; *.src; *.a* - *.obj + *.obj; *.o *.lib *.txt; *.h; *.inc *.plm @@ -22,7 +22,7 @@ - LoRaMac-868 + LoRaMac-eu868 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-eu868\ 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -137,7 +138,7 @@ 0 ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) 0 @@ -213,14 +214,17 @@ 0 - - - 0 + 0 + 0 + + + + - LoRaMac-915 + LoRaMac-us915 0x4 ARM-ADS @@ -243,7 +247,7 @@ 79 66 8 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-us915\ 1 @@ -298,6 +302,7 @@ 1 0 0 + 1 11 @@ -315,7 +320,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) 0 @@ -469,9 +474,1282 @@ 0 - - - 0 + 0 + 0 + + + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915-hybrid\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + 0 + 0 + 774 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\main.c + + +
+ + 1 + 0 + 262 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + C:\Data\Software\ism\LoRaMac\LoRaMac-mote\LoRaMac-node-moteII\src\peripherals\oledSSD1306.c + + +
+ + 2 + 0 + 641 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\main.c + + +
+ + 3 + 0 + 646 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\main.c + + +
+ + 4 + 0 + 2448 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\mac\LoRaMac.c + + +
+ + 5 + 0 + 56 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\MoteII\gps-board.c + + +
+ + 6 + 0 + 53 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\screen.c + + +
+
+ + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + +
+
+ + + LoRaMac-as923 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-as923\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-au915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-kr920\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-in865\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + @@ -993,7 +2271,7 @@ mac\region - 0 + 1 0 0 0 @@ -1100,6 +2378,18 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 +
+ + 7 + 49 + 1 + 0 + 0 + 0 ..\..\..\..\src\mac\region\RegionKR920.c RegionKR920.c 0 @@ -1107,7 +2397,7 @@ 7 - 49 + 50 1 0 0 @@ -1119,7 +2409,7 @@ 7 - 50 + 51 1 0 0 @@ -1133,13 +2423,13 @@ peripherals - 1 + 0 0 0 0 8 - 51 + 52 1 0 0 @@ -1151,7 +2441,7 @@ 8 - 52 + 53 1 0 0 @@ -1163,7 +2453,7 @@ 8 - 53 + 54 1 0 0 @@ -1175,7 +2465,7 @@ 8 - 54 + 55 1 0 0 @@ -1187,7 +2477,7 @@ 8 - 55 + 56 1 0 0 @@ -1199,7 +2489,7 @@ 8 - 56 + 57 1 0 0 @@ -1219,7 +2509,7 @@ 0 9 - 57 + 58 1 0 0 @@ -1239,7 +2529,7 @@ 0 10 - 58 + 59 1 0 0 @@ -1251,7 +2541,7 @@ 10 - 59 + 60 1 0 0 @@ -1263,7 +2553,7 @@ 10 - 60 + 61 1 0 0 @@ -1275,7 +2565,7 @@ 10 - 61 + 62 1 0 0 @@ -1287,7 +2577,7 @@ 10 - 62 + 63 1 0 0 @@ -1299,7 +2589,7 @@ 10 - 63 + 64 1 0 0 @@ -1311,7 +2601,7 @@ 10 - 64 + 65 1 0 0 @@ -1323,7 +2613,7 @@ 10 - 65 + 66 1 0 0 @@ -1343,7 +2633,7 @@ 0 11 - 66 + 67 1 0 0 @@ -1355,7 +2645,7 @@ 11 - 67 + 68 1 0 0 diff --git a/Keil/MoteII/LoRaMac/classA/LoRaMac.uvprojx b/Keil/MoteII/LoRaMac/classA/LoRaMac.uvprojx index b90ca6fb7..b2c409f18 100644 --- a/Keil/MoteII/LoRaMac/classA/LoRaMac.uvprojx +++ b/Keil/MoteII/LoRaMac/classA/LoRaMac.uvprojx @@ -7,10 +7,10 @@ - LoRaMac-868 + LoRaMac-eu868 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -47,14 +47,14 @@ 0 1 - .\obj\LoRaMac-868\ - LoRaMac + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 1 0 1 1 1 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-eu868\ 1 0 0 @@ -88,7 +88,7 @@ 0 0 - 0 + 1 @@ -333,7 +333,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_EU868 USE_FULL_ASSERT + USE_HAL_DRIVER STM32L051xx REGION_EU868 ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -644,6 +644,4613 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + +
+ + LoRaMac-us915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915\ + LoRaMac-us915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_US915 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915-hybrid\ + LoRaMac-us915-hybrid + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915-hybrid\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_US915_HYBRID + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-as923\ + LoRaMac-as923 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-as923\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_AS923 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-au915\ + LoRaMac-au915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-au915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_AU915 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-kr920\ + LoRaMac-kr920 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-kr920\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_KR920 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-in865\ + LoRaMac-in865 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-in865\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_IN865 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -769,10 +5376,10 @@ - LoRaMac-915 + LoRaMac-cn779 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -809,14 +5416,14 @@ 0 1 - .\obj\LoRaMac-915\ - LoRaMac + .\obj\LoRaMac-cn779\ + LoRaMac-cn779 1 0 1 1 1 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-cn779\ 1 0 0 @@ -850,7 +5457,7 @@ 0 0 - 0 + 1 @@ -1095,7 +5702,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_US915 USE_FULL_ASSERT + USE_HAL_DRIVER STM32L051xx REGION_CN779 ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1406,6 +6013,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -1532,4 +6144,10 @@ + + + + + + diff --git a/Keil/MoteII/LoRaMac/classB/LoRaMac.uvoptx b/Keil/MoteII/LoRaMac/classB/LoRaMac.uvoptx index c0ce3f107..e0aba6835 100644 --- a/Keil/MoteII/LoRaMac/classB/LoRaMac.uvoptx +++ b/Keil/MoteII/LoRaMac/classB/LoRaMac.uvoptx @@ -8,7 +8,7 @@ *.c *.s*; *.src; *.a* - *.obj + *.obj; *.o *.lib *.txt; *.h; *.inc *.plm @@ -22,7 +22,7 @@ - LoRaMac-868 + LoRaMac-eu868 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-eu868\ 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -137,7 +138,7 @@ 0 ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) 0 @@ -213,14 +214,17 @@ 0 - - - 0 + 0 + 0 + + + + - LoRaMac-915 + LoRaMac-us915 0x4 ARM-ADS @@ -243,7 +247,7 @@ 79 66 8 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-us915\ 1 @@ -298,6 +302,7 @@ 1 0 0 + 1 11 @@ -315,7 +320,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) 0 @@ -469,9 +474,1282 @@ 0 - - - 0 + 0 + 0 + + + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915-hybrid\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + 0 + 0 + 774 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\main.c + + +
+ + 1 + 0 + 262 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + C:\Data\Software\ism\LoRaMac\LoRaMac-mote\LoRaMac-node-moteII\src\peripherals\oledSSD1306.c + + +
+ + 2 + 0 + 641 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\main.c + + +
+ + 3 + 0 + 646 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\main.c + + +
+ + 4 + 0 + 2448 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\mac\LoRaMac.c + + +
+ + 5 + 0 + 56 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\MoteII\gps-board.c + + +
+ + 6 + 0 + 53 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\screen.c + + +
+
+ + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + +
+
+ + + LoRaMac-as923 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-as923\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-au915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-kr920\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-in865\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + @@ -993,7 +2271,7 @@ mac\region - 0 + 1 0 0 0 @@ -1100,6 +2378,18 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 + + + 7 + 49 + 1 + 0 + 0 + 0 ..\..\..\..\src\mac\region\RegionKR920.c RegionKR920.c 0 @@ -1107,7 +2397,7 @@ 7 - 49 + 50 1 0 0 @@ -1119,7 +2409,7 @@ 7 - 50 + 51 1 0 0 @@ -1133,13 +2423,13 @@ peripherals - 1 + 0 0 0 0 8 - 51 + 52 1 0 0 @@ -1151,7 +2441,7 @@ 8 - 52 + 53 1 0 0 @@ -1163,7 +2453,7 @@ 8 - 53 + 54 1 0 0 @@ -1175,7 +2465,7 @@ 8 - 54 + 55 1 0 0 @@ -1187,7 +2477,7 @@ 8 - 55 + 56 1 0 0 @@ -1199,7 +2489,7 @@ 8 - 56 + 57 1 0 0 @@ -1219,7 +2509,7 @@ 0 9 - 57 + 58 1 0 0 @@ -1239,7 +2529,7 @@ 0 10 - 58 + 59 1 0 0 @@ -1251,7 +2541,7 @@ 10 - 59 + 60 1 0 0 @@ -1263,7 +2553,7 @@ 10 - 60 + 61 1 0 0 @@ -1275,7 +2565,7 @@ 10 - 61 + 62 1 0 0 @@ -1287,7 +2577,7 @@ 10 - 62 + 63 1 0 0 @@ -1299,7 +2589,7 @@ 10 - 63 + 64 1 0 0 @@ -1311,7 +2601,7 @@ 10 - 64 + 65 1 0 0 @@ -1323,7 +2613,7 @@ 10 - 65 + 66 1 0 0 @@ -1343,7 +2633,7 @@ 0 11 - 66 + 67 1 0 0 @@ -1355,7 +2645,7 @@ 11 - 67 + 68 1 0 0 diff --git a/Keil/MoteII/LoRaMac/classB/LoRaMac.uvprojx b/Keil/MoteII/LoRaMac/classB/LoRaMac.uvprojx index dd1ff7fb4..58a26a515 100644 --- a/Keil/MoteII/LoRaMac/classB/LoRaMac.uvprojx +++ b/Keil/MoteII/LoRaMac/classB/LoRaMac.uvprojx @@ -7,10 +7,10 @@ - LoRaMac-868 + LoRaMac-eu868 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -47,14 +47,14 @@ 0 1 - .\obj\LoRaMac-868\ - LoRaMac + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 1 0 1 1 1 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-eu868\ 1 0 0 @@ -88,7 +88,7 @@ 0 0 - 0 + 1 @@ -333,7 +333,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_EU868 USE_FULL_ASSERT + USE_HAL_DRIVER STM32L051xx REGION_EU868 ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -644,6 +644,4613 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915\ + LoRaMac-us915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_US915 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915-hybrid\ + LoRaMac-us915-hybrid + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915-hybrid\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_US915_HYBRID + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-as923\ + LoRaMac-as923 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-as923\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_AS923 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-au915\ + LoRaMac-au915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-au915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_AU915 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-kr920\ + LoRaMac-kr920 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-kr920\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_KR920 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-in865\ + LoRaMac-in865 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-in865\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_IN865 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -769,10 +5376,10 @@ - LoRaMac-915 + LoRaMac-cn779 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -809,14 +5416,14 @@ 0 1 - .\obj\LoRaMac-915\ - LoRaMac + .\obj\LoRaMac-cn779\ + LoRaMac-cn779 1 0 1 1 1 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-cn779\ 1 0 0 @@ -850,7 +5457,7 @@ 0 0 - 0 + 1 @@ -1095,7 +5702,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_US915 USE_FULL_ASSERT + USE_HAL_DRIVER STM32L051xx REGION_CN779 ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1406,6 +6013,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -1532,4 +6144,10 @@ + + + + + + diff --git a/Keil/MoteII/LoRaMac/classC/LoRaMac.uvoptx b/Keil/MoteII/LoRaMac/classC/LoRaMac.uvoptx index 89d29e5f3..a07806e80 100644 --- a/Keil/MoteII/LoRaMac/classC/LoRaMac.uvoptx +++ b/Keil/MoteII/LoRaMac/classC/LoRaMac.uvoptx @@ -8,7 +8,7 @@ *.c *.s*; *.src; *.a* - *.obj + *.obj; *.o *.lib *.txt; *.h; *.inc *.plm @@ -22,7 +22,7 @@ - LoRaMac-868 + LoRaMac-eu868 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-eu868\ 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -137,7 +138,7 @@ 0 ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) 0 @@ -213,14 +214,17 @@ 0 - - - 0 + 0 + 0 + + + + - LoRaMac-915 + LoRaMac-us915 0x4 ARM-ADS @@ -243,7 +247,7 @@ 79 66 8 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-us915\ 1 @@ -298,6 +302,7 @@ 1 0 0 + 1 11 @@ -315,7 +320,7 @@ 0 ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) 0 @@ -469,9 +474,1282 @@ 0 - - - 0 + 0 + 0 + + + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915-hybrid\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + 0 + 0 + 774 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\main.c + + +
+ + 1 + 0 + 262 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + C:\Data\Software\ism\LoRaMac\LoRaMac-mote\LoRaMac-node-moteII\src\peripherals\oledSSD1306.c + + +
+ + 2 + 0 + 641 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\main.c + + +
+ + 3 + 0 + 646 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\main.c + + +
+ + 4 + 0 + 2448 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\mac\LoRaMac.c + + +
+ + 5 + 0 + 56 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\boards\MoteII\gps-board.c + + +
+ + 6 + 0 + 53 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\screen.c + + +
+
+ + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + +
+
+ + + LoRaMac-as923 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-as923\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-au915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-kr920\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-in865\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2510 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + + + + + + 0 + 1 + Buttons + + + 1 + 1 + CurrentScreen + + + 2 + 1 + TimerListHead + + + 3 + 1 + LoRaMacState + + + 4 + 1 + mcpsConfirm + + + + + 1 + 0 + 0x20000720 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + @@ -993,7 +2271,7 @@ mac\region - 0 + 1 0 0 0 @@ -1100,6 +2378,18 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 +
+ + 7 + 49 + 1 + 0 + 0 + 0 ..\..\..\..\src\mac\region\RegionKR920.c RegionKR920.c 0 @@ -1107,7 +2397,7 @@ 7 - 49 + 50 1 0 0 @@ -1119,7 +2409,7 @@ 7 - 50 + 51 1 0 0 @@ -1133,13 +2423,13 @@ peripherals - 1 + 0 0 0 0 8 - 51 + 52 1 0 0 @@ -1151,7 +2441,7 @@ 8 - 52 + 53 1 0 0 @@ -1163,7 +2453,7 @@ 8 - 53 + 54 1 0 0 @@ -1175,7 +2465,7 @@ 8 - 54 + 55 1 0 0 @@ -1187,7 +2477,7 @@ 8 - 55 + 56 1 0 0 @@ -1199,7 +2489,7 @@ 8 - 56 + 57 1 0 0 @@ -1219,7 +2509,7 @@ 0 9 - 57 + 58 1 0 0 @@ -1239,7 +2529,7 @@ 0 10 - 58 + 59 1 0 0 @@ -1251,7 +2541,7 @@ 10 - 59 + 60 1 0 0 @@ -1263,7 +2553,7 @@ 10 - 60 + 61 1 0 0 @@ -1275,7 +2565,7 @@ 10 - 61 + 62 1 0 0 @@ -1287,7 +2577,7 @@ 10 - 62 + 63 1 0 0 @@ -1299,7 +2589,7 @@ 10 - 63 + 64 1 0 0 @@ -1311,7 +2601,7 @@ 10 - 64 + 65 1 0 0 @@ -1323,7 +2613,7 @@ 10 - 65 + 66 1 0 0 @@ -1343,7 +2633,7 @@ 0 11 - 66 + 67 1 0 0 @@ -1355,7 +2645,7 @@ 11 - 67 + 68 1 0 0 diff --git a/Keil/MoteII/LoRaMac/classC/LoRaMac.uvprojx b/Keil/MoteII/LoRaMac/classC/LoRaMac.uvprojx index abe8e6cf9..37da88c07 100644 --- a/Keil/MoteII/LoRaMac/classC/LoRaMac.uvprojx +++ b/Keil/MoteII/LoRaMac/classC/LoRaMac.uvprojx @@ -7,10 +7,10 @@ - LoRaMac-868 + LoRaMac-eu868 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -47,14 +47,14 @@ 0 1 - .\obj\LoRaMac-868\ - LoRaMac + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 1 0 1 1 1 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-eu868\ 1 0 0 @@ -88,7 +88,7 @@ 0 0 - 0 + 1 @@ -333,7 +333,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_EU868 USE_FULL_ASSERT + USE_HAL_DRIVER STM32L051xx REGION_EU868 ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -644,6 +644,4613 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915\ + LoRaMac-us915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_US915 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915-hybrid\ + LoRaMac-us915-hybrid + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915-hybrid\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_US915_HYBRID + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-as923\ + LoRaMac-as923 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-as923\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_AS923 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-au915\ + LoRaMac-au915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-au915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_AU915 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-kr920\ + LoRaMac-kr920 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-kr920\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_KR920 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + pam7q.c + 1 + ..\..\..\..\src\peripherals\pam7q.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L051C8 + STMicroelectronics + Keil.STM32L0xx_DFP.1.6.0 + http://www.keil.com/pack/ + IROM(0x08000000,0x10000) IRAM(0x20000000,0x2000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM)) + 0 + $$Device:STM32L051C8$Device\Include\stm32l0xx.h + + + + + + + + + + $$Device:STM32L051C8$SVD\STM32L051x.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-in865\ + LoRaMac-in865 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-in865\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + + DARMCM1.DLL + -pCM0+ + SARMCM3.DLL + + TARMCM1.DLL + -pCM0+ + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0+" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L051xx REGION_IN865 + + ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\main.c + + + screen.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\screen.c + + + buttons.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\MoteII\buttons.c + + + + + boards\MoteII + + + adc-board.c + 1 + ..\..\..\..\src\boards\MoteII\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\MoteII\board.c + + + display-board.c + 1 + ..\..\..\..\src\boards\MoteII\display-board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\MoteII\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\MoteII\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\MoteII\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\MoteII\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\MoteII\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\MoteII\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\MoteII\uart-board.c + + + + + boards\MoteII\cmsis + + + startup_stm32l051xx.s + 2 + ..\..\..\..\src\boards\MoteII\cmsis\arm-std\startup_stm32l051xx.s + + + system_stm32l0xx.c + 1 + ..\..\..\..\src\boards\MoteII\cmsis\system_stm32l0xx.c + + + + + boards\MoteII\STM32L0xx_HAL_Driver + + + stm32l0xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal.c + + + stm32l0xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc.c + + + stm32l0xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_adc_ex.c + + + stm32l0xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_cortex.c + + + stm32l0xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_dma.c + + + stm32l0xx_hal_flash.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash.c + + + stm32l0xx_hal_flash_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ex.c + + + stm32l0xx_hal_flash_ramfunc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_flash_ramfunc.c + + + stm32l0xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_gpio.c + + + stm32l0xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c.c + + + stm32l0xx_hal_i2c_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_i2c_ex.c + + + stm32l0xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr.c + + + stm32l0xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_pwr_ex.c + + + stm32l0xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc.c + + + stm32l0xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rcc_ex.c + + + stm32l0xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc.c + + + stm32l0xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_rtc_ex.c + + + stm32l0xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_spi.c + + + stm32l0xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart.c + + + stm32l0xx_hal_uart_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\Src\stm32l0xx_hal_uart_ex.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -769,10 +5376,10 @@ - LoRaMac-915 + LoRaMac-cn779 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -809,14 +5416,14 @@ 0 1 - .\obj\LoRaMac-915\ - LoRaMac + .\obj\LoRaMac-cn779\ + LoRaMac-cn779 1 0 1 1 1 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-cn779\ 1 0 0 @@ -850,7 +5457,7 @@ 0 0 - 0 + 1 @@ -1095,7 +5702,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_US915 USE_FULL_ASSERT + USE_HAL_DRIVER STM32L051xx REGION_CN779 ..\..\..\..\src;..\..\..\..\src\boards\MoteII;..\..\..\..\src\boards\MoteII\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1406,6 +6013,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -1532,4 +6144,10 @@ + + + + + + diff --git a/Keil/MoteII/ping-pong/Ping-Pong.uvoptx b/Keil/MoteII/ping-pong/Ping-Pong.uvoptx index 4adff14d9..a60ca604c 100644 --- a/Keil/MoteII/ping-pong/Ping-Pong.uvoptx +++ b/Keil/MoteII/ping-pong/Ping-Pong.uvoptx @@ -22,7 +22,7 @@ - Ping-Pong-868-lora + Ping-Pong-eu868-lora 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\Ping-Pong-868-lora\ + .\lst\Ping-Pong-eu868-lora\ 1 @@ -94,13 +94,14 @@ 1 1 0 - 0 + 1 1 1 1 0 0 - 11 + 1 + 1 @@ -111,14 +112,9 @@ - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL - - 0 - ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) - 0 UL2CM3 @@ -158,14 +154,17 @@ 0 - - - 0 + 0 + 0 + + + + - Ping-Pong-868-fsk + Ping-Pong-eu868-fsk 0x4 ARM-ADS @@ -188,7 +187,7 @@ 79 66 8 - .\lst\Ping-Pong-868-fsk\ + .\lst\Ping-Pong-eu868-fsk\ 1 @@ -237,13 +236,14 @@ 1 1 0 - 0 + 1 1 1 1 0 0 - 11 + 1 + 1 @@ -254,14 +254,9 @@ - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL - - 0 - ST-LINKIII-KEIL_SWO - -U-O206 -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) - 0 UL2CM3 @@ -301,14 +296,17 @@ 0 - - - 0 + 0 + 0 + + + + - Ping-Pong-915-lora + Ping-Pong-us915-lora 0x4 ARM-ADS @@ -331,7 +329,7 @@ 79 66 8 - .\lst\Ping-Pong-915-lora\ + .\lst\Ping-Pong-us915-lora\ 1 @@ -380,13 +378,14 @@ 1 1 0 - 0 + 1 1 1 1 0 0 - 11 + 1 + 1 @@ -397,14 +396,9 @@ - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL - - 0 - ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) - 0 UL2CM3 @@ -444,14 +438,17 @@ 0 - - - 0 + 0 + 0 + + + + - Ping-Pong-915-fsk + Ping-Pong-us915-fsk 0x4 ARM-ADS @@ -474,7 +471,7 @@ 79 66 8 - .\lst\Ping-Pong-915-fsk\ + .\lst\Ping-Pong-us915-fsk\ 1 @@ -523,13 +520,14 @@ 1 1 0 - 0 + 1 1 1 1 0 0 - 11 + 1 + 1 @@ -540,14 +538,9 @@ - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL - - 0 - ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) - 0 UL2CM3 @@ -587,9 +580,12 @@ 0 - - - 0 + 0 + 0 + + + + diff --git a/Keil/MoteII/ping-pong/Ping-Pong.uvprojx b/Keil/MoteII/ping-pong/Ping-Pong.uvprojx index 407178525..cf5601e9d 100644 --- a/Keil/MoteII/ping-pong/Ping-Pong.uvprojx +++ b/Keil/MoteII/ping-pong/Ping-Pong.uvprojx @@ -7,10 +7,10 @@ - Ping-Pong-868-lora + Ping-Pong-eu868-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -47,14 +47,14 @@ 0 1 - .\obj\Ping-Pong-868-lora\ - Ping-Pong + .\obj\Ping-Pong-eu868-lora\ + Ping-Pong-eu868-lora 1 0 1 1 1 - .\lst\Ping-Pong-868-lora\ + .\lst\Ping-Pong-eu868-lora\ 1 0 0 @@ -88,7 +88,7 @@ 0 0 - 0 + 1 @@ -333,7 +333,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_EU868 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\MoteII;..\..\..\src\boards\MoteII\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\peripherals\ble;..\..\..\src\peripherals\display;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -649,10 +649,10 @@ - Ping-Pong-868-fsk + Ping-Pong-eu868-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -689,14 +689,14 @@ 0 1 - .\obj\Ping-Pong-868-fsk\ - Ping-Pong + .\obj\Ping-Pong-eu868-fsk\ + Ping-Pong-eu868--fsk 1 0 1 1 1 - .\lst\Ping-Pong-868-fsk\ + .\lst\Ping-Pong-eu868-fsk\ 1 0 0 @@ -730,7 +730,7 @@ 0 0 - 0 + 1 @@ -975,7 +975,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_EU868 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\MoteII;..\..\..\src\boards\MoteII\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\peripherals\ble;..\..\..\src\peripherals\display;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1291,10 +1291,10 @@ - Ping-Pong-915-lora + Ping-Pong-us915-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -1331,14 +1331,14 @@ 0 1 - .\obj\Ping-Pong-915-lora\ - Ping-Pong + .\obj\Ping-Pong-us915-lora\ + Ping-Pong-us915-lora 1 0 1 1 1 - .\lst\Ping-Pong-915-lora\ + .\lst\Ping-Pong-us915-lora\ 1 0 0 @@ -1372,7 +1372,7 @@ 0 0 - 0 + 1 @@ -1617,7 +1617,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_US915 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\MoteII;..\..\..\src\boards\MoteII\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\peripherals\ble;..\..\..\src\peripherals\display;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1933,10 +1933,10 @@ - Ping-Pong-915-fsk + Ping-Pong-us915-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -1973,14 +1973,14 @@ 0 1 - .\obj\Ping-Pong-915-fsk\ - Ping-Pong + .\obj\Ping-Pong-us915-fsk\ + Ping-Pong-us915-fsk 1 0 1 1 1 - .\lst\Ping-Pong-915-fsk\ + .\lst\Ping-Pong-us915-fsk\ 1 0 0 @@ -2014,7 +2014,7 @@ 0 0 - 0 + 1 @@ -2259,7 +2259,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_US915 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\MoteII;..\..\..\src\boards\MoteII\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\peripherals\ble;..\..\..\src\peripherals\display;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2576,4 +2576,10 @@ + + + + + + diff --git a/Keil/MoteII/rx-sensi/rx-sensi.uvoptx b/Keil/MoteII/rx-sensi/rx-sensi.uvoptx index fdf7d2159..22daf6628 100644 --- a/Keil/MoteII/rx-sensi/rx-sensi.uvoptx +++ b/Keil/MoteII/rx-sensi/rx-sensi.uvoptx @@ -22,13 +22,13 @@ - rx-sensi-868-lora + rx-sensi-eu868-lora 0x4 ARM-ADS 12000000 - 1 + 0 1 0 1 @@ -45,7 +45,7 @@ 79 66 8 - .\lst\rx-sensi-868-lora\ + .\lst\rx-sensi-eu868-lora\ 1 @@ -77,7 +77,7 @@ 0 1 - 18 + 0 0 1 @@ -94,13 +94,14 @@ 1 1 0 - 0 + 1 1 1 1 0 0 - 11 + 1 + 1 @@ -111,14 +112,9 @@ - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL - - 0 - ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) - 0 UL2CM3 @@ -158,20 +154,23 @@ 0 - - - 0 + 0 + 0 + + + + - rx-sensi-868-fsk + rx-sensi-eu868-fsk 0x4 ARM-ADS 12000000 - 1 + 0 1 0 1 @@ -188,7 +187,7 @@ 79 66 8 - .\lst\rx-sensi-868-lora\ + .\lst\rx-sensi-eu868-lora\ 1 @@ -216,11 +215,11 @@ 0 - 1 + 0 0 0 - 18 + 0 0 1 @@ -237,13 +236,14 @@ 1 1 0 - 0 + 1 1 1 1 0 0 - 11 + 1 + 1 @@ -254,7 +254,7 @@ - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL @@ -296,20 +296,23 @@ 0 - - - 0 + 0 + 0 + + + + - rx-sensi-915-lora + rx-sensi-us915-lora 0x4 ARM-ADS 12000000 - 1 + 0 1 0 1 @@ -326,7 +329,7 @@ 79 66 8 - .\lst\rx-sensi-868-lora\ + .\lst\rx-sensi-eu868-lora\ 1 @@ -354,11 +357,11 @@ 0 - 1 + 0 0 0 - 18 + 0 0 1 @@ -375,13 +378,14 @@ 1 1 0 - 0 + 1 1 1 1 0 0 - 11 + 1 + 1 @@ -392,14 +396,9 @@ - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL - - 0 - ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) - 0 UL2CM3 @@ -439,20 +438,23 @@ 0 - - - 0 + 0 + 0 + + + + - rx-sensi-915-fsk + rx-sensi-us915-fsk 0x4 ARM-ADS 12000000 - 1 + 0 1 0 1 @@ -469,7 +471,7 @@ 79 66 8 - .\lst\rx-sensi-915-fsk\ + .\lst\rx-sensi-us915-fsk\ 1 @@ -497,11 +499,11 @@ 0 - 1 + 0 0 0 - 18 + 0 0 1 @@ -518,13 +520,14 @@ 1 1 0 - 0 + 1 1 1 1 0 0 - 11 + 1 + 1 @@ -535,14 +538,9 @@ - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL - - 0 - ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) - 0 UL2CM3 @@ -582,9 +580,12 @@ 0 - - - 0 + 0 + 0 + + + + diff --git a/Keil/MoteII/rx-sensi/rx-sensi.uvprojx b/Keil/MoteII/rx-sensi/rx-sensi.uvprojx index 9ba9b346c..8c592e45f 100644 --- a/Keil/MoteII/rx-sensi/rx-sensi.uvprojx +++ b/Keil/MoteII/rx-sensi/rx-sensi.uvprojx @@ -7,10 +7,10 @@ - rx-sensi-868-lora + rx-sensi-eu868-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -47,14 +47,14 @@ 0 1 - .\obj\rx-sensi-868-lora\ - rx-sensi + .\obj\rx-sensi-eu868-lora\ + rx-sensi-eu868-lora 1 0 1 1 1 - .\lst\rx-sensi-868-lora\ + .\lst\rx-sensi-eu868-lora\ 1 0 0 @@ -88,7 +88,7 @@ 0 0 - 0 + 1 @@ -333,7 +333,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_EU868 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\MoteII;..\..\..\src\boards\MoteII\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -649,10 +649,10 @@ - rx-sensi-868-fsk + rx-sensi-eu868-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -689,14 +689,14 @@ 0 1 - .\obj\rx-sensi-868-lora\ - rx-sensi + .\obj\rx-sensi-eu868-lora\ + rx-sensi-eu868-fsk 1 0 1 1 1 - .\lst\rx-sensi-868-lora\ + .\lst\rx-sensi-eu868-lora\ 1 0 0 @@ -730,7 +730,7 @@ 0 0 - 0 + 1 @@ -975,7 +975,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_EU868 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\MoteII;..\..\..\src\boards\MoteII\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1291,10 +1291,10 @@ - rx-sensi-915-lora + rx-sensi-us915-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -1331,14 +1331,14 @@ 0 1 - .\obj\rx-sensi-868-lora\ - rx-sensi + .\obj\rx-sensi-eu868-lora\ + rx-sensi-us915-lora 1 0 1 1 1 - .\lst\rx-sensi-868-lora\ + .\lst\rx-sensi-eu868-lora\ 1 0 0 @@ -1372,7 +1372,7 @@ 0 0 - 0 + 1 @@ -1617,7 +1617,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_US915 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\MoteII;..\..\..\src\boards\MoteII\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1933,10 +1933,10 @@ - rx-sensi-915-fsk + rx-sensi-us915-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -1973,14 +1973,14 @@ 0 1 - .\obj\rx-sensi-915-fsk\ - rx-sensi + .\obj\rx-sensi-us915-fsk\ + rx-sensi-us915-fsk 1 0 1 1 1 - .\lst\rx-sensi-915-fsk\ + .\lst\rx-sensi-us915-fsk\ 1 0 0 @@ -2014,7 +2014,7 @@ 0 0 - 0 + 1 @@ -2259,7 +2259,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK + USE_HAL_DRIVER STM32L051xx USE_DEBUGGER REGION_US915 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\MoteII;..\..\..\src\boards\MoteII\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\peripherals\ble;..\..\..\src\peripherals\display;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2576,4 +2576,10 @@ + + + + + + diff --git a/Keil/MoteII/tx-cw/tx-cw.uvoptx b/Keil/MoteII/tx-cw/tx-cw.uvoptx index c744356f7..ded945abf 100644 --- a/Keil/MoteII/tx-cw/tx-cw.uvoptx +++ b/Keil/MoteII/tx-cw/tx-cw.uvoptx @@ -22,7 +22,7 @@ - tx-cw-868 + tx-cw-eu868 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\tx-cw-868\ + .\lst\tx-cw-eu868\ 1 @@ -75,7 +75,7 @@ 1 0 - 1 + 0 18 @@ -94,13 +94,14 @@ 1 1 0 - 0 + 1 1 1 1 0 0 - 11 + 1 + 1 @@ -111,34 +112,9 @@ - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL - - 0 - ARMRTXEVENTFLAGS - -L70 -Z18 -C0 -M0 -T1 - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) - 0 UL2CM3 @@ -146,30 +122,18 @@ - - - 0 - 1 - TimerListHead,0x0A - - - 1 - 1 - SX1272.Settings.State - - 0 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -190,14 +154,17 @@ 0 - - - 0 + 0 + 0 + + + + - tx-cw-915 + tx-cw-us915 0x4 ARM-ADS @@ -220,7 +187,7 @@ 79 66 8 - .\lst\tx-cw-915\ + .\lst\tx-cw-us915\ 1 @@ -250,7 +217,7 @@ 1 0 - 0 + 1 18 @@ -269,13 +236,14 @@ 1 1 0 - 0 + 1 1 1 1 0 0 - 11 + 1 + 1 @@ -286,14 +254,9 @@ - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL - - 0 - ST-LINKIII-KEIL_SWO - -U -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L0xx_64.FLM -FS08000000 -FL010000 -FP0($$Device:STM32L051C8$Flash\STM32L0xx_64.FLM) - 0 UL2CM3 @@ -333,9 +296,12 @@ 0 - - - 0 + 0 + 0 + + + + diff --git a/Keil/MoteII/tx-cw/tx-cw.uvprojx b/Keil/MoteII/tx-cw/tx-cw.uvprojx index 23c86b2bc..abf7b2742 100644 --- a/Keil/MoteII/tx-cw/tx-cw.uvprojx +++ b/Keil/MoteII/tx-cw/tx-cw.uvprojx @@ -7,10 +7,10 @@ - tx-cw-868 + tx-cw-eu868 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -47,14 +47,14 @@ 0 1 - .\obj\tx-cw-868\ - tx-cw + .\obj\tx-cw-eu868\ + tx-cw-eu868 1 0 1 1 1 - .\lst\tx-cw-868\ + .\lst\tx-cw-eu868\ 1 0 0 @@ -88,7 +88,7 @@ 0 0 - 0 + 1 @@ -333,7 +333,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_BAND_868 + USE_HAL_DRIVER STM32L051xx REGION_EU868 ..\..\..\src;..\..\..\src\boards\MoteII;..\..\..\src\boards\MoteII\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -649,10 +649,10 @@ - tx-cw-915 + tx-cw-us915 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L051C8 @@ -689,14 +689,14 @@ 0 1 - .\obj\tx-cw-915\ - tx-cw + .\obj\tx-cw-us915\ + tx-cw-us915 1 0 1 1 1 - .\lst\tx-cw-915\ + .\lst\tx-cw-us915\ 1 0 0 @@ -730,7 +730,7 @@ 0 0 - 0 + 1 @@ -975,7 +975,7 @@ 0 - USE_HAL_DRIVER STM32L051xx USE_BAND_915 + USE_HAL_DRIVER STM32L051xx REGION_US915 ..\..\..\src;..\..\..\src\boards\MoteII;..\..\..\src\boards\MoteII\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L0xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\peripherals\ble;..\..\..\src\peripherals\display;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1292,4 +1292,10 @@ + + + + + + diff --git a/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvopt b/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvopt index 4a29bafa8..d74498477 100644 --- a/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvopt +++ b/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvopt @@ -22,7 +22,7 @@ - LoRaMac-US915 + LoRaMac-us915 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-US915\ + .\lst\LoRaMac-us915\ 1 @@ -140,7 +140,7 @@ 0 ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O206 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 0 @@ -186,16 +186,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-US915-hybrid + LoRaMac-us915-hybrid 0x4 ARM-ADS @@ -218,7 +219,7 @@ 79 66 8 - .\lst\LoRaMac-US915-hybrid\ + .\lst\LoRaMac-us915-hybrid\ 1 @@ -313,7 +314,7 @@ 0 ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O206 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 0 @@ -359,11 +360,1056 @@ 0 - - - 0 0 - 0 + 0 + + + + + + + + + LoRaMac-eu868 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-eu868\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-as923\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-au915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-kr920\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-in865\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + diff --git a/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvproj b/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvproj index e88ddd21c..030638c7e 100644 --- a/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvproj +++ b/Keil/NAMote72/LoRaMac/classA/LoRaMac.uvproj @@ -7,7 +7,7 @@ - LoRaMac-US915 + LoRaMac-us915 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac-US915\ - LoRaMac-US915 + .\obj\LoRaMac-us915\ + LoRaMac-us915 1 0 1 1 1 - .\lst\LoRaMac-US915\ + .\lst\LoRaMac-us915\ 1 0 0 @@ -86,7 +86,7 @@ 0 0 - 0 + 1 @@ -778,7 +778,7 @@ - LoRaMac-US915-hybrid + LoRaMac-us915-hybrid 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -816,14 +816,14 @@ 0 1 - .\obj\LoRaMac-US915-hybrid\ - LoRaMac-US915-hybrid + .\obj\LoRaMac-us915-hybrid\ + LoRaMac-us915-hybrid 1 0 1 1 1 - .\lst\LoRaMac-US915-hybrid\ + .\lst\LoRaMac-us915-hybrid\ 1 0 0 @@ -857,7 +857,7 @@ 0 0 - 0 + 1 @@ -943,10 +943,10 @@ 0 1 1 - 4100 + 4096 1 - BIN\ULP2CM3.DLL + BIN\UL2CM3.DLL "" () @@ -1548,6 +1548,4632 @@
+ + LoRaMac-eu868 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-eu868\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_EU868 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-as923\ + LoRaMac-as923 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-as923\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_AS923 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-au915\ + LoRaMac-au915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-au915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_AU915 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-kr920\ + LoRaMac-kr920 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-kr920\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_KR920 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-in865\ + LoRaMac-in865 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-in865\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_IN865 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_CN779 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + diff --git a/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvopt b/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvopt index 6d2164397..0000ed429 100644 --- a/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvopt +++ b/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvopt @@ -22,7 +22,7 @@ - LoRaMac-US915 + LoRaMac-us915 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-US915\ + .\lst\LoRaMac-us915\ 1 @@ -140,7 +140,7 @@ 0 ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O206 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 0 @@ -186,16 +186,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-US915-hybrid + LoRaMac-us915-hybrid 0x4 ARM-ADS @@ -218,7 +219,7 @@ 79 66 8 - .\lst\LoRaMac-US915-hybrid\ + .\lst\LoRaMac-us915-hybrid\ 1 @@ -313,7 +314,7 @@ 0 ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O206 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 0 @@ -359,11 +360,1056 @@ 0 - - - 0 0 - 0 + 0 + + + + + + + + + LoRaMac-eu868 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-eu868\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-as923\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-au915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-kr920\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-in865\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + diff --git a/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvproj b/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvproj index 49160e14d..cb6147d46 100644 --- a/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvproj +++ b/Keil/NAMote72/LoRaMac/classB/LoRaMac.uvproj @@ -7,7 +7,7 @@ - LoRaMac-US915 + LoRaMac-us915 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac-US915\ - LoRaMac-US915 + .\obj\LoRaMac-us915\ + LoRaMac-us915 1 0 1 1 1 - .\lst\LoRaMac-US915\ + .\lst\LoRaMac-us915\ 1 0 0 @@ -86,7 +86,7 @@ 0 0 - 0 + 1 @@ -778,7 +778,7 @@ - LoRaMac-US915-hybrid + LoRaMac-us915-hybrid 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -816,14 +816,14 @@ 0 1 - .\obj\LoRaMac-US915-hybrid\ - LoRaMac-US915-hybrid + .\obj\LoRaMac-us915-hybrid\ + LoRaMac-us915-hybrid 1 0 1 1 1 - .\lst\LoRaMac-US915-hybrid\ + .\lst\LoRaMac-us915-hybrid\ 1 0 0 @@ -857,7 +857,7 @@ 0 0 - 0 + 1 @@ -943,10 +943,10 @@ 0 1 1 - 4100 + 4096 1 - BIN\ULP2CM3.DLL + BIN\UL2CM3.DLL "" () @@ -1548,6 +1548,4632 @@ + + LoRaMac-eu868 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-eu868\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_EU868 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-as923\ + LoRaMac-as923 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-as923\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_AS923 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-au915\ + LoRaMac-au915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-au915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_AU915 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-kr920\ + LoRaMac-kr920 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-kr920\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_KR920 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-in865\ + LoRaMac-in865 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-in865\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_IN865 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_CN779 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + diff --git a/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvopt b/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvopt index f067eb21d..11e204295 100644 --- a/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvopt +++ b/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvopt @@ -22,7 +22,7 @@ - LoRaMac-US915 + LoRaMac-us915 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-US915\ + .\lst\LoRaMac-us915\ 1 @@ -140,7 +140,7 @@ 0 ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O206 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 0 @@ -186,16 +186,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-US915-hybrid + LoRaMac-us915-hybrid 0x4 ARM-ADS @@ -218,7 +219,7 @@ 79 66 8 - .\lst\LoRaMac-US915-hybrid\ + .\lst\LoRaMac-us915-hybrid\ 1 @@ -313,7 +314,7 @@ 0 ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O206 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 0 @@ -359,11 +360,1056 @@ 0 - - - 0 0 - 0 + 0 + + + + + + + + + LoRaMac-eu868 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-eu868\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-as923\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-au915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-kr920\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-in865\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + + 8000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\DM00048356.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + @@ -801,7 +1847,7 @@ mac\region - 0 + 1 0 0 0 diff --git a/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvproj b/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvproj index 52dbef636..399caf7a0 100644 --- a/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvproj +++ b/Keil/NAMote72/LoRaMac/classC/LoRaMac.uvproj @@ -7,7 +7,7 @@ - LoRaMac-US915 + LoRaMac-us915 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac-US915\ - LoRaMac-US915 + .\obj\LoRaMac-us915\ + LoRaMac-us915 1 0 1 1 1 - .\lst\LoRaMac-US915\ + .\lst\LoRaMac-us915\ 1 0 0 @@ -86,7 +86,7 @@ 0 0 - 0 + 1 @@ -778,7 +778,7 @@ - LoRaMac-US915-hybrid + LoRaMac-us915-hybrid 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -816,14 +816,14 @@ 0 1 - .\obj\LoRaMac-US915-hybrid\ - LoRaMac-US915-hybrid + .\obj\LoRaMac-us915-hybrid\ + LoRaMac-us915-hybrid 1 0 1 1 1 - .\lst\LoRaMac-US915-hybrid\ + .\lst\LoRaMac-us915-hybrid\ 1 0 0 @@ -857,7 +857,7 @@ 0 0 - 0 + 1 @@ -943,10 +943,10 @@ 0 1 1 - 4100 + 4096 1 - BIN\ULP2CM3.DLL + BIN\UL2CM3.DLL "" () @@ -1548,6 +1548,4632 @@ + + LoRaMac-eu868 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-eu868\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_EU868 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-as923\ + LoRaMac-as923 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-as923\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_AS923 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-au915\ + LoRaMac-au915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-au915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_AU915 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-kr920\ + LoRaMac-kr920 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-kr920\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_KR920 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-in865\ + LoRaMac-in865 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-in865\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_IN865 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L152RC + STMicroelectronics + IRAM(0x20000000-0x20007FFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l1xx_mdp.s" ("STM32L1xx Medium+ density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) + 6520 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 1 + 0 + fromelf --bin --output=@L.bin !L + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 1 + 0x8000000 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x8000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L152xC REGION_CN779 + + ..\..\..\..\src;..\..\..\..\src\boards\NAMote72;..\..\..\..\src\boards\NAMote72\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\NAMote72\main.c + + + + + boards\NAMote72 + + + adc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\NAMote72\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\NAMote72\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\NAMote72\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\NAMote72\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\NAMote72\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\NAMote72\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\NAMote72\uart-board.c + + + + + boards\NAMote72\cmsis + + + startup_stm32l152xc.s + 2 + ..\..\..\..\src\boards\NAMote72\cmsis\arm-std\startup_stm32l152xc.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\NAMote72\cmsis\system_stm32l1xx.c + + + + + boards\NAMote72\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + diff --git a/Keil/NAMote72/ping-pong/Ping-Pong.uvopt b/Keil/NAMote72/ping-pong/Ping-Pong.uvopt index 13325366d..2bf142ed6 100644 --- a/Keil/NAMote72/ping-pong/Ping-Pong.uvopt +++ b/Keil/NAMote72/ping-pong/Ping-Pong.uvopt @@ -22,7 +22,7 @@ - Ping-Pong-915-lora + Ping-Pong-us915-lora 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\Ping-Pong-915-lora\ + .\lst\Ping-Pong-us915-lora\ 1 @@ -77,29 +77,7 @@ 0 1 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\DM00048356.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -137,35 +115,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) @@ -174,13 +127,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -201,16 +154,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-915-fsk + Ping-Pong-us915-fsk 0x4 ARM-ADS @@ -233,7 +187,7 @@ 79 66 8 - .\lst\Ping-Pong-915-fsk\ + .\lst\Ping-Pong-us915-fsk\ 1 @@ -265,29 +219,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\DM00048356.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -325,35 +257,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) @@ -362,13 +269,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -389,16 +296,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-868-lora + Ping-Pong-eu868-lora 0x4 ARM-ADS @@ -421,7 +329,7 @@ 79 66 8 - .\lst\Ping-Pong-868-lora\ + .\lst\Ping-Pong-eu868-lora\ 1 @@ -453,29 +361,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\DM00048356.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -513,35 +399,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) @@ -550,13 +411,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -577,16 +438,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-868-fsk + Ping-Pong-eu868-fsk 0x4 ARM-ADS @@ -609,7 +471,7 @@ 79 66 8 - .\lst\Ping-Pong-868-fsk\ + .\lst\Ping-Pong-eu868-fsk\ 1 @@ -641,29 +503,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\DM00048356.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -701,35 +541,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) @@ -738,13 +553,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -765,11 +580,12 @@ 0 - - - 0 0 - 0 + 0 + + + + diff --git a/Keil/NAMote72/ping-pong/Ping-Pong.uvproj b/Keil/NAMote72/ping-pong/Ping-Pong.uvproj index ce431bdb5..4a15156ff 100644 --- a/Keil/NAMote72/ping-pong/Ping-Pong.uvproj +++ b/Keil/NAMote72/ping-pong/Ping-Pong.uvproj @@ -7,7 +7,7 @@ - Ping-Pong-915-lora + Ping-Pong-us915-lora 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -45,14 +45,14 @@ 0 1 - .\obj\Ping-Pong-915-lora\ - Ping-Pong + .\obj\Ping-Pong-us915-lora\ + Ping-Pong-us915-lora 1 0 1 1 1 - .\lst\Ping-Pong-915-lora\ + .\lst\Ping-Pong-us915-lora\ 1 0 0 @@ -86,7 +86,7 @@ 0 0 - 0 + 1 @@ -372,7 +372,7 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_915 USE_MODEM_LORA + USE_HAL_DRIVER STM32L152xC REGION_US915 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\NAMote72;..\..\..\src\boards\NAMote72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -683,10 +683,10 @@ - Ping-Pong-915-fsk + Ping-Pong-us915-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC @@ -721,14 +721,14 @@ 0 1 - .\obj\Ping-Pong-915-fsk\ - Ping-Pong + .\obj\Ping-Pong-us915-fsk\ + Ping-Pong-us915-fsk 1 0 1 1 1 - .\lst\Ping-Pong-915-fsk\ + .\lst\Ping-Pong-us915-fsk\ 1 0 0 @@ -762,7 +762,7 @@ 0 0 - 0 + 1 @@ -1048,7 +1048,7 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_915 USE_MODEM_FSK + USE_HAL_DRIVER STM32L152xC REGION_US915 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\NAMote72;..\..\..\src\boards\NAMote72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1359,10 +1359,10 @@ - Ping-Pong-868-lora + Ping-Pong-eu868-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC @@ -1397,14 +1397,14 @@ 0 1 - .\obj\Ping-Pong-868-lora\ - Ping-Pong + .\obj\Ping-Pong-eu868-lora\ + Ping-Pong-eu868-lora 1 0 1 1 1 - .\lst\Ping-Pong-868-lora\ + .\lst\Ping-Pong-eu868-lora\ 1 0 0 @@ -1438,7 +1438,7 @@ 0 0 - 0 + 1 @@ -1724,7 +1724,7 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_868 USE_MODEM_LORA + USE_HAL_DRIVER STM32L152xC REGION_EU868 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\NAMote72;..\..\..\src\boards\NAMote72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2035,10 +2035,10 @@ - Ping-Pong-868-fsk + Ping-Pong-eu868-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC @@ -2073,14 +2073,14 @@ 0 1 - .\obj\Ping-Pong-868-fsk\ - Ping-Pong + .\obj\Ping-Pong-eu868-fsk\ + Ping-Pong-eu868-fsk 1 0 1 1 1 - .\lst\Ping-Pong-868-fsk\ + .\lst\Ping-Pong-eu868-fsk\ 1 0 0 @@ -2114,7 +2114,7 @@ 0 0 - 0 + 1 @@ -2400,7 +2400,7 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_868 USE_MODEM_FSK + USE_HAL_DRIVER STM32L152xC REGION_EU868 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\NAMote72;..\..\..\src\boards\NAMote72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto diff --git a/Keil/NAMote72/rx-sensi/rx-sensi.uvopt b/Keil/NAMote72/rx-sensi/rx-sensi.uvopt index 78a9f71ee..b6941d8f0 100644 --- a/Keil/NAMote72/rx-sensi/rx-sensi.uvopt +++ b/Keil/NAMote72/rx-sensi/rx-sensi.uvopt @@ -22,7 +22,7 @@ - rx-sensi-915-lora + rx-sensi-us915-lora 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\rx-sensi-915-lora\ + .\lst\rx-sensi-us915-lora\ 1 @@ -77,29 +77,7 @@ 0 1 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\DM00048356.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -137,35 +115,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) @@ -174,13 +127,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -201,22 +154,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-915-fsk + rx-sensi-us915-fsk 0x4 ARM-ADS 8000000 - 1 + 0 1 1 0 @@ -233,7 +187,7 @@ 79 66 8 - .\lst\rx-sensi-915-fsk\ + .\lst\rx-sensi-us915-fsk\ 1 @@ -265,29 +219,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\DM00048356.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -325,35 +257,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) @@ -362,13 +269,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -389,22 +296,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-868-lora + rx-sensi-eu868-lora 0x4 ARM-ADS 8000000 - 1 + 0 1 1 0 @@ -421,7 +329,7 @@ 79 66 8 - .\lst\rx-sensi-868-lora\ + .\lst\rx-sensi-eu868-lora\ 1 @@ -453,29 +361,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\DM00048356.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -513,35 +399,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) @@ -550,13 +411,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -577,22 +438,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-868-fsk + rx-sensi-eu868-fsk 0x4 ARM-ADS 8000000 - 1 + 0 1 1 0 @@ -609,7 +471,7 @@ 79 66 8 - .\lst\rx-sensi-868-fsk\ + .\lst\rx-sensi-eu868-fsk\ 1 @@ -641,29 +503,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\DM00048356.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -701,35 +541,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 - - - 0 - UL2CM3 - -S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32L1xx_128 -FL020000 -FS08000000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) @@ -738,13 +553,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -765,11 +580,12 @@ 0 - - - 0 0 - 0 + 0 + + + + diff --git a/Keil/NAMote72/rx-sensi/rx-sensi.uvproj b/Keil/NAMote72/rx-sensi/rx-sensi.uvproj index 54760db16..e56ef6686 100644 --- a/Keil/NAMote72/rx-sensi/rx-sensi.uvproj +++ b/Keil/NAMote72/rx-sensi/rx-sensi.uvproj @@ -7,7 +7,7 @@ - rx-sensi-915-lora + rx-sensi-us915-lora 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -45,14 +45,14 @@ 0 1 - .\obj\rx-sensi-915-lora\ - rx-sensi + .\obj\rx-sensi-us915-lora\ + rx-sensi-us915-lora 1 0 1 1 1 - .\lst\rx-sensi-915-lora\ + .\lst\rx-sensi-us915-lora\ 1 0 0 @@ -86,7 +86,7 @@ 0 0 - 0 + 1 @@ -372,7 +372,7 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_915 USE_MODEM_LORA + USE_HAL_DRIVER STM32L152xC REGION_US915 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\NAMote72;..\..\..\src\boards\NAMote72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -683,10 +683,10 @@ - rx-sensi-915-fsk + rx-sensi-us915-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC @@ -721,14 +721,14 @@ 0 1 - .\obj\rx-sensi-915-fsk\ - rx-sensi + .\obj\rx-sensi-us915-fsk\ + rx-sensi-us915-fsk 1 0 1 1 1 - .\lst\rx-sensi-915-fsk\ + .\lst\rx-sensi-us915-fsk\ 1 0 0 @@ -762,7 +762,7 @@ 0 0 - 0 + 1 @@ -1048,7 +1048,7 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_915 USE_MODEM_FSK + USE_HAL_DRIVER STM32L152xC REGION_US915 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\NAMote72;..\..\..\src\boards\NAMote72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1359,10 +1359,10 @@ - rx-sensi-868-lora + rx-sensi-eu868-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC @@ -1397,14 +1397,14 @@ 0 1 - .\obj\rx-sensi-868-lora\ - rx-sensi + .\obj\rx-sensi-eu868-lora\ + rx-sensi-eu868-lora 1 0 1 1 1 - .\lst\rx-sensi-868-lora\ + .\lst\rx-sensi-eu868-lora\ 1 0 0 @@ -1438,7 +1438,7 @@ 0 0 - 0 + 1 @@ -1724,7 +1724,7 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_868 USE_MODEM_LORA + USE_HAL_DRIVER STM32L152xC REGION_EU868 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\NAMote72;..\..\..\src\boards\NAMote72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2035,10 +2035,10 @@ - rx-sensi-868-fsk + rx-sensi-eu868-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC @@ -2073,14 +2073,14 @@ 0 1 - .\obj\rx-sensi-868-fsk\ - rx-sensi + .\obj\rx-sensi-eu868-fsk\ + rx-sensi-eu868-fsk 1 0 1 1 1 - .\lst\rx-sensi-868-fsk\ + .\lst\rx-sensi-eu868-fsk\ 1 0 0 @@ -2114,7 +2114,7 @@ 0 0 - 0 + 1 @@ -2400,7 +2400,7 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_868 USE_MODEM_FSK + USE_HAL_DRIVER STM32L152xC REGION_EU868 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\NAMote72;..\..\..\src\boards\NAMote72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto diff --git a/Keil/NAMote72/tx-cw/tx-cw.uvopt b/Keil/NAMote72/tx-cw/tx-cw.uvopt index c63993b0e..f8f5aefd7 100644 --- a/Keil/NAMote72/tx-cw/tx-cw.uvopt +++ b/Keil/NAMote72/tx-cw/tx-cw.uvopt @@ -22,7 +22,7 @@ - tx-cw-915 + tx-cw-us915 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\tx-cw-915\ + .\lst\tx-cw-us915\ 1 @@ -77,29 +77,7 @@ 0 1 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\DM00048356.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -137,35 +115,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) @@ -174,13 +127,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -201,16 +154,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - tx-cw-868 + tx-cw-eu868 0x4 ARM-ADS @@ -233,7 +187,7 @@ 79 66 8 - .\lst\tx-cw-868\ + .\lst\tx-cw-eu868\ 1 @@ -265,29 +219,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\DM00048356.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -325,35 +257,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_256 -FS08000000 -FL040000) @@ -362,13 +269,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -389,11 +296,12 @@ 0 - - - 0 0 - 0 + 0 + + + + diff --git a/Keil/NAMote72/tx-cw/tx-cw.uvproj b/Keil/NAMote72/tx-cw/tx-cw.uvproj index 623c70a54..3a7f18d92 100644 --- a/Keil/NAMote72/tx-cw/tx-cw.uvproj +++ b/Keil/NAMote72/tx-cw/tx-cw.uvproj @@ -7,7 +7,7 @@ - tx-cw-915 + tx-cw-us915 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -45,14 +45,14 @@ 0 1 - .\obj\tx-cw-915\ - tx-cw + .\obj\tx-cw-us915\ + tx-cw-us915 1 0 1 1 1 - .\lst\tx-cw-915\ + .\lst\tx-cw-us915\ 1 0 0 @@ -86,7 +86,7 @@ 0 0 - 0 + 1 @@ -372,7 +372,7 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_868 + USE_HAL_DRIVER STM32L152xC REGION_EU868 ..\..\..\src;..\..\..\src\boards\NAMote72;..\..\..\src\boards\NAMote72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -683,10 +683,10 @@ - tx-cw-868 + tx-cw-eu868 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L152RC @@ -721,14 +721,14 @@ 0 1 - .\obj\tx-cw-868\ - tx-cw + .\obj\tx-cw-eu868\ + tx-cw-eu868 1 0 1 1 1 - .\lst\tx-cw-868\ + .\lst\tx-cw-eu868\ 1 0 0 @@ -762,7 +762,7 @@ 0 0 - 0 + 1 @@ -1048,7 +1048,7 @@ 0 - USE_HAL_DRIVER STM32L152xC USE_BAND_868 + USE_HAL_DRIVER STM32L152xC REGION_EU868 ..\..\..\src;..\..\..\src\boards\NAMote72;..\..\..\src\boards\NAMote72\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto diff --git a/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt b/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt index 2b8141289..b27b9952c 100644 --- a/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt +++ b/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvopt @@ -8,7 +8,7 @@ *.c *.s*; *.src; *.a* - *.obj + *.obj; *.o *.lib *.txt; *.h; *.inc *.plm @@ -22,7 +22,7 @@ - LoRaMac + LoRaMac-eu868 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac\ + .\lst\LoRaMac-eu868\ 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -117,7 +118,7 @@ 0 ST-LINKIII-KEIL_SWO - -U-O206 -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -163,9 +164,1076 @@ 0 - - - 0 + 0 + 0 + + + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915-hybrid\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-as923\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-au915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-kr920\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-in865\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + @@ -698,6 +1766,18 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 ..\..\..\..\src\mac\region\RegionKR920.c RegionKR920.c 0 @@ -705,7 +1785,7 @@ 7 - 41 + 42 1 0 0 @@ -717,7 +1797,7 @@ 7 - 42 + 43 1 0 0 @@ -737,7 +1817,7 @@ 0 8 - 43 + 44 1 0 0 @@ -757,7 +1837,7 @@ 0 9 - 44 + 45 1 0 0 @@ -769,7 +1849,7 @@ 9 - 45 + 46 1 0 0 @@ -781,7 +1861,7 @@ 9 - 46 + 47 1 0 0 @@ -793,7 +1873,7 @@ 9 - 47 + 48 1 0 0 @@ -805,7 +1885,7 @@ 9 - 48 + 49 1 0 0 @@ -817,7 +1897,7 @@ 9 - 49 + 50 1 0 0 @@ -829,7 +1909,7 @@ 9 - 50 + 51 1 0 0 @@ -849,7 +1929,7 @@ 0 10 - 51 + 52 1 0 0 @@ -861,7 +1941,7 @@ 10 - 52 + 53 1 0 0 diff --git a/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj b/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj index 841f22a44..25a6d425d 100644 --- a/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj +++ b/Keil/SK-iM880A/LoRaMac/classA/LoRaMac.uvproj @@ -7,10 +7,10 @@ - LoRaMac + LoRaMac-eu868 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac\ - LoRaMac + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 1 0 1 1 1 - .\lst\LoRaMac\ + .\lst\LoRaMac-eu868\ 1 0 0 @@ -86,7 +86,7 @@ 0 0 - 0 + 1 @@ -643,6 +643,5093 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915\ + LoRaMac-us915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915-hybrid\ + LoRaMac-us915-hybrid + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915-hybrid\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915_HYBRID + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-as923\ + LoRaMac-as923 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-as923\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AS923 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-au915\ + LoRaMac-au915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-au915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AU915 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-kr920\ + LoRaMac-kr920 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-kr920\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_KR920 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-in865\ + LoRaMac-in865 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-in865\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_IN865 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 diff --git a/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt b/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt index 011608f84..44c01b752 100644 --- a/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt +++ b/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvopt @@ -8,7 +8,7 @@ *.c *.s*; *.src; *.a* - *.obj + *.obj; *.o *.lib *.txt; *.h; *.inc *.plm @@ -22,7 +22,7 @@ - LoRaMac + LoRaMac-eu868 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac\ + .\lst\LoRaMac-eu868\ 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -117,7 +118,7 @@ 0 ST-LINKIII-KEIL_SWO - -U-O206 -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -163,9 +164,1076 @@ 0 - - - 0 + 0 + 0 + + + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915-hybrid\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-as923\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-au915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-kr920\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-in865\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + @@ -698,6 +1766,18 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 ..\..\..\..\src\mac\region\RegionKR920.c RegionKR920.c 0 @@ -705,7 +1785,7 @@ 7 - 41 + 42 1 0 0 @@ -717,7 +1797,7 @@ 7 - 42 + 43 1 0 0 @@ -737,7 +1817,7 @@ 0 8 - 43 + 44 1 0 0 @@ -757,7 +1837,7 @@ 0 9 - 44 + 45 1 0 0 @@ -769,7 +1849,7 @@ 9 - 45 + 46 1 0 0 @@ -781,7 +1861,7 @@ 9 - 46 + 47 1 0 0 @@ -793,7 +1873,7 @@ 9 - 47 + 48 1 0 0 @@ -805,7 +1885,7 @@ 9 - 48 + 49 1 0 0 @@ -817,7 +1897,7 @@ 9 - 49 + 50 1 0 0 @@ -829,7 +1909,7 @@ 9 - 50 + 51 1 0 0 @@ -849,7 +1929,7 @@ 0 10 - 51 + 52 1 0 0 @@ -861,7 +1941,7 @@ 10 - 52 + 53 1 0 0 diff --git a/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj b/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj index 74af460f9..f4bc40e29 100644 --- a/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj +++ b/Keil/SK-iM880A/LoRaMac/classB/LoRaMac.uvproj @@ -7,10 +7,10 @@ - LoRaMac + LoRaMac-eu868 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac\ - LoRaMac + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 1 0 1 1 1 - .\lst\LoRaMac\ + .\lst\LoRaMac-eu868\ 1 0 0 @@ -86,7 +86,7 @@ 0 0 - 0 + 1 @@ -643,6 +643,5093 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915\ + LoRaMac-us915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915-hybrid\ + LoRaMac-us915-hybrid + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915-hybrid\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915_HYBRID + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-as923\ + LoRaMac-as923 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-as923\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AS923 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-au915\ + LoRaMac-au915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-au915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AU915 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-kr920\ + LoRaMac-kr920 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-kr920\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_KR920 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-in865\ + LoRaMac-in865 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-in865\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_IN865 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 diff --git a/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvopt b/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvopt index c97cd2420..0f4f0ef96 100644 --- a/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvopt +++ b/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvopt @@ -8,7 +8,7 @@ *.c *.s*; *.src; *.a* - *.obj + *.obj; *.o *.lib *.txt; *.h; *.inc *.plm @@ -22,7 +22,7 @@ - LoRaMac + LoRaMac-eu868 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac\ + .\lst\LoRaMac-eu868\ 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -117,7 +118,7 @@ 0 ST-LINKIII-KEIL_SWO - -U-O206 -O206 -S0 -C0 -A0 -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 0 @@ -163,9 +164,1076 @@ 0 - - - 0 + 0 + 0 + + + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915-hybrid\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-as923\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-au915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-kr920\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + + 16000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-in865\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 0 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ST-LINKIII-KEIL_SWO + -U066AFF494956805087134334 -O2255 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + ULP2CM3 + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 -FP0($$Device:STM32L151CB$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + @@ -698,6 +1766,18 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 + + + 7 + 41 + 1 + 0 + 0 + 0 ..\..\..\..\src\mac\region\RegionKR920.c RegionKR920.c 0 @@ -705,7 +1785,7 @@ 7 - 41 + 42 1 0 0 @@ -717,7 +1797,7 @@ 7 - 42 + 43 1 0 0 @@ -737,7 +1817,7 @@ 0 8 - 43 + 44 1 0 0 @@ -757,7 +1837,7 @@ 0 9 - 44 + 45 1 0 0 @@ -769,7 +1849,7 @@ 9 - 45 + 46 1 0 0 @@ -781,7 +1861,7 @@ 9 - 46 + 47 1 0 0 @@ -793,7 +1873,7 @@ 9 - 47 + 48 1 0 0 @@ -805,7 +1885,7 @@ 9 - 48 + 49 1 0 0 @@ -817,7 +1897,7 @@ 9 - 49 + 50 1 0 0 @@ -829,7 +1909,7 @@ 9 - 50 + 51 1 0 0 @@ -849,7 +1929,7 @@ 0 10 - 51 + 52 1 0 0 @@ -861,7 +1941,7 @@ 10 - 52 + 53 1 0 0 diff --git a/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvproj b/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvproj index 2bf6feba8..0944dc629 100644 --- a/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvproj +++ b/Keil/SK-iM880A/LoRaMac/classC/LoRaMac.uvproj @@ -7,10 +7,10 @@ - LoRaMac + LoRaMac-eu868 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac\ - LoRaMac + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 1 0 1 1 1 - .\lst\LoRaMac\ + .\lst\LoRaMac-eu868\ 1 0 0 @@ -86,7 +86,7 @@ 0 0 - 0 + 1 @@ -643,6 +643,5093 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915\ + LoRaMac-us915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915-hybrid\ + LoRaMac-us915-hybrid + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915-hybrid\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915_HYBRID + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-as923 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-as923\ + LoRaMac-as923 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-as923\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AS923 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-au915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-au915\ + LoRaMac-au915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-au915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AU915 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-kr920 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-kr920\ + LoRaMac-kr920 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-kr920\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_KR920 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + radio + + + sx1272.c + 1 + ..\..\..\..\src\radio\sx1272\sx1272.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-in865 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-in865\ + LoRaMac-in865 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-in865\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_IN865 + + ..\..\..\..\src;..\..\..\..\src\boards\SK-iM880A;..\..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SK-iM880A\main.c + + + + + boards\SK-iM880A + + + adc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\gpio-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\spi-board.c + + + sx1272-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\sx1272-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SK-iM880A\uart-board.c + + + + + boards\SK-iM880A\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SK-iM880A\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SK-iM880A\cmsis\system_stm32l1xx.c + + + + + boards\SK-iM880A\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 diff --git a/Keil/SK-iM880A/ping-pong/Ping-Pong.uvopt b/Keil/SK-iM880A/ping-pong/Ping-Pong.uvopt index ee95c9e4b..cf452b77a 100644 --- a/Keil/SK-iM880A/ping-pong/Ping-Pong.uvopt +++ b/Keil/SK-iM880A/ping-pong/Ping-Pong.uvopt @@ -22,7 +22,7 @@ - Ping-Pong-lora + Ping-Pong-eu868-lora 0x4 ARM-ADS @@ -75,7 +75,7 @@ 1 0 - 0 + 1 255 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -178,14 +179,17 @@ 0 - - - 0 + 0 + 0 + + + + - Ping-Pong-fsk + Ping-Pong-eu868-fsk 0x4 ARM-ADS @@ -238,7 +242,7 @@ 1 0 - 1 + 0 255 @@ -263,6 +267,7 @@ 1 0 0 + 1 11 @@ -341,9 +346,12 @@ 0 - - - 0 + 0 + 0 + + + + diff --git a/Keil/SK-iM880A/ping-pong/Ping-Pong.uvproj b/Keil/SK-iM880A/ping-pong/Ping-Pong.uvproj index f8dd7337a..a500fe6ad 100644 --- a/Keil/SK-iM880A/ping-pong/Ping-Pong.uvproj +++ b/Keil/SK-iM880A/ping-pong/Ping-Pong.uvproj @@ -7,10 +7,10 @@ - Ping-Pong-lora + Ping-Pong-eu868-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -45,8 +45,8 @@ 0 1 - .\obj\Ping-Pong-lora\ - Ping-Pong + .\obj\Ping-Pong-eu868-lora\ + Ping-Pong-eu868-lora 1 0 1 @@ -86,7 +86,7 @@ 0 0 - 0 + 1 @@ -372,7 +372,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\SK-iM880A;..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -638,10 +638,10 @@ - Ping-Pong-fsk + Ping-Pong-eu868-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -676,8 +676,8 @@ 0 1 - .\obj\Ping-Pong-fsk\ - Ping-Pong + .\obj\Ping-Pong-eu868-fsk\ + Ping-Pong-eu868-fsk 1 0 1 @@ -717,7 +717,7 @@ 0 0 - 0 + 1 @@ -1003,7 +1003,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\SK-iM880A;..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto diff --git a/Keil/SK-iM880A/rx-sensi/rx-sensi.uvopt b/Keil/SK-iM880A/rx-sensi/rx-sensi.uvopt index b064acaf3..5de5e342c 100644 --- a/Keil/SK-iM880A/rx-sensi/rx-sensi.uvopt +++ b/Keil/SK-iM880A/rx-sensi/rx-sensi.uvopt @@ -22,13 +22,13 @@ - rx-sensi-lora + rx-sensi-eu868-lora 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -45,7 +45,7 @@ 79 66 8 - .\lst\rx-sensi-lora\ + .\lst\rx-sensi-eu868-lora\ 1 @@ -77,7 +77,7 @@ 0 1 - 255 + 0 0 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -114,35 +115,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S8 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_1024 -FS08000000 -FL0100000) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -151,13 +127,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -178,20 +154,23 @@ 0 - - - 0 + 0 + 0 + + + + - rx-sensi-fsk + rx-sensi-eu868-fsk 0x4 ARM-ADS - 16000000 + 8000000 - 1 + 0 1 1 0 @@ -208,7 +187,7 @@ 79 66 8 - .\lst\rx-sensi-fsk\ + .\lst\rx-sensi-eu868-fsk\ 1 @@ -240,7 +219,7 @@ 0 0 - 255 + 0 0 1 @@ -263,6 +242,7 @@ 1 0 0 + 1 11 @@ -277,35 +257,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S8 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_1024 -FS08000000 -FL0100000) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -314,13 +269,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -341,9 +296,12 @@ 0 - - - 0 + 0 + 0 + + + + diff --git a/Keil/SK-iM880A/rx-sensi/rx-sensi.uvproj b/Keil/SK-iM880A/rx-sensi/rx-sensi.uvproj index deb81f5da..4e1c1605f 100644 --- a/Keil/SK-iM880A/rx-sensi/rx-sensi.uvproj +++ b/Keil/SK-iM880A/rx-sensi/rx-sensi.uvproj @@ -7,10 +7,10 @@ - rx-sensi-lora + rx-sensi-eu868-lora 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -45,14 +45,14 @@ 0 1 - .\obj\rx-sensi-lora\ - rx-sensi + .\obj\rx-sensi-eu868-lora\ + rx-sensi-eu868-lora 1 0 1 1 1 - .\lst\rx-sensi-lora\ + .\lst\rx-sensi-eu868-lora\ 1 0 0 @@ -86,7 +86,7 @@ 0 0 - 0 + 1 @@ -372,7 +372,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\SK-iM880A;..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -638,10 +638,10 @@ - rx-sensi-fsk + rx-sensi-eu868-fsk 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -676,14 +676,14 @@ 0 1 - .\obj\rx-sensi-fsk\ - rx-sensi + .\obj\rx-sensi-eu868-fsk\ + rx-sensi-eu868-fsk 1 0 1 1 1 - .\lst\rx-sensi-fsk\ + .\lst\rx-sensi-eu868-fsk\ 1 0 0 @@ -717,7 +717,7 @@ 0 0 - 0 + 1 @@ -1003,7 +1003,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\SK-iM880A;..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto diff --git a/Keil/SK-iM880A/tx-cw/tx-cw.uvopt b/Keil/SK-iM880A/tx-cw/tx-cw.uvopt index 7aad05c7b..4d4f5715b 100644 --- a/Keil/SK-iM880A/tx-cw/tx-cw.uvopt +++ b/Keil/SK-iM880A/tx-cw/tx-cw.uvopt @@ -22,7 +22,7 @@ - tx-cw + tx-cw-eu868 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\tx-cw\ + .\lst\tx-cw-eu868\ 1 @@ -100,6 +100,7 @@ 1 0 0 + 1 11 @@ -178,9 +179,12 @@ 0 - - - 0 + 0 + 0 + + + + diff --git a/Keil/SK-iM880A/tx-cw/tx-cw.uvproj b/Keil/SK-iM880A/tx-cw/tx-cw.uvproj index 0d35f9fa7..cd825cc0b 100644 --- a/Keil/SK-iM880A/tx-cw/tx-cw.uvproj +++ b/Keil/SK-iM880A/tx-cw/tx-cw.uvproj @@ -7,10 +7,10 @@ - tx-cw + tx-cw-eu868 0x4 ARM-ADS - 5060300::V5.06 update 3 (build 300)::ARMCC + 5060422::V5.06 update 4 (build 422)::ARMCC STM32L151CB @@ -45,14 +45,14 @@ 0 1 - .\obj\tx-cw\ - tx-cw + .\obj\tx-cw-eu868\ + tx-cw-eu868 1 0 1 1 1 - .\lst\tx-cw\ + .\lst\tx-cw-eu868\ 1 0 0 @@ -86,7 +86,7 @@ 0 0 - 0 + 1 @@ -372,7 +372,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER + USE_HAL_DRIVER STM32L151xB REGION_EU868 USE_DEBUGGER ..\..\..\src;..\..\..\src\boards\SK-iM880A;..\..\..\src\boards\SK-iM880A\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto diff --git a/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvopt b/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvopt index 4eb46fb89..990d20d26 100644 --- a/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvopt +++ b/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvopt @@ -8,7 +8,7 @@ *.c *.s*; *.src; *.a* - *.obj + *.obj; *.o *.lib *.txt; *.h; *.inc *.plm @@ -22,7 +22,7 @@ - LoRaMac-433 + LoRaMac-eu433 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-433\ + .\lst\LoRaMac-eu433\ 1 @@ -201,16 +201,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-433-Bootloader + LoRaMac-eu433-Bootloader 0x4 ARM-ADS @@ -233,7 +234,7 @@ 79 66 8 - .\lst\LoRaMac-433-Bootloader\ + .\lst\LoRaMac-eu433-Bootloader\ 1 @@ -389,16 +390,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-780 + LoRaMac-cn470-Bootloader 0x4 ARM-ADS @@ -421,7 +423,1330 @@ 79 66 8 - .\lst\LoRaMac-780\ + .\lst\LoRaMac-cn470-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-eu868 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-eu868\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-eu868-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-eu868-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-us915-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915-hybrid\ 1 @@ -577,16 +1902,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-780-Bootloader + LoRaMac-us915-hybrid-Bootloader 0x4 ARM-ADS @@ -609,7 +1935,7 @@ 79 66 8 - .\lst\LoRaMac-780-Bootloader\ + .\lst\LoRaMac-us915-hybrid-Bootloader\ 1 @@ -765,16 +2091,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-868 + LoRaMac-as923-Bootloader 0x4 ARM-ADS @@ -797,7 +2124,7 @@ 79 66 8 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-as923-Bootloader\ 1 @@ -953,16 +2280,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-868-Bootloader + LoRaMac-au915-Bootloader 0x4 ARM-ADS @@ -985,7 +2313,7 @@ 79 66 8 - .\lst\LoRaMac-868-Bootloader\ + .\lst\LoRaMac-au915-Bootloader\ 1 @@ -1141,16 +2469,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-915 + LoRaMac-kr920-Bootloader 0x4 ARM-ADS @@ -1173,7 +2502,7 @@ 79 66 8 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-kr920-Bootloader\ 1 @@ -1329,16 +2658,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-915-Bootloader + LoRaMac-in865-Bootloader 0x4 ARM-ADS @@ -1361,7 +2691,7 @@ 79 66 8 - .\lst\LoRaMac-915-Bootloader\ + .\lst\LoRaMac-in865-Bootloader\ 1 @@ -1517,11 +2847,12 @@ 0 - - - 0 0 - 0 + 0 + + + + @@ -1959,7 +3290,7 @@ mac\region - 0 + 1 0 0 0 @@ -2066,6 +3397,18 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 ..\..\..\..\src\mac\region\RegionKR920.c RegionKR920.c 0 @@ -2073,7 +3416,7 @@ 7 - 42 + 43 1 0 0 @@ -2085,7 +3428,7 @@ 7 - 43 + 44 1 0 0 @@ -2105,7 +3448,7 @@ 0 8 - 44 + 45 1 0 0 @@ -2117,7 +3460,7 @@ 8 - 45 + 46 1 0 0 @@ -2129,7 +3472,7 @@ 8 - 46 + 47 1 0 0 @@ -2141,7 +3484,7 @@ 8 - 47 + 48 1 0 0 @@ -2153,7 +3496,7 @@ 8 - 48 + 49 1 0 0 @@ -2165,7 +3508,7 @@ 8 - 49 + 50 1 0 0 @@ -2185,7 +3528,7 @@ 0 9 - 50 + 51 1 0 0 @@ -2205,7 +3548,7 @@ 0 10 - 51 + 52 1 0 0 @@ -2217,7 +3560,7 @@ 10 - 52 + 53 1 0 0 @@ -2229,7 +3572,7 @@ 10 - 53 + 54 1 0 0 @@ -2241,7 +3584,7 @@ 10 - 54 + 55 1 0 0 @@ -2253,7 +3596,7 @@ 10 - 55 + 56 1 0 0 @@ -2265,7 +3608,7 @@ 10 - 56 + 57 1 0 0 @@ -2277,7 +3620,7 @@ 10 - 57 + 58 1 0 0 @@ -2289,7 +3632,7 @@ 10 - 58 + 59 1 0 0 @@ -2309,7 +3652,7 @@ 0 11 - 59 + 60 1 0 0 @@ -2321,7 +3664,7 @@ 11 - 60 + 61 1 0 0 diff --git a/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvproj b/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvproj index 3f0ab784f..7f556d6cf 100644 --- a/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvproj +++ b/Keil/SensorNode/LoRaMac/classA/LoRaMac.uvproj @@ -7,7 +7,7 @@ - LoRaMac-433 + LoRaMac-eu433 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac-433\ - LoRaMac + .\obj\LoRaMac-eu433\ + LoRaMac-eu433 1 0 1 1 1 - .\lst\LoRaMac-433\ + .\lst\LoRaMac-eu433\ 1 0 0 @@ -648,6 +648,5408 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-eu433-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-eu433-Bootloader\ + LoRaMac-eu433 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-eu433-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn470-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn470-Bootloader\ + LoRaMac-cn470 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn470-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN470 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779-Bootloader\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-eu868 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-eu868\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-eu868-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-eu868-Bootloader\ + LoRaMac-eu868 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-eu868-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915\ + LoRaMac-us915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classA\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -773,7 +6175,7 @@ - LoRaMac-433-Bootloader + LoRaMac-us915-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -811,14 +6213,14 @@ 0 1 - .\obj\LoRaMac-433-Bootloader\ - LoRaMac + .\obj\LoRaMac-us915-Bootloader\ + LoRaMac-us915 1 0 1 1 1 - .\lst\LoRaMac-433-Bootloader\ + .\lst\LoRaMac-us915-Bootloader\ 1 0 0 @@ -852,7 +6254,7 @@ 0 0 - 0 + 1 @@ -1138,7 +6540,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1414,6 +6816,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -1539,7 +6946,7 @@ - LoRaMac-780 + LoRaMac-us915-hybrid 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -1577,14 +6984,14 @@ 0 1 - .\obj\LoRaMac-780\ - LoRaMac + .\obj\LoRaMac-us915-hybrid\ + LoRaMac-us915-hybrid 1 0 1 1 1 - .\lst\LoRaMac-780\ + .\lst\LoRaMac-us915-hybrid\ 1 0 0 @@ -1704,10 +7111,10 @@ 0 1 1 - 4103 + 4096 1 - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL @@ -1904,7 +7311,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915_HYBRID ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2180,6 +7587,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -2305,7 +7717,7 @@ - LoRaMac-780-Bootloader + LoRaMac-us915-hybrid-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -2343,14 +7755,14 @@ 0 1 - .\obj\LoRaMac-780-Bootloader\ - LoRaMac + .\obj\LoRaMac-us915-hybrid-Bootloader\ + LoRaMac-us915-hybrid 1 0 1 1 1 - .\lst\LoRaMac-780-Bootloader\ + .\lst\LoRaMac-us915-hybrid-Bootloader\ 1 0 0 @@ -2384,7 +7796,7 @@ 0 0 - 0 + 1 @@ -2670,7 +8082,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915_HYBRID USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2946,6 +8358,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -3071,7 +8488,7 @@ - LoRaMac-868 + LoRaMac-as923-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -3109,14 +8526,14 @@ 0 1 - .\obj\LoRaMac-868\ - LoRaMac + .\obj\LoRaMac-as923-Bootloader\ + LoRaMac-as923 1 0 1 1 1 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-as923-Bootloader\ 1 0 0 @@ -3150,7 +8567,7 @@ 0 0 - 0 + 1 @@ -3236,11 +8653,11 @@ 0 1 1 - 4100 + 4096 1 - BIN\ULP2CM3.DLL - + BIN\UL2CM3.DLL + "" () @@ -3375,8 +8792,8 @@ 1 - 0x8000000 - 0x20000 + 0x8003000 + 0x1d000 1 @@ -3436,7 +8853,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AS923 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -3712,6 +9129,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -3837,7 +9259,7 @@ - LoRaMac-868-Bootloader + LoRaMac-au915-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -3875,14 +9297,14 @@ 0 1 - .\obj\LoRaMac-868-Bootloader\ - LoRaMac + .\obj\LoRaMac-au915-Bootloader\ + LoRaMac-au915 1 0 1 1 1 - .\lst\LoRaMac-868-Bootloader\ + .\lst\LoRaMac-au915-Bootloader\ 1 0 0 @@ -3916,7 +9338,7 @@ 0 0 - 0 + 1 @@ -4202,7 +9624,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AU915 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -4478,6 +9900,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -4603,7 +10030,7 @@ - LoRaMac-915 + LoRaMac-kr920-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -4641,14 +10068,14 @@ 0 1 - .\obj\LoRaMac-915\ - LoRaMac + .\obj\LoRaMac-kr920-Bootloader\ + LoRaMac-kr920 1 0 1 1 1 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-kr920-Bootloader\ 1 0 0 @@ -4682,7 +10109,7 @@ 0 0 - 0 + 1 @@ -4907,8 +10334,8 @@ 1 - 0x8000000 - 0x20000 + 0x8003000 + 0x1d000 1 @@ -4968,7 +10395,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_KR920 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -5244,6 +10671,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -5369,7 +10801,7 @@ - LoRaMac-915-Bootloader + LoRaMac-in865-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -5407,14 +10839,14 @@ 0 1 - .\obj\LoRaMac-915-Bootloader\ - LoRaMac + .\obj\LoRaMac-in865-Bootloader\ + LoRaMac-in865 1 0 1 1 1 - .\lst\LoRaMac-915-Bootloader\ + .\lst\LoRaMac-in865-Bootloader\ 1 0 0 @@ -5448,7 +10880,7 @@ 0 0 - 0 + 1 @@ -5734,7 +11166,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_IN865 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -6010,6 +11442,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 diff --git a/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvopt b/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvopt index e53d8e64a..0c9ef348a 100644 --- a/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvopt +++ b/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvopt @@ -8,7 +8,7 @@ *.c *.s*; *.src; *.a* - *.obj + *.obj; *.o *.lib *.txt; *.h; *.inc *.plm @@ -22,7 +22,7 @@ - LoRaMac-433 + LoRaMac-eu433 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-433\ + .\lst\LoRaMac-eu433\ 1 @@ -201,16 +201,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-433-Bootloader + LoRaMac-eu433-Bootloader 0x4 ARM-ADS @@ -233,7 +234,7 @@ 79 66 8 - .\lst\LoRaMac-433-Bootloader\ + .\lst\LoRaMac-eu433-Bootloader\ 1 @@ -389,16 +390,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-780 + LoRaMac-cn470-Bootloader 0x4 ARM-ADS @@ -421,7 +423,1330 @@ 79 66 8 - .\lst\LoRaMac-780\ + .\lst\LoRaMac-cn470-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-eu868 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-eu868\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-eu868-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-eu868-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-us915-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915-hybrid\ 1 @@ -577,16 +1902,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-780-Bootloader + LoRaMac-us915-hybrid-Bootloader 0x4 ARM-ADS @@ -609,7 +1935,7 @@ 79 66 8 - .\lst\LoRaMac-780-Bootloader\ + .\lst\LoRaMac-us915-hybrid-Bootloader\ 1 @@ -765,16 +2091,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-868 + LoRaMac-as923-Bootloader 0x4 ARM-ADS @@ -797,7 +2124,7 @@ 79 66 8 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-as923-Bootloader\ 1 @@ -953,16 +2280,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-868-Bootloader + LoRaMac-au915-Bootloader 0x4 ARM-ADS @@ -985,7 +2313,7 @@ 79 66 8 - .\lst\LoRaMac-868-Bootloader\ + .\lst\LoRaMac-au915-Bootloader\ 1 @@ -1141,16 +2469,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-915 + LoRaMac-kr920-Bootloader 0x4 ARM-ADS @@ -1173,7 +2502,7 @@ 79 66 8 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-kr920-Bootloader\ 1 @@ -1329,16 +2658,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-915-Bootloader + LoRaMac-in865-Bootloader 0x4 ARM-ADS @@ -1361,7 +2691,7 @@ 79 66 8 - .\lst\LoRaMac-915-Bootloader\ + .\lst\LoRaMac-in865-Bootloader\ 1 @@ -1517,11 +2847,12 @@ 0 - - - 0 0 - 0 + 0 + + + + @@ -1959,7 +3290,7 @@ mac\region - 0 + 1 0 0 0 @@ -2066,6 +3397,18 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 ..\..\..\..\src\mac\region\RegionKR920.c RegionKR920.c 0 @@ -2073,7 +3416,7 @@ 7 - 42 + 43 1 0 0 @@ -2085,7 +3428,7 @@ 7 - 43 + 44 1 0 0 @@ -2105,7 +3448,7 @@ 0 8 - 44 + 45 1 0 0 @@ -2117,7 +3460,7 @@ 8 - 45 + 46 1 0 0 @@ -2129,7 +3472,7 @@ 8 - 46 + 47 1 0 0 @@ -2141,7 +3484,7 @@ 8 - 47 + 48 1 0 0 @@ -2153,7 +3496,7 @@ 8 - 48 + 49 1 0 0 @@ -2165,7 +3508,7 @@ 8 - 49 + 50 1 0 0 @@ -2185,7 +3528,7 @@ 0 9 - 50 + 51 1 0 0 @@ -2205,7 +3548,7 @@ 0 10 - 51 + 52 1 0 0 @@ -2217,7 +3560,7 @@ 10 - 52 + 53 1 0 0 @@ -2229,7 +3572,7 @@ 10 - 53 + 54 1 0 0 @@ -2241,7 +3584,7 @@ 10 - 54 + 55 1 0 0 @@ -2253,7 +3596,7 @@ 10 - 55 + 56 1 0 0 @@ -2265,7 +3608,7 @@ 10 - 56 + 57 1 0 0 @@ -2277,7 +3620,7 @@ 10 - 57 + 58 1 0 0 @@ -2289,7 +3632,7 @@ 10 - 58 + 59 1 0 0 @@ -2309,7 +3652,7 @@ 0 11 - 59 + 60 1 0 0 @@ -2321,7 +3664,7 @@ 11 - 60 + 61 1 0 0 diff --git a/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvproj b/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvproj index e033027c6..06f99e7dc 100644 --- a/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvproj +++ b/Keil/SensorNode/LoRaMac/classB/LoRaMac.uvproj @@ -7,7 +7,7 @@ - LoRaMac-433 + LoRaMac-eu433 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac-433\ - LoRaMac + .\obj\LoRaMac-eu433\ + LoRaMac-eu433 1 0 1 1 1 - .\lst\LoRaMac-433\ + .\lst\LoRaMac-eu433\ 1 0 0 @@ -648,6 +648,5408 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-eu433-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-eu433-Bootloader\ + LoRaMac-eu433 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-eu433-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn470-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn470-Bootloader\ + LoRaMac-cn470 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn470-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN470 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779-Bootloader\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-eu868 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-eu868\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-eu868-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-eu868-Bootloader\ + LoRaMac-eu868 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-eu868-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915\ + LoRaMac-us915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classB\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -773,7 +6175,7 @@ - LoRaMac-433-Bootloader + LoRaMac-us915-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -811,14 +6213,14 @@ 0 1 - .\obj\LoRaMac-433-Bootloader\ - LoRaMac + .\obj\LoRaMac-us915-Bootloader\ + LoRaMac-us915 1 0 1 1 1 - .\lst\LoRaMac-433-Bootloader\ + .\lst\LoRaMac-us915-Bootloader\ 1 0 0 @@ -852,7 +6254,7 @@ 0 0 - 0 + 1 @@ -1138,7 +6540,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1414,6 +6816,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -1539,7 +6946,7 @@ - LoRaMac-780 + LoRaMac-us915-hybrid 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -1577,14 +6984,14 @@ 0 1 - .\obj\LoRaMac-780\ - LoRaMac + .\obj\LoRaMac-us915-hybrid\ + LoRaMac-us915-hybrid 1 0 1 1 1 - .\lst\LoRaMac-780\ + .\lst\LoRaMac-us915-hybrid\ 1 0 0 @@ -1704,10 +7111,10 @@ 0 1 1 - 4103 + 4096 1 - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL @@ -1904,7 +7311,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915_HYBRID ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2180,6 +7587,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -2305,7 +7717,7 @@ - LoRaMac-780-Bootloader + LoRaMac-us915-hybrid-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -2343,14 +7755,14 @@ 0 1 - .\obj\LoRaMac-780-Bootloader\ - LoRaMac + .\obj\LoRaMac-us915-hybrid-Bootloader\ + LoRaMac-us915-hybrid 1 0 1 1 1 - .\lst\LoRaMac-780-Bootloader\ + .\lst\LoRaMac-us915-hybrid-Bootloader\ 1 0 0 @@ -2384,7 +7796,7 @@ 0 0 - 0 + 1 @@ -2670,7 +8082,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915_HYBRID USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2946,6 +8358,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -3071,7 +8488,7 @@ - LoRaMac-868 + LoRaMac-as923-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -3109,14 +8526,14 @@ 0 1 - .\obj\LoRaMac-868\ - LoRaMac + .\obj\LoRaMac-as923-Bootloader\ + LoRaMac-as923 1 0 1 1 1 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-as923-Bootloader\ 1 0 0 @@ -3150,7 +8567,7 @@ 0 0 - 0 + 1 @@ -3236,11 +8653,11 @@ 0 1 1 - 4100 + 4096 1 - BIN\ULP2CM3.DLL - + BIN\UL2CM3.DLL + "" () @@ -3375,8 +8792,8 @@ 1 - 0x8000000 - 0x20000 + 0x8003000 + 0x1d000 1 @@ -3436,7 +8853,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AS923 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -3712,6 +9129,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -3837,7 +9259,7 @@ - LoRaMac-868-Bootloader + LoRaMac-au915-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -3875,14 +9297,14 @@ 0 1 - .\obj\LoRaMac-868-Bootloader\ - LoRaMac + .\obj\LoRaMac-au915-Bootloader\ + LoRaMac-au915 1 0 1 1 1 - .\lst\LoRaMac-868-Bootloader\ + .\lst\LoRaMac-au915-Bootloader\ 1 0 0 @@ -3916,7 +9338,7 @@ 0 0 - 0 + 1 @@ -4202,7 +9624,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AU915 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -4478,6 +9900,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -4603,7 +10030,7 @@ - LoRaMac-915 + LoRaMac-kr920-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -4641,14 +10068,14 @@ 0 1 - .\obj\LoRaMac-915\ - LoRaMac + .\obj\LoRaMac-kr920-Bootloader\ + LoRaMac-kr920 1 0 1 1 1 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-kr920-Bootloader\ 1 0 0 @@ -4682,7 +10109,7 @@ 0 0 - 0 + 1 @@ -4907,8 +10334,8 @@ 1 - 0x8000000 - 0x20000 + 0x8003000 + 0x1d000 1 @@ -4968,7 +10395,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_KR920 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -5244,6 +10671,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -5369,7 +10801,7 @@ - LoRaMac-915-Bootloader + LoRaMac-in865-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -5407,14 +10839,14 @@ 0 1 - .\obj\LoRaMac-915-Bootloader\ - LoRaMac + .\obj\LoRaMac-in865-Bootloader\ + LoRaMac-in865 1 0 1 1 1 - .\lst\LoRaMac-915-Bootloader\ + .\lst\LoRaMac-in865-Bootloader\ 1 0 0 @@ -5448,7 +10880,7 @@ 0 0 - 0 + 1 @@ -5734,7 +11166,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_IN865 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -6010,6 +11442,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 diff --git a/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvopt b/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvopt index 605decf24..8a458bb4e 100644 --- a/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvopt +++ b/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvopt @@ -8,7 +8,7 @@ *.c *.s*; *.src; *.a* - *.obj + *.obj; *.o *.lib *.txt; *.h; *.inc *.plm @@ -22,7 +22,7 @@ - LoRaMac-433 + LoRaMac-eu433 0x4 ARM-ADS @@ -45,7 +45,7 @@ 79 66 8 - .\lst\LoRaMac-433\ + .\lst\LoRaMac-eu433\ 1 @@ -201,16 +201,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-433-Bootloader + LoRaMac-eu433-Bootloader 0x4 ARM-ADS @@ -233,7 +234,7 @@ 79 66 8 - .\lst\LoRaMac-433-Bootloader\ + .\lst\LoRaMac-eu433-Bootloader\ 1 @@ -389,16 +390,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-780 + LoRaMac-cn470-Bootloader 0x4 ARM-ADS @@ -421,7 +423,1330 @@ 79 66 8 - .\lst\LoRaMac-780\ + .\lst\LoRaMac-cn470-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U066DFF505150785187015430 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-cn779-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-cn779-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-eu868 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-eu868\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-eu868-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-eu868-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-us915-Bootloader + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915-Bootloader\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 0 + + 255 + + + 0 + Data Sheet + DATASHTS\ST\STM32L1xx\CD00277537.pdf + + + 1 + Reference Manual + DATASHTS\ST\STM32L1xx\CD00240193.pdf + + + 2 + Technical Reference Manual + datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF + + + 3 + Generic User Guide + datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 11 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + ULP2CM3 + -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + + + 0 + ST-LINKIII-KEIL_SWO + -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 + + + 0 + UL2CM3 + -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + LoRaMac-us915-hybrid + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\LoRaMac-us915-hybrid\ 1 @@ -577,16 +1902,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-780-Bootloader + LoRaMac-us915-hybrid-Bootloader 0x4 ARM-ADS @@ -609,7 +1935,7 @@ 79 66 8 - .\lst\LoRaMac-780-Bootloader\ + .\lst\LoRaMac-us915-hybrid-Bootloader\ 1 @@ -765,16 +2091,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-868 + LoRaMac-as923-Bootloader 0x4 ARM-ADS @@ -797,7 +2124,7 @@ 79 66 8 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-as923-Bootloader\ 1 @@ -953,16 +2280,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-868-Bootloader + LoRaMac-au915-Bootloader 0x4 ARM-ADS @@ -985,7 +2313,7 @@ 79 66 8 - .\lst\LoRaMac-868-Bootloader\ + .\lst\LoRaMac-au915-Bootloader\ 1 @@ -1141,16 +2469,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-915 + LoRaMac-kr920-Bootloader 0x4 ARM-ADS @@ -1173,7 +2502,7 @@ 79 66 8 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-kr920-Bootloader\ 1 @@ -1329,16 +2658,17 @@ 0 - - - 0 0 - 0 + 0 + + + + - LoRaMac-915-Bootloader + LoRaMac-in865-Bootloader 0x4 ARM-ADS @@ -1361,7 +2691,7 @@ 79 66 8 - .\lst\LoRaMac-915-Bootloader\ + .\lst\LoRaMac-in865-Bootloader\ 1 @@ -1517,11 +2847,12 @@ 0 - - - 0 0 - 0 + 0 + + + + @@ -1959,7 +3290,7 @@ mac\region - 0 + 1 0 0 0 @@ -2066,6 +3397,18 @@ 0 0 0 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionIN865.c + 0 + 0 + + + 7 + 42 + 1 + 0 + 0 + 0 ..\..\..\..\src\mac\region\RegionKR920.c RegionKR920.c 0 @@ -2073,7 +3416,7 @@ 7 - 42 + 43 1 0 0 @@ -2085,7 +3428,7 @@ 7 - 43 + 44 1 0 0 @@ -2105,7 +3448,7 @@ 0 8 - 44 + 45 1 0 0 @@ -2117,7 +3460,7 @@ 8 - 45 + 46 1 0 0 @@ -2129,7 +3472,7 @@ 8 - 46 + 47 1 0 0 @@ -2141,7 +3484,7 @@ 8 - 47 + 48 1 0 0 @@ -2153,7 +3496,7 @@ 8 - 48 + 49 1 0 0 @@ -2165,7 +3508,7 @@ 8 - 49 + 50 1 0 0 @@ -2185,7 +3528,7 @@ 0 9 - 50 + 51 1 0 0 @@ -2205,7 +3548,7 @@ 0 10 - 51 + 52 1 0 0 @@ -2217,7 +3560,7 @@ 10 - 52 + 53 1 0 0 @@ -2229,7 +3572,7 @@ 10 - 53 + 54 1 0 0 @@ -2241,7 +3584,7 @@ 10 - 54 + 55 1 0 0 @@ -2253,7 +3596,7 @@ 10 - 55 + 56 1 0 0 @@ -2265,7 +3608,7 @@ 10 - 56 + 57 1 0 0 @@ -2277,7 +3620,7 @@ 10 - 57 + 58 1 0 0 @@ -2289,7 +3632,7 @@ 10 - 58 + 59 1 0 0 @@ -2309,7 +3652,7 @@ 0 11 - 59 + 60 1 0 0 @@ -2321,7 +3664,7 @@ 11 - 60 + 61 1 0 0 diff --git a/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvproj b/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvproj index 1507cb714..195c23816 100644 --- a/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvproj +++ b/Keil/SensorNode/LoRaMac/classC/LoRaMac.uvproj @@ -7,7 +7,7 @@ - LoRaMac-433 + LoRaMac-eu433 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -45,14 +45,14 @@ 0 1 - .\obj\LoRaMac-433\ - LoRaMac + .\obj\LoRaMac-eu433\ + LoRaMac-eu433 1 0 1 1 1 - .\lst\LoRaMac-433\ + .\lst\LoRaMac-eu433\ 1 0 0 @@ -648,6 +648,5408 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-eu433-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-eu433-Bootloader\ + LoRaMac-eu433 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-eu433-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn470-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn470-Bootloader\ + LoRaMac-cn470 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn470-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN470 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4103 + + 1 + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-cn779-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-cn779-Bootloader\ + LoRaMac-cn779 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-cn779-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-eu868 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-eu868\ + LoRaMac-eu868 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-eu868\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4100 + + 1 + BIN\ULP2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-eu868-Bootloader + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-eu868-Bootloader\ + LoRaMac-eu868 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-eu868-Bootloader\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8003000 + 0x1d000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + + + RegionKR920.c + 1 + ..\..\..\..\src\mac\region\RegionKR920.c + + + RegionUS915.c + 1 + ..\..\..\..\src\mac\region\RegionUS915.c + + + RegionUS915-Hybrid.c + 1 + ..\..\..\..\src\mac\region\RegionUS915-Hybrid.c + + + + + peripherals + + + gpio-ioe.c + 1 + ..\..\..\..\src\peripherals\gpio-ioe.c + + + mag3110.c + 1 + ..\..\..\..\src\peripherals\mag3110.c + + + mma8451.c + 1 + ..\..\..\..\src\peripherals\mma8451.c + + + mpl3115.c + 1 + ..\..\..\..\src\peripherals\mpl3115.c + + + sx1509.c + 1 + ..\..\..\..\src\peripherals\sx1509.c + + + sx9500.c + 1 + ..\..\..\..\src\peripherals\sx9500.c + + + + + radio + + + sx1276.c + 1 + ..\..\..\..\src\radio\sx1276\sx1276.c + + + + + system + + + adc.c + 1 + ..\..\..\..\src\system\adc.c + + + delay.c + 1 + ..\..\..\..\src\system\delay.c + + + fifo.c + 1 + ..\..\..\..\src\system\fifo.c + + + gpio.c + 1 + ..\..\..\..\src\system\gpio.c + + + gps.c + 1 + ..\..\..\..\src\system\gps.c + + + i2c.c + 1 + ..\..\..\..\src\system\i2c.c + + + timer.c + 1 + ..\..\..\..\src\system\timer.c + + + uart.c + 1 + ..\..\..\..\src\system\uart.c + + + + + system\crypto + + + aes.c + 1 + ..\..\..\..\src\system\crypto\aes.c + + + cmac.c + 1 + ..\..\..\..\src\system\crypto\cmac.c + + + + + + + LoRaMac-us915 + 0x4 + ARM-ADS + 5060422::V5.06 update 4 (build 422)::ARMCC + + + STM32L151CB + STMicroelectronics + IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) + 5244 + stm32l1xx.h + + + + + + + + + + SFD\ST\STM32L1xx\STM32L15x.sfr + 0 + 0 + + + + ST\STM32L1xx\ + ST\STM32L1xx\ + + 0 + 0 + 0 + 0 + 1 + + .\obj\LoRaMac-us915\ + LoRaMac-us915 + 1 + 0 + 1 + 1 + 1 + .\lst\LoRaMac-us915\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 1 + + + SARMCM3.DLL + -MPU -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + + 0 + 11 + + + + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 1 + 0x8000000 + 0x20000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x20000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x4000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 3 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 + + ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x08000000 + 0x20000000 + + + + + + + + + + + + + apps + + + main.c + 1 + ..\..\..\..\src\apps\LoRaMac\classC\SensorNode\main.c + + + + + boards\SensorNode + + + adc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\adc-board.c + + + board.c + 1 + ..\..\..\..\src\boards\SensorNode\board.c + + + gpio-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gpio-board.c + + + gps-board.c + 1 + ..\..\..\..\src\boards\SensorNode\gps-board.c + + + i2c-board.c + 1 + ..\..\..\..\src\boards\SensorNode\i2c-board.c + + + rtc-board.c + 1 + ..\..\..\..\src\boards\SensorNode\rtc-board.c + + + spi-board.c + 1 + ..\..\..\..\src\boards\SensorNode\spi-board.c + + + sx1276-board.c + 1 + ..\..\..\..\src\boards\SensorNode\sx1276-board.c + + + uart-board.c + 1 + ..\..\..\..\src\boards\SensorNode\uart-board.c + + + + + boards\SensorNode\cmsis + + + startup_stm32l151xb.s + 2 + ..\..\..\..\src\boards\SensorNode\cmsis\arm-std\startup_stm32l151xb.s + + + system_stm32l1xx.c + 1 + ..\..\..\..\src\boards\SensorNode\cmsis\system_stm32l1xx.c + + + + + boards\SensorNode\STM32L1xx_HAL_Driver + + + stm32l1xx_hal.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal.c + + + stm32l1xx_hal_adc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc.c + + + stm32l1xx_hal_adc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_adc_ex.c + + + stm32l1xx_hal_cortex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_cortex.c + + + stm32l1xx_hal_dma.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_dma.c + + + stm32l1xx_hal_gpio.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_gpio.c + + + stm32l1xx_hal_i2c.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_i2c.c + + + stm32l1xx_hal_pwr.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr.c + + + stm32l1xx_hal_pwr_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_pwr_ex.c + + + stm32l1xx_hal_rcc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc.c + + + stm32l1xx_hal_rcc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rcc_ex.c + + + stm32l1xx_hal_rtc.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc.c + + + stm32l1xx_hal_rtc_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_rtc_ex.c + + + stm32l1xx_hal_spi.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi.c + + + stm32l1xx_hal_spi_ex.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_spi_ex.c + + + stm32l1xx_hal_uart.c + 1 + ..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\Src\stm32l1xx_hal_uart.c + + + + + boards\mcu\stm32 + + + sysIrqHandlers.c + 1 + ..\..\..\..\src\boards\mcu\stm32\sysIrqHandlers.c + + + utilities.c + 1 + ..\..\..\..\src\boards\mcu\stm32\utilities.c + + + + + mac + + + LoRaMac.c + 1 + ..\..\..\..\src\mac\LoRaMac.c + + + LoRaMacCrypto.c + 1 + ..\..\..\..\src\mac\LoRaMacCrypto.c + + + + + mac\region + + + Region.c + 1 + ..\..\..\..\src\mac\region\Region.c + + + RegionAS923.c + 1 + ..\..\..\..\src\mac\region\RegionAS923.c + + + RegionAU915.c + 1 + ..\..\..\..\src\mac\region\RegionAU915.c + + + RegionCN470.c + 1 + ..\..\..\..\src\mac\region\RegionCN470.c + + + RegionCN779.c + 1 + ..\..\..\..\src\mac\region\RegionCN779.c + + + RegionCommon.c + 1 + ..\..\..\..\src\mac\region\RegionCommon.c + + + RegionEU433.c + 1 + ..\..\..\..\src\mac\region\RegionEU433.c + + + RegionEU868.c + 1 + ..\..\..\..\src\mac\region\RegionEU868.c + + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -773,7 +6175,7 @@ - LoRaMac-433-Bootloader + LoRaMac-us915-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -811,14 +6213,14 @@ 0 1 - .\obj\LoRaMac-433-Bootloader\ - LoRaMac + .\obj\LoRaMac-us915-Bootloader\ + LoRaMac-us915 1 0 1 1 1 - .\lst\LoRaMac-433-Bootloader\ + .\lst\LoRaMac-us915-Bootloader\ 1 0 0 @@ -852,7 +6254,7 @@ 0 0 - 0 + 1 @@ -1138,7 +6540,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -1414,6 +6816,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -1539,7 +6946,7 @@ - LoRaMac-780 + LoRaMac-us915-hybrid 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -1577,14 +6984,14 @@ 0 1 - .\obj\LoRaMac-780\ - LoRaMac + .\obj\LoRaMac-us915-hybrid\ + LoRaMac-us915-hybrid 1 0 1 1 1 - .\lst\LoRaMac-780\ + .\lst\LoRaMac-us915-hybrid\ 1 0 0 @@ -1704,10 +7111,10 @@ 0 1 1 - 4103 + 4096 1 - STLink\ST-LINKIII-KEIL_SWO.dll + BIN\UL2CM3.DLL @@ -1904,7 +7311,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915_HYBRID ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2180,6 +7587,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -2305,7 +7717,7 @@ - LoRaMac-780-Bootloader + LoRaMac-us915-hybrid-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -2343,14 +7755,14 @@ 0 1 - .\obj\LoRaMac-780-Bootloader\ - LoRaMac + .\obj\LoRaMac-us915-hybrid-Bootloader\ + LoRaMac-us915-hybrid 1 0 1 1 1 - .\lst\LoRaMac-780-Bootloader\ + .\lst\LoRaMac-us915-hybrid-Bootloader\ 1 0 0 @@ -2384,7 +7796,7 @@ 0 0 - 0 + 1 @@ -2670,7 +8082,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915_HYBRID USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -2946,6 +8358,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -3071,7 +8488,7 @@ - LoRaMac-868 + LoRaMac-as923-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -3109,14 +8526,14 @@ 0 1 - .\obj\LoRaMac-868\ - LoRaMac + .\obj\LoRaMac-as923-Bootloader\ + LoRaMac-as923 1 0 1 1 1 - .\lst\LoRaMac-868\ + .\lst\LoRaMac-as923-Bootloader\ 1 0 0 @@ -3150,7 +8567,7 @@ 0 0 - 0 + 1 @@ -3236,11 +8653,11 @@ 0 1 1 - 4100 + 4096 1 - BIN\ULP2CM3.DLL - + BIN\UL2CM3.DLL + "" () @@ -3375,8 +8792,8 @@ 1 - 0x8000000 - 0x20000 + 0x8003000 + 0x1d000 1 @@ -3436,7 +8853,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AS923 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -3712,6 +9129,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -3837,7 +9259,7 @@ - LoRaMac-868-Bootloader + LoRaMac-au915-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -3875,14 +9297,14 @@ 0 1 - .\obj\LoRaMac-868-Bootloader\ - LoRaMac + .\obj\LoRaMac-au915-Bootloader\ + LoRaMac-au915 1 0 1 1 1 - .\lst\LoRaMac-868-Bootloader\ + .\lst\LoRaMac-au915-Bootloader\ 1 0 0 @@ -3916,7 +9338,7 @@ 0 0 - 0 + 1 @@ -4202,7 +9624,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_AU915 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -4478,6 +9900,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -4603,7 +10030,7 @@ - LoRaMac-915 + LoRaMac-kr920-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -4641,14 +10068,14 @@ 0 1 - .\obj\LoRaMac-915\ - LoRaMac + .\obj\LoRaMac-kr920-Bootloader\ + LoRaMac-kr920 1 0 1 1 1 - .\lst\LoRaMac-915\ + .\lst\LoRaMac-kr920-Bootloader\ 1 0 0 @@ -4682,7 +10109,7 @@ 0 0 - 0 + 1 @@ -4907,8 +10334,8 @@ 1 - 0x8000000 - 0x20000 + 0x8003000 + 0x1d000 1 @@ -4968,7 +10395,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_KR920 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -5244,6 +10671,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 @@ -5369,7 +10801,7 @@ - LoRaMac-915-Bootloader + LoRaMac-in865-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -5407,14 +10839,14 @@ 0 1 - .\obj\LoRaMac-915-Bootloader\ - LoRaMac + .\obj\LoRaMac-in865-Bootloader\ + LoRaMac-in865 1 0 1 1 1 - .\lst\LoRaMac-915-Bootloader\ + .\lst\LoRaMac-in865-Bootloader\ 1 0 0 @@ -5448,7 +10880,7 @@ 0 0 - 0 + 1 @@ -5734,7 +11166,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_IN865 USE_BOOTLOADER ..\..\..\..\src;..\..\..\..\src\boards\SensorNode;..\..\..\..\src\boards\SensorNode\cmsis;..\..\..\..\src\boards\mcu\stm32;..\..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\..\src\mac;..\..\..\..\src\mac\region;..\..\..\..\src\peripherals;..\..\..\..\src\radio;..\..\..\..\src\system;..\..\..\..\src\system\crypto @@ -6010,6 +11442,11 @@ 1 ..\..\..\..\src\mac\region\RegionEU868.c + + RegionIN865.c + 1 + ..\..\..\..\src\mac\region\RegionIN865.c + RegionKR920.c 1 diff --git a/Keil/SensorNode/ping-pong/Ping-Pong.uvopt b/Keil/SensorNode/ping-pong/Ping-Pong.uvopt index b93e366b1..94e7a84e5 100644 --- a/Keil/SensorNode/ping-pong/Ping-Pong.uvopt +++ b/Keil/SensorNode/ping-pong/Ping-Pong.uvopt @@ -22,11 +22,11 @@ - Ping-Pong-433-lora + Ping-Pong-eu433-lora 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -45,7 +45,7 @@ 79 66 8 - .\lst\Ping-Pong-433-lora\ + .\lst\Ping-Pong-eu433-lora\ 1 @@ -77,29 +77,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -137,35 +115,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10959 -O10959 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -174,13 +127,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -201,20 +154,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-433-fsk + Ping-Pong-eu433-fsk 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -233,7 +187,7 @@ 79 66 8 - .\lst\Ping-Pong-433-fsk\ + .\lst\Ping-Pong-eu433-fsk\ 1 @@ -265,29 +219,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -325,35 +257,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10959 -O10959 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -362,13 +269,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -389,20 +296,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-433-lora-Bootloader + Ping-Pong-eu433-lora-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -421,7 +329,7 @@ 79 66 8 - .\lst\Ping-Pong-433-lora-Bootloader\ + .\lst\Ping-Pong-eu433-lora-Bootloader\ 1 @@ -453,29 +361,7 @@ 0 1 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -513,35 +399,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -550,13 +411,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -577,20 +438,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-433-fsk-Bootloader + Ping-Pong-eu433-fsk-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -609,7 +471,7 @@ 79 66 8 - .\lst\Ping-Pong-433-fsk-Bootloader\ + .\lst\Ping-Pong-eu433-fsk-Bootloader\ 1 @@ -641,29 +503,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -701,35 +541,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -738,13 +553,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -765,20 +580,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-780-lora + Ping-Pong-cn779-lora 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -797,7 +613,7 @@ 79 66 8 - .\lst\Ping-Pong-780-lora\ + .\lst\Ping-Pong-cn779-lora\ 1 @@ -829,29 +645,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -889,35 +683,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -926,13 +695,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -953,20 +722,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-780-fsk + Ping-Pong-cn779-fsk 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -985,7 +755,7 @@ 79 66 8 - .\lst\Ping-Pong-780-fsk\ + .\lst\Ping-Pong-cn779-fsk\ 1 @@ -1017,29 +787,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -1077,35 +825,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1114,13 +837,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1141,20 +864,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-780-lora-Bootloader + Ping-Pong-cn779-lora-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -1173,7 +897,7 @@ 79 66 8 - .\lst\Ping-Pong-780-lora-Bootloader\ + .\lst\Ping-Pong-cn779-lora-Bootloader\ 1 @@ -1205,29 +929,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -1265,35 +967,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1302,13 +979,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1329,20 +1006,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-780-fsk-Bootloader + Ping-Pong-cn779-fsk-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -1361,7 +1039,7 @@ 79 66 8 - .\lst\Ping-Pong-780-fsk-Bootloader\ + .\lst\Ping-Pong-cn779-fsk-Bootloader\ 1 @@ -1393,29 +1071,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -1453,35 +1109,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1490,13 +1121,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1517,20 +1148,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-868-lora + Ping-Pong-eu868-lora 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -1549,7 +1181,7 @@ 79 66 8 - .\lst\Ping-Pong-868-lora\ + .\lst\Ping-Pong-eu868-lora\ 1 @@ -1581,29 +1213,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -1641,35 +1251,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1678,13 +1263,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1705,20 +1290,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-868-fsk + Ping-Pong-eu868-fsk 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -1737,7 +1323,7 @@ 79 66 8 - .\lst\Ping-Pong-868-fsk\ + .\lst\Ping-Pong-eu868-fsk\ 1 @@ -1769,29 +1355,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -1829,35 +1393,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1866,13 +1405,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1893,20 +1432,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-868-lora-Bootloader + Ping-Pong-eu868-lora-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -1925,7 +1465,7 @@ 79 66 8 - .\lst\Ping-Pong-868-lora-Bootloader\ + .\lst\Ping-Pong-eu868-lora-Bootloader\ 1 @@ -1957,29 +1497,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -2017,35 +1535,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -2054,13 +1547,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -2081,20 +1574,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-868-fsk-Bootloader + Ping-Pong-eu868-fsk-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -2113,7 +1607,7 @@ 79 66 8 - .\lst\Ping-Pong-868-fsk-Bootloader\ + .\lst\Ping-Pong-eu868-fsk-Bootloader\ 1 @@ -2145,29 +1639,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -2205,35 +1677,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -2242,13 +1689,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -2269,20 +1716,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-915-lora + Ping-Pong-us915-lora 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -2301,7 +1749,7 @@ 79 66 8 - .\lst\Ping-Pong-915-lora\ + .\lst\Ping-Pong-us915-lora\ 1 @@ -2333,29 +1781,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -2393,35 +1819,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -2430,13 +1831,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -2457,20 +1858,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-915-fsk + Ping-Pong-us915-fsk 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -2489,7 +1891,7 @@ 79 66 8 - .\lst\Ping-Pong-915-fsk\ + .\lst\Ping-Pong-us915-fsk\ 1 @@ -2521,29 +1923,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -2581,35 +1961,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -2618,13 +1973,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -2645,20 +2000,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-915-lora-Bootloader + Ping-Pong-us915-lora-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -2677,7 +2033,7 @@ 79 66 8 - .\lst\Ping-Pong-915-lora-Bootloader\ + .\lst\Ping-Pong-us915-lora-Bootloader\ 1 @@ -2709,29 +2065,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -2769,35 +2103,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -2806,13 +2115,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -2833,20 +2142,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - Ping-Pong-915-fsk-Bootloader + Ping-Pong-us915-fsk-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -2865,7 +2175,7 @@ 79 66 8 - .\lst\Ping-Pong-915-fsk-Bootloader\ + .\lst\Ping-Pong-us915-fsk-Bootloader\ 1 @@ -2897,29 +2207,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -2957,35 +2245,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -2994,13 +2257,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -3021,11 +2284,12 @@ 0 - - - 0 0 - 0 + 0 + + + + diff --git a/Keil/SensorNode/ping-pong/Ping-Pong.uvproj b/Keil/SensorNode/ping-pong/Ping-Pong.uvproj index c16d867dc..c5d367186 100644 --- a/Keil/SensorNode/ping-pong/Ping-Pong.uvproj +++ b/Keil/SensorNode/ping-pong/Ping-Pong.uvproj @@ -7,7 +7,7 @@ - Ping-Pong-433-lora + Ping-Pong-eu433-lora 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -45,14 +45,14 @@ 0 1 - .\obj\Ping-Pong-433-lora\ - Ping-Pong + .\obj\Ping-Pong-eu433-lora\ + Ping-Pong-eu433-lora 1 0 1 1 1 - .\lst\Ping-Pong-433-lora\ + .\lst\Ping-Pong-eu433-lora\ 1 0 0 @@ -372,7 +372,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -683,7 +683,7 @@ - Ping-Pong-433-fsk + Ping-Pong-eu433-fsk 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -721,14 +721,14 @@ 0 1 - .\obj\Ping-Pong-433-fsk\ - Ping-Pong + .\obj\Ping-Pong-eu433-fsk\ + Ping-Pong-eu433-fsk 1 0 1 1 1 - .\lst\Ping-Pong-433-fsk\ + .\lst\Ping-Pong-eu433-fsk\ 1 0 0 @@ -1048,7 +1048,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1359,7 +1359,7 @@ - Ping-Pong-433-lora-Bootloader + Ping-Pong-eu433-lora-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -1397,14 +1397,14 @@ 0 1 - .\obj\Ping-Pong-433-lora-Bootloader\ - Ping-Pong + .\obj\Ping-Pong-eu433-lora-Bootloader\ + Ping-Pong-eu433-lora 1 0 1 1 1 - .\lst\Ping-Pong-433-lora-Bootloader\ + .\lst\Ping-Pong-eu433-lora-Bootloader\ 1 0 0 @@ -1438,7 +1438,7 @@ 0 0 - 0 + 1 @@ -1724,7 +1724,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 USE_MODEM_LORA USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_MODEM_LORA USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2035,7 +2035,7 @@ - Ping-Pong-433-fsk-Bootloader + Ping-Pong-eu433-fsk-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -2073,14 +2073,14 @@ 0 1 - .\obj\Ping-Pong-433-fsk-Bootloader\ - Ping-Pong + .\obj\Ping-Pong-eu433-fsk-Bootloader\ + Ping-Pong-eu433-fsk 1 0 1 1 1 - .\lst\Ping-Pong-433-fsk-Bootloader\ + .\lst\Ping-Pong-eu433-fsk-Bootloader\ 1 0 0 @@ -2114,7 +2114,7 @@ 0 0 - 0 + 1 @@ -2400,7 +2400,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 USE_MODEM_FSK USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_MODEM_FSK USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2711,7 +2711,7 @@ - Ping-Pong-780-lora + Ping-Pong-cn779-lora 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -2749,14 +2749,14 @@ 0 1 - .\obj\Ping-Pong-780-lora\ - Ping-Pong + .\obj\Ping-Pong-cn779-lora\ + Ping-Pong-cn779-lora 1 0 1 1 1 - .\lst\Ping-Pong-780-lora\ + .\lst\Ping-Pong-cn779-lora\ 1 0 0 @@ -3076,7 +3076,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -3387,7 +3387,7 @@ - Ping-Pong-780-fsk + Ping-Pong-cn779-fsk 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -3425,14 +3425,14 @@ 0 1 - .\obj\Ping-Pong-780-fsk\ - Ping-Pong + .\obj\Ping-Pong-cn779-fsk\ + Ping-Pong-cn779-fsk 1 0 1 1 1 - .\lst\Ping-Pong-780-fsk\ + .\lst\Ping-Pong-cn779-fsk\ 1 0 0 @@ -3752,7 +3752,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -4063,7 +4063,7 @@ - Ping-Pong-780-lora-Bootloader + Ping-Pong-cn779-lora-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -4101,14 +4101,14 @@ 0 1 - .\obj\Ping-Pong-780-lora-Bootloader\ - Ping-Pong + .\obj\Ping-Pong-cn779-lora-Bootloader\ + Ping-Pong-cn779-lora 1 0 1 1 1 - .\lst\Ping-Pong-780-lora-Bootloader\ + .\lst\Ping-Pong-cn779-lora-Bootloader\ 1 0 0 @@ -4142,7 +4142,7 @@ 0 0 - 0 + 1 @@ -4428,7 +4428,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 USE_MODEM_LORA USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_MODEM_LORA USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -4739,7 +4739,7 @@ - Ping-Pong-780-fsk-Bootloader + Ping-Pong-cn779-fsk-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -4777,14 +4777,14 @@ 0 1 - .\obj\Ping-Pong-780-fsk-Bootloader\ - Ping-Pong + .\obj\Ping-Pong-cn779-fsk-Bootloader\ + Ping-Pong-cn779-fsk 1 0 1 1 1 - .\lst\Ping-Pong-780-fsk-Bootloader\ + .\lst\Ping-Pong-cn779-fsk-Bootloader\ 1 0 0 @@ -4818,7 +4818,7 @@ 0 0 - 0 + 1 @@ -5104,7 +5104,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 USE_MODEM_FSK USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_MODEM_FSK USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -5415,7 +5415,7 @@ - Ping-Pong-868-lora + Ping-Pong-eu868-lora 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -5453,14 +5453,14 @@ 0 1 - .\obj\Ping-Pong-868-lora\ - Ping-Pong + .\obj\Ping-Pong-eu868-lora\ + Ping-Pong-eu868-lora 1 0 1 1 1 - .\lst\Ping-Pong-868-lora\ + .\lst\Ping-Pong-eu868-lora\ 1 0 0 @@ -5582,7 +5582,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -5780,7 +5780,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -6091,7 +6091,7 @@ - Ping-Pong-868-fsk + Ping-Pong-eu868-fsk 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -6129,14 +6129,14 @@ 0 1 - .\obj\Ping-Pong-868-fsk\ - Ping-Pong + .\obj\Ping-Pong-eu868-fsk\ + Ping-Pong-eu868-fsk 1 0 1 1 1 - .\lst\Ping-Pong-868-fsk\ + .\lst\Ping-Pong-eu868-fsk\ 1 0 0 @@ -6258,7 +6258,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -6456,7 +6456,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -6767,7 +6767,7 @@ - Ping-Pong-868-lora-Bootloader + Ping-Pong-eu868-lora-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -6805,14 +6805,14 @@ 0 1 - .\obj\Ping-Pong-868-lora-Bootloader\ - Ping-Pong + .\obj\Ping-Pong-eu868-lora-Bootloader\ + Ping-Pong-eu868-lora 1 0 1 1 1 - .\lst\Ping-Pong-868-lora-Bootloader\ + .\lst\Ping-Pong-eu868-lora-Bootloader\ 1 0 0 @@ -6846,7 +6846,7 @@ 0 0 - 0 + 1 @@ -6934,7 +6934,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -7132,7 +7132,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_LORA USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -7443,7 +7443,7 @@ - Ping-Pong-868-fsk-Bootloader + Ping-Pong-eu868-fsk-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -7481,14 +7481,14 @@ 0 1 - .\obj\Ping-Pong-868-fsk-Bootloader\ - Ping-Pong + .\obj\Ping-Pong-eu868-fsk-Bootloader\ + Ping-Pong-eu868-fsk 1 0 1 1 1 - .\lst\Ping-Pong-868-fsk-Bootloader\ + .\lst\Ping-Pong-eu868-fsk-Bootloader\ 1 0 0 @@ -7522,7 +7522,7 @@ 0 0 - 0 + 1 @@ -7610,7 +7610,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -7808,7 +7808,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_FSK USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -8119,7 +8119,7 @@ - Ping-Pong-915-lora + Ping-Pong-us915-lora 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -8157,14 +8157,14 @@ 0 1 - .\obj\Ping-Pong-915-lora\ - Ping-Pong + .\obj\Ping-Pong-us915-lora\ + Ping-Pong-us915-lora 1 0 1 1 1 - .\lst\Ping-Pong-915-lora\ + .\lst\Ping-Pong-us915-lora\ 1 0 0 @@ -8286,7 +8286,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -8484,7 +8484,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -8795,7 +8795,7 @@ - Ping-Pong-915-fsk + Ping-Pong-us915-fsk 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -8833,14 +8833,14 @@ 0 1 - .\obj\Ping-Pong-915-fsk\ - Ping-Pong + .\obj\Ping-Pong-us915-fsk\ + Ping-Pong-us915-fsk 1 0 1 1 1 - .\lst\Ping-Pong-915-fsk\ + .\lst\Ping-Pong-us915-fsk\ 1 0 0 @@ -8962,7 +8962,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -9160,7 +9160,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -9471,7 +9471,7 @@ - Ping-Pong-915-lora-Bootloader + Ping-Pong-us915-lora-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -9509,14 +9509,14 @@ 0 1 - .\obj\Ping-Pong-915-lora-Bootloader\ - Ping-Pong + .\obj\Ping-Pong-us915-lora-Bootloader\ + Ping-Pong-us915-lora 1 0 1 1 1 - .\lst\Ping-Pong-915-lora-Bootloader\ + .\lst\Ping-Pong-us915-lora-Bootloader\ 1 0 0 @@ -9550,7 +9550,7 @@ 0 0 - 0 + 1 @@ -9638,7 +9638,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -9836,7 +9836,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_LORA USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -10147,7 +10147,7 @@ - Ping-Pong-915-fsk-Bootloader + Ping-Pong-us915-fsk-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -10185,14 +10185,14 @@ 0 1 - .\obj\Ping-Pong-915-fsk-Bootloader\ - Ping-Pong + .\obj\Ping-Pong-us915-fsk-Bootloader\ + Ping-Pong-us915-fsk 1 0 1 1 1 - .\lst\Ping-Pong-915-fsk-Bootloader\ + .\lst\Ping-Pong-us915-fsk-Bootloader\ 1 0 0 @@ -10226,7 +10226,7 @@ 0 0 - 0 + 1 @@ -10314,7 +10314,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -10512,7 +10512,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_FSK USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto diff --git a/Keil/SensorNode/rx-sensi/rx-sensi.uvopt b/Keil/SensorNode/rx-sensi/rx-sensi.uvopt index 9dc620013..09a6f70d8 100644 --- a/Keil/SensorNode/rx-sensi/rx-sensi.uvopt +++ b/Keil/SensorNode/rx-sensi/rx-sensi.uvopt @@ -22,13 +22,13 @@ - rx-sensi-433-lora + rx-sensi-eu433-lora 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -45,7 +45,7 @@ 79 66 8 - .\lst\rx-sensi-433-lora\ + .\lst\rx-sensi-eu433-lora\ 1 @@ -77,29 +77,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -137,35 +115,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10959 -O10959 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -174,13 +127,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -201,22 +154,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-433-fsk + rx-sensi-eu433-fsk 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -233,7 +187,7 @@ 79 66 8 - .\lst\rx-sensi-433-fsk\ + .\lst\rx-sensi-eu433-fsk\ 1 @@ -265,29 +219,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -325,35 +257,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10959 -O10959 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -362,13 +269,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -389,22 +296,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-433-lora-Bootloader + rx-sensi-eu433-lora-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -421,7 +329,7 @@ 79 66 8 - .\lst\rx-sensi-433-lora-Bootloader\ + .\lst\rx-sensi-eu433-lora-Bootloader\ 1 @@ -453,29 +361,7 @@ 0 1 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -513,35 +399,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -550,13 +411,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -577,22 +438,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-433-fsk-Bootloader + rx-sensi-eu433-fsk-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -609,7 +471,7 @@ 79 66 8 - .\lst\rx-sensi-433-fsk-Bootloader\ + .\lst\rx-sensi-eu433-fsk-Bootloader\ 1 @@ -641,29 +503,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -701,35 +541,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -738,13 +553,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -765,22 +580,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-780-lora + rx-sensi-cn779-lora 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -797,7 +613,7 @@ 79 66 8 - .\lst\rx-sensi-780-lora\ + .\lst\rx-sensi-cn779-lora\ 1 @@ -829,29 +645,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -889,35 +683,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -926,13 +695,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -953,22 +722,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-780-fsk + rx-sensi-cn779-fsk 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -985,7 +755,7 @@ 79 66 8 - .\lst\rx-sensi-780-fsk\ + .\lst\rx-sensi-cn779-fsk\ 1 @@ -1017,29 +787,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -1077,35 +825,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1114,13 +837,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1141,22 +864,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-780-lora-Bootloader + rx-sensi-cn779-lora-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -1173,7 +897,7 @@ 79 66 8 - .\lst\rx-sensi-780-lora-Bootloader\ + .\lst\rx-sensi-cn779-lora-Bootloader\ 1 @@ -1205,29 +929,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -1265,35 +967,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1302,13 +979,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1329,22 +1006,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-780-fsk-Bootloader + rx-sensi-cn779-fsk-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -1361,7 +1039,7 @@ 79 66 8 - .\lst\rx-sensi-780-fsk-Bootloader\ + .\lst\rx-sensi-cn779-fsk-Bootloader\ 1 @@ -1393,29 +1071,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -1453,35 +1109,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1490,13 +1121,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1517,22 +1148,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-868-lora + rx-sensi-eu868-lora 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -1549,7 +1181,7 @@ 79 66 8 - .\lst\rx-sensi-868-lora\ + .\lst\rx-sensi-eu868-lora\ 1 @@ -1581,29 +1213,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -1641,35 +1251,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1678,13 +1263,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1705,22 +1290,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-868-fsk + rx-sensi-eu868-fsk 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -1737,7 +1323,7 @@ 79 66 8 - .\lst\rx-sensi-868-fsk\ + .\lst\rx-sensi-eu868-fsk\ 1 @@ -1769,29 +1355,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -1829,35 +1393,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1866,13 +1405,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1893,22 +1432,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-868-lora-Bootloader + rx-sensi-eu868-lora-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -1925,7 +1465,7 @@ 79 66 8 - .\lst\rx-sensi-868-lora-Bootloader\ + .\lst\rx-sensi-eu868-lora-Bootloader\ 1 @@ -1957,29 +1497,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -2017,35 +1535,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -2054,13 +1547,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -2081,22 +1574,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-868-fsk-Bootloader + rx-sensi-eu868-fsk-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -2113,7 +1607,7 @@ 79 66 8 - .\lst\rx-sensi-868-fsk-Bootloader\ + .\lst\rx-sensi-eu868-fsk-Bootloader\ 1 @@ -2145,29 +1639,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -2205,35 +1677,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -2242,13 +1689,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -2269,22 +1716,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-915-lora + rx-sensi-us915-lora 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -2301,7 +1749,7 @@ 79 66 8 - .\lst\rx-sensi-915-lora\ + .\lst\rx-sensi-us915-lora\ 1 @@ -2333,29 +1781,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -2393,35 +1819,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -2430,13 +1831,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -2457,22 +1858,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-915-fsk + rx-sensi-us915-fsk 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -2489,7 +1891,7 @@ 79 66 8 - .\lst\rx-sensi-915-fsk\ + .\lst\rx-sensi-us915-fsk\ 1 @@ -2521,29 +1923,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -2581,35 +1961,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -2618,13 +1973,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -2645,22 +2000,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-915-lora-Bootloader + rx-sensi-us915-lora-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -2677,7 +2033,7 @@ 79 66 8 - .\lst\rx-sensi-915-lora-Bootloader\ + .\lst\rx-sensi-us915-lora-Bootloader\ 1 @@ -2709,29 +2065,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -2769,35 +2103,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -2806,13 +2115,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -2833,22 +2142,23 @@ 0 - - - 0 0 - 0 + 0 + + + + - rx-sensi-915-fsk-Bootloader + rx-sensi-us915-fsk-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 - 1 + 0 1 1 0 @@ -2865,7 +2175,7 @@ 79 66 8 - .\lst\rx-sensi-915-fsk-Bootloader\ + .\lst\rx-sensi-us915-fsk-Bootloader\ 1 @@ -2897,29 +2207,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -2957,35 +2245,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -2994,13 +2257,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -3021,11 +2284,12 @@ 0 - - - 0 0 - 0 + 0 + + + + diff --git a/Keil/SensorNode/rx-sensi/rx-sensi.uvproj b/Keil/SensorNode/rx-sensi/rx-sensi.uvproj index a48162143..56638319e 100644 --- a/Keil/SensorNode/rx-sensi/rx-sensi.uvproj +++ b/Keil/SensorNode/rx-sensi/rx-sensi.uvproj @@ -7,7 +7,7 @@ - rx-sensi-433-lora + rx-sensi-eu433-lora 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -17,7 +17,7 @@ STMicroelectronics IRAM(0x20000000-0x20003FFF) IROM(0x8000000-0x801FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") - "STARTUP\ST\STM32L1xx\startup_stm32l1xx_md.s" ("STM32L1xx Medium density Startup Code") + "STARTUP\ST\STM32L1xx\startup_stm32l151xb.s" ("STM32L1xx Medium density Startup Code") ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) 5244 stm32l1xx.h @@ -45,14 +45,14 @@ 0 1 - .\obj\rx-sensi-433-lora\ - rx-sensi + .\obj\rx-sensi-eu433-lora\ + rx-sensi-eu433-lora 1 0 1 1 1 - .\lst\rx-sensi-433-lora\ + .\lst\rx-sensi-eu433-lora\ 1 0 0 @@ -372,7 +372,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -683,7 +683,7 @@ - rx-sensi-433-fsk + rx-sensi-eu433-fsk 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -721,14 +721,14 @@ 0 1 - .\obj\rx-sensi-433-fsk\ - rx-sensi + .\obj\rx-sensi-eu433-fsk\ + rx-sensi-eu433-fsk 1 0 1 1 1 - .\lst\rx-sensi-433-fsk\ + .\lst\rx-sensi-eu433-fsk\ 1 0 0 @@ -1048,7 +1048,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1359,7 +1359,7 @@ - rx-sensi-433-lora-Bootloader + rx-sensi-eu433-lora-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -1397,14 +1397,14 @@ 0 1 - .\obj\rx-sensi-433-lora-Bootloader\ - rx-sensi + .\obj\rx-sensi-eu433-lora-Bootloader\ + rx-sensi-eu433-lora 1 0 1 1 1 - .\lst\rx-sensi-433-lora-Bootloader\ + .\lst\rx-sensi-eu433-lora-Bootloader\ 1 0 0 @@ -1438,7 +1438,7 @@ 0 0 - 0 + 1 @@ -1724,7 +1724,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 USE_MODEM_LORA USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_MODEM_LORA USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2035,7 +2035,7 @@ - rx-sensi-433-fsk-Bootloader + rx-sensi-eu433-fsk-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -2073,14 +2073,14 @@ 0 1 - .\obj\rx-sensi-433-fsk-Bootloader\ - rx-sensi + .\obj\rx-sensi-eu433-fsk-Bootloader\ + rx-sensi-eu433-fsk 1 0 1 1 1 - .\lst\rx-sensi-433-fsk-Bootloader\ + .\lst\rx-sensi-eu433-fsk-Bootloader\ 1 0 0 @@ -2114,7 +2114,7 @@ 0 0 - 0 + 1 @@ -2400,7 +2400,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 USE_MODEM_FSK USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_MODEM_FSK USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2711,7 +2711,7 @@ - rx-sensi-780-lora + rx-sensi-cn779-lora 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -2749,14 +2749,14 @@ 0 1 - .\obj\rx-sensi-780-lora\ - rx-sensi + .\obj\rx-sensi-cn779-lora\ + rx-sensi-cn779-lora 1 0 1 1 1 - .\lst\rx-sensi-780-lora\ + .\lst\rx-sensi-cn779-lora\ 1 0 0 @@ -3076,7 +3076,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -3387,7 +3387,7 @@ - rx-sensi-780-fsk + rx-sensi-cn779-fsk 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -3425,14 +3425,14 @@ 0 1 - .\obj\rx-sensi-780-fsk\ - rx-sensi + .\obj\rx-sensi-cn779-fsk\ + rx-sensi-cn779-fsk 1 0 1 1 1 - .\lst\rx-sensi-780-fsk\ + .\lst\rx-sensi-cn779-fsk\ 1 0 0 @@ -3752,7 +3752,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -4063,7 +4063,7 @@ - rx-sensi-780-lora-Bootloader + rx-sensi-cn779-lora-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -4101,14 +4101,14 @@ 0 1 - .\obj\rx-sensi-780-lora-Bootloader\ - rx-sensi + .\obj\rx-sensi-cn779-lora-Bootloader\ + rx-sensi-cn779-lora 1 0 1 1 1 - .\lst\rx-sensi-780-lora-Bootloader\ + .\lst\rx-sensi-cn779-lora-Bootloader\ 1 0 0 @@ -4142,7 +4142,7 @@ 0 0 - 0 + 1 @@ -4428,7 +4428,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 USE_MODEM_LORA USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_MODEM_LORA USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -4739,7 +4739,7 @@ - rx-sensi-780-fsk-Bootloader + rx-sensi-cn779-fsk-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -4777,14 +4777,14 @@ 0 1 - .\obj\rx-sensi-780-fsk-Bootloader\ - rx-sensi + .\obj\rx-sensi-cn779-fsk-Bootloader\ + rx-sensi-cn779-fsk 1 0 1 1 1 - .\lst\rx-sensi-780-fsk-Bootloader\ + .\lst\rx-sensi-cn779-fsk-Bootloader\ 1 0 0 @@ -4818,7 +4818,7 @@ 0 0 - 0 + 1 @@ -5104,7 +5104,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 USE_MODEM_FSK USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_MODEM_FSK USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -5415,7 +5415,7 @@ - rx-sensi-868-lora + rx-sensi-eu868-lora 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -5453,14 +5453,14 @@ 0 1 - .\obj\rx-sensi-868-lora\ - rx-sensi + .\obj\rx-sensi-eu868-lora\ + rx-sensi-eu868-lora 1 0 1 1 1 - .\lst\rx-sensi-868-lora\ + .\lst\rx-sensi-eu868-lora\ 1 0 0 @@ -5582,7 +5582,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -5780,7 +5780,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -6091,7 +6091,7 @@ - rx-sensi-868-fsk + rx-sensi-eu868-fsk 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -6129,14 +6129,14 @@ 0 1 - .\obj\rx-sensi-868-fsk\ - rx-sensi + .\obj\rx-sensi-eu868-fsk\ + rx-sensi-eu868-fsk 1 0 1 1 1 - .\lst\rx-sensi-868-fsk\ + .\lst\rx-sensi-eu868-fsk\ 1 0 0 @@ -6258,7 +6258,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -6456,7 +6456,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -6767,7 +6767,7 @@ - rx-sensi-868-lora-Bootloader + rx-sensi-eu868-lora-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -6805,14 +6805,14 @@ 0 1 - .\obj\rx-sensi-868-lora-Bootloader\ - rx-sensi + .\obj\rx-sensi-eu868-lora-Bootloader\ + rx-sensi-eu868-lora 1 0 1 1 1 - .\lst\rx-sensi-868-lora-Bootloader\ + .\lst\rx-sensi-eu868-lora-Bootloader\ 1 0 0 @@ -6846,7 +6846,7 @@ 0 0 - 0 + 1 @@ -6934,7 +6934,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -7132,7 +7132,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_LORA USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_LORA USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -7443,7 +7443,7 @@ - rx-sensi-868-fsk-Bootloader + rx-sensi-eu868-fsk-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -7481,14 +7481,14 @@ 0 1 - .\obj\rx-sensi-868-fsk-Bootloader\ - rx-sensi + .\obj\rx-sensi-eu868-fsk-Bootloader\ + rx-sensi-eu868-fsk 1 0 1 1 1 - .\lst\rx-sensi-868-fsk-Bootloader\ + .\lst\rx-sensi-eu868-fsk-Bootloader\ 1 0 0 @@ -7522,7 +7522,7 @@ 0 0 - 0 + 1 @@ -7610,7 +7610,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -7808,7 +7808,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_MODEM_FSK USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_MODEM_FSK USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -8119,7 +8119,7 @@ - rx-sensi-915-lora + rx-sensi-us915-lora 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -8157,14 +8157,14 @@ 0 1 - .\obj\rx-sensi-915-lora\ - rx-sensi + .\obj\rx-sensi-us915-lora\ + rx-sensi-us915-lora 1 0 1 1 1 - .\lst\rx-sensi-915-lora\ + .\lst\rx-sensi-us915-lora\ 1 0 0 @@ -8286,7 +8286,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -8484,7 +8484,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_LORA ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -8795,7 +8795,7 @@ - rx-sensi-915-fsk + rx-sensi-us915-fsk 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -8833,14 +8833,14 @@ 0 1 - .\obj\rx-sensi-915-fsk\ - rx-sensi + .\obj\rx-sensi-us915-fsk\ + rx-sensi-us915-fsk 1 0 1 1 1 - .\lst\rx-sensi-915-fsk\ + .\lst\rx-sensi-us915-fsk\ 1 0 0 @@ -8962,7 +8962,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -9160,7 +9160,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_FSK ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -9471,7 +9471,7 @@ - rx-sensi-915-lora-Bootloader + rx-sensi-us915-lora-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -9509,14 +9509,14 @@ 0 1 - .\obj\rx-sensi-915-lora-Bootloader\ - rx-sensi + .\obj\rx-sensi-us915-lora-Bootloader\ + rx-sensi-us915-lora 1 0 1 1 1 - .\lst\rx-sensi-915-lora-Bootloader\ + .\lst\rx-sensi-us915-lora-Bootloader\ 1 0 0 @@ -9550,7 +9550,7 @@ 0 0 - 0 + 1 @@ -9638,7 +9638,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -9836,7 +9836,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_LORA USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_LORA USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -10147,7 +10147,7 @@ - rx-sensi-915-fsk-Bootloader + rx-sensi-us915-fsk-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -10185,14 +10185,14 @@ 0 1 - .\obj\rx-sensi-915-fsk-Bootloader\ - rx-sensi + .\obj\rx-sensi-us915-fsk-Bootloader\ + rx-sensi-us915-fsk 1 0 1 1 1 - .\lst\rx-sensi-915-fsk-Bootloader\ + .\lst\rx-sensi-us915-fsk-Bootloader\ 1 0 0 @@ -10226,7 +10226,7 @@ 0 0 - 0 + 1 @@ -10314,7 +10314,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -10512,7 +10512,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_MODEM_FSK USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_MODEM_FSK USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto diff --git a/Keil/SensorNode/tx-cw/tx-cw.uvopt b/Keil/SensorNode/tx-cw/tx-cw.uvopt index b2c8e9857..57bb851ad 100644 --- a/Keil/SensorNode/tx-cw/tx-cw.uvopt +++ b/Keil/SensorNode/tx-cw/tx-cw.uvopt @@ -22,11 +22,11 @@ - tx-cw-433 + tx-cw-eu433 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -45,7 +45,7 @@ 79 66 8 - .\lst\tx-cw-433\ + .\lst\tx-cw-eu433\ 1 @@ -77,29 +77,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -137,35 +115,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10959 -O10959 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -174,13 +127,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -201,20 +154,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - tx-cw-433-Bootloader + tx-cw-eu433-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -233,7 +187,7 @@ 79 66 8 - .\lst\tx-cw-433-Bootloader\ + .\lst\tx-cw-eu433-Bootloader\ 1 @@ -265,29 +219,7 @@ 0 1 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -325,35 +257,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -362,13 +269,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -389,20 +296,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - tx-cw-780 + tx-cw-cn779 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -421,7 +329,7 @@ 79 66 8 - .\lst\tx-cw-780\ + .\lst\tx-cw-cn779\ 1 @@ -453,29 +361,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -513,35 +399,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -550,13 +411,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -577,20 +438,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - tx-cw-780-Bootloader + tx-cw-cn779-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -609,7 +471,7 @@ 79 66 8 - .\lst\tx-cw-780-Bootloader\ + .\lst\tx-cw-cn779-Bootloader\ 1 @@ -641,29 +503,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -701,35 +541,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -738,13 +553,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -765,20 +580,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - tx-cw-868 + tx-cw-eu868 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -797,7 +613,7 @@ 79 66 8 - .\lst\tx-cw-868\ + .\lst\tx-cw-eu868\ 1 @@ -829,29 +645,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -889,35 +683,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -926,13 +695,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -953,20 +722,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - tx-cw-868-Bootloader + tx-cw-eu868-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -985,7 +755,7 @@ 79 66 8 - .\lst\tx-cw-868-Bootloader\ + .\lst\tx-cw-eu868-Bootloader\ 1 @@ -1017,29 +787,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -1077,35 +825,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1114,13 +837,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1141,20 +864,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - tx-cw-915 + tx-cw-us915 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -1173,7 +897,7 @@ 79 66 8 - .\lst\tx-cw-915\ + .\lst\tx-cw-us915\ 1 @@ -1205,29 +929,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -1265,35 +967,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1302,13 +979,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1329,20 +1006,21 @@ 0 - - - 0 0 - 0 + 0 + + + + - tx-cw-915-Bootloader + tx-cw-us915-Bootloader 0x4 ARM-ADS - 12000000 + 8000000 1 1 @@ -1361,7 +1039,7 @@ 79 66 8 - .\lst\tx-cw-915-Bootloader\ + .\lst\tx-cw-us915-Bootloader\ 1 @@ -1393,29 +1071,7 @@ 0 0 - 255 - - - 0 - Data Sheet - DATASHTS\ST\STM32L1xx\CD00277537.pdf - - - 1 - Reference Manual - DATASHTS\ST\STM32L1xx\CD00240193.pdf - - - 2 - Technical Reference Manual - datashts\arm\cortex_m3\r1p1\DDI0337E_CORTEX_M3_R1P1_TRM.PDF - - - 3 - Generic User Guide - datashts\arm\cortex_m3\r2p1\DUI0552A_CORTEX_M3_DGUG.PDF - - + 0 0 1 @@ -1453,35 +1109,10 @@ STLink\ST-LINKIII-KEIL_SWO.dll - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - - - - 0 - DLGUARM - (105=-1,-1,-1,-1,0) - 0 ULP2CM3 - -O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) - - - 0 - ST-LINKIII-KEIL_SWO - -U-O10447 -O10447 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000 - - - 0 - UL2CM3 - -S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL010000 -FP0($$Device:STM32L151C8$Flash\STM32L1xx_128.FLM)) + ULP2CM3(-O207 -S8 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32L1xx_128 -FS08000000 -FL020000) @@ -1490,13 +1121,13 @@ 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -1517,11 +1148,12 @@ 0 - - - 0 0 - 0 + 0 + + + + diff --git a/Keil/SensorNode/tx-cw/tx-cw.uvproj b/Keil/SensorNode/tx-cw/tx-cw.uvproj index e41fdefdc..77952cab8 100644 --- a/Keil/SensorNode/tx-cw/tx-cw.uvproj +++ b/Keil/SensorNode/tx-cw/tx-cw.uvproj @@ -7,7 +7,7 @@ - tx-cw-433 + tx-cw-eu433 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -45,14 +45,14 @@ 0 1 - .\obj\tx-cw-433\ - tx-cw + .\obj\tx-cw-eu433\ + tx-cw-eu433 1 0 1 1 1 - .\lst\tx-cw-433\ + .\lst\tx-cw-eu433\ 1 0 0 @@ -86,7 +86,7 @@ 0 0 - 0 + 1 @@ -174,7 +174,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -372,7 +372,7 @@ 0 - SE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 + SE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -683,7 +683,7 @@ - tx-cw-433-Bootloader + tx-cw-eu433-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -721,14 +721,14 @@ 0 1 - .\obj\tx-cw-433-Bootloader\ - tx-cw + .\obj\tx-cw-eu433-Bootloader\ + tx-cw-eu433 1 0 1 1 1 - .\lst\tx-cw-433-Bootloader\ + .\lst\tx-cw-eu433-Bootloader\ 1 0 0 @@ -762,7 +762,7 @@ 0 0 - 0 + 1 @@ -850,7 +850,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -1048,7 +1048,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_433 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU433 USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -1359,7 +1359,7 @@ - tx-cw-780 + tx-cw-cn779 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -1397,14 +1397,14 @@ 0 1 - .\obj\tx-cw-780\ - tx-cw + .\obj\tx-cw-cn779\ + tx-cw-cn779 1 0 1 1 1 - .\lst\tx-cw-780\ + .\lst\tx-cw-cn779\ 1 0 0 @@ -1438,7 +1438,7 @@ 0 0 - 0 + 1 @@ -1526,7 +1526,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -1724,7 +1724,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2035,7 +2035,7 @@ - tx-cw-780-Bootloader + tx-cw-cn779-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -2073,14 +2073,14 @@ 0 1 - .\obj\tx-cw-780-Bootloader\ - tx-cw + .\obj\tx-cw-cn779-Bootloader\ + tx-cw-cn779 1 0 1 1 1 - .\lst\tx-cw-780-Bootloader\ + .\lst\tx-cw-cn779-Bootloader\ 1 0 0 @@ -2114,7 +2114,7 @@ 0 0 - 0 + 1 @@ -2202,7 +2202,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -2400,7 +2400,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_780 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_CN779 USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -2711,7 +2711,7 @@ - tx-cw-868 + tx-cw-eu868 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -2749,14 +2749,14 @@ 0 1 - .\obj\tx-cw-868\ - tx-cw + .\obj\tx-cw-eu868\ + tx-cw-eu868 1 0 1 1 1 - .\lst\tx-cw-868\ + .\lst\tx-cw-eu868\ 1 0 0 @@ -2790,7 +2790,7 @@ 0 0 - 0 + 1 @@ -2878,7 +2878,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -3076,7 +3076,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -3387,7 +3387,7 @@ - tx-cw-868-Bootloader + tx-cw-eu868-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -3425,14 +3425,14 @@ 0 1 - .\obj\tx-cw-868-Bootloader\ - tx-cw + .\obj\tx-cw-eu868-Bootloader\ + tx-cw-eu868 1 0 1 1 1 - .\lst\tx-cw-868-Bootloader\ + .\lst\tx-cw-eu868-Bootloader\ 1 0 0 @@ -3466,7 +3466,7 @@ 0 0 - 0 + 1 @@ -3554,7 +3554,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -3752,7 +3752,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_868 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_EU868 USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -4063,7 +4063,7 @@ - tx-cw-915 + tx-cw-us915 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -4101,14 +4101,14 @@ 0 1 - .\obj\tx-cw-915\ - tx-cw + .\obj\tx-cw-us915\ + tx-cw-us915 1 0 1 1 1 - .\lst\tx-cw-915\ + .\lst\tx-cw-us915\ 1 0 0 @@ -4142,7 +4142,7 @@ 0 0 - 0 + 1 @@ -4230,7 +4230,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -4428,7 +4428,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto @@ -4739,7 +4739,7 @@ - tx-cw-915-Bootloader + tx-cw-us915-Bootloader 0x4 ARM-ADS 5060422::V5.06 update 4 (build 422)::ARMCC @@ -4777,14 +4777,14 @@ 0 1 - .\obj\tx-cw-915-Bootloader\ - tx-cw + .\obj\tx-cw-us915-Bootloader\ + tx-cw-us915 1 0 1 1 1 - .\lst\tx-cw-915-Bootloader\ + .\lst\tx-cw-us915-Bootloader\ 1 0 0 @@ -4818,7 +4818,7 @@ 0 0 - 0 + 1 @@ -4906,7 +4906,7 @@ 1 4103 - 0 + 1 STLink\ST-LINKIII-KEIL_SWO.dll @@ -5104,7 +5104,7 @@ 0 - USE_HAL_DRIVER STM32L151xB USE_DEBUGGER USE_BAND_915 USE_BOOTLOADER + USE_HAL_DRIVER STM32L151xB USE_DEBUGGER REGION_US915 USE_BOOTLOADER ..\..\..\src;..\..\..\src\boards\SensorNode;..\..\..\src\boards\SensorNode\cmsis;..\..\..\src\boards\mcu\stm32;..\..\..\src\boards\mcu\stm32\cmsis;..\..\..\src\boards\mcu\stm32\STM32L1xx_HAL_Driver\inc;..\..\..\src\mac;..\..\..\src\peripherals;..\..\..\src\radio;..\..\..\src\system;..\..\..\src\system\crypto diff --git a/coIDE/LoRaMote/Bootloader/Bootloader.coproj b/coIDE/LoRaMote/Bootloader/Bootloader.coproj index 2774ffac8..261247de3 100644 --- a/coIDE/LoRaMote/Bootloader/Bootloader.coproj +++ b/coIDE/LoRaMote/Bootloader/Bootloader.coproj @@ -6,7 +6,7 @@