699 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			699 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /****************************************************************************
 | |
| 
 | |
| 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 HW_PHY_API_H
 | |
| #define HW_PHY_API_H
 | |
| 
 | |
| #include "os_types.h"
 | |
| #include "iot_errno_api.h"
 | |
| #include "iot_queue_api.h"
 | |
| #include "iot_config_api.h"
 | |
| #include "phy_bb.h"
 | |
| #include "phy_chn.h"
 | |
| #include "os_timer.h"
 | |
| #include "plc_chn_est.h"
 | |
| #include "iot_pkt_api.h"
 | |
| #include "phy_data.h"
 | |
| #include "phy_overstress.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #define IOT_PHY_FFT_BUF_LEN                 (512)
 | |
| #define PHY_CHN_EST_PRE_DET_CNT             (5)
 | |
| 
 | |
| /* calibrate linear snr within -/+ 2.5dB*/
 | |
| #define PHY_SNR_LINEAR_CAL(SNR_RAW) \
 | |
|     (((SNR_RAW) * 11453 - 13019) / 10000)
 | |
| #define PHY_SNR_CAL_TH                      (10)
 | |
| 
 | |
| //kl3 SPUR:increase tgt pwr get bigger gain
 | |
| #define PHY_AGC_RCV_TGT_PWR_SG_SPUR         (109)
 | |
| 
 | |
| /* 200k spike rx target power uint:dbuv */
 | |
| #define PHY_AGC_RCV_TGT_PWR_200K_SPIKE      (118)
 | |
| 
 | |
| #define PHY_AGC_RCV_TGT_PWR_SG              (103)
 | |
| 
 | |
| #define PHY_AGC_RCV_TGT_PWR_GP              (105)
 | |
| 
 | |
| #define PHY_AGC_JUDGE_END_TONE              (120)
 | |
| 
 | |
| #define PHY_AGC_ACC_STEP_192P               (0)
 | |
| #define PHY_AGC_ACC_STEP_384P               (1)
 | |
| #define PHY_AGC_ACC_STEP_768P               (2)
 | |
| #define PHY_AGC_ACC_STEP_1536P              (3)
 | |
| #define PHY_AGC_ACC_STEP_3072P              (4)
 | |
| #define PHY_AGC_ACC_STEP_6144P              (5)
 | |
| 
 | |
| #define     L0      (0)
 | |
| #define     L1      (1)
 | |
| #define     L2      (2)
 | |
| #define     L3      (3)
 | |
| #define     PEAK    (4)
 | |
| #define     R0      (5)
 | |
| #define     R1      (6)
 | |
| #define     R2      (7)
 | |
| #define     R3      (8)
 | |
| 
 | |
| /* delay for chip hang, unit ms */
 | |
| #define CHIP_HANG_DELAY    15
 | |
| 
 | |
| #define PHY_GET_NF()                        (g_phy_ctxt.dep.nf)
 | |
| #define phy_busy_wait(cycle) \
 | |
|     do { \
 | |
|         uint32_t cnt = 0; \
 | |
|         while (cnt < cycle) {cnt++;} \
 | |
|     } while(0)
 | |
| 
 | |
| /* todo: replace refs to rx_mpdu_start.h ? */
 | |
| typedef struct _iot_phy_info{
 | |
|     /* phy info start */
 | |
|     uint8_t     adc_power;
 | |
|     uint8_t     agc_tbl_entry;
 | |
|     uint8_t     est_dc;
 | |
|     int8_t      est_ppm; /* int8_t type */
 | |
|     int8_t      avg_snr;
 | |
|     uint8_t     pream_sym_detect;
 | |
|     uint8_t     remain_phase_frac;
 | |
|     uint8_t     max_spur_id;
 | |
|     /* phy info end */
 | |
| } iot_phy_info_t;
 | |
| 
 | |
| typedef enum {
 | |
|     PHY_MODE_NORMAL     = 0,
 | |
|     PHY_MODE_TEST       = 1,
 | |
|     PHY_MODE_END        = 2,
 | |
| } phy_work_mode_id;
 | |
| 
 | |
| typedef struct _phy_tx_pwr_cfg_tbl{
 | |
|     uint8_t dig_tx_factor :5,
 | |
|         ana_tx_gain :3;
 | |
| } phy_tx_pwr_cfg_tbl_t;
 | |
