O7/LoRaWAN/Target/radio_board_if.h

265 lines
8.2 KiB
C

/**
******************************************************************************
* @file radio_board_if.h
* @author YunHorn Technology Limited Application Team
* @brief Header for Radio interface configuration
******************************************************************************
* @attention
*
* Copyright (c) 2023 YunHorn Technology Limited.
* All rights reserved.</center></h2>
*
* This software component is licensed by ST under Ultimate Liberty license
* SLA0044, the "License"; You may not use this file except in compliance with
* the License. You may obtain a copy of the License at:
* www.st.com/SLA0044
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef RADIO_BOARD_IF_H
#define RADIO_BOARD_IF_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "platform.h"
/* USER CODE BEGIN include */
/* USER CODE END include */
/* Exported defines ----------------------------------------------------------*/
// #ifdef MX_BOARD_PSEUDODRIVER
#define YUNHORN_STS_WLE5CCxx
// #endif /* MX_BOARD_PSEUDODRIVER */
#if defined(USE_BSP_DRIVER)
/* code generated by MX does not support BSP */
/* In order to use BSP driver, add the correspondent files in the IDE workspace */
/* and define USE_BSP_DRIVER in the preprocessor definitions or in platform.h */
#define RBI_CONF_RFO_LP_HP RADIO_CONF_RFO_LP_HP
#define RBI_CONF_RFO_LP RADIO_CONF_RFO_LP
#define RBI_CONF_RFO_HP RADIO_CONF_RFO_HP
#elif defined(YUNHORN_STS_WLE5CCxx)
#define RBI_CONF_RFO_LP_HP 0
#define RBI_CONF_RFO_LP 1
#define RBI_CONF_RFO_HP 2
#define YUNHORN_STS_RF_CHANNEL_SWITCH 1
#else
/* USER CODE BEGIN Board Definition */
#error user to provide its board definitions
/* USER CODE END Board Definition */
#endif /* USE_BSP_DRIVER || YUNHORN_STS_WLE5CCxx */
#if defined(USE_BSP_DRIVER)
/* code generated by MX does not support BSP */
/* In order to use BSP driver, add the correspondent files in the IDE workspace */
/* and define USE_BSP_DRIVER in the preprocessor definitions or in platform.h */
#elif defined(YUNHORN_STS_WLE5CCxx)
/* Indicates the type of switch between the ones proposed by CONFIG Constants
*/
#if defined(YUNHORN_STS_RF_CHANNEL_SWITCH)
#define RBI_CONF_RFO RBI_CONF_RFO_HP
#else
#define RBI_CONF_RFO RBI_CONF_RFO_LP_HP
#endif
/* Radio maximum wakeup time (in ms) */
#define RF_WAKEUP_TIME 10U
/* Indicates whether or not TCXO is supported by the board
* 0: TCXO not supported
* 1: TCXO supported
*/
#define IS_TCXO_SUPPORTED 0U
/* Indicates whether or not DCDC is supported by the board
* 0: DCDC not supported
* 1: DCDC supported
*/
#define IS_DCDC_SUPPORTED 1U
#else
/* USER CODE BEGIN Exported Parameters */
#error user to provide its board definitions
/* USER CODE END Exported Parameters */
#endif /* USE_BSP_DRIVER || MX_NUCLEO_WL55JC1 */
#if defined(USE_BSP_DRIVER)
/* code generated by MX does not support BSP */
/* In order to use BSP driver, add the correspondent files in the IDE workspace */
/* and define USE_BSP_DRIVER in the preprocessor definitions or in platform.h */
#elif defined(YUNHORN_STS_WLE5CCxx)
#if defined(YUNHORN_STS_RF_CHANNEL_SWITCH)
#define RF_SW_CTRL1_PIN GPIO_PIN_8
#define RF_SW_CTRL1_GPIO_PORT GPIOB
#define RF_SW_CTRL1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
#define RF_SW_CTRL1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
#define RF_SW_CTRL2_PIN GPIO_PIN_13
#define RF_SW_CTRL2_GPIO_PORT GPIOC
#define RF_SW_CTRL2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
#define RF_SW_CTRL2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
#else
#define RF_SW_CTRL3_PIN GPIO_PIN_3
#define RF_SW_CTRL3_GPIO_PORT GPIOC
#define RF_SW_CTRL3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
#define RF_SW_CTRL3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
#define RF_SW_CTRL1_PIN GPIO_PIN_4
#define RF_SW_CTRL1_GPIO_PORT GPIOC
#define RF_SW_CTRL1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
#define RF_SW_RX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
#define RF_SW_CTRL2_PIN GPIO_PIN_5
#define RF_SW_CTRL2_GPIO_PORT GPIOC
#define RF_SW_CTRL2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
#define RF_SW_CTRL2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
#endif
/* To be checked vs TCXO management in RCC config */
#define RF_TCXO_VCC_PIN GPIO_PIN_0
#define RF_TCXO_VCC_GPIO_PORT GPIOB
#define RF_TCXO_VCC_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
#define RF_TCXO_VCC_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
#else
/* USER CODE BEGIN Exported PinMapping */
#error user to provide its board definitions
/* USER CODE END Exported PinMapping */
#endif /* USE_BSP_DRIVER || YUNHORN_STS_WLE5CCxx */
/* USER CODE BEGIN Exported_Defines */
/* USER CODE END Exported_Defines */
/* Exported types ------------------------------------------------------------*/
#if defined(USE_BSP_DRIVER)
/* code generated by MX does not support BSP */
/* In order to use BSP driver, add the correspondent files in the IDE workspace */
/* and define USE_BSP_DRIVER in the preprocessor definitions or in platform.h */
typedef enum
{
RBI_SWITCH_OFF = RADIO_SWITCH_OFF,
RBI_SWITCH_RX = RADIO_SWITCH_RX,
RBI_SWITCH_RFO_LP = RADIO_SWITCH_RFO_LP,
RBI_SWITCH_RFO_HP = RADIO_SWITCH_RFO_HP,
} RBI_Switch_TypeDef;
#elif defined(YUNHORN_STS_WLE5CCxx)
typedef enum
{
RBI_SWITCH_OFF = 0,
RBI_SWITCH_RX = 1,
RBI_SWITCH_RFO_LP = 2,
RBI_SWITCH_RFO_HP = 3,
} RBI_Switch_TypeDef;
typedef enum
{
RBI_RFO_LP_MAXPOWER = 0,
RBI_RFO_HP_MAXPOWER = 1,
} RBI_RFOMaxPowerConfig_TypeDef;
#else
/* USER CODE BEGIN Exported Types */
#error user to provide its board definitions
/* USER CODE END Exported Types */
#endif /* USE_BSP_DRIVER || YUNHORN_STS_WLE5CCxx */
/* USER CODE BEGIN ET */
/* USER CODE END ET */
/* Exported constants --------------------------------------------------------*/
/* USER CODE BEGIN EC */
/* USER CODE END EC */
/* External variables --------------------------------------------------------*/
/* USER CODE BEGIN EV */
/* USER CODE END EV */
/* Exported macro ------------------------------------------------------------*/
/* USER CODE BEGIN EM */
/* USER CODE END EM */
/* Exported functions ------------------------------------------------------- */
/**
* @brief Init Radio Switch
* @return BSP status
*/
int32_t RBI_Init(void);
/**
* @brief DeInit Radio Switch
* @return BSP status
*/
int32_t RBI_DeInit(void);
/**
* @brief Configure Radio Switch.
* @param Config: Specifies the Radio RF switch path to be set.
* This parameter can be one of following parameters:
* @arg RADIO_SWITCH_OFF
* @arg RADIO_SWITCH_RX
* @arg RADIO_SWITCH_RFO_LP
* @arg RADIO_SWITCH_RFO_HP
* @return BSP status
*/
int32_t RBI_ConfigRFSwitch(RBI_Switch_TypeDef Config);
/**
* @brief Return Board Configuration
* @retval RBI_CONF_RFO_LP_HP
* @retval RBI_CONF_RFO_LP
* @retval RBI_CONF_RFO_HP
*/
int32_t RBI_GetTxConfig(void);
/**
* @brief Get Radio Wake Time
* @return the wake upt time in ms
*/
int32_t RBI_GetWakeUpTime(void);
/**
* @brief Get If TCXO is to be present on board
* @note never remove called by MW,
* @retval return 1 if present, 0 if not present
*/
int32_t RBI_IsTCXO(void);
/**
* @brief Get If DCDC is to be present on board
* @note never remove called by MW,
* @retval return 1 if present, 0 if not present
*/
int32_t RBI_IsDCDC(void);
/**
* @brief Get RFO Max Power Config on board
* @note never remove called by MW,
* @retval return 15 dBm for low power, 22 dBm for high power
*/
int32_t RBI_GetRFOMaxPowerConfig(RBI_RFOMaxPowerConfig_TypeDef Config);
/* USER CODE BEGIN EFP */
/* USER CODE END EFP */
#ifdef __cplusplus
}
#endif
#endif /* RADIO_BOARD_IF_H */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/