-
Notifications
You must be signed in to change notification settings - Fork 101
/
Copy pathuser_cfg.c
348 lines (298 loc) · 11.6 KB
/
user_cfg.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
#include "app_config.h"
#include "user_cfg.h"
#include "fs.h"
#include "string.h"
#include "system/includes.h"
#include "vm.h"
#include "btcontroller_config.h"
#include "app_main.h"
#include "bt_common.h"
#ifdef CONFIG_LITE_AUDIO
#include "audio_config.h"
#endif /*CONFIG_LITE_AUDIO*/
#define LOG_TAG_CONST USER_CFG
#define LOG_TAG "[USER_CFG]"
#define LOG_ERROR_ENABLE
#define LOG_DEBUG_ENABLE
#define LOG_INFO_ENABLE
#define LOG_DUMP_ENABLE
#define LOG_CLI_ENABLE
#include "debug.h"
/*对应bt的tx功率挡位,SDK默认使用接近 0 dbm 功率挡位*/
#if (defined CONFIG_CPU_BR30)
#define SET_BLE_TX_POWER_LEVEL (4)
#elif (defined CONFIG_CPU_BR34)
#define SET_BLE_TX_POWER_LEVEL (7)
#else
#define SET_BLE_TX_POWER_LEVEL (6)
#endif
void lp_winsize_init(struct lp_ws_t *lp);
/* void bt_max_pwr_set(u8 pwr, u8 pg_pwr, u8 iq_pwr, u8 ble_pwr); */
extern APP_VAR app_var;
BT_CONFIG bt_cfg = {
.edr_name = "JL_app_debug",
.mac_addr = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
.tws_local_addr = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
.rf_power = 10,
.dac_analog_gain = 25,
.mic_analog_gain = 7,
.tws_device_indicate = 0x6688,
};
u8 get_max_sys_vol(void)
{
#if TCFG_APP_FM_EMITTER_EN
return FM_EMITTER_MAX_VOL;
#else
/* return (audio_cfg.max_sys_vol); */
return 30;
#endif
}
#if 1
u8 get_tone_vol(void)
{
return 15;
#if 0
if (!audio_cfg.tone_vol) {
return (get_max_sys_vol());
}
if (audio_cfg.tone_vol > get_max_sys_vol()) {
return (get_max_sys_vol());
}
return (audio_cfg.tone_vol);
#endif
}
#endif
//======================================================================================//
// BTIF配置项表 //
// 参数1: 配置项名字 //
// 参数2: 配置项需要多少个byte存储 //
// 说明: 配置项ID注册到该表后该配置项将读写于BTIF区域, 其它没有注册到该表 //
// 的配置项则默认读写于VM区域. //
//======================================================================================//
const struct btif_item btif_table[] = {
// item id len //
{CFG_BT_MAC_ADDR, 6 },
{CFG_BT_FRE_OFFSET, 6 }, //测试盒矫正频偏值
//{CFG_DAC_DTB, 2 },
//{CFG_MC_BIAS, 1 },
{0, 0 }, //reserved cfg
};
//============================= VM 区域空间最大值 ======================================//
const int vm_max_size_config = VM_MAX_SIZE_CONFIG; //该宏在app_cfg中配置
//======================================================================================//
struct lp_ws_t lp_winsize = {
.lrc_ws_inc = 480, //260
.lrc_ws_init = 160,
.bt_osc_ws_inc = 100,
.bt_osc_ws_init = 140,
.osc_change_mode = 0,
};
u16 bt_get_tws_device_indicate(u8 *tws_device_indicate)
{
return bt_cfg.tws_device_indicate;
}
const u8 *bt_get_mac_addr()
{
return bt_cfg.mac_addr;
}
void bt_set_mac_addr(u8 *addr)
{
memcpy(bt_cfg.mac_addr, addr, 6);
}
static u8 bt_mac_addr_for_testbox[6] = {0};
void bt_get_vm_mac_addr(u8 *addr)
{
#if 0
//中断不能调用syscfg_read;
int ret = 0;
ret = syscfg_read(CFG_BT_MAC_ADDR, addr, 6);
if ((ret != 6)) {
syscfg_write(CFG_BT_MAC_ADDR, addr, 6);
}
#else
memcpy(addr, bt_mac_addr_for_testbox, 6);
#endif
}
void bt_get_tws_local_addr(u8 *addr)
{
memcpy(addr, bt_cfg.tws_local_addr, 6);
}
const char *bt_get_local_name()
{
return (const char *)(bt_cfg.edr_name);
}
void bt_set_local_name(char *name, u8 len)
{
memcpy(bt_cfg.edr_name, name, len);
bt_cfg.edr_name[len] = 0;
}
const char *bt_get_pin_code()
{
return "0000";
}
extern STATUS_CONFIG status_config;
extern struct charge_platform_data charge_data;
extern struct dac_platform_data dac_data;
extern struct adkey_platform_data adkey_data;
extern struct led_platform_data pwm_led_data;
extern struct adc_platform_data adc_data;
extern u8 key_table[KEY_EVENT_MAX][KEY_NUM_MAX];
#define USE_CONFIG_BIN_FILE 0
#define USE_CONFIG_STATUS_SETTING 1 //状态设置,包括灯状态和提示音
#define USE_CONFIG_AUDIO_SETTING USE_CONFIG_BIN_FILE //音频设置
#define USE_CONFIG_CHARGE_SETTING USE_CONFIG_BIN_FILE //充电设置
#define USE_CONFIG_KEY_SETTING USE_CONFIG_BIN_FILE //按键消息设置
#define USE_CONFIG_MIC_TYPE_SETTING USE_CONFIG_BIN_FILE //MIC类型设置
#define USE_CONFIG_LOWPOWER_V_SETTING USE_CONFIG_BIN_FILE //低电提示设置
#define USE_CONFIG_AUTO_OFF_SETTING USE_CONFIG_BIN_FILE //自动关机时间设置
#define USE_CONFIG_COMBINE_VOL_SETTING 1
#define LOW_POWER_SHUTDOWN 320 //低电直接关机电压
#define LOW_POWER_OFF_VAL 330 //低电关机电压
#define LOW_POWER_WARN_VAL 340 //低电提醒电压
void cfg_file_parse(u8 idx)
{
u8 tmp[128] = {0};
int ret = 0;
memset(tmp, 0x00, sizeof(tmp));
/*************************************************************************/
/* CFG READ IN cfg_tools.bin */
/*************************************************************************/
//-----------------------------CFG_COMBINE_VOL----------------------------------//
#if TCFG_AUDIO_ENABLE
#if (defined SYS_VOL_TYPE && (SYS_VOL_TYPE == VOL_TYPE_AD))
audio_combined_vol_init(USE_CONFIG_COMBINE_VOL_SETTING);
#endif/*SYS_VOL_TYPE*/
#endif /*TCFG_AUDIO_ENABLE*/
//-----------------------------CFG_BT_NAME--------------------------------------//
ret = syscfg_read(CFG_BT_NAME, tmp, 32);
if (ret < 0) {
log_info("read bt name err\n");
} else if (ret >= LOCAL_NAME_LEN) {
memset(bt_cfg.edr_name, 0x00, LOCAL_NAME_LEN);
memcpy(bt_cfg.edr_name, tmp, LOCAL_NAME_LEN);
bt_cfg.edr_name[LOCAL_NAME_LEN - 1] = 0;
} else {
memset(bt_cfg.edr_name, 0x00, LOCAL_NAME_LEN);
memcpy(bt_cfg.edr_name, tmp, ret);
}
/* g_printf("bt name config:%s\n", bt_cfg.edr_name); */
log_info("bt name config:%s\n", bt_cfg.edr_name);
//-----------------------------CFG_BT_RF_POWER_ID----------------------------//
ret = syscfg_read(CFG_BT_RF_POWER_ID, &app_var.rf_power, 1);
if (ret < 0) {
log_debug("read rf err\n");
app_var.rf_power = 10;
}
bt_max_pwr_set(app_var.rf_power, 5, 8, SET_BLE_TX_POWER_LEVEL);
/* g_printf("rf config:%d\n", app_var.rf_power); */
log_info("rf config:%d,%d\n", app_var.rf_power, SET_BLE_TX_POWER_LEVEL);
app_var.music_volume = 30;
app_var.wtone_volume = 14;
#if (USE_CONFIG_CHARGE_SETTING) && (TCFG_CHARGE_ENABLE)
/* g_printf("app charge config:\n"); */
log_info("app charge config:\n");
CHARGE_CONFIG *charge = (CHARGE_CONFIG *)tmp;
ret = syscfg_read(CFG_CHARGE_ID, charge, sizeof(CHARGE_CONFIG));
if (ret > 0) {
log_info_hexdump(charge, sizeof(CHARGE_CONFIG));
log_info("sw:%d poweron_en:%d full_v:%d full_mA:%d charge_mA:%d\n",
charge->sw, charge->poweron_en, charge->full_v, charge->full_c, charge->charge_c);
memcpy((u8 *)&charge_data, (u8 *)charge, sizeof(CHARGE_CONFIG));
}
#endif
#if (USE_CONFIG_KEY_SETTING) && (TCFG_ADKEY_ENABLE || TCFG_IOKEY_ENABLE)
/* g_printf("app key config:\n"); */
log_info("app key config:\n");
KEY_OP *key_msg = (KEY_OP *)tmp;
ret = syscfg_read(CFG_KEY_MSG_ID, key_msg, sizeof(KEY_OP) * KEY_NUM_MAX);
if (ret > 0) {
log_info_hexdump(key_msg, sizeof(KEY_OP) * KEY_NUM);
memcpy(key_table, key_msg, sizeof(KEY_OP) * KEY_NUM);
}
log_info("key_msg:");
log_info_hexdump((u8 *)key_table, KEY_EVENT_MAX * KEY_NUM_MAX);
#endif
#if USE_CONFIG_LOWPOWER_V_SETTING
/* g_printf("auto low power config:\n"); */
log_info("auto low power config:\n");
AUTO_LOWPOWER_V_CONFIG auto_lowpower;
ret = syscfg_read(CFG_LOWPOWER_V_ID, &auto_lowpower, sizeof(AUTO_LOWPOWER_V_CONFIG));
if (ret > 0) {
app_var.warning_tone_v = auto_lowpower.warning_tone_v;
app_var.poweroff_tone_v = auto_lowpower.poweroff_tone_v;
}
log_info("warning_tone_v:%d poweroff_tone_v:%d\n", app_var.warning_tone_v, app_var.poweroff_tone_v);
#else
app_var.warning_tone_v = LOW_POWER_WARN_VAL;
app_var.poweroff_tone_v = LOW_POWER_OFF_VAL;
log_info("warning_tone_v:%d poweroff_tone_v:%d\n", app_var.warning_tone_v, app_var.poweroff_tone_v);
#endif
#if USE_CONFIG_AUTO_OFF_SETTING
/* g_printf("auto off time config:\n"); */
log_info("auto off time config:\n");
AUTO_OFF_TIME_CONFIG auto_off_time;
ret = syscfg_read(CFG_AUTO_OFF_TIME_ID, &auto_off_time, sizeof(AUTO_OFF_TIME_CONFIG));
if (ret > 0) {
app_var.auto_off_time = auto_off_time.auto_off_time * 60;
}
log_info("auto_off_time:%d\n", app_var.auto_off_time)
#else
app_var.auto_off_time = TCFG_AUTO_SHUT_DOWN_TIME;
log_info("auto_off_time:%d\n", app_var.auto_off_time);
#endif
/*************************************************************************/
/* CFG READ IN VM */
/*************************************************************************/
u8 mac_buf[6];
u8 mac_buf_tmp[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
u8 mac_buf_tmp2[6] = {0, 0, 0, 0, 0, 0};
#if TCFG_USER_TWS_ENABLE
int len = syscfg_read(CFG_TWS_LOCAL_ADDR, bt_cfg.tws_local_addr, 6);
if (len != 6) {
get_random_number(bt_cfg.tws_local_addr, 6);
syscfg_write(CFG_TWS_LOCAL_ADDR, bt_cfg.tws_local_addr, 6);
}
log_debug("tws_local_mac:");
log_info_hexdump(bt_cfg.tws_local_addr, sizeof(bt_cfg.tws_local_addr));
ret = syscfg_read(CFG_TWS_COMMON_ADDR, mac_buf, 6);
if (ret != 6 || !memcmp(mac_buf, mac_buf_tmp, 6))
#endif
do {
ret = syscfg_read(CFG_BT_MAC_ADDR, mac_buf, 6);
if ((ret != 6) || !memcmp(mac_buf, mac_buf_tmp, 6) || !memcmp(mac_buf, mac_buf_tmp2, 6)) {
get_random_number(mac_buf, 6);
syscfg_write(CFG_BT_MAC_ADDR, mac_buf, 6);
}
} while (0);
syscfg_read(CFG_BT_MAC_ADDR, bt_mac_addr_for_testbox, 6);
if (!memcmp(bt_mac_addr_for_testbox, mac_buf_tmp, 6)) {
get_random_number(bt_mac_addr_for_testbox, 6);
syscfg_write(CFG_BT_MAC_ADDR, bt_mac_addr_for_testbox, 6);
log_info(">>>init mac addr!!!\n");
}
log_info("mac:");
log_info_hexdump(mac_buf, sizeof(mac_buf));
memcpy(bt_cfg.mac_addr, mac_buf, 6);
#if (CONFIG_BT_MODE != BT_NORMAL)
const u8 dut_name[] = "AC693x_DUT";
const u8 dut_addr[6] = {0x12, 0x34, 0x56, 0x56, 0x34, 0x12};
memcpy(bt_cfg.edr_name, dut_name, sizeof(dut_name));
memcpy(bt_cfg.mac_addr, dut_addr, 6);
#endif
/*************************************************************************/
/* CFG READ IN isd_config.ini */
/*************************************************************************/
LRC_CONFIG lrc_cfg;
ret = syscfg_read(CFG_LRC_ID, &lrc_cfg, sizeof(LRC_CONFIG));
if (ret > 0) {
log_info("lrc cfg:");
log_info_hexdump(&lrc_cfg, sizeof(LRC_CONFIG));
lp_winsize.lrc_ws_inc = lrc_cfg.lrc_ws_inc;
lp_winsize.lrc_ws_init = lrc_cfg.lrc_ws_init;
lp_winsize.bt_osc_ws_inc = lrc_cfg.btosc_ws_inc;
lp_winsize.bt_osc_ws_init = lrc_cfg.btosc_ws_init;
lp_winsize.osc_change_mode = lrc_cfg.lrc_change_mode;
}
/* printf("%d %d %d \n",lp_winsize.lrc_ws_inc,lp_winsize.lrc_ws_init,lp_winsize.osc_change_mode); */
lp_winsize_init(&lp_winsize);
}