207 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			207 lines
		
	
	
		
			5.3 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_TMAP_H
 | 
						|
#define __PHY_TMAP_H
 | 
						|
 | 
						|
#include "hw_tonemask.h"
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
#define PHY_TMAP_MODU_EN_OFFSET     (3)
 | 
						|
#define PHY_TMAP_TURBO_RATE_OFFSET  (2)
 | 
						|
#define PHY_TMAP_MAX                (128)
 | 
						|
#define PHY_TMAP_TURBO_GI_MAX       (16)
 | 
						|
 | 
						|
// CLK 75MHz mode
 | 
						|
#define FFT_POINT                   (3072)
 | 
						|
#define PB_GI0                      (567)
 | 
						|
#define ALIGN_PARA                  (96)
 | 
						|
#define HPAV_RIFS                   (140)
 | 
						|
#define HPAV_BIFS                   (20)
 | 
						|
 | 
						|
typedef enum _plc_tone_map_modu_t {
 | 
						|
    PHY_MODU_BPSK   = 0,
 | 
						|
    PHY_MODU_QPSK,
 | 
						|
    PHY_MODU_16QAM,
 | 
						|
    PHY_MODU_8QAM,
 | 
						|
    PHY_MODU_64QAM,
 | 
						|
    PHY_MODU_256QAM,
 | 
						|
    PHY_MODU_1024QAM,
 | 
						|
    PHY_MODU_4096QAM
 | 
						|
} plc_tone_map_modu_t;
 | 
						|
 | 
						|
typedef enum _plc_tone_map_turbo_rate_t {
 | 
						|
    PHY_TURBO_RATE_1_2 = 0,
 | 
						|
    PHY_TURBO_RATE_16_21,
 | 
						|
    PHY_TURBO_RATE_16_18
 | 
						|
} plc_tone_map_turbo_rate_t;
 | 
						|
 | 
						|
typedef enum _plc_tone_map_gi_t {
 | 
						|
    PHY_GI_417   = 0,
 | 
						|
    PHY_GI_567,
 | 
						|
    PHY_GI_3534
 | 
						|
} plc_tone_map_gi_t;
 | 
						|
 | 
						|
typedef struct _plc_tmap_rule{
 | 
						|
    uint8_t rule_id;
 | 
						|
    uint8_t en;
 | 
						|
    uint8_t stei;
 | 
						|
    uint8_t dtei;
 | 
						|
    uint8_t tmi;
 | 
						|
} plc_tmap_rule_t;
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 *@brief phy_fft_4096p_init.
 | 
						|
 *
 | 
						|
 *  enable 4096 point fft for high speed modulation.
 | 
						|
 *
 | 
						|
 *@param en                 [true for enable or disable.]
 | 
						|
 *@exception                [none.]
 | 
						|
 *@return                   [none.]
 | 
						|
 */
 | 
						|
void phy_fft_4096p_init(bool_t en);
 | 
						|
 | 
						|
#if SUPPORT_GREEN_PHY
 | 
						|
 | 
						|
/**
 | 
						|
 *@brief phy_tmap_cal.
 | 
						|
 *
 | 
						|
 *  get tone map info from sound data.
 | 
						|
 *
 | 
						|
 *@param sound_data_ptr     [sound data pointer.]
 | 
						|
 *@param tone_map_ptr       [tone map pointer.]
 | 
						|
 *@param start_tone         [start tone.]
 | 
						|
 *@param end_tone           [end tone.]
 | 
						|
 *@param cal_lvl            [calibrate level.]
 | 
						|
 *@exception                [none.]
 | 
						|
 *@return                   [1 for success or other fail.]
 | 
						|
 */
 | 
						|
uint32_t phy_tmap_cal( \
 | 
						|
    uint32_t *sound_data_ptr, \
 | 
						|
    uint32_t *tone_map_ptr, \
 | 
						|
    uint32_t start_tone, \
 | 
						|
    uint32_t end_tone, \
 | 
						|
    uint8_t cal_lvl);
 | 
						|
 | 
						|
/**
 | 
						|
 *@brief phy_tmap_tx_rule_set.
 | 
						|
 *
 | 
						|
 *  tx direction rule config.
 | 
						|
 *
 | 
						|
 *@param rule               [rule structure.]
 | 
						|
 *@exception                [none.]
 | 
						|
 *@return                   [none.]
 | 
						|
 */
 | 
						|