| 
 | |
| typedef uint32_t (*iot_phy_chn_tx_cb)(void);
 | |
| 
 | |
| typedef struct _phy_chn_est{
 | |
|     uint8_t spur_8m_done_flag : 1,
 | |
|         spur_3m_done_flag : 1,
 | |
|         spur_2m_done_flag : 1,
 | |
|         pulse_done_flag : 1,
 | |
|         bcn_check_cnt : 4;
 | |
| } phy_chn_est_t;
 | |
| 
 | |
| typedef struct _iot_phy_tone_param_ctxt_t {
 | |
|     /* tone start flag */
 | |
|     uint32_t tone_start : 1,
 | |
|         /* retry counter */
 | |
|         rty_cnt : 31;
 | |
|     /* tone timer id */
 | |
|     timer_id_t tone_timer;
 | |
|     timer_id_t auto_tone_timer;
 | |
|     timer_id_t rest_tone_timer;
 | |
|     /* start tone */
 | |
|     uint16_t start_tone;
 | |
|     /* end tone */
 | |
|     uint16_t end_tone;
 | |
|     /* current tone */
 | |
|     uint16_t curent_tone;
 | |
|     /* tone tx interval time value, unit ms  */
 | |
|     uint16_t tx_intval_time_ms;
 | |
| } iot_phy_tone_param_ctxt_t;
 | |
| 
 | |
| /* global ctxt */
 | |
| typedef struct _iot_phy_plat_indep_ctxt {
 | |
|     /* band info 44 bytes */
 | |
|     iot_phy_chn_ctxt_t chn;
 | |
| 
 | |
|     /* tx tone param 24bytes */
 | |
|     iot_phy_tone_param_ctxt_t tx_tone;
 | |
| 
 | |
|     /* phy overstress context 12 bytes */
 | |
|     phy_overstress_ctxt_t ovs_ctxt;
 | |
| 
 | |
|     iot_phy_chn_tx_cb phy_chn_tx_cb;
 | |
| 
 | |
|     /* tx pwr reduce dB */
 | |
|     uint32_t tx_pwr_reduce_db : 8,
 | |
|         /* target power */
 | |
|         tgt_pwr               : 8,
 | |
|         /* tx psd fix */
 | |
|         tx_pwr_psd_fix_db     : 6,
 | |
|         /* work mode */
 | |
|         work_mode             : 1,
 | |
|         /* notch filter enable */
 | |
|         notch_filter_en       : 1,
 | |
|         /* spike find */
 | |
|         spike_shift_en        : 1,
 | |
|         /* det tone extend */
 | |
|         det_tone_extend_en    : 1,
 | |
|         /* current pm status */
 | |
|         pm_sts                : 2,
 | |
|         sw_agc_force_off      : 1,
 | |
|         tx_pga                : 2,
 | |
|         cert_force_spike      : 1;
 | |
| 
 | |
|     /* channel estimate 1 byte */
 | |
|     phy_chn_est_t chn_est;
 | |
|     /* record nncco fc */
 | |
|     uint32_t nn_cco_fc[4];
 | |
| } iot_phy_plat_indep_ctxt_t;
 | |
| 
 | |
| /* phy total ctxt entry */
 | |
| typedef struct _phy_ctxt {
 | |
|     iot_phy_plat_dep_ctxt_t dep;
 | |
|     iot_phy_plat_indep_ctxt_t indep;
 | |
| } phy_ctxt_t;
 | |
| 
 | |
| extern phy_ctxt_t g_phy_ctxt;
 | |
| 
 | |
| /* phy busy id */
 | |
| typedef enum {
 | |
|     PHY_BUSY_TX,
 | |
|     PHY_BUSY_RX,
 | |
|     PHY_BUSY_DUMP,
 | |
|     PHY_BUSY_MAX
 | |
| } PHY_BUSY_ID;
 | |
| 
 | |
| /**
 | |
|  *@brief phy_info_check_entry.
 | |
|  *
 | |
|  * Phy API called by MAC task to check channel state.
 | |
|  *
 | |
|  *@param phy_info           [mpdu start ptr]
 | |
|  *@param fc                 [fc ptr]
 | |
|  *@param role               [CCO or STA or IIC.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [ERR_OK or ERR_FAIL.]
 | |
|  */
 | |
