Files
kunlun/plc/halphy/inc/phy_tools.h
2024-09-28 14:24:04 +08:00

187 lines
5.6 KiB
C
Executable File

/****************************************************************************
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
be copied by any method or incorporated into another program without
the express written consent of Aerospace C.Power. This Information or any portion
thereof remains the property of Aerospace C.Power. The Information contained herein
is believed to be accurate and Aerospace C.Power assumes no responsibility or
liability for its use in any way and conveys no license or title under
any patent or copyright and makes no representation or warranty that this
Information is free from patent or copyright infringement.
****************************************************************************/
#ifndef __PHY_TOOLS_H
#define __PHY_TOOLS_H
#include "phy_bb.h"
#include "phy_phase.h"
#include "phy_ada_dump.h"
#include "hw_phy_api.h"
#ifdef __cplusplus
extern "C" {
#endif
#define PHY_DUMP_PKT_RSSI_THD (40)
#define ADA_TONE_CYCLE_NUM (1024)
#define ADA_DUMP_INIT_DLY_CNT (12000)
#define VPP_CNT_VOL_A (6)
#define VPP_CNT_VOL_B (12482)
#define TONE_MAX_NUM (1536)
#define MAC_TX_BACK_MAX_LEN (48)
#define MAC_CSI_BACK_MAX_LEN (1536)
#define PHY_CSI_DUMP_TRIG_FC_OK (1 << 0)
#define PHY_CSI_DUMP_TRIG_FC_FAIL (1 << 1)
#define PHY_CSI_DUMP_TRIG_FC_THD (1 << 2)
#define TICKS_UNIT_MS (25000) // 1000us / 0.04us
#define BW_LOW (1000000)
#define BW_HIGH (30000000)
#define ADA_SAMP_FREQ (75000000)
#define SNR_FREQ_NUM (1)
#define SNR_NOISE_NUM (3)
#define PHY_TX_TONE_REST_TIME (1000)
/* freq@MHz */
#define TONE_ID_CAL(freq) (freq*1024/75)
/* ftm cmd tx back content */
typedef struct _mac_tx_back {
/* packet len*/
uint8_t len;
/* packrt content array */
uint8_t info_arry[MAC_TX_BACK_MAX_LEN];
} mac_tx_back_t;
typedef struct _mac_csi_back {
/* packet len*/
uint16_t len;
/* packrt content array */
uint16_t *info_arry;
} mac_csi_back_t;
/* dump condition */
typedef struct _csi_est_dump_cond {
uint8_t trig_id;
uint8_t para;
uint8_t nid;
} csi_est_dump_cond;
/* dump condition */
typedef struct _phy_trig_dump_cond {
/* phy trig id */
uint8_t trig_id :8;
/* trig level */
uint32_t thd :16,
/* source tei */
stei :12,
resv1 :4;
/* trig nid */
uint32_t nid :24,
/* destination tei */
dtei :3,
/* enable stei filter */
stei_en :1,
/* enable dtei filter */
dtei_en :1,
/* enable nid filter */
nid_en :1,
resv2 :2;
} phy_trig_dump_cond;
/**
*@brief ada_common_init.
* initialize the common configrations for dump phy raw data.
*
*@param tone_id [tone number.]
*@param b_size [ada bufer size.]
*@param s_size [ada sample size.]
*@exception [none.]
*@return [none.]
*/
void ada_common_init(uint16_t tone_id, uint32_t b_size, uint32_t s_size);
/**
*@brief phy_dump_from_ada.
* The API function is designed for dump adc raw data. You can choose
* dump mode such as ada origin dump or trig fc.
*
*@param b_size [buffer size to dump, uint is 1 word(4 byte)]
*@param s_size [sample size to dump, uint is 1 word(4 byte)]
*@param tone_id [tone num if loopback.]
*@param mode [AUTO, FORCE, PHY etc.]
*@param phase [rx phase such as A/B/C/ALL.]
*@param trig_offset [trig address after dump.]
*@param adc_buf [ada dump buffer pointer.]
*@param speed [dump speed.]
*@param trig_cond [trig dump condition.]
*@exception [none.]
*@return [ERR_OK, others ERR_FAIL.]
*/
int phy_dump_from_ada(uint32_t b_size, \
uint32_t s_size, \
uint16_t tone_id, \
ADC_DUMP_MODE mode, \
PHY_PHASE_OVR_ID phase, \
uint32_t *trig_offset, \
uint8_t *adc_buf, \
uint32_t speed, \
phy_trig_dump_cond *trig_cond);
/**
*@brief mac_rx_csi_dump.
* get fft dump raw data depend on fc ok or fail signal.
* there will be a normal tx/rx channel in the system.
*
*@param info [raw data that need return back to caller.]
*@param cond [dump condition, uint8_t trig id and parameter.]
*@param p_num [packets number, send in batches.]
*@exception [none.]
*@return variance [calibrated from csi dump data.]
*/
float mac_rx_csi_dump(mac_csi_back_t *info, \
csi_est_dump_cond *cond, \
uint16_t p_num);
/**
*@brief dumpMem.
* print dump buffer.
*
*@param mem_buf [print buffer pointer.]
*@param st_offset [start offset.]
*@param b_size [buffer size.]
*@exception [none.]
*@return [none.]
*/
void dumpMem(uint8_t *mem_buf, int32_t st_offset, uint32_t b_size);
/**
*@brief phy_fft_flash_dump.
* write all the dump data to flash and read after reset.
*
*@param buf_ptr [buffer pointer.]
*@exception [none.]
*@return [none.]
*/
uint32_t phy_fft_flash_dump(uint32_t *buf_ptr);
/**
*@brief iot_phy_auto_tone_tx_start.
*
* start generating tone .
*
*@param tx_tone_ptr [iot_phy_tone_param_ctxt_t.]
*@exception [none.]
*@return [none.]
*/
void phy_auto_tone_tx_start(iot_phy_tone_param_ctxt_t *tx_tone_ptr);
#ifdef __cplusplus
}
#endif
#endif