void phy_tmap_tx_rule_set(plc_tmap_rule_t *rule);
 | 
						|
 | 
						|
/**
 | 
						|
 *@brief phy_tmap_rx_rule_set.
 | 
						|
 *
 | 
						|
 *  rx direction rule config.
 | 
						|
 *
 | 
						|
 *@param rule               [rule structure.]
 | 
						|
 *@exception                [none.]
 | 
						|
 *@return                   [none.]
 | 
						|
 */
 | 
						|
void phy_tmap_rx_rule_set(plc_tmap_rule_t *rule);
 | 
						|
 | 
						|
/**
 | 
						|
 *@brief phy_tmap_init.
 | 
						|
 *
 | 
						|
 *  sound tone map initilze.
 | 
						|
 *
 | 
						|
 *@param none               [none.]
 | 
						|
 *@exception                [none.]
 | 
						|
 *@return                   [none.]
 | 
						|
 */
 | 
						|
void phy_tmap_init();
 | 
						|
 | 
						|
/**
 | 
						|
 *@brief phy_tmap_self_tmi_set.
 | 
						|
 *
 | 
						|
 *  phy tone map tx and rx tmi set.
 | 
						|
 *
 | 
						|
 *@param tmi                [which tmi to set.]
 | 
						|
 *@exception                [none.]
 | 
						|
 *@return                   [none.]
 | 
						|
 */
 | 
						|
void phy_tmap_self_tmi_set(uint8_t tmi);
 | 
						|
 | 
						|
/**
 | 
						|
 *@brief phy_tmap_self_tmi_set.
 | 
						|
 *
 | 
						|
 *  phy tone map tx and rx tmi set.
 | 
						|
 *
 | 
						|
 *@param start_tone         [start tone number.]
 | 
						|
 *@param end_tone           [end tone number.]
 | 
						|
 *@param tone_map_ptr       [tone map pointer.]
 | 
						|
 *@param tmt                [tone mask table pointer.]
 | 
						|
 *@exception                [none.]
 | 
						|
 *@return                   [symbol bits.]
 | 
						|
 */
 | 
						|
uint32_t phy_cal_tmap_symb_bits( \
 | 
						|
    uint32_t start_tone, \
 | 
						|
    uint32_t end_tone, \
 | 
						|
    uint32_t *tone_map_ptr, \
 | 
						|
    const plc_tonemask_table *tmt);
 | 
						|
 | 
						|
/**
 | 
						|
 *@brief hpav_cal_fl_tmap.
 | 
						|
 *
 | 
						|
 *  phy frame length calibrate API.
 | 
						|
 *
 | 
						|
 *@param mpdu_cnt           [current mpdu counter.]
 | 
						|
 *@param pb_num             [pb number.]
 | 
						|
 *@param turbo_rate         [turbo rate select.]
 | 
						|
 *@param tmap_gi            [GI value.]
 | 
						|
 *@param bits_per_symb      [bits symbol number.]
 | 
						|
 *@exception                [none.]
 | 
						|
 *@return                   [frame length.]
 | 
						|
 */
 | 
						|
int hpav_cal_fl_tmap
 | 
						|
(
 | 
						|
    uint8_t mpdu_cnt,
 | 
						|
    uint8_t pb_num,
 | 
						|
    uint8_t turbo_rate,
 | 
						|
    uint8_t tmap_gi,
 | 
						|
    uint32_t bits_per_symb
 | 
						|
);
 | 
						|
 | 
						|
int hpav_cal_fl_robo(uint8_t tmi, uint8_t mpdu_cnt, uint8_t pb_num);
 | 
						|
 | 
						|
/**
 | 
						|
 *@brief phy_symb_bits_get.
 | 
						|
 *
 | 
						|
 *  phy symbol number bits calibrate API.
 | 
						|
 *
 | 
						|
 *@param tmap_addr          [tone map address.]
 | 
						|
 *@exception                [none.]
 | 
						|
 *@return                   [symbol number bits.]
 | 
						|
 */
 | 
						|
uint32_t phy_symb_bits_get(uint32_t *tmap_addr);
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif
 | 
						|
 |