| uint32_t phy_info_check_entry(void *mpdu_st,
 | |
|         void *fc, uint32_t role, uint8_t mt_mode_sel);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_check_spur_cert_handle.
 | |
|  *
 | |
|  * some special handle to cert chck spur.
 | |
|  *
 | |
|  *@param notch_alpha        [notch alpha]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [void]
 | |
|  */
 | |
| void phy_check_spur_cert_handle(uint16_t notch_alpha);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_work_mode_set.
 | |
|  *
 | |
|  * Phy API called by MAC task to set current test mode.
 | |
|  *
 | |
|  *@param mode               [normal or test mode.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [ERR_OK or ERR_FAIL.]
 | |
|  */
 | |
| uint32_t phy_work_mode_set(phy_work_mode_id mode);
 | |
| 
 | |
| /**
 | |
|  *@brief iot_phy_chn_dump_start.
 | |
|  *
 | |
|  * start ada dump with upper parameters and callback data output API.
 | |
|  *
 | |
|  *@param dump_cfg           [dump parameters.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [0 sucess and other fail.]
 | |
|  */
 | |
| uint32_t iot_phy_chn_dump_start(iot_phy_chn_dump_rt_cfg_t *dump_cfg);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_chn_est_ai_by_time.
 | |
|  *
 | |
|  * This api can be used for phy channel estimate when phy init or reinit.
 | |
|  * Also, the upper layer can redo it if channel changed dynmaically. Pls
 | |
|  * check the return cnt to fit your expectation and avoid block. The input
 | |
|  * parameter is period with ms unit.
 | |
|  *
 | |
|  *@param time_ms            [expected time with the unit of ms.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [successful counter.]
 | |
|  */
 | |
| uint32_t phy_chn_est_ai_by_time(uint32_t time_ms);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_chn_est_pre_detect.
 | |
|  *
 | |
|  * do channel estimate after phy init.
 | |
|  * there'll be very usrful to receive beacon with big attenuation.
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_chn_est_pre_detect(void);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_rx_scan_fft_dump.
 | |
|  *
 | |
|  *for collecting fft dump data by sending multiple packets,
 | |
|  *each data packet has a unique packet number, sending completes
 | |
|  *until up to total packet number.
 | |
|  *
 | |
|  *@param buf_ptr            [csi data from csi buf.]
 | |
|  *@param rx_gain            [get uint8_t rx_gain parameter for fft dump.]
 | |
|  *@param cur_pnum           [current packet number, sent partially.]
 | |
|  *@param total_pnum         [total packets number to transmit.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [uint32_t err_ok.]
 | |
|  */
 | |
| uint32_t phy_rx_scan_fft_dump(uint32_t *buf_ptr, int8_t rx_gain,\
 | |
|         uint16_t cur_pnum, uint16_t total_pnum);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_rx_snr_cal.
 | |
|  *
 | |
|  * This API will get the max value between time domain snr and frequency
 | |
|  * domain snr. The frequency snr must be calibrated firstly.
 | |
|  *
 | |
|  *@param phy_info           [phy info pointer.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [snr.]
 | |
| */
 | |
| int8_t phy_rx_snr_cal(void *phy_info, uint8_t rx_phase);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_rx_snr_cal.
 | |
|  *
 | |
|  * snr will mapping to -10 ~ 90 dB. clip to 90 if snr > 90 dB and clip to
 | |
|  * -10 dB if snr < -10 dB.
 | |
|  *
 | |
|  *@param raw_snr            [snr raw data.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [mapping snr.]
 | |
|  */
 | |
| int8_t phy_snr_mapping_minus10_90(int8_t raw_snr);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_fd_short_band_rms_get
 | |
|  *  get current fd short band rms value.
 | |
|  *@param valid_tone_num     [valid tone number.]
 | |
|  *@param para_int           [rms integer.]
 | |
|  *@param para_frac          [rms frac.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_fd_short_band_rms_get(uint32_t valid_tone_num, uint8_t *para_int, uint8_t *para_frac);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_dbg_sts_print.
 | |
|  *
 | |
|  *  print rx cnt, tx cnt and status registers.
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_dbg_sts_print();
 | |
| 
 | |
| /**
 | |
|  *@brief phy_chn_nf_get.
 | |
|  *
 | |
|  *  get current noise floor from phy global value.
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [noise floor.]
 | |
|  */
 | |
| uint8_t phy_chn_nf_get(void);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_chn_tx_power_get.
 | |
|  *
 | |
|  *  get current hplc tx power from phy global value.
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [noise floor.]
 | |
|  */
 | |
| uint8_t phy_chn_tx_power_get(void);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_idle_set.
 | |
|  *
 | |
|  *  turn off phy clk.
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
|  void phy_idle_set();
 | |
| 
 | |
| /**
 | |
|  *@brief phy_idle_clr.
 | |
|  *
 | |
|  *  turn on phy clk.
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
|  void phy_idle_clr();
 | |
| 
 | |
| /**
 | |
|  *@brief phy_pkt_found_flag_get.
 | |
|  *
 | |
|  *  check if packet received .
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [true or others false.]
 | |
|  */
 | |
| bool_t phy_pkt_found_flag_get(void);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_pkt_found_flag_clr.
 | |
|  *
 | |
|  *  clear the global packet received flag.
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_pkt_found_flag_clr(void);
 | |
| 
 | |
| 
 | |
| /**
 | |
|  *@brief phy_cfg_band_filter_gpio.
 | |
|  *
 | |
|  *
 | |
|  *@param  protocol_band_id  [plc band id.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_cfg_band_filter_gpio(uint8_t protocol_band_id);
 | |
| 
 | |
| 
 | |
| /**
 | |
|  *@brief phy_init_band_filter_gpio.
 | |
|  *
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_init_band_filter_gpio();
 | |
| 
 | |
| /**
 | |
|  *@brief phy_rx_tgt_pwr_set.
 | |
|  *
 | |
|  * set rx target power of global phy ctxt.
 | |
|  *
 | |
|  *@param pwr                [rx target power.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_rx_tgt_pwr_set(uint8_t pwr);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_rx_tgt_pwr_get.
 | |
|  *
 | |
|  * get rx target power of global phy ctxt.
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| uint8_t phy_rx_tgt_pwr_get();
 | |
| 
 | |
| /**
 | |
|  *@brief phy_spike_shift_en_set.
 | |
|  *
 | |
|  * set spike shift en flag of global phy ctxt.
 | |
|  *
 | |
|  *@param en                 [enable.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_spike_shift_en_set(bool_t en);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_spike_shift_en_get.
 | |
|  *
 | |
|  * get spike shift en flag of global phy ctxt.
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| bool_t phy_spike_shift_en_get();
 | |
| 
 | |
| /**
 | |
|  *@brief phy_det_tone_ext_en_set.
 | |
|  *
 | |
|  * set detect tone ext en flag of global phy ctxt.
 | |
|  *
 | |
|  *@param en                 [enable.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_det_tone_ext_en_set(bool_t en);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_det_tone_ext_en_get.
 | |
|  *
 | |
|  * get detect tone ext en flag of global phy ctxt.
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| bool_t phy_det_tone_ext_en_get();
 | |
| 
 | |
| /**
 | |
|  *@brief phy_rise_pwr_flag_set.
 | |
|  *
 | |
|  * set rise power flag of global phy ctxt.
 | |
|  *
 | |
|  *@param en                 [enable.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_rise_pwr_flag_set(bool_t en);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_get_mp_mode.
 | |
|  *
 | |
|  * get mp mode
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [true or flase.]
 | |
|  */
 | |
| uint32_t phy_get_fw_mode(void);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_swagc_set.
 | |
|  *
 | |
|  * disable or enable sw-agc.
 | |
|  *
 | |
|  *@param en                 [true for enable and false for disable.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [0 sucess and other fail.]
 | |
|  */
 | |
| uint32_t phy_swagc_set(bool_t en);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_busy_get.
 | |
|  *
 | |
|  * get dump busy flag from global phy ctxt.
 | |
|  *
 | |
|  *@param id                 [busy status id.]
 | |
|  *@param phy_ctxt           [ctxt pointer.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [true for busy and false for idle.]
 | |
|  */
 | |
| bool_t phy_busy_get(void *phy_ctxt, PHY_BUSY_ID id);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_ctxt_get.
 | |
|  *
 | |
|  * get phy global ctxt pointer.
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [true for busy and false for idle.]
 | |
|  */
 | |
| phy_ctxt_t *phy_ctxt_get();
 | |
| 
 | |
| /**
 | |
|  *@brief phy_ctxt_get.
 | |
|  *
 | |
|  * detect big spur or pulse in current rx patch.
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [true or false.]
 | |
|  */
 | |
| bool_t phy_high_noise_sts_get();
 | |
| 
 | |
| /**
 | |
|  *@brief phy_csma_ignore_cca.
 | |
|  *
 | |
|  * force csma tx enable all the time without regard for cca detect.
 | |
|  *
 | |
|  *@param                    [en]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [true for enable and false for disable.]
 | |
|  */
 | |
| void phy_csma_ignore_cca(bool_t en);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_force_ana_td_power. force fd/ana power from reg
 | |
|  *
 | |
|  *@param                    [value.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [0]
 | |
|  */
 | |
| uint32_t phy_force_ana_td_power(uint32_t value);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_set_tx_pwr_td. set td power
 | |
|  *
 | |
|  *@param                    [value: td power]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [0]
 | |
|  */
 | |
| uint32_t phy_set_tx_pwr_td(uint32_t value);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_get_tx_pwr_td. get td power
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return uint8_t           [td pwr]
 | |
|  */
 | |
| uint8_t phy_get_tx_pwr_td(void);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_set_tx_pwr_ana. set ana power
 | |
|  *
 | |
|  *@param                    [value: ana power]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [0]
 | |
|  */
 | |
| uint32_t phy_set_tx_pwr_ana(uint32_t value);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_set_tx_pwr_fd_frac. set fd frac power
 | |
|  *
 | |
|  *@param                    [value: fd frac power]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [0]
 | |
|  */
 | |
| uint32_t phy_set_tx_pwr_fd_frac(uint32_t value);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_set_tx_pwr_fd_int. set fd int power
 | |
|  *
 | |
|  *@param                    [value: fd int power]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [0]
 | |
|  */
 | |
| uint32_t phy_set_tx_pwr_fd_int(uint32_t value);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_cert_is_hw_agc.
 | |
|  *
 | |
|  * check if hw agc should be applied for PHY transparent transfer test mode
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [1 for enable and 0 for disable.]
 | |
|  */
 | |
| uint8_t phy_cert_is_hw_agc();
 | |
| 
 | |
| /**
 | |
|  *@brief register_phy_call_mac_bbai_cb.
 | |
|  *
 | |
|  * Register callback function for phy call mac api.
 | |
|  *
 | |
|  *@param cb                 [callback function from mac]
 | |
|  *@exception                [time_ms.]
 | |
|  *@return                   [ret.]
 | |
|  */
 | |
| typedef uint32_t (*phy_call_mac_func_cb_t)(uint32_t time_ms);
 | |
| void register_phy_call_mac_bbai_cb(phy_call_mac_func_cb_t cb);
 | |
| 
 | |
| /**
 | |
|  *@brief register_phy_get_cert_mode_cb.
 | |
|  *
 | |
|  * Register callback function for phy get cert mode.
 | |
|  *
 | |
|  *@param cb                 [callback function from mac]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [cert mode.]
 | |
|  */
 | |
| typedef uint8_t (*phy_get_cert_mode_cb_t)();
 | |
| void register_phy_get_cert_mode_cb(phy_get_cert_mode_cb_t cb);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_updata_nf_of_bbai() updata nf of bbai
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [none.]
 | |
|  */
 | |
| void phy_updata_nf_of_bbai();
 | |
| 
 | |
| /**
 | |
|  *@brief phy_get_nf_of_bbai() get nf of bbai
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [bbai nf]
 | |
|  */
 | |
| uint32_t phy_get_nf_of_bbai();
 | |
| 
 | |
| /**
 | |
|  *@brief phy_channel_est_request()  phy channel est request
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [void]
 | |
|  */
 | |
| void phy_channel_est_request(void);
 | |
| 
 | |
| /**
 | |
|  *@brief phy_cert_check_spike() phy cert mode check spike
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [void]
 | |
|  */
 | |
| void phy_cert_check_spike();
 | |
| 
 | |
| /**
 | |
|  *@brief phy_is_sta_role() judge whether the device is STA.
 | |
|  *
 | |
|  *@param                    [none.]
 | |
|  *@exception                [none.]
 | |
|  *@return                   [0: not sta, 1: is sta]
 | |
|  */
 | |
| uint32_t phy_is_sta_role();
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif
 | |
| 
 |