WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
alg_temp_protect.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2020-2022. All rights reserved.
3 * Description: header file of temperature protection algorithm
4 */
5
6#ifndef __ALG_TEMP_PROTECT_H__
7#define __ALG_TEMP_PROTECT_H__
8
9#ifdef _PRE_WLAN_FEATURE_TEMP_PROTECT
10
11/******************************************************************************
12 1 其他头文件包含
13******************************************************************************/
14#include "frw_ext_if.h"
15#include "hmac_alg_if.h"
16#include "alg_transplant.h"
17#include "msg_alg_rom.h"
18
19#ifdef __cplusplus
20#if __cplusplus
21extern "C" {
22#endif
23#endif
24
25/******************************************************************************
26 2 宏定义
27******************************************************************************/
28#define ALG_TEMP_PROTECT_SAFE_TH (90) /* 降占空比的恢复门限 90 */
29#define ALG_TEMP_PROTECT_OVER_TH (105) /* 降占空比的恢复门限 105 */
30#define ALG_TEMP_PROTECT_PA_OFF_TH (125) /* 关PA的触发门限 125 */
31#define ALG_TEMP_PROTECT_PA_ON_TH (105) /* 开PA的触发门限 105 */
32#define ALG_TEMP_PROTECT_DUTY_CYC_FULL (1000) /* 调整占空比流程中的合理占空比门限 */
33#define ALG_TEMP_PROTECT_DUTY_CYC_MAX (500) /* 调整占空比流程中的合理占空比门限 */
34#define ALG_TEMP_PROTECT_DUTY_CYC_MIN (100) /* 调整占空比流程中的合理占空比门限 */
35#define ALG_TEMP_PROTECT_DUTY_CYC_STEP (100) /* 调整占空比的步长 */
36
37#define ALG_TEMP_PROTECT_TIMER_CYCLE (1000) /* 过温状态下查询温度定时器的间隔时间 MS */
38#define ALG_TEMP_PROTECT_TIMER_CYCLE_IDLE (10000) /* IDLE状态下定时器间隔周期10s */
39
40#define ALG_TEMP_PROTECT_MAX_AGGR_SIZE (16) /* 最大聚合个数 考虑硬件聚合最大64 */
41#define ALG_TEMP_PROTECT_MIN_AGGR_SIZE (1) /* 最小聚合个数 */
42#define ALG_TEMP_PROTECT_AGGR_SIZE_STEP (2) /* 调整聚合个数的步长 */
43#define ALG_TEMP_PROTECT_TIMES_TH_SAFE (10) /* SAFE状态下状态机需要等待的循环次数 */
44#define ALG_TEMP_PROTECT_TIMES_TH_OVER (3) /* OVER状态下状态机需要等待的循环次数 */
45#define ALG_TEMP_PROTECT_TIMES_TH_PA_OFF (1) /* PA-OFF状态下状态机需要等待的循环次数 */
46#define ALG_TEMP_PROTECT_TIMES_TH_INIT (1) /* INIT状态下状态机需要等待的循环次数 */
47
48#define ALG_TEMP_PROTECT_CUSTOM_TH_ADJUST (20) /* 特殊芯片模式下的温度门限调整量 */
49
50#define HMAC_TEMP_PROTECT_ENABLE (OSAL_TRUE)
51#define HMAC_TEMP_PROTECT_REDUCE_ENABLE (OSAL_TRUE)
52#define HMAC_TEMP_PROTECT_RECOVER_TH (90)
53#define HMAC_TEMP_PROTECT_PA_OFF_TH (125)
54/* 维测用宏定义 */
55#define HMAC_TEMP_PROTECT_TSENSOR_MAX (140)
56#define HMAC_TEMP_PROTECT_TSENSOR_MIN (-40)
57#define HMAC_TEMP_PROTECT_INVALID_TEMP (255)
58
59/******************************************************************************
60 3 枚举定义
61******************************************************************************/
62/* temperature protection状态机状态枚举 */
63typedef enum {
64 ALG_TEMP_PROTECT_STATE_INIT = 0, /* 初始运行状态 */
65 ALG_TEMP_PROTECT_STATE_SAFE = 1, /* 温度小于90的状态 */
66 ALG_TEMP_PROTECT_STATE_NORMAL = 2, /* 温度小于105的状态 */
67 ALG_TEMP_PROTECT_STATE_OVER = 3, /* 温度大于105的状态 */
68 ALG_TEMP_PROTECT_STATE_PA_OFF = 4, /* 温度大于125的状态 */
69
70 ALG_TEMP_PROTECT_BUTT_STATE /* 错误状态 */
71} alg_temp_protect_state;
72typedef osal_u8 alg_temp_protect_sta_enum_uint8;
73
74/* 时间枚举 */
75typedef enum {
76 ALG_TEMP_PROTECT_EVENT_TIMER = 0,
77 ALG_TEMP_PROTECT_EVENT_DEVICE_IDLE = 1,
78
79 ALG_TEMP_PROTECT_EVENT_BUTT
80} alg_temp_protect_event_enum;
81typedef osal_u16 alg_temp_protect_event_enum_uint16;
82
83#define ALG_TEMP_PROTECT_RECORD_AMOUNT 20 /* 温度保护功能 */
84
85/******************************************************************************
86 7 STRUCT定义
87******************************************************************************/
88typedef struct {
89 osal_u8 temp_pro_enable : 1; /* 过温保护的使能开关 */
90 osal_u8 temp_pro_reduce_pwr_enable : 1; /* 过温保护过程中是否需要降低功率 */
91 osal_u8 rsv : 6;
92 osal_s8 temp_pro_safe_th; /* 过温保护的恢复安全水线 */
93 osal_s16 temp_pro_pa_off_th; /* 过温保护的PA_OFF水线 */
94}hmac_temp_pri_custom_stru;
95
96typedef struct _alg_temp_protection_fsm {
97 oal_fsm_stru oal_fsm; /* 过温保护状态机 */
98 oal_bool_enum_uint8 is_fsm_attached;
99 osal_u8 resv[3]; /* 3:数组大小 */
100} alg_temp_protect_fsm_stru;
101
102/* 过温保护历史信息记录结构体 */
103typedef struct {
104 osal_s16 ave_temp; /* 平均温度 */
105 osal_u8 state; /* 当前状态 */
106 osal_u8 temp_pro_aggr_size; /* 聚合度 */
107 osal_u32 pre_set_duty_cyc; /* 预设占空比 */
108 osal_u8 schedule_reduce; /* 减少一次调度调度开关 */
109 osal_u8 reduce_pwr_enable; /* 功率开关 */
110 oal_bool_enum_uint8 is_pa_off; /* PA OFF 状态记录 */
111 osal_u8 times_th; /* 抛事件的间隔次数 */
112 osal_u32 cur_duty_cyc; /* 当前占空比 */
113} temp_stat_stru;
114
115/* 过温保护识别对应的私有信息结构体 */
116typedef struct {
117 osal_u8 times_set; /* 命令设置的间隔次数 */
118 osal_u8 times; /* 定时器的次数 */
119 osal_u8 times_th; /* 不同状态下抛事件的间隔次数 */
120
121 osal_u8 reduce_pwr_enable; /* 减小功率的使能开关 */
122 osal_u8 schedule_reduce; /* 减小device侧缓存队列调度 */
123 oal_bool_enum_uint8 is_pa_off; /* pa_off 记录 */
124
125 osal_u8 temp_pro_aggr_size;
126 osal_s16 ave_temp; /* 单周期内温度的平均值 */
127 osal_u16 over_th_set; /* 命令设置的OVER门限 */
128 osal_u32 pre_set_duty_cyc; /* 预设占空比,千分之几为单位,初始化500 */
129 osal_s32 accumulate_temp; /* 温度累加值 */
130
131 /* 状态机 */
132 alg_temp_protect_fsm_stru temp_pro_fsm;
133 frw_timeout_stru temp_protect_timer; /* 温度检测定时器 */
134
135 /* 维测 */
136 oal_bool_enum_uint8 temp_debug_flag; /* 温度保护算法维测开关 */
137 osal_u8 temp_debug_temperature; /* 温度保护算法维测设定温度 */
138 osal_u8 record_idx; /* 温度历史记录idx */
139 temp_stat_stru stat_record[ALG_TEMP_PROTECT_RECORD_AMOUNT]; /* 统计信息记录 记录20条历史信息 */
140} alg_temp_protect_stru;
141/******************************************************************************
142 4 全局变量声明
143******************************************************************************/
144
145/******************************************************************************
146 5 函数声明
147******************************************************************************/
148osal_void alg_temp_protect_init(osal_void);
149osal_void alg_temp_protect_exit(osal_void);
150
151#ifdef __cplusplus
152#if __cplusplus
153}
154#endif
155#endif
156#endif /* #ifdef _PRE_WLAN_FEATURE_TEMP_PRO */
157#endif /* end of alg_temp_protection.h */
osal_u8 rsv[3]
Definition oal_net.h:2
osal_u8 oal_bool_enum_uint8
Definition oal_types_device_rom.h:45
int osal_s32
Definition osal_types.h:19
unsigned char osal_u8
Definition osal_types.h:11
signed char osal_s8
Definition osal_types.h:17
short osal_s16
Definition osal_types.h:18
void osal_void
Definition osal_types.h:29
unsigned int osal_u32
Definition osal_types.h:13
unsigned short osal_u16
Definition osal_types.h:12
Definition oal_fsm.h:38
Definition frw_ext_common_rom.h:20