1540 lines
52 KiB
C
1540 lines
52 KiB
C
#include <string.h>
|
||
#include "generic/typedef.h"
|
||
#include "app_config.h"
|
||
#include "asm/crc16.h"
|
||
#include "asm/gpio.h"
|
||
#include "database.h"
|
||
#include "syscfg/syscfg_id.h"
|
||
#include "asm/sfc_norflash_api.h"
|
||
#include "wifi/wifi_connect.h"
|
||
#include "lwip.h"
|
||
|
||
/*
|
||
// 设置WIFI DEBUG 信息输出等级
|
||
Debug information verbosity: lower values indicate higher urgency
|
||
0:RT_DEBUG_OFF
|
||
1:RT_DEBUG_ERROR
|
||
2:RT_DEBUG_WARN
|
||
3:RT_DEBUG_TRACE
|
||
4:RT_DEBUG_INFO
|
||
5:RT_DEBUG_LOUD
|
||
*/
|
||
const u8 RTDebugLevel = 2;
|
||
|
||
const char WL_TX_DEBUG = 0; //WIFI底层发送数据FIFO繁忙打印
|
||
const char WL_RX_DEBUG = 0; //WIFI底层接收FIFO塞满导致丢包打印
|
||
|
||
const char WL_TX_ERR_RATIO_DEBUG_SEC = 0; //统计每秒TX数据包成功/失败/重发和错误率的情况,配置每隔多少秒打印一次
|
||
|
||
const char WL_RX_ERR_RATIO_DEBUG_SEC = 0; //统计每秒RX数据包成功/失败/和错误率的情况,配置每隔多少秒打印一次
|
||
|
||
const u16 WL_RX_BACK_GROUND_ERR_CNT_PER_SECOND = 10; //硬件少了寄存器统计接收正确包,所以统计正确包和误报率不准,人工设定一个当前环境干扰每秒钟的本底错误包作为弥补,一开始需要先观察打印确认
|
||
|
||
const u8 WL_TX_PEND_DEBUG_SEC = 2; //WIFI底层FIFO塞满导致连续多少秒都发送不出数据时打印, 一般认为是干扰严重/wifi板TX性能差/CPU被挡等因素导致
|
||
|
||
const char WL_RX_PEND_DEBUG_SEC = 2; //统计WIFI底层连续多少秒都接收不到空中包时打印,一般认为是进了屏蔽房/加了MAC层过滤/板子硬件性能太差/CPU太繁忙来接收线程来不及取数因素导致
|
||
|
||
const char WL_RX_OVERFLOW_DEBUG = 0; //统计WIFI底层接收FIFO塞满导致丢包打印,一般认为对端发送太猛/空中干扰太强/CPU太繁忙来接收线程来不及取数因素导致, 使能后如果出现丢包打印每秒丢多少个数据包
|
||
|
||
const char WIFI_PA_ENABLE = 0; //wifi开启外挂硬件PA功率放大,791X占据PA1和PA2硬件IO,远距离传输
|
||
|
||
#if defined CONFIG_NO_SDRAM_ENABLE
|
||
const u8 RxReorderEnable = 0; //底层包乱序整理,0为关闭(关闭时UDP重发包也会上传到上层, 但关闭可以减少内存消耗),1为开启
|
||
const u32 MAX_REORDERING_MPDU_NUM = 1; //当RxReorderEnable开启时需要内存较大,该值也需要根据实际设置大一点(128)
|
||
#else
|
||
const u8 RxReorderEnable = 1; //底层包乱序整理,0为关闭(关闭时UDP重发包也会上传到上层, 但关闭可以减少内存消耗),1为开启
|
||
const u32 MAX_REORDERING_MPDU_NUM = 128; //当RxReorderEnable开启时需要内存较大,该值也需要根据实际设置大一点(128)
|
||
#endif
|
||
|
||
const u16 MAX_CHANNEL_TIME_BSS_INFRA = 200;//扫描每个信道停留时间,单位ms,最小20ms, 200-400ms最佳
|
||
|
||
const char WIFI_CHANNEL_QUALITY_INDICATION_BAD = 5; //STA模式下的信道通信质量差阈值,一旦低于这个值就断线重连,如果配置为-1则信号质量再差也不通知断线,但是太久不重连会被路由器认为死亡踢掉的风险
|
||
|
||
#ifdef CONFIG_RF_TEST_ENABLE
|
||
const char wifi_temperature_drift_trim_on = 0; //WiFi温度漂移校准开关,0为关闭,1为打开
|
||
#else
|
||
const char wifi_temperature_drift_trim_on = 1; //WiFi温度漂移校准开关,0为关闭,1为打开
|
||
#endif
|
||
|
||
const char wifi_ap_scan_support = 0; //ap扫描开关,0为关闭,1为开启
|
||
|
||
#if defined CONFIG_NO_SDRAM_ENABLE
|
||
const u16 MAX_PACKETS_IN_QUEUE = 16; //配置WiFi驱动最大发送数据包队列
|
||
const u16 MAX_PACKETS_IN_MCAST_PS_QUEUE = 4; //配置WiFi驱动最大发送数据包队列 //8 16 modify by lyx 32
|
||
const u16 MAX_PACKETS_IN_PS_QUEUE = 2; //配置WiFi驱动最大发送数据包队列 //128 /*16 */
|
||
#else
|
||
const u16 MAX_PACKETS_IN_QUEUE = 64; //配置WiFi驱动最大发送数据包队列
|
||
const u16 MAX_PACKETS_IN_MCAST_PS_QUEUE = 8; //配置WiFi驱动最大发送MCAST-power-save包队列 //modify by lyx 32
|
||
const u16 MAX_PACKETS_IN_PS_QUEUE = 16; //配置WiFi驱动最大发送power-save队列 //128 /*16 */
|
||
#endif
|
||
|
||
#ifdef CONFIG_RF_TEST_ENABLE
|
||
const u8 RFIinitUseTrimValue = 0;//记忆wifi rf 初始化使用vm记忆的trim的值,可大大降低wifi初始化时间
|
||
#else
|
||
const u8 RFIinitUseTrimValue = 1;//记忆wifi rf 初始化使用vm记忆的trim的值,可大大降低wifi初始化时间
|
||
#endif
|
||
|
||
#ifdef CONFIG_STATIC_IPADDR_ENABLE
|
||
const u8 IPV4_ADDR_CONFLICT_DETECT = 1; //开启静态ip冲突检测
|
||
#else
|
||
const u8 IPV4_ADDR_CONFLICT_DETECT = 0;
|
||
#endif
|
||
|
||
const u8 ntp_get_time_init = 1; //连上网后调用ntp向ntp_host列表所有服务器获取时间, 0为关闭, 1为开启
|
||
const u32 rtc_update_interval = 0; //每经过设置的时间间隔后会通过ntp对rtc进行校准, 单位毫秒
|
||
|
||
const u8 CONFIG_SDIO_SLAVE_MODE = 0; //wifi模块作为sdio从机
|
||
|
||
#ifdef CONFIG_UCOS_ENABLE
|
||
const u8 WIFI_TX_FULL_WAIT_MODE = 0; // 可以设置为0,1,2, 数值越大一定程度上会提高wifi的吞吐率,但同时会加大wifi线程占据cpu的比重
|
||
#else
|
||
const u8 WIFI_TX_FULL_WAIT_MODE = 1; // 可以设置为0,1,2, 数值越大一定程度上会提高wifi的吞吐率,但同时会加大wifi线程占据cpu的比重
|
||
#endif
|
||
|
||
const u8 WIFI_COLD_START_FAST_CONNECTION = 1; //启用WIFI冷启动快连, 0为关闭,1为开启
|
||
|
||
#if defined CONFIG_NO_SDRAM_ENABLE
|
||
const u8 MAX_LEN_OF_BSS_TABLE = 2; //BSS table 个数设置用于存放扫描结果,最少为1个,不能为0,个数越多占用内存越大
|
||
#else
|
||
const u8 MAX_LEN_OF_BSS_TABLE = 4; //BSS table 个数设置用于存放扫描结果,最少为1个,不能为0,个数越多占用内存越大
|
||
#endif
|
||
|
||
const u8 wifi_recv_poll = 0; //wifi接收数据方式,0为中断方式接收,1为轮询方式接收
|
||
|
||
#if defined CONFIG_WIFI_IDLE_RESUME_BASEBAND_ENABLE
|
||
u8 wifi_lowpower_mode = 1;
|
||
#else
|
||
u8 wifi_lowpower_mode = 0;
|
||
#endif
|
||
|
||
u8 wl_active_wait_interval_count = 0; // 默认配置不等待
|
||
u16 wl_custom_listen_interval = 10; // 默认自定义的监听间隔是 10,防止没有 set 这个变量而导致异常
|
||
u16 wl_default_listen_interval = 3; // 默认监听间隔是 3,防止没有 set 这个变量而导致异常
|
||
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||
|
||
#ifdef CONFIG_NET_ENABLE
|
||
#if 0
|
||
static void print_debug_ipv4(u32 daddr, u32 saddr)
|
||
{
|
||
put_buf(&daddr, 4);
|
||
put_buf(&saddr, 4);
|
||
printf("daddr : %s\n", inet_ntoa(daddr));
|
||
printf("saddr : %s\n", inet_ntoa(saddr));
|
||
}
|
||
#endif
|
||
|
||
//用于根据LWIP接收队列溢出情况下快速丢包减轻CPU负担,预留空间接收重要数据包
|
||
int lwip_low_level_inputput_filter(u8 *pkg, u32 len)
|
||
{
|
||
#ifdef CONFIG_RF_TEST_ENABLE
|
||
return 0;
|
||
#endif
|
||
|
||
static const u8 bc_mac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
|
||
#define ipv4addr_ismulticast(addr) ((addr & PP_HTONL(0xf0000000UL)) == PP_HTONL(0xe0000000UL))
|
||
|
||
//根据LWIP接收缓存情况快速丢包减轻CPU负担,并且防止丢失重要重要数据包
|
||
struct iphdr_e *iph = (struct iphdr_e *)(pkg + 10);
|
||
u16 protoType = ntohs(iph->h_proto);
|
||
|
||
/*------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||
#define ICMP_ER 0 /* echo reply */
|
||
#define ICMP_ECHO 8 /* echo */
|
||
if ((protoType != 0x0806) && iph->iphd.protocol == 1 && *((u8 *)iph + sizeof(struct iphdr_e)) != ICMP_ER && *((u8 *)iph + sizeof(struct iphdr_e)) != ICMP_ECHO) { //如果是ICMP并且不是echo和echo reply就丢弃, 因为是一些Time_Ex等无用包
|
||
putchar('C');
|
||
return -1;
|
||
}
|
||
/*------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||
#define PBUF_RESERVED_FOR_ARP 1 //最起码预留一个 PBUF_POOL给ARP请求,否则不回复路由器导致断流
|
||
#define PBUF_RESERVED_FOR_TCP (PBUF_RESERVED_FOR_ARP+1)
|
||
u32 remain_pbuf_pool = memp_get_pbuf_pool_free_cnt();
|
||
if (remain_pbuf_pool <= PBUF_RESERVED_FOR_TCP) {
|
||
if (remain_pbuf_pool == 0) { //PBUF_POOL 一个也没了,直接丢弃
|
||
putchar('X');
|
||
return -1;
|
||
} else if (remain_pbuf_pool <= PBUF_RESERVED_FOR_ARP && protoType != 0x0806) {//PBUF_POOL 在剩余小于 PBUF_RESERVED_FOR_ARP 的情况下, 丢弃非ARP包
|
||
putchar('Y');
|
||
return -1;
|
||
} else if (!(protoType == 0x0800 && iph->iphd.protocol == 6)) { //PBUF_POOL 在剩余小于 PBUF_RESERVED_FOR_TCP 的情况下, 丢弃非TCP包
|
||
putchar('D');
|
||
return -1;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
//在WIFI底层发送队列不足的情况, 预留空间给重要数据包发送
|
||
int lwip_low_level_output_filter(u8 *pkg, u32 len)
|
||
{
|
||
#ifdef CONFIG_RF_TEST_ENABLE
|
||
return 0;
|
||
#endif
|
||
|
||
struct iphdr_e *iph = (struct iphdr_e *)(pkg + 10);
|
||
u16 protoType = ntohs(iph->h_proto);
|
||
|
||
u32 remain_wifi_txq = wifi_get_remain_tx_queue(0);
|
||
|
||
#define WIFI_TXQ_RESERVED_FOR_ARP 1 //最起码预留一个WIFI_TXQ给ARP请求,否则不回复路由器导致断流
|
||
#define WIFI_TXQ_RESERVED_FOR_TCP (WIFI_TXQ_RESERVED_FOR_ARP+1)
|
||
|
||
if (remain_wifi_txq <= WIFI_TXQ_RESERVED_FOR_TCP) {
|
||
if (remain_wifi_txq == 0) { //WIFI_TXQ 一个也没了,直接丢弃
|
||
putchar('G');
|
||
return -1;
|
||
} else if (remain_wifi_txq <= WIFI_TXQ_RESERVED_FOR_ARP && protoType != 0x0806) {//WIFI_TXQ 在剩余小于 WIFI_TXQ_RESERVED_FOR_ARP 的情况下, 丢弃非ARP包
|
||
putchar('O');
|
||
return -1;
|
||
} else if (!(protoType == 0x0800 && iph->iphd.protocol == 6)) { //WIFI_TXQ 在剩余小于 WIFI_TXQ_RESERVED_FOR_TCP 的情况下, 丢弃非TCP包
|
||
putchar('H');
|
||
return -1;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
//空中干扰/网络拥塞严重的情况,WIFI底层发送较慢,MAX_PACKETS_IN_QUEUE 队列满导致丢弃上层数据包
|
||
int socket_send_but_netif_busy_hook(int s, char type_udp)
|
||
{
|
||
if (type_udp) {
|
||
putchar('@');
|
||
/* os_time_dly(30); //根据实际应用发送情况调节, 针对UDP多释放一下CPU, 一方面有利于系统其他线程顺畅运行, 另一方面防止猛发送导致网络拥塞加剧 */
|
||
} else {
|
||
putchar('|');
|
||
/* os_time_dly(2); */
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
|
||
int wifi_recv_pkg_and_soft_filter(u8 *pkg, u32 len) //通过软件过滤无用数据帧减轻cpu压力,pkg[20]就是对应抓包工具第一个字节的802.11 MAC Header 字段
|
||
{
|
||
#if 0
|
||
static u32 thdll, count;
|
||
int ret;
|
||
ret = time_lapse(&thdll, 1000);
|
||
if (ret) {
|
||
printf("sdio_recv_cnt = %d, %d \r\n", ret, count);
|
||
count = 0;
|
||
}
|
||
++count;
|
||
#endif
|
||
|
||
#if 0 //调试用
|
||
static const u8 bc_mac[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
|
||
#define ipv4addr_ismulticast(addr) ((addr & PP_HTONL(0xf0000000UL)) == PP_HTONL(0xe0000000UL))
|
||
|
||
struct ieee80211_frame *wh = (struct ieee80211_frame *)&pkg[20];
|
||
if ((wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) == IEEE80211_FC0_TYPE_DATA) {// 只丢弃数据帧
|
||
if (pkg[54] == 0X88 && pkg[55] == 0x8E) {} else //如果是EAPOL不要丢弃
|
||
if (len >= (52 + sizeof(struct iphdr_e))) {
|
||
u16 protoType;
|
||
struct iphdr_e *iph;
|
||
if (0 == memcmp(bc_mac, wh->i_addr1, 6)) {
|
||
//广播
|
||
iph = (struct iphdr_e *)((u8 *)pkg + 48);
|
||
} else {
|
||
iph = (struct iphdr_e *)((u8 *)pkg + 52);
|
||
}
|
||
protoType = ntohs(iph->h_proto);
|
||
|
||
if (protoType == 0x0800) { //ipv4
|
||
if (iph->iphd.protocol == 17) { //udp
|
||
if (ipv4addr_ismulticast(iph->iphd.daddr)) { //组播
|
||
/*putchar('M');*/
|
||
} else {
|
||
/*putchar('U');*/
|
||
}
|
||
|
||
/* print_debug_ipv4(iph->iphd.daddr, iph->iphd.saddr); */
|
||
|
||
} else if (iph->iphd.protocol == 6) { //tcp
|
||
/*putchar('T');*/
|
||
/* print_debug_ipv4(iph->iphd.daddr, iph->iphd.saddr); */
|
||
}
|
||
} else if (protoType == 0x0806) { //arp
|
||
/*putchar('R');*/
|
||
}
|
||
}
|
||
}
|
||
#endif
|
||
|
||
return 0;
|
||
}
|
||
|
||
#endif
|
||
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||
|
||
#if defined CONFIG_RF_TRIM_CODE_MOVABLE || defined CONFIG_RF_TRIM_CODE_AT_RAM
|
||
|
||
extern u32 __rf_trim_movable_slot_start[];
|
||
extern u32 __rf_trim_movable_slot_end[];
|
||
extern u8 __rf_trim_movable_region_start[];
|
||
extern u8 __rf_trim_movable_region_end[];
|
||
|
||
extern u32 __rf_trim_code_start, __rf_trim_code_end;
|
||
|
||
AT(.volatile_ram_code)
|
||
u8 *enter_wifi_rf_trim_region(u32 **start_of_region)
|
||
{
|
||
u8 *rf_trim_code_run_addr = NULL;
|
||
#if defined CONFIG_RF_TRIM_CODE_MOVABLE
|
||
u32 code_size = __rf_trim_movable_region_end - __rf_trim_movable_region_start;
|
||
printf("rf_trim_movable code _start:0x%x, code_size:%d \r\n", (u32)__rf_trim_movable_region_start, code_size);
|
||
rf_trim_code_run_addr = malloc(code_size);
|
||
if (rf_trim_code_run_addr == NULL) {
|
||
return NULL;
|
||
}
|
||
code_movable_load(__rf_trim_movable_region_start, code_size, rf_trim_code_run_addr, __rf_trim_movable_slot_start, __rf_trim_movable_slot_end, start_of_region);
|
||
#endif
|
||
|
||
norflash_enter_spi_code();
|
||
|
||
#if defined CONFIG_RF_TRIM_CODE_MOVABLE && !defined CONFIG_NO_SDRAM_ENABLE
|
||
icache_flush(rf_trim_code_run_addr, code_size);
|
||
#endif
|
||
|
||
return rf_trim_code_run_addr;
|
||
}
|
||
|
||
AT(.volatile_ram_code)
|
||
void exit_wifi_rf_trim_region(u32 **start_of_region, u8 *rf_trim_code_run_addr)
|
||
{
|
||
#if defined CONFIG_RF_TRIM_CODE_MOVABLE
|
||
if (rf_trim_code_run_addr == NULL) {
|
||
return;
|
||
}
|
||
#endif
|
||
|
||
norflash_exit_spi_code();
|
||
|
||
#if defined CONFIG_RF_TRIM_CODE_MOVABLE
|
||
code_movable_unload(__rf_trim_movable_region_start, __rf_trim_movable_slot_start, __rf_trim_movable_slot_end, start_of_region);
|
||
free(rf_trim_code_run_addr);
|
||
#endif
|
||
}
|
||
|
||
#endif
|
||
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||
|
||
#if 0
|
||
WirelessMode:
|
||
PHY_11BG_MIXED = 0,
|
||
PHY_11B = 1,
|
||
PHY_11A = 2,,
|
||
PHY_11ABG_MIXED = 3,,
|
||
PHY_11G = 4,
|
||
PHY_11ABGN_MIXED, /* both band 5 */
|
||
PHY_11N_2_4G, /* 11n-only with 2.4G band 6 */
|
||
PHY_11GN_MIXED, /* 2.4G band 7 */
|
||
PHY_11AN_MIXED, /* 5G band 8 */
|
||
PHY_11BGN_MIXED, /* if check 802.11b. 9 */
|
||
PHY_11AGN_MIXED, /* if check 802.11b. 10 */
|
||
PHY_11N_5G, /* 11n-only with 5G band 11 */
|
||
#endif
|
||
|
||
#ifdef CONFIG_NET_ENABLE
|
||
|
||
/*
|
||
MaxStaNum 最大连接数不能超过 MAX_LEN_OF_MAC_TABLE(5)
|
||
*/
|
||
static char WL_AP_DAT[] = {
|
||
"\
|
||
Default\n\
|
||
MacAddress=00:00:00:00:00:00\n\
|
||
CountryRegion=1\n\
|
||
CountryRegionABand=0\n\
|
||
CountryCode=CN\n\
|
||
BssidNum=1\n\
|
||
MaxStaNum=2\n\
|
||
IdleTimeout=300\n\
|
||
SSID=####SSID_LENTH_MUST_LESS_THAN_32\n\
|
||
WirelessMode=9\n\
|
||
TxRate=0\n\
|
||
Channel=11#\n\
|
||
BasicRate=15\n\
|
||
BeaconPeriod=100\n\
|
||
DtimPeriod=1\n\
|
||
TxPower=100\n\
|
||
DisableOLBC=0\n\
|
||
BGProtection=0\n\
|
||
TxAntenna=\n\
|
||
RxAntenna=\n\
|
||
TxPreamble=1\n\
|
||
RTSThreshold=2347\n\
|
||
FragThreshold=2346\n\
|
||
TxBurst=0\n\
|
||
PktAggregate=0\n\
|
||
TurboRate=0\n\
|
||
WmmCapable=0\n\
|
||
APSDCapable=0\n\
|
||
DLSCapable=0\n\
|
||
APAifsn=3;7;1;1\n\
|
||
APCwmin=4;4;3;2\n\
|
||
APCwmax=6;10;4;3\n\
|
||
APTxop=0;0;94;47\n\
|
||
APACM=0;0;0;0\n\
|
||
BSSAifsn=3;7;2;2\n\
|
||
BSSCwmin=4;4;3;2\n\
|
||
BSSCwmax=10;10;4;3\n\
|
||
BSSTxop=0;0;94;47\n\
|
||
BSSACM=0;0;0;0\n\
|
||
AckPolicy=0;0;0;0\n\
|
||
NoForwarding=0\n\
|
||
NoForwardingBTNBSSID=0\n\
|
||
HideSSID=0\n\
|
||
StationKeepAlive=0\n\
|
||
ShortSlot=1\n\
|
||
AutoChannelSelect=0\n\
|
||
IEEE8021X=0\n\
|
||
IEEE80211H=0\n\
|
||
CSPeriod=10\n\
|
||
WirelessEvent=0\n\
|
||
IdsEnable=0\n\
|
||
AuthFloodThreshold=32\n\
|
||
AssocReqFloodThreshold=32\n\
|
||
ReassocReqFloodThreshold=32\n\
|
||
ProbeReqFloodThreshold=32\n\
|
||
DisassocFloodThreshold=32\n\
|
||
DeauthFloodThreshold=32\n\
|
||
EapReqFooldThreshold=32\n\
|
||
PreAuth=0\n\
|
||
AuthMode=################\n\
|
||
EncrypType=################\n\
|
||
RekeyInterval=0\n\
|
||
RekeyMethod=DISABLE\n\
|
||
PMKCachePeriod=10\n\
|
||
WPAPSK=#########wpa_passphrase_lenth_must_more_than_7_and_less_than_63\n\
|
||
DefaultKeyID=1\n\
|
||
Key1Type=0\n\
|
||
Key1Str=\n\
|
||
Key2Type=0\n\
|
||
Key2Str=\n\
|
||
Key3Type=0\n\
|
||
Key3Str=\n\
|
||
Key4Type=0\n\
|
||
Key4Str=\n\
|
||
HSCounter=0\n\
|
||
AccessPolicy0=0\n\
|
||
AccessControlList0=\n\
|
||
AccessPolicy1=0\n\
|
||
AccessControlList1=\n\
|
||
AccessPolicy2=0\n\
|
||
AccessControlList2=\n\
|
||
AccessPolicy3=0\n\
|
||
AccessControlList3=\n\
|
||
WdsEnable=0\n\
|
||
WdsEncrypType=NONE\n\
|
||
WdsList=\n\
|
||
WdsKey=\n\
|
||
RADIUS_Server=192.168.2.3\n\
|
||
RADIUS_Port=1812\n\
|
||
RADIUS_Key=ralink\n\
|
||
own_ip_addr=192.168.5.234\n\
|
||
EAPifname=br0\n\
|
||
PreAuthifname=br0\n\
|
||
HT_HTC=0\n\
|
||
HT_RDG=1\n\
|
||
HT_EXTCHA=0\n\
|
||
HT_LinkAdapt=0\n\
|
||
HT_OpMode=0\n\
|
||
HT_MpduDensity=4\n\
|
||
HT_BW=0\n\
|
||
HT_BADecline=0\n\
|
||
HT_AutoBA=1\n\
|
||
HT_AMSDU=0\n\
|
||
HT_BAWinSize=64\n\
|
||
HT_GI=0\n\
|
||
HT_MCS=33\n\
|
||
MeshId=MESH\n\
|
||
MeshAutoLink=1\n\
|
||
MeshAuthMode=OPEN\n\
|
||
MeshEncrypType=NONE\n\
|
||
MeshWPAKEY=\n\
|
||
MeshDefaultkey=1\n\
|
||
MeshWEPKEY=\n\
|
||
WscManufacturer=\n\
|
||
WscModelName=\n\
|
||
WscDeviceName=\n\
|
||
WscModelNumber=\n\
|
||
WscSerialNumber=\n\
|
||
RadioOn=1\n\
|
||
PMFMFPC=0\n\
|
||
PMFMFPR=0\n\
|
||
PMFSHA256=0"
|
||
};
|
||
|
||
#if defined CONFIG_LOW_POWER_ENABLE
|
||
#define WL_STA_SLEEP 2
|
||
#elif defined CONFIG_WIFI_IDLE_RESUME_BASEBAND_ENABLE
|
||
#define WL_STA_SLEEP 1//2
|
||
#else
|
||
#define WL_STA_SLEEP 0
|
||
#endif
|
||
|
||
static const char WL_STA_DAT[] = {
|
||
"\
|
||
Default\n\
|
||
MacAddress=00:00:00:00:00:00\n\
|
||
CountryRegion=1\n\
|
||
CountryRegionABand=0\n\
|
||
CountryCode=CN\n\
|
||
ChannelGeography=1\n\
|
||
SSID=DEFAULT_CONNECT_SSID\n\
|
||
NetworkType=Infra\n\
|
||
WirelessMode=9\n\
|
||
Channel=1\n\
|
||
BeaconPeriod=100\n\
|
||
TxPower=100\n\
|
||
BGProtection=0\n\
|
||
TxPreamble=1\n\
|
||
RTSThreshold=2347\n\
|
||
FragThreshold=2346\n\
|
||
TxBurst=0\n\
|
||
PktAggregate=0\n\
|
||
WmmCapable=1\n\
|
||
AckPolicy=0;0;0;0\n\
|
||
AuthMode=OPEN\n\
|
||
EncrypType=NONE\n\
|
||
WPAPSK=\n\
|
||
DefaultKeyID=1\n\
|
||
Key1Type=0\n\
|
||
Key1Str=\n\
|
||
Key2Type=0\n\
|
||
Key2Str=\n\
|
||
Key3Type=0\n\
|
||
Key3Str=\n\
|
||
Key4Type=0\n\
|
||
Key4Str=\n"
|
||
#if WL_STA_SLEEP == 1
|
||
"PSMode=Legacy_PSP\n"
|
||
#elif WL_STA_SLEEP == 2
|
||
"PSMode=Fast_PSP\n"
|
||
#else
|
||
"PSMode=CAM\n"
|
||
#endif
|
||
"AutoRoaming=0\n\
|
||
RoamThreshold=70\n\
|
||
APSDCapable=1\n\
|
||
APSDAC=0;0;0;0\n\
|
||
HT_RDG=1\n\
|
||
HT_EXTCHA=0\n\
|
||
HT_OpMode=0\n\
|
||
HT_MpduDensity=4\n\
|
||
HT_BW=0\n\
|
||
HT_BADecline=0\n\
|
||
HT_AutoBA=1\n\
|
||
HT_AMSDU=0\n\
|
||
HT_BAWinSize=64\n\
|
||
HT_GI=0\n\
|
||
HT_MCS=33\n\
|
||
HT_MIMOPSMode=3\n\
|
||
HT_DisallowTKIP=1\n\
|
||
HT_STBC=0\n\
|
||
EthConvertMode=\n\
|
||
EthCloneMac=\n\
|
||
IEEE80211H=0\n\
|
||
TGnWifiTest=0\n\
|
||
WirelessEvent=0\n\
|
||
MeshId=MESH\n\
|
||
MeshAutoLink=1\n\
|
||
MeshAuthMode=OPEN\n\
|
||
MeshEncrypType=NONE\n\
|
||
MeshWPAKEY=\n\
|
||
MeshDefaultkey=1\n\
|
||
MeshWEPKEY=\n\
|
||
CarrierDetect=0\n\
|
||
AntDiversity=0\n\
|
||
BeaconLostTime=16\n\
|
||
FtSupport=0\n\
|
||
Wapiifname=ra0\n\
|
||
WapiPsk=\n\
|
||
WapiPskType=\n\
|
||
WapiUserCertPath=\n\
|
||
WapiAsCertPath=\n\
|
||
PSP_XLINK_MODE=0\n\
|
||
WscManufacturer=\n\
|
||
WscModelName=\n\
|
||
WscDeviceName=\n\
|
||
WscModelNumber=\n\
|
||
WscSerialNumber=\n\
|
||
RadioOn=1\n\
|
||
WIDIEnable=0\n\
|
||
P2P_L2SD_SCAN_TOGGLE=8\n\
|
||
Wsc4digitPinCode=0\n\
|
||
P2P_WIDIEnable=0\n\
|
||
PMFMFPC=0\n\
|
||
PMFMFPR=0\n\
|
||
PMFSHA256=0"
|
||
};
|
||
|
||
void wsc_sta_config_set_ssid_pwd(const char *ssid, const char *pwd, int ssid_len, int pwd_len)
|
||
{
|
||
#ifdef CONFIG_WSC_NET_CFG
|
||
extern int wsc_net_set_ssid_pwd(const char *ssid, const char *pwd, int ssid_len, int pwd_len);
|
||
wsc_net_set_ssid_pwd(ssid, pwd, ssid_len, pwd_len);
|
||
#endif
|
||
}
|
||
|
||
const char *GET_WL_STA_DAT(void)
|
||
{
|
||
return WL_STA_DAT;
|
||
}
|
||
|
||
int GET_WL_STA_DAT_LEN(void)
|
||
{
|
||
return strlen(WL_STA_DAT);
|
||
}
|
||
|
||
const char *GET_WL_AP_DAT(void)
|
||
{
|
||
return WL_AP_DAT;
|
||
}
|
||
|
||
int GET_WL_AP_DAT_LEN(void)
|
||
{
|
||
return strlen(WL_AP_DAT);
|
||
}
|
||
|
||
#if 0
|
||
const char *get_wl_cfg_data(int is_sta)
|
||
{
|
||
const char *data = NULL;
|
||
|
||
if (is_sta) {
|
||
data = malloc(strlen(WL_STA_DAT) + 1);
|
||
} else {
|
||
data = malloc(strlen(WL_AP_DAT) + 1);
|
||
}
|
||
|
||
if (!data) {
|
||
return NULL;
|
||
}
|
||
|
||
if (is_sta) {
|
||
strcpy(data, WL_STA_DAT);
|
||
} else {
|
||
strcpy(data, WL_AP_DAT);
|
||
}
|
||
|
||
return data;
|
||
}
|
||
|
||
static u32 write_offset = 0;
|
||
|
||
void *RtmpOSFileOpen(const char *fileName, int mode, int opt)
|
||
{
|
||
write_offset = 0;
|
||
return zalloc(4096);
|
||
}
|
||
|
||
void RtmpOSFileClose(void *ptr)
|
||
{
|
||
printf("wifi cfg file : %s\n", (const char *)ptr);
|
||
free(ptr);
|
||
}
|
||
|
||
int RtmpOSFileWrite(void *ptr, const char *str, int len)
|
||
{
|
||
memcpy(ptr + write_offset, str, len);
|
||
write_offset += len;
|
||
return len;
|
||
}
|
||
#endif
|
||
|
||
int wl_set_wifi_channel(int channel)
|
||
{
|
||
char channel_str[3] = {0};
|
||
|
||
if (channel < 1 || channel > 14) {
|
||
return -1;
|
||
}
|
||
|
||
sprintf(channel_str, "%d", channel);
|
||
|
||
const char *find_channel = "Channel=";
|
||
char *channel_position = strstr(GET_WL_AP_DAT(), find_channel) + strlen(find_channel);
|
||
|
||
strcpy(channel_position, channel_str);
|
||
channel_position[strlen(channel_str)] = '\n';
|
||
memset(channel_position + strlen(channel_str) + 1, '#', 3 - strlen(channel_str) - 1);
|
||
|
||
return 0;
|
||
}
|
||
|
||
static int wl_set_ssid(const char *ssid)
|
||
{
|
||
if (ssid == 0) {
|
||
return -1;
|
||
}
|
||
|
||
const char *find_ssid = "SSID=";
|
||
char *ssid_position = strstr(GET_WL_AP_DAT(), find_ssid) + strlen(find_ssid);
|
||
|
||
if (strlen(ssid) > 32) {
|
||
printf("set_ssid_passphrase fail,ssid len (0x%lx) longer than 32!\n", strlen(ssid));
|
||
return -1;
|
||
}
|
||
|
||
strcpy(ssid_position, ssid);
|
||
ssid_position[strlen(ssid)] = '\n';
|
||
memset(ssid_position + strlen(ssid) + 1, '#', 32 - strlen(ssid) - 1);
|
||
|
||
return 0;
|
||
}
|
||
|
||
static int wl_set_passphrase(const char *passphrase)
|
||
{
|
||
if (passphrase == 0) {
|
||
return -1;
|
||
}
|
||
|
||
const char *AUTH_MODE, *ENCRYP_TYPE;
|
||
const char *find_wpa_passphrase = "WPAPSK=";
|
||
const char *find_AuthMode = "AuthMode=";
|
||
const char *find_EncrypType = "EncrypType=";
|
||
|
||
char *wpa_passphrase_position = strstr(GET_WL_AP_DAT(), find_wpa_passphrase) + strlen(find_wpa_passphrase);
|
||
char *AuthMode_position = strstr(GET_WL_AP_DAT(), find_AuthMode) + strlen(find_AuthMode);
|
||
char *EncrypType_position = strstr(GET_WL_AP_DAT(), find_EncrypType) + strlen(find_EncrypType);
|
||
|
||
if (strcmp(passphrase, "")) {
|
||
if ((strlen(passphrase) < 8) || (strlen(passphrase) > 63)) {
|
||
printf("set_ssid_passphrase fail,passphrase len (0x%lx) must more than 7 and less than 63!\n", strlen(passphrase));
|
||
return -1;
|
||
}
|
||
|
||
strcpy(wpa_passphrase_position, passphrase);
|
||
wpa_passphrase_position[strlen(passphrase)] = '\n';
|
||
memset(wpa_passphrase_position + strlen(passphrase) + 1, '#', 63 - strlen(passphrase) - 1);
|
||
|
||
AUTH_MODE = "WPA2PSK";
|
||
strcpy(AuthMode_position, AUTH_MODE);
|
||
AuthMode_position[strlen(AUTH_MODE)] = '\n';
|
||
memset(AuthMode_position + strlen(AUTH_MODE) + 1, '#', 16 - strlen(AUTH_MODE) - 1);
|
||
|
||
ENCRYP_TYPE = "AES";
|
||
strcpy(EncrypType_position, ENCRYP_TYPE);
|
||
EncrypType_position[strlen(ENCRYP_TYPE)] = '\n';
|
||
memset(EncrypType_position + strlen(ENCRYP_TYPE) + 1, '#', 16 - strlen(ENCRYP_TYPE) - 1);
|
||
} else {
|
||
AUTH_MODE = "OPEN";
|
||
strcpy(AuthMode_position, AUTH_MODE);
|
||
AuthMode_position[strlen(AUTH_MODE)] = '\n';
|
||
memset(AuthMode_position + strlen(AUTH_MODE) + 1, '#', 16 - strlen(AUTH_MODE) - 1);
|
||
|
||
ENCRYP_TYPE = "NONE";
|
||
strcpy(EncrypType_position, ENCRYP_TYPE);
|
||
EncrypType_position[strlen(ENCRYP_TYPE)] = '\n';
|
||
memset(EncrypType_position + strlen(ENCRYP_TYPE) + 1, '#', 16 - strlen(ENCRYP_TYPE) - 1);
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
|
||
int wl_ap_init(const char *ssid, const char *passphrase)
|
||
{
|
||
int ret;
|
||
wl_set_ssid(ssid);
|
||
wl_set_passphrase(passphrase);
|
||
|
||
// printf("WLAP_DAT = \r\n %s \r\n",GET_WL_AP_DAT());
|
||
|
||
return 0;
|
||
}
|
||
|
||
void set_bss_table_record(char *data, u32 len)
|
||
{
|
||
struct wifi_mode_info info = {0};
|
||
info.mode = NONE_MODE;
|
||
wifi_get_mode_cur_info(&info);
|
||
if (info.mode == SMP_CFG_MODE) {
|
||
return;
|
||
}
|
||
syscfg_write(WIFI_BSS_TABLE, data, len);
|
||
}
|
||
int get_bss_table_record(char *data, u32 len)
|
||
{
|
||
int ret;
|
||
ret = syscfg_read(WIFI_BSS_TABLE, data, len);
|
||
if (ret < 0) {
|
||
return 0;
|
||
}
|
||
return 1;
|
||
}
|
||
|
||
void set_scan_result_record(char *data, u32 len)
|
||
{
|
||
syscfg_write(WIFI_SCAN_INFO, data, len);
|
||
}
|
||
int get_stored_scan_record(char *data, u32 len)
|
||
{
|
||
int ret;
|
||
ret = syscfg_read(WIFI_SCAN_INFO, data, len);
|
||
if (ret < 0) {
|
||
return 0;
|
||
}
|
||
return 1;
|
||
}
|
||
|
||
#if 1
|
||
struct pmk_info {
|
||
u32 crc;
|
||
char pmk[32];
|
||
};
|
||
int get_stored_pmk(char *password, char *ssid, int ssidlength, char *output)
|
||
{
|
||
int ret;
|
||
u32 crc;
|
||
struct pmk_info info;
|
||
|
||
/* ret = db_select_buffer(WIFI_PMK_INFO, (char *)&info, sizeof(struct pmk_info)); */
|
||
ret = syscfg_read(WIFI_PMK_INFO, (char *)&info, sizeof(struct pmk_info));
|
||
if (ret < 0) {
|
||
return 0;
|
||
}
|
||
|
||
crc = CRC16(password, strlen(password));
|
||
crc += CRC16(ssid, ssidlength);
|
||
|
||
if (crc != info.crc) {
|
||
return 0;
|
||
}
|
||
|
||
memcpy(output, info.pmk, sizeof(info.pmk));
|
||
printf("stored pmk_info match[%s] [%s],,,\n", ssid, password);
|
||
return 1;
|
||
}
|
||
void set_stored_pmk(char *password, char *ssid, int ssidlength, char *output)
|
||
{
|
||
printf("pmk_info not match, store... [%s] [%s],,,\n", ssid, password);
|
||
|
||
struct pmk_info info;
|
||
info.crc = CRC16(password, strlen(password));
|
||
info.crc += CRC16(ssid, ssidlength);
|
||
memcpy(info.pmk, output, sizeof(info.pmk));
|
||
/* db_update_buffer(WIFI_PMK_INFO, (char *)&info, sizeof(struct pmk_info)); */
|
||
syscfg_write(WIFI_PMK_INFO, (char *)&info, sizeof(struct pmk_info));
|
||
}
|
||
#endif
|
||
|
||
#endif
|
||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
int wifi_get_rf_trim_data(void *info, int size)
|
||
{
|
||
if (syscfg_read(VM_WIFI_RF_INIT_INFO, info, size) != size) {
|
||
return -1;
|
||
}
|
||
return 0;
|
||
}
|
||
int wifi_set_rf_trim_data(void *info, int size)
|
||
{
|
||
if (syscfg_write(VM_WIFI_RF_INIT_INFO, info, size) != size) {
|
||
return -1;
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
/* 大量数据传输时可以设置这个间隔或者缩短休眠间隔 */
|
||
void wl_set_active_wait_interval(u8 count)
|
||
{
|
||
wl_active_wait_interval_count = count;
|
||
return;
|
||
}
|
||
|
||
u8 wl_get_active_wait_interval(void)
|
||
{
|
||
return wl_active_wait_interval_count;
|
||
}
|
||
|
||
/* 设置自定义 beacon 监听间隔,这个间隔时间只有 STA 自己知道,太长可能导致断连 */
|
||
void wl_set_custom_listen_interval(u16 interval)
|
||
{
|
||
wl_custom_listen_interval = interval;
|
||
return;
|
||
}
|
||
|
||
u16 wl_get_custom_listen_interval(void *priv)
|
||
{
|
||
return wl_custom_listen_interval;
|
||
}
|
||
|
||
/* 设置默认 beacon 监听间隔,这个间隔时间在连接关联时会同步给 AP,因此需要在建立连接之前设置,当不监听 DTIM 时,系统按照这个间隔休眠 */
|
||
void wl_set_default_listen_interval(u16 interval)
|
||
{
|
||
wl_default_listen_interval = interval;
|
||
return;
|
||
}
|
||
|
||
u16 wl_get_default_listen_interval(void)
|
||
{
|
||
return wl_default_listen_interval;
|
||
}
|
||
|
||
// Listening policy
|
||
/* 策略共四种情况:
|
||
1、只监听 DTIM (默认);不启用 2、3 时,默认使用策略 1;
|
||
2、每个 TIM 都监听;优先级最高
|
||
3、自定义监听间隔;
|
||
4、以上三个都不启用则按照默认监听间隔监听;优先级最低
|
||
*/
|
||
extern bool wl_listen_dtim_enabled_flag; // 默认情况下监听 DTIM
|
||
extern bool wl_listen_each_tim_enabled_flag;
|
||
extern bool wl_listen_custom_intervals_enabled_flag;
|
||
extern bool wl_listen_intervals_cheak_flag; // 监听策略修改之后,要给这个标志位置1,让wifi协议栈去更新
|
||
|
||
void wl_enabled_listen_dtim(void)
|
||
{
|
||
wl_listen_dtim_enabled_flag = true;
|
||
wl_listen_each_tim_enabled_flag = false;
|
||
wl_listen_custom_intervals_enabled_flag = false;
|
||
wl_listen_intervals_cheak_flag = true;
|
||
return;
|
||
}
|
||
|
||
// 按照默认监听间隔进行监听,该默认间隔需要在连接之前通过 wl_set_default_listen_interval 配置下去,否则默认值是3
|
||
void wl_disenabled_listen_dtim(void)
|
||
{
|
||
wl_listen_dtim_enabled_flag = false;
|
||
wl_listen_each_tim_enabled_flag = false;
|
||
wl_listen_custom_intervals_enabled_flag = false;
|
||
wl_listen_intervals_cheak_flag = true;
|
||
return;
|
||
}
|
||
|
||
// 按照自定义的间隔进行监听,该自定义间隔需要通过 wl_set_custom_listen_interval 配置下去,否则默认值是10
|
||
void wl_enabled_listen_custom_intervals(void)
|
||
{
|
||
wl_listen_dtim_enabled_flag = false;
|
||
wl_listen_each_tim_enabled_flag = false;
|
||
wl_listen_custom_intervals_enabled_flag = true;
|
||
wl_listen_intervals_cheak_flag = true;
|
||
return;
|
||
}
|
||
|
||
// 退出自定义间隔的配置之后,默认回到监听 DTIM 的策略,如果要进入默认间隔的配置则需要再调一次 wl_disenabled_listen_dtim
|
||
void wl_disenabled_listen_custom_intervals(void)
|
||
{
|
||
wl_enabled_listen_dtim();
|
||
return;
|
||
}
|
||
|
||
void wl_enabled_listen_each_tim(void)
|
||
{
|
||
wl_listen_dtim_enabled_flag = false;
|
||
wl_listen_each_tim_enabled_flag = true;
|
||
wl_listen_custom_intervals_enabled_flag = false;
|
||
wl_listen_intervals_cheak_flag = true;
|
||
return;
|
||
}
|
||
|
||
// 退出监听每一个间隔的配置之后,默认回到监听 DTIM 的策略,如果要进入默认间隔的配置则需要再调一次 wl_disenabled_listen_dtim
|
||
void wl_disenabled_listen_each_tim(void)
|
||
{
|
||
wl_enabled_listen_dtim();
|
||
return;
|
||
}
|
||
|
||
#if 0 //WIFI RX 中庸策略
|
||
const u32 STF_END_CNT_THR_VAL = 179;
|
||
const u32 STF_DET_CNT_THR_VAL = 16;
|
||
const u32 DS_DET_CNT_THR0_VAL = 3;
|
||
const u32 STF_DET_THR1_VAL = 180;
|
||
const u32 STF_DET_THR2_VAL = 180;
|
||
const u32 STF_DET_THR3_VAL = 180;
|
||
const u32 DSSS_XCDET_THR1_VAL = 120;
|
||
const u32 DSSS_XCDET_THR2_VAL = 80;
|
||
const u32 DS_VLD_CNT_THR_VAL = 72;
|
||
const u32 DS_DET_CNT_THR1_VAL = 3;
|
||
|
||
///=======================================================//
|
||
/// ram adr ctl
|
||
/// 0 - 127 feq index 0 - 127
|
||
/// 128 - 223 agc index 0 - 95
|
||
/// 224 - 225 apc index 0 - 31
|
||
///=======================================================//
|
||
const unsigned long wl_rfd_ram_lut [256][2] = {
|
||
//{ H , L }
|
||
/// =================================================
|
||
/// FEQ
|
||
///
|
||
///
|
||
///==================================================
|
||
/* 0 */ { 0x06405555 , 0x8A1B01A0 },
|
||
/* 1 */ { 0x06410000 , 0x8A3B01A0 },
|
||
/* 2 */ { 0x0641AAAB , 0x8A5B01A0 },
|
||
/* 3 */ { 0x06425555 , 0x8A7B01A0 },
|
||
/* 4 */ { 0x06430000 , 0x8A9B01A0 },
|
||
/* 5 */ { 0x0643AAAB , 0x8ABB01A0 },
|
||
/* 6 */ { 0x06445555 , 0x8ADB01A0 },
|
||
/* 7 */ { 0x06450000 , 0x8AFB01A0 },
|
||
/* 8 */ { 0x0645AAAB , 0x8B1B01A0 },
|
||
/* 9 */ { 0x06465555 , 0x8B3B01A0 },
|
||
/*10 */ { 0x06470000 , 0x8B5B01A0 },
|
||
/*11 */ { 0x0647AAAB , 0x8B7B01A0 },
|
||
/*12 */ { 0x06485555 , 0x8B9B01A0 },
|
||
/*13 */ { 0x06490000 , 0x8BBB01A0 },
|
||
/*14 */ { 0x0649AAAB , 0x8BDB01A0 },
|
||
/*15 */ { 0x064A5555 , 0x8BFB01A0 },
|
||
/*16 */ { 0x064B0000 , 0x8C1B01A0 },
|
||
/*17 */ { 0x064BAAAB , 0x8C3B01A0 },
|
||
/*18 */ { 0x064C5555 , 0x8C5B01A0 },
|
||
/*19 */ { 0x064D0000 , 0x8C7B01A0 },
|
||
/*20 */ { 0x064DAAAB , 0x8C9B01A0 },
|
||
/*21 */ { 0x064E5555 , 0x8CBB01A0 },
|
||
/*22 */ { 0x064F0000 , 0x8CDB01A0 },
|
||
/*23 */ { 0x064FAAAB , 0x8CFB01A0 },
|
||
/*24 */ { 0x06505555 , 0x8D1B01A0 },
|
||
/*25 */ { 0x06510000 , 0x8D3B01A0 },
|
||
/*26 */ { 0x0651AAAB , 0x8D5B01A0 },
|
||
/*27 */ { 0x06525555 , 0x8D7B01A0 },
|
||
/*28 */ { 0x06530000 , 0x8D9B01A0 },
|
||
/*29 */ { 0x0653AAAB , 0x8DBB01A0 },
|
||
/*30 */ { 0x06545555 , 0x8DDB01A0 },
|
||
/*31 */ { 0x06550000 , 0x8DFB01A0 },
|
||
/*32 */ { 0x0655AAAB , 0x8E1B01A0 },
|
||
/*33 */ { 0x06565555 , 0x8E3B01A0 },
|
||
/*34 */ { 0x06570000 , 0x8E5B01A0 },
|
||
/*35 */ { 0x0657AAAB , 0x8E7B01A0 },
|
||
/*36 */ { 0x06585555 , 0x8E9B01A0 },
|
||
/*37 */ { 0x06590000 , 0x8EBB01A0 },
|
||
/*38 */ { 0x0659AAAB , 0x8EDB01A0 },
|
||
/*39 */ { 0x065A5555 , 0x8EFB01A0 },
|
||
/*40 */ { 0x065B0000 , 0x8F1B01A0 },
|
||
/*41 */ { 0x065BAAAB , 0x8F3B01A0 },
|
||
/*42 */ { 0x065C5555 , 0x8F5B01A0 },
|
||
/*43 */ { 0x065D0000 , 0x8F7B01A0 },
|
||
/*44 */ { 0x065DAAAB , 0x8F9B01A0 },
|
||
/*45 */ { 0x065E5555 , 0x8FBB01A0 },
|
||
/*46 */ { 0x065F0000 , 0x8FDB01A0 },
|
||
/*47 */ { 0x065FAAAB , 0x8FFB01A0 },
|
||
/*48 */ { 0x06605555 , 0x901B01A0 },
|
||
/*49 */ { 0x06610000 , 0x903B01A0 },
|
||
/*50 */ { 0x0661AAAB , 0x905B01A0 },
|
||
/*51 */ { 0x06625555 , 0x907B01A0 },
|
||
/*52 */ { 0x06630000 , 0x909B01A0 },
|
||
/*53 */ { 0x0663AAAB , 0x90BB01A0 },
|
||
/*54 */ { 0x06645555 , 0x90DB01A0 },
|
||
/*55 */ { 0x06650000 , 0x90FB01A0 },
|
||
/*56 */ { 0x0665AAAB , 0x911B01A0 },
|
||
/*57 */ { 0x06665555 , 0x913B01A0 },
|
||
/*58 */ { 0x06670000 , 0x915B01A0 },
|
||
/*59 */ { 0x0667AAAB , 0x917B01A0 },
|
||
/*60 */ { 0x06685555 , 0x919B01A0 },
|
||
/*61 */ { 0x06690000 , 0x91BB01A0 },
|
||
/*62 */ { 0x0669AAAB , 0x91DB01A0 },
|
||
/*63 */ { 0x066A5555 , 0x91FB01A0 },
|
||
/*64 */ { 0x066B0000 , 0x921B01A0 },
|
||
/*65 */ { 0x066BAAAB , 0x923B01A0 },
|
||
/*66 */ { 0x066C5555 , 0x925B01A0 },
|
||
/*67 */ { 0x066D0000 , 0x927B01A0 },
|
||
/*68 */ { 0x066DAAAB , 0x929B01A0 },
|
||
/*69 */ { 0x066E5555 , 0x92BB01A0 },
|
||
/*70 */ { 0x066F0000 , 0x92DB01A0 },
|
||
/*71 */ { 0x066FAAAB , 0x92FB01A0 },
|
||
/*72 */ { 0x06705555 , 0x931B01A0 },
|
||
/*73 */ { 0x06710000 , 0x933B01A0 },
|
||
/*74 */ { 0x0671AAAB , 0x935B01A0 },
|
||
/*75 */ { 0x06725555 , 0x937B01A0 },
|
||
/*76 */ { 0x06730000 , 0x939B01A0 },
|
||
/*77 */ { 0x0673AAAB , 0x93BB01A0 },
|
||
/*78 */ { 0x06745555 , 0x93DB01A0 },
|
||
/*79 */ { 0x06750000 , 0x93FB01A0 },
|
||
/*80 */ { 0x0675AAAB , 0x941B01A0 },
|
||
/*81 */ { 0x06765555 , 0x943B01A0 },
|
||
/*82 */ { 0x06770000 , 0x945B01A0 },
|
||
/*83 */ { 0x0677AAAB , 0x947B01A0 },
|
||
/*84 */ { 0x06785555 , 0x949B01A0 },
|
||
/*85 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*86 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*87 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*88 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*89 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*90 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*91 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*92 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*93 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*94 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*95 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*96 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*97 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*98 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*99 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*100 */{ 0x06415555 , 0x8A3B01A0 },
|
||
/*101 */{ 0x0644AAAB , 0x8ADB01A0 },
|
||
/*102 */{ 0x06480000 , 0x8B7B01A0 },
|
||
/*103 */{ 0x064B5555 , 0x8C1B01A0 },
|
||
/*104 */{ 0x064EAAAB , 0x8CBB01A0 },
|
||
/*105 */{ 0x06520000 , 0x8D5B01A0 },
|
||
/*106 */{ 0x06555555 , 0x8DFB01A0 },
|
||
/*107 */{ 0x0658AAAB , 0x8E9B01A0 },
|
||
/*108 */{ 0x065C0000 , 0x8F3B01A0 },
|
||
/*109 */{ 0x065F5555 , 0x8FDB01A0 },
|
||
/*110 */{ 0x0662AAAB , 0x907B01A0 },
|
||
/*111 */{ 0x06660000 , 0x911B01A0 },
|
||
/*112 */{ 0x06695555 , 0x91BB01A0 },
|
||
/*113 */{ 0x066CAAAB , 0x925B01A0 },
|
||
/*114 */{ 0x06700000 , 0x92FB01A0 },
|
||
/*115 */{ 0x06735555 , 0x939B01A0 },
|
||
/*116 */{ 0x0676AAAB , 0x943B01A0 },
|
||
/*117 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*118 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*119 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*120 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*121 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*122 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*123 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*124 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*125 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*126 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*127 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/// =================================================
|
||
/// AGC
|
||
/// [32] [31:29] [28:26] [25:23] [22:20] [19:18] [17:15] [14:11] [10:4] [3:2] [1:0]
|
||
/// TRX_RFSW TRX_RFCAP VG1_5-0 VG0_12/6/0 HPF_GS RXF3_12/6RXF_12/6/0 MIX_TIA_RT MIX_TIA_CT MIX_GM_GS LNA_GS
|
||
///==================================================
|
||
/*128*/{0x0000007A , 0x008087F0 },
|
||
/*129*/{0x0000007A , 0x048087F0 },
|
||
/*130*/{0x0000007A , 0x088087F0 },
|
||
/*131*/{0x0000007A , 0x0C8087F0 },
|
||
/*132*/{0x0000007A , 0x108087F0 },
|
||
/*133*/{0x0000007A , 0x008087F4 },
|
||
/*134*/{0x0000007A , 0x048087F4 },
|
||
/*135*/{0x0000007A , 0x088087F4 },
|
||
/*136*/{0x0000000A , 0x008087F4 },
|
||
/*137*/{0x0000000A , 0x048087F4 },
|
||
/*138*/{0x0000000A , 0x088087F4 },
|
||
/*139*/{0x0000000A , 0x0C8087F4 },
|
||
/*140*/{0x0000000A , 0x108087F4 },
|
||
/*141*/{0x0000000A , 0x148087F4 },
|
||
/*142*/{0x0000000A , 0x008087F5 },
|
||
/*143*/{0x0000000A , 0x048087F5 },
|
||
/*144*/{0x0000000A , 0x088087F5 },
|
||
/*145*/{0x0000000A , 0x0C8087F5 },
|
||
/*146*/{0x0000000A , 0x108087F5 },
|
||
/*147*/{0x0000000A , 0x008087F6 },
|
||
/*148*/{0x0000000A , 0x048087F6 },
|
||
/*149*/{0x0000000A , 0x088087F6 },
|
||
/*150*/{0x0000000A , 0x0C8087F6 },
|
||
/*151*/{0x0000000A , 0x108087F6 },
|
||
/*152*/{0x0000000A , 0x148087F6 },
|
||
/*153*/{0x0000000A , 0x011087F6 },
|
||
/*154*/{0x0000000A , 0x051087F6 },
|
||
/*155*/{0x0000000A , 0x091087F6 },
|
||
/*156*/{0x0000000A , 0x0D1087F6 },
|
||
/*157*/{0x0000000A , 0x111087F6 },
|
||
/*158*/{0x0000000A , 0x151087F6 },
|
||
/*159*/{0x0000000A , 0x012487F6 },
|
||
/*160*/{0x0000000A , 0x052487F6 },
|
||
/*161*/{0x0000000A , 0x092487F6 },
|
||
/*162*/{0x0000000A , 0x0D2487F6 },
|
||
/*163*/{0x0000000A , 0x008087F7 },
|
||
/*164*/{0x0000000A , 0x048087F7 },
|
||
/*165*/{0x0000000A , 0x088087F7 },
|
||
/*166*/{0x0000000A , 0x0C8087F7 },
|
||
/*167*/{0x0000000A , 0x108087F7 },
|
||
/*168*/{0x0000000A , 0x148087F7 },
|
||
/*169*/{0x0000000A , 0x011087F7 },
|
||
/*170*/{0x0000000A , 0x051087F7 },
|
||
/*171*/{0x0000000A , 0x091087F7 },
|
||
/*172*/{0x0000000A , 0x0D1087F7 },
|
||
/*173*/{0x0000000A , 0x111087F7 },
|
||
/*174*/{0x0000000A , 0x151087F7 },
|
||
/*175*/{0x0000000A , 0x012487F7 },
|
||
/*176*/{0x0000000A , 0x052487F7 },
|
||
/*177*/{0x0000000A , 0x092487F7 },
|
||
/*178*/{0x0000000A , 0x0D2487F7 },
|
||
/*179*/{0x0000000A , 0x112487F7 },
|
||
/*180*/{0x0000000A , 0x15109C57 },
|
||
/*181*/{0x0000000A , 0x01249C57 },
|
||
/*182*/{0x0000000A , 0x05249C57 },
|
||
/*183*/{0x0000000A , 0x09249C57 },
|
||
/*184*/{0x0000000A , 0x0D249C57 },
|
||
/*185*/{0x0000000A , 0x11249C57 },
|
||
/*186*/{0x0000000A , 0x0110C8F7 },
|
||
/*187*/{0x0000000A , 0x0510C8F7 },
|
||
/*188*/{0x0000000A , 0x0910C8F7 },
|
||
/*189*/{0x0000000A , 0x0D10C8F7 },
|
||
/*190*/{0x0000000A , 0x1110C8F7 },
|
||
/*191*/{0x0000000A , 0x1510C8F7 },
|
||
/*192*/{0x0000000A , 0x0124C8F7 },
|
||
/*193*/{0x0000000A , 0x0524C8F7 },
|
||
/*194*/{0x0000000A , 0x0924C8F7 },
|
||
/*195*/{0x0000000A , 0x0D24C8F7 },
|
||
/*196*/{0x0000000A , 0x1124C8F7 },
|
||
/*197*/{0x0000000A , 0x1524C8F7 },
|
||
/*198*/{0x0000000A , 0x013548F7 },
|
||
/*199*/{0x0000000A , 0x053548F7 },
|
||
/*200*/{0x0000000A , 0x093548F7 },
|
||
/*201*/{0x0000000A , 0x0D3548F7 },
|
||
/*202*/{0x0000000A , 0x113548F7 },
|
||
/*203*/{0x0000000A , 0x153548F7 },
|
||
/*204*/{0x0000000A , 0x024548F7 },
|
||
/*205*/{0x0000000A , 0x064548F7 },
|
||
/*206*/{0x0000000A , 0x0A4548F7 },
|
||
/*207*/{0x0000000A , 0x0E4548F7 },
|
||
/*208*/{0x0000000A , 0x124548F7 },
|
||
/*209*/{0x0000000A , 0x164548F7 },
|
||
/*210*/{0x0000000A , 0x025948F7 },
|
||
/*211*/{0x0000000A , 0x065948F7 },
|
||
/*212*/{0x0000000A , 0x0A5948F7 },
|
||
/*213*/{0x0000000A , 0x0E5948F7 },
|
||
/*214*/{0x0000000A , 0x125948F7 },
|
||
/*215*/{0x0000000A , 0x165948F7 },
|
||
/*216*/{0x0000000A , 0x026A48F7 },
|
||
/*217*/{0x0000000A , 0x066A48F7 },
|
||
/*218*/{0x0000000A , 0x0A6A48F7 },
|
||
/*219*/{0x0000000A , 0x0E6A48F7 },
|
||
/*220*/{0x0000000A , 0x126A48F7 },
|
||
/*221*/{0x0000000A , 0x166A48F7 },
|
||
/*222*/{0x0000000A , 0x166A48F7 },
|
||
/*223*/{0x0000000A , 0x166A48F7 },
|
||
/// =================================================
|
||
/// APC
|
||
///
|
||
///
|
||
///==================================================
|
||
|
||
/*224*/{ 0x00000078, 0x17836876},
|
||
/*225*/{ 0x00000078, 0x17A36876},
|
||
/*226*/{ 0x00000078, 0x17C36876},
|
||
/*227*/{ 0x00000078, 0x17E36876},
|
||
/*228*/{ 0x00000078, 0x57E36876},
|
||
/*229*/{ 0x00000078, 0x97E36876},
|
||
/*230*/{ 0x00000078, 0xD7E36876},
|
||
/*231*/{ 0x00000078, 0xD7E36876},
|
||
/*232*/{ 0x00000078, 0xD7E36876},
|
||
/*233*/{ 0x00000078, 0xD7E36876},
|
||
/*234*/{ 0x00000078, 0xD7E36876},
|
||
/*235*/{ 0x00000078, 0xD7E36876},
|
||
/*236*/{ 0x00000078, 0xD7E36876},
|
||
/*237*/{ 0x00000078, 0xD7E36876},
|
||
/*238*/{ 0x00000078, 0xD7E36876},
|
||
/*239*/{ 0x00000078, 0xD7E36876},
|
||
/*240*/{ 0x00000078, 0x17830871},
|
||
/*241*/{ 0x00000078, 0x17831871},
|
||
/*242*/{ 0x00000078, 0x17832871},
|
||
/*243*/{ 0x00000078, 0x17834871},
|
||
/*244*/{ 0x00000078, 0x17836871},
|
||
/*245*/{ 0x00000078, 0x17A36871},
|
||
/*246*/{ 0x00000078, 0x17E36871},
|
||
/*247*/{ 0x00000078, 0x57E36871},
|
||
/*248*/{ 0x00000078, 0x97E36871},
|
||
/*249*/{ 0x00000078, 0xD7E36875},
|
||
/*250*/{ 0x00000078, 0xD7E36876},
|
||
/*251*/{ 0x00000078, 0xD7E3687a},
|
||
/*252*/{ 0x00000078, 0xD7E3687a},
|
||
/*253*/{ 0x00000078, 0xD7E3687a},
|
||
/*254*/{ 0x00000078, 0xD7E3687a},
|
||
/*255*/{ 0x00000078, 0xD7E3687a},
|
||
};
|
||
|
||
|
||
#else // WIFI RX 抗干扰能力更强策略
|
||
|
||
const u32 STF_END_CNT_THR_VAL = 190;
|
||
const u32 STF_DET_CNT_THR_VAL = 12;
|
||
const u32 DS_DET_CNT_THR0_VAL = 4;
|
||
const u32 STF_DET_THR1_VAL = 190;
|
||
const u32 STF_DET_THR2_VAL = 150;
|
||
const u32 STF_DET_THR3_VAL = 140;
|
||
const u32 DSSS_XCDET_THR1_VAL = 80;
|
||
const u32 DSSS_XCDET_THR2_VAL = 100;
|
||
const u32 DS_VLD_CNT_THR_VAL = 80;
|
||
const u32 DS_DET_CNT_THR1_VAL = 4;
|
||
|
||
///=======================================================//
|
||
/// ram adr ctl
|
||
/// 0 - 127 feq index 0 - 127
|
||
/// 128 - 223 agc index 0 - 95
|
||
/// 224 - 225 apc index 0 - 31
|
||
///=======================================================//
|
||
const unsigned long wl_rfd_ram_lut [256][2] = {
|
||
//{ H , L }
|
||
/// =================================================
|
||
/// FEQ
|
||
///
|
||
///
|
||
///==================================================
|
||
/* 0 */ { 0x06405555 , 0x8A1B01A0 },
|
||
/* 1 */ { 0x06410000 , 0x8A3B01A0 },
|
||
/* 2 */ { 0x0641AAAB , 0x8A5B01A0 },
|
||
/* 3 */ { 0x06425555 , 0x8A7B01A0 },
|
||
/* 4 */ { 0x06430000 , 0x8A9B01A0 },
|
||
/* 5 */ { 0x0643AAAB , 0x8ABB01A0 },
|
||
/* 6 */ { 0x06445555 , 0x8ADB01A0 },
|
||
/* 7 */ { 0x06450000 , 0x8AFB01A0 },
|
||
/* 8 */ { 0x0645AAAB , 0x8B1B01A0 },
|
||
/* 9 */ { 0x06465555 , 0x8B3B01A0 },
|
||
/*10 */ { 0x06470000 , 0x8B5B01A0 },
|
||
/*11 */ { 0x0647AAAB , 0x8B7B01A0 },
|
||
/*12 */ { 0x06485555 , 0x8B9B01A0 },
|
||
/*13 */ { 0x06490000 , 0x8BBB01A0 },
|
||
/*14 */ { 0x0649AAAB , 0x8BDB01A0 },
|
||
/*15 */ { 0x064A5555 , 0x8BFB01A0 },
|
||
/*16 */ { 0x064B0000 , 0x8C1B01A0 },
|
||
/*17 */ { 0x064BAAAB , 0x8C3B01A0 },
|
||
/*18 */ { 0x064C5555 , 0x8C5B01A0 },
|
||
/*19 */ { 0x064D0000 , 0x8C7B01A0 },
|
||
/*20 */ { 0x064DAAAB , 0x8C9B01A0 },
|
||
/*21 */ { 0x064E5555 , 0x8CBB01A0 },
|
||
/*22 */ { 0x064F0000 , 0x8CDB01A0 },
|
||
/*23 */ { 0x064FAAAB , 0x8CFB01A0 },
|
||
/*24 */ { 0x06505555 , 0x8D1B01A0 },
|
||
/*25 */ { 0x06510000 , 0x8D3B01A0 },
|
||
/*26 */ { 0x0651AAAB , 0x8D5B01A0 },
|
||
/*27 */ { 0x06525555 , 0x8D7B01A0 },
|
||
/*28 */ { 0x06530000 , 0x8D9B01A0 },
|
||
/*29 */ { 0x0653AAAB , 0x8DBB01A0 },
|
||
/*30 */ { 0x06545555 , 0x8DDB01A0 },
|
||
/*31 */ { 0x06550000 , 0x8DFB01A0 },
|
||
/*32 */ { 0x0655AAAB , 0x8E1B01A0 },
|
||
/*33 */ { 0x06565555 , 0x8E3B01A0 },
|
||
/*34 */ { 0x06570000 , 0x8E5B01A0 },
|
||
/*35 */ { 0x0657AAAB , 0x8E7B01A0 },
|
||
/*36 */ { 0x06585555 , 0x8E9B01A0 },
|
||
/*37 */ { 0x06590000 , 0x8EBB01A0 },
|
||
/*38 */ { 0x0659AAAB , 0x8EDB01A0 },
|
||
/*39 */ { 0x065A5555 , 0x8EFB01A0 },
|
||
/*40 */ { 0x065B0000 , 0x8F1B01A0 },
|
||
/*41 */ { 0x065BAAAB , 0x8F3B01A0 },
|
||
/*42 */ { 0x065C5555 , 0x8F5B01A0 },
|
||
/*43 */ { 0x065D0000 , 0x8F7B01A0 },
|
||
/*44 */ { 0x065DAAAB , 0x8F9B01A0 },
|
||
/*45 */ { 0x065E5555 , 0x8FBB01A0 },
|
||
/*46 */ { 0x065F0000 , 0x8FDB01A0 },
|
||
/*47 */ { 0x065FAAAB , 0x8FFB01A0 },
|
||
/*48 */ { 0x06605555 , 0x901B01A0 },
|
||
/*49 */ { 0x06610000 , 0x903B01A0 },
|
||
/*50 */ { 0x0661AAAB , 0x905B01A0 },
|
||
/*51 */ { 0x06625555 , 0x907B01A0 },
|
||
/*52 */ { 0x06630000 , 0x909B01A0 },
|
||
/*53 */ { 0x0663AAAB , 0x90BB01A0 },
|
||
/*54 */ { 0x06645555 , 0x90DB01A0 },
|
||
/*55 */ { 0x06650000 , 0x90FB01A0 },
|
||
/*56 */ { 0x0665AAAB , 0x911B01A0 },
|
||
/*57 */ { 0x06665555 , 0x913B01A0 },
|
||
/*58 */ { 0x06670000 , 0x915B01A0 },
|
||
/*59 */ { 0x0667AAAB , 0x917B01A0 },
|
||
/*60 */ { 0x06685555 , 0x919B01A0 },
|
||
/*61 */ { 0x06690000 , 0x91BB01A0 },
|
||
/*62 */ { 0x0669AAAB , 0x91DB01A0 },
|
||
/*63 */ { 0x066A5555 , 0x91FB01A0 },
|
||
/*64 */ { 0x066B0000 , 0x921B01A0 },
|
||
/*65 */ { 0x066BAAAB , 0x923B01A0 },
|
||
/*66 */ { 0x066C5555 , 0x925B01A0 },
|
||
/*67 */ { 0x066D0000 , 0x927B01A0 },
|
||
/*68 */ { 0x066DAAAB , 0x929B01A0 },
|
||
/*69 */ { 0x066E5555 , 0x92BB01A0 },
|
||
/*70 */ { 0x066F0000 , 0x92DB01A0 },
|
||
/*71 */ { 0x066FAAAB , 0x92FB01A0 },
|
||
/*72 */ { 0x06705555 , 0x931B01A0 },
|
||
/*73 */ { 0x06710000 , 0x933B01A0 },
|
||
/*74 */ { 0x0671AAAB , 0x935B01A0 },
|
||
/*75 */ { 0x06725555 , 0x937B01A0 },
|
||
/*76 */ { 0x06730000 , 0x939B01A0 },
|
||
/*77 */ { 0x0673AAAB , 0x93BB01A0 },
|
||
/*78 */ { 0x06745555 , 0x93DB01A0 },
|
||
/*79 */ { 0x06750000 , 0x93FB01A0 },
|
||
/*80 */ { 0x0675AAAB , 0x941B01A0 },
|
||
/*81 */ { 0x06765555 , 0x943B01A0 },
|
||
/*82 */ { 0x06770000 , 0x945B01A0 },
|
||
/*83 */ { 0x0677AAAB , 0x947B01A0 },
|
||
/*84 */ { 0x06785555 , 0x949B01A0 },
|
||
/*85 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*86 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*87 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*88 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*89 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*90 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*91 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*92 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*93 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*94 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*95 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*96 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*97 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*98 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*99 */ { 0x06790000 , 0x94BB01A0 },
|
||
/*100 */{ 0x06415555 , 0x8A3B01A0 },
|
||
/*101 */{ 0x0644AAAB , 0x8ADB01A0 },
|
||
/*102 */{ 0x06480000 , 0x8B7B01A0 },
|
||
/*103 */{ 0x064B5555 , 0x8C1B01A0 },
|
||
/*104 */{ 0x064EAAAB , 0x8CBB01A0 },
|
||
/*105 */{ 0x06520000 , 0x8D5B01A0 },
|
||
/*106 */{ 0x06555555 , 0x8DFB01A0 },
|
||
/*107 */{ 0x0658AAAB , 0x8E9B01A0 },
|
||
/*108 */{ 0x065C0000 , 0x8F3B01A0 },
|
||
/*109 */{ 0x065F5555 , 0x8FDB01A0 },
|
||
/*110 */{ 0x0662AAAB , 0x907B01A0 },
|
||
/*111 */{ 0x06660000 , 0x911B01A0 },
|
||
/*112 */{ 0x06695555 , 0x91BB01A0 },
|
||
/*113 */{ 0x066CAAAB , 0x925B01A0 },
|
||
/*114 */{ 0x06700000 , 0x92FB01A0 },
|
||
/*115 */{ 0x06735555 , 0x939B01A0 },
|
||
/*116 */{ 0x0676AAAB , 0x943B01A0 },
|
||
/*117 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*118 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*119 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*120 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*121 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*122 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*123 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*124 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*125 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*126 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/*127 */{ 0x067A0000 , 0x94DB01A0 },
|
||
/// =================================================
|
||
/// AGC
|
||
/// [32] [31:29] [28:26] [25:23] [22:20] [19:18] [17:15] [14:11] [10:4] [3:2] [1:0]
|
||
/// TRX_RFSW TRX_RFCAP VG1_5-0 VG0_12/6/0 HPF_GS RXF3_12/6RXF_12/6/0 MIX_TIA_RT MIX_TIA_CT MIX_GM_GS LNA_GS
|
||
///==================================================
|
||
/*128*/{0x0000007A , 0x008087F0 },
|
||
/*129*/{0x0000007A , 0x048087F0 },
|
||
/*130*/{0x0000007A , 0x088087F0 },
|
||
/*131*/{0x0000007A , 0x0C8087F0 },
|
||
/*132*/{0x0000007A , 0x108087F0 },
|
||
/*133*/{0x0000007A , 0x008087F4 },
|
||
/*134*/{0x0000007A , 0x048087F4 },
|
||
/*135*/{0x0000007A , 0x088087F4 },
|
||
/*136*/{0x0000000A , 0x008087F4 },
|
||
/*137*/{0x0000000A , 0x048087F4 },
|
||
/*138*/{0x0000000A , 0x088087F4 },
|
||
/*139*/{0x0000000A , 0x0C8087F4 },
|
||
/*140*/{0x0000000A , 0x108087F4 },
|
||
/*141*/{0x0000000A , 0x148087F4 },
|
||
/*142*/{0x0000000A , 0x008087F5 },
|
||
/*143*/{0x0000000A , 0x048087F5 },
|
||
/*144*/{0x0000000A , 0x088087F5 },
|
||
/*145*/{0x0000000A , 0x0C8087F5 },
|
||
/*146*/{0x0000000A , 0x108087F5 },
|
||
/*147*/{0x0000000A , 0x008087F6 },
|
||
/*148*/{0x0000000A , 0x048087F6 },
|
||
/*149*/{0x0000000A , 0x088087F6 },
|
||
/*150*/{0x0000000A , 0x0C8087F6 },
|
||
/*151*/{0x0000000A , 0x108087F6 },
|
||
/*152*/{0x0000000A , 0x148087F6 },
|
||
/*153*/{0x0000000A , 0x011087F6 },
|
||
/*154*/{0x0000000A , 0x051087F6 },
|
||
/*155*/{0x0000000A , 0x091087F6 },
|
||
/*156*/{0x0000000A , 0x0D1087F6 },
|
||
/*157*/{0x0000000A , 0x111087F6 },
|
||
/*158*/{0x0000000A , 0x151087F6 },
|
||
/*159*/{0x0000000A , 0x012487F6 },
|
||
/*160*/{0x0000000A , 0x052487F6 },
|
||
/*161*/{0x0000000A , 0x092487F6 },
|
||
/*162*/{0x0000000A , 0x0D2487F6 },
|
||
/*163*/{0x0000000A , 0x008087F7 },
|
||
/*164*/{0x0000000A , 0x048087F7 },
|
||
/*165*/{0x0000000A , 0x088087F7 },
|
||
/*166*/{0x0000000A , 0x0C8087F7 },
|
||
/*167*/{0x0000000A , 0x108087F7 },
|
||
/*168*/{0x0000000A , 0x148087F7 },
|
||
/*169*/{0x0000000A , 0x011087F7 },
|
||
/*170*/{0x0000000A , 0x051087F7 },
|
||
/*171*/{0x0000000A , 0x091087F7 },
|
||
/*172*/{0x0000000A , 0x0D1087F7 },
|
||
/*173*/{0x0000000A , 0x111087F7 },
|
||
/*174*/{0x0000000A , 0x151087F7 },
|
||
/*175*/{0x0000000A , 0x012487F7 },
|
||
/*176*/{0x0000000A , 0x052487F7 },
|
||
/*177*/{0x0000000A , 0x092487F7 },
|
||
/*178*/{0x0000000A , 0x0D2487F7 },
|
||
/*179*/{0x0000000A , 0x112487F7 },
|
||
/*180*/{0x0000000A , 0x0D248F17 },
|
||
/*181*/{0x0000000A , 0x11248F17 },
|
||
/*182*/{0x0000000A , 0x15248F17 },
|
||
/*183*/{0x0000000A , 0x01350F17 },
|
||
/*184*/{0x0000000A , 0x05350F17 },
|
||
/*185*/{0x0000000A , 0x09350F17 },
|
||
/*186*/{0x0000000A , 0x15249C57 },
|
||
/*187*/{0x0000000A , 0x01351C57 },
|
||
/*188*/{0x0000000A , 0x05351C57 },
|
||
/*189*/{0x0000000A , 0x09351C57 },
|
||
/*190*/{0x0000000A , 0x1524AAB7 },
|
||
/*191*/{0x0000000A , 0x01352AB7 },
|
||
/*192*/{0x0000000A , 0x05352AB7 },
|
||
/*193*/{0x0000000A , 0x09352AB7 },
|
||
/*194*/{0x0000000A , 0x0D352AB7 },
|
||
/*195*/{0x0000000A , 0x11352AB7 },
|
||
/*196*/{0x0000000A , 0x11353217 },
|
||
/*197*/{0x0000000A , 0x15353217 },
|
||
/*198*/{0x0000000A , 0x02453217 },
|
||
/*199*/{0x0000000A , 0x06453217 },
|
||
/*200*/{0x0000000A , 0x0A453217 },
|
||
/*201*/{0x0000000A , 0x0E453217 },
|
||
/*202*/{0x0000000A , 0x12453217 },
|
||
/*203*/{0x0000000A , 0x16453217 },
|
||
/*204*/{0x0000000A , 0x0E453997 },
|
||
/*205*/{0x0000000A , 0x12453997 },
|
||
/*206*/{0x0000000A , 0x16453997 },
|
||
/*207*/{0x0000000A , 0x02593997 },
|
||
/*208*/{0x0000000A , 0x02594137 },
|
||
/*209*/{0x0000000A , 0x06594137 },
|
||
/*210*/{0x0000000A , 0x0A594137 },
|
||
/*211*/{0x0000000A , 0x0E594137 },
|
||
/*212*/{0x0000000A , 0x12594137 },
|
||
/*213*/{0x0000000A , 0x0E594137 },
|
||
/*214*/{0x0000000A , 0x125948F7 },
|
||
/*215*/{0x0000000A , 0x165948F7 },
|
||
/*216*/{0x0000000A , 0x026A48F7 },
|
||
/*217*/{0x0000000A , 0x066A48F7 },
|
||
/*218*/{0x0000000A , 0x0A6A48F7 },
|
||
/*219*/{0x0000000A , 0x0E6A48F7 },
|
||
/*220*/{0x0000000A , 0x126A48F7 },
|
||
/*221*/{0x0000000A , 0x166A48F7 },
|
||
/*222*/{0x0000000A , 0x166A48F7 },
|
||
/*223*/{0x0000000A , 0x166A48F7 },
|
||
/// =================================================
|
||
/// APC
|
||
///
|
||
///
|
||
///==================================================
|
||
|
||
/*224*/{ 0x00000078, 0x17836876},
|
||
/*225*/{ 0x00000078, 0x17A36876},
|
||
/*226*/{ 0x00000078, 0x17C36876},
|
||
/*227*/{ 0x00000078, 0x17E36876},
|
||
/*228*/{ 0x00000078, 0x57E36876},
|
||
/*229*/{ 0x00000078, 0x97E36876},
|
||
/*230*/{ 0x00000078, 0xD7E36876},
|
||
/*231*/{ 0x00000078, 0xD7E36876},
|
||
/*232*/{ 0x00000078, 0xD7E36876},
|
||
/*233*/{ 0x00000078, 0xD7E36876},
|
||
/*234*/{ 0x00000078, 0xD7E36876},
|
||
/*235*/{ 0x00000078, 0xD7E36876},
|
||
/*236*/{ 0x00000078, 0xD7E36876},
|
||
/*237*/{ 0x00000078, 0xD7E36876},
|
||
/*238*/{ 0x00000078, 0xD7E36876},
|
||
/*239*/{ 0x00000078, 0xD7E36876},
|
||
/*240*/{ 0x00000078, 0x17830871},
|
||
/*241*/{ 0x00000078, 0x17831871},
|
||
/*242*/{ 0x00000078, 0x17832871},
|
||
/*243*/{ 0x00000078, 0x17834871},
|
||
/*244*/{ 0x00000078, 0x17836871},
|
||
/*245*/{ 0x00000078, 0x17A36871},
|
||
/*246*/{ 0x00000078, 0x17E36871},
|
||
/*247*/{ 0x00000078, 0x57E36871},
|
||
/*248*/{ 0x00000078, 0x97E36871},
|
||
/*249*/{ 0x00000078, 0xD7E36875},
|
||
/*250*/{ 0x00000078, 0xD7E36876},
|
||
/*251*/{ 0x00000078, 0xD7E3687a},
|
||
/*252*/{ 0x00000078, 0xD7E3687a},
|
||
/*253*/{ 0x00000078, 0xD7E3687a},
|
||
/*254*/{ 0x00000078, 0xD7E3687a},
|
||
/*255*/{ 0x00000078, 0xD7E3687a},
|
||
};
|
||
|
||
#endif
|
||
|
||
/**
|
||
* @brief Log (Verbose/Info/Debug/Warn/Error)
|
||
*/
|
||
/*-----------------------------------------------------------*/
|
||
const char log_tag_const_v_WEBSOCKET AT(.LOG_TAG_CONST) = CONFIG_DEBUG_LIB(TRUE);
|
||
const char log_tag_const_d_WEBSOCKET AT(.LOG_TAG_CONST) = CONFIG_DEBUG_LIB(TRUE);
|
||
const char log_tag_const_i_WEBSOCKET AT(.LOG_TAG_CONST) = CONFIG_DEBUG_LIB(TRUE);
|
||
const char log_tag_const_w_WEBSOCKET AT(.LOG_TAG_CONST) = CONFIG_DEBUG_LIB(TRUE);
|
||
const char log_tag_const_e_WEBSOCKET AT(.LOG_TAG_CONST) = CONFIG_DEBUG_LIB(TRUE);
|