Files
kunlun/plc/halphy/hw2/inc/phy_tmap.h

207 lines
5.3 KiB
C
Raw Normal View History

2024-09-28 14:24:04 +08:00
/****************************************************************************
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