154 lines
4.5 KiB
C
154 lines
4.5 KiB
C
/**
|
|
****************************************************************************************
|
|
*
|
|
* @file dbg_iqgen.h
|
|
*
|
|
* @brief I&Q Samples Generator API.
|
|
*
|
|
* Copyright (C) RivieraWaves 2018
|
|
*
|
|
*
|
|
****************************************************************************************
|
|
*/
|
|
|
|
#ifndef DBG_IQGEN_H_
|
|
#define DBG_IQGEN_H_
|
|
|
|
/**
|
|
****************************************************************************************
|
|
* @addtogroup DBGIQGEN
|
|
* @ingroup IQ
|
|
* @brief Debug SW - I&Q samples Generator.
|
|
*
|
|
* @{
|
|
****************************************************************************************
|
|
*/
|
|
|
|
/*
|
|
* INCLUDE FILES
|
|
****************************************************************************************
|
|
*/
|
|
|
|
#include "rwip_config.h"
|
|
|
|
#if BLE_IQ_GEN
|
|
|
|
#include "reg_iqgen.h" // I&Q sample generator register functions
|
|
|
|
/*
|
|
* CONSTANT DEFINITIONS
|
|
****************************************************************************************
|
|
*/
|
|
|
|
/// Maximum number of supported antenna patterns
|
|
#define DBG_IQGEN_MAX_ANTENNA (8)
|
|
|
|
/// bit defintitions for debug configuration
|
|
#define DBG_IQGEN_PATTERN_MODE_BIT (1<<0)
|
|
#define DBG_IQGEN_TIMING_MODE_BIT (1<<1)
|
|
#define DBG_IQGEN_ANT_ID_MODE_BIT (2<<1)
|
|
|
|
|
|
/// I&Q samples generation control
|
|
enum dbg_iqgen_ctnl
|
|
{
|
|
/// I&Q samples up count
|
|
DBG_IQGEN_UPCOUNT = 0,
|
|
/// I&Q samples down count
|
|
DBG_IQGEN_DOWNCOUNT = 1,
|
|
/// I&Q samples fixed value
|
|
DBG_IQGEN_FIXEDVAL = 2,
|
|
/// I&Q samples PRBS
|
|
DBG_IQGEN_PRBSPATTERN = 3,
|
|
};
|
|
|
|
/// I&Q samples generation antenna sweep pattern
|
|
enum dbg_iqgen_antenna_pattern
|
|
{
|
|
/// antenna up-sweep
|
|
DBG_IQGEN_ANT_UPSWEEP = 0,
|
|
/// antenna up-down sweep
|
|
DBG_IQGEN_ANT_UPDNSWEEP = 1,
|
|
};
|
|
|
|
/// I&Q samples generation timing mode
|
|
enum dbg_iqgen_timing_mode
|
|
{
|
|
/// 1us switching/sampling interval
|
|
DBG_IQGEN_1US_INTV = 0,
|
|
/// 2us switching/sampling interval
|
|
DBG_IQGEN_2US_INTV = 1,
|
|
};
|
|
|
|
/// antenna switch enable mode
|
|
enum dbg_iqgen_antenna_switch_mode
|
|
{
|
|
/// Accepts antenna ID switching inputs from baseband
|
|
DBG_IQGEN_BASEBAND_SWITCHING = 0,
|
|
/// Antenna switching is internally enabled
|
|
DBG_IQGEN_INTERNAL_SWITCHING = 1,
|
|
|
|
};
|
|
|
|
|
|
/*
|
|
* VARIABLE DECLARATION
|
|
****************************************************************************************
|
|
*/
|
|
|
|
/*
|
|
* FUNCTION DECLARATIONS
|
|
****************************************************************************************
|
|
*/
|
|
|
|
/**
|
|
****************************************************************************************
|
|
* @brief Enable I&Q sample generator
|
|
*
|
|
* @param[in] nb_antenna Number of antenna (valid range 1-8)
|
|
* @param[in] pattern_mode Antenna sweep pattern (@see enum dbg_iqgen_antenna_pattern)
|
|
* @param[in] timing_mode Timing interval mode (@see enum dbg_iqgen_timing_mode)
|
|
* @param[in] ant_switch_mode Antenna switching mode (@see enum dbg_iqgen_antenna_switch_mode)
|
|
*
|
|
****************************************************************************************
|
|
*/
|
|
void dbg_iqgen_config_enable(uint8_t nb_antenna, uint8_t pattern_mode, uint8_t timing_mode, uint8_t ant_switch_mode);
|
|
|
|
/**
|
|
****************************************************************************************
|
|
* @brief Disable I&Q sample generator
|
|
*
|
|
****************************************************************************************
|
|
*/
|
|
void dbg_iqgen_disable();
|
|
|
|
/**
|
|
****************************************************************************************
|
|
* @brief Configure I&Q samples for a specific antenna
|
|
*
|
|
* @param[in] antenna ID antenna id (valid range 0-7)
|
|
* @param[in] i_cntl configuration mode for I-samples (@see enum dbg_iqgen_cntl)
|
|
* @param[in] q_cntl configuration mode for Q-samples (@see enum dbg_iqgen_cntl)
|
|
* @param[in] i_val I-samples initial value
|
|
* @param[in] q_val Q-samples initial value
|
|
*
|
|
****************************************************************************************
|
|
*/
|
|
void dbg_iqgen_antenna_config(uint8_t antenna_id, uint8_t i_cntl, uint8_t q_cntl, uint8_t i_val, uint8_t q_val);
|
|
|
|
|
|
/**
|
|
****************************************************************************************
|
|
* @brief I&Q Generator configure
|
|
*
|
|
* @param[in] param configuration structure (@see hci_dbg_iqgen_cfg_cmd)
|
|
****************************************************************************************
|
|
*/
|
|
uint8_t dbg_iqgen_config(struct hci_dbg_iqgen_cfg_cmd const *cfg);
|
|
|
|
#endif //BLE_IQ_GEN
|
|
|
|
/// @} DBGIQGEN
|
|
|
|
#endif // DBG_IQGEN_H_
|