160 lines
4.3 KiB
C
160 lines
4.3 KiB
C
/* USER CODE BEGIN Header */
|
|
/**
|
|
******************************************************************************
|
|
* @file lora_info.c
|
|
* @author MCD Application Team
|
|
* @brief To give info to the application about LoRaWAN configuration
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* Copyright (c) 2021 STMicroelectronics.
|
|
* All rights reserved.
|
|
*
|
|
* This software is licensed under terms that can be found in the LICENSE file
|
|
* in the root directory of this software component.
|
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
/* USER CODE END Header */
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "LoRaMac.h"
|
|
#include "lora_info.h"
|
|
#include "lorawan_conf.h"
|
|
#include "sys_app.h" /* APP_PRINTF */
|
|
|
|
/* USER CODE BEGIN Includes */
|
|
|
|
/* USER CODE END Includes */
|
|
|
|
/* Private typedef -----------------------------------------------------------*/
|
|
|
|
/* USER CODE BEGIN PTD */
|
|
|
|
/* USER CODE END PTD */
|
|
|
|
/* Private define ------------------------------------------------------------*/
|
|
|
|
/* USER CODE BEGIN PD */
|
|
|
|
/* USER CODE END PD */
|
|
|
|
/* Private macro -------------------------------------------------------------*/
|
|
|
|
/* USER CODE BEGIN PM */
|
|
|
|
/* USER CODE END PM */
|
|
|
|
/* Private variables ---------------------------------------------------------*/
|
|
static LoraInfo_t loraInfo = {0, 0};
|
|
|
|
/* USER CODE BEGIN PV */
|
|
|
|
/* USER CODE END PV */
|
|
|
|
/* Private function prototypes -----------------------------------------------*/
|
|
|
|
/* USER CODE BEGIN PFP */
|
|
|
|
/* USER CODE END PFP */
|
|
|
|
/* Exported variables --------------------------------------------------------*/
|
|
|
|
/* USER CODE BEGIN EV */
|
|
|
|
/* USER CODE END EV */
|
|
|
|
/* Exported functions --------------------------------------------------------*/
|
|
void LoraInfo_Init(void)
|
|
{
|
|
loraInfo.ContextManagement = 0;
|
|
loraInfo.Region = 0;
|
|
loraInfo.ClassB = 0;
|
|
loraInfo.Kms = 0;
|
|
/* USER CODE BEGIN LoraInfo_Init_1 */
|
|
|
|
/* USER CODE END LoraInfo_Init_1 */
|
|
|
|
#ifdef REGION_AS923
|
|
loraInfo.Region |= (1 << LORAMAC_REGION_AS923);
|
|
#endif /* REGION_AS923 */
|
|
#ifdef REGION_AU915
|
|
loraInfo.Region |= (1 << LORAMAC_REGION_AU915);
|
|
#endif /* REGION_AU915 */
|
|
#ifdef REGION_CN470
|
|
loraInfo.Region |= (1 << LORAMAC_REGION_CN470);
|
|
#endif /* REGION_CN470 */
|
|
#ifdef REGION_CN779
|
|
loraInfo.Region |= (1 << LORAMAC_REGION_CN779);
|
|
#endif /* REGION_CN779 */
|
|
#ifdef REGION_EU433
|
|
loraInfo.Region |= (1 << LORAMAC_REGION_EU433);
|
|
#endif /* REGION_EU433 */
|
|
#ifdef REGION_EU868
|
|
loraInfo.Region |= (1 << LORAMAC_REGION_EU868);
|
|
#endif /* REGION_EU868 */
|
|
#ifdef REGION_KR920
|
|
loraInfo.Region |= (1 << LORAMAC_REGION_KR920);
|
|
#endif /* REGION_KR920 */
|
|
#ifdef REGION_IN865
|
|
loraInfo.Region |= (1 << LORAMAC_REGION_IN865);
|
|
#endif /* REGION_IN865 */
|
|
#ifdef REGION_US915
|
|
loraInfo.Region |= (1 << LORAMAC_REGION_US915);
|
|
#endif /* REGION_US915 */
|
|
#ifdef REGION_RU864
|
|
loraInfo.Region |= (1 << LORAMAC_REGION_RU864);
|
|
#endif /* REGION_RU864 */
|
|
|
|
if (loraInfo.Region == 0)
|
|
{
|
|
APP_PRINTF("error: At least one region shall be defined in the MW: check lorawan_conf.h \r\n");
|
|
while (1 != UTIL_ADV_TRACE_IsBufferEmpty())
|
|
{
|
|
/* Wait that all printfs are completed*/
|
|
}
|
|
while (1) {} /* At least one region shall be defined */
|
|
}
|
|
|
|
#if ( LORAMAC_CLASSB_ENABLED == 1 )
|
|
loraInfo.ClassB = 1;
|
|
#elif !defined (LORAMAC_CLASSB_ENABLED)
|
|
#error LORAMAC_CLASSB_ENABLED not defined ( shall be <0 or 1> )
|
|
#endif /* LORAMAC_CLASSB_ENABLED */
|
|
|
|
#if (!defined (LORAWAN_KMS) || (LORAWAN_KMS == 0))
|
|
loraInfo.Kms = 0;
|
|
#else /* LORAWAN_KMS == 1 */
|
|
loraInfo.Kms = 1;
|
|
#endif /* LORAWAN_KMS */
|
|
|
|
#if (!defined (CONTEXT_MANAGEMENT_ENABLED) || (CONTEXT_MANAGEMENT_ENABLED == 0))
|
|
loraInfo.ContextManagement = 0;
|
|
#else /* CONTEXT_MANAGEMENT_ENABLED == 1 */
|
|
loraInfo.ContextManagement = 1;
|
|
#endif /* CONTEXT_MANAGEMENT_ENABLED */
|
|
|
|
/* USER CODE BEGIN LoraInfo_Init_2 */
|
|
|
|
/* USER CODE END LoraInfo_Init_2 */
|
|
}
|
|
|
|
LoraInfo_t *LoraInfo_GetPtr(void)
|
|
{
|
|
/* USER CODE BEGIN LoraInfo_GetPtr */
|
|
|
|
/* USER CODE END LoraInfo_GetPtr */
|
|
return &loraInfo;
|
|
}
|
|
|
|
/* USER CODE BEGIN EF */
|
|
|
|
/* USER CODE END EF */
|
|
|
|
/* Private functions --------------------------------------------------------*/
|
|
|
|
/* USER CODE BEGIN PF */
|
|
|
|
/* USER CODE END PF */
|