123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435 |
- #include "include.h"
- #define CM_SIZE 0x5000 //参数区至少20k
- #define CM_START (FLASH_SIZE - CM_SIZE)
- #if SYS_PARAM_RTCRAM
- #define param_read8(a, b) rtcram_read(a, (u8 *)&b, 1)
- #define param_write8(a, b) rtcram_write(a, (u8 *)&b, 1)
- #define param_read16(a, b) rtcram_read(a, (u8 *)&b, 2)
- #define param_write16(a, b) rtcram_write(a, (u8 *)&b, 2)
- #define param_read32(a, b) rtcram_read((a, (u8 *)&b, 4)
- #define param_write32(a, b) rtcram_write(a, (u8 *)&b, 4)
- #define param_read(a, b, c) rtcram_read(a, b, c)
- #define param_write(a, b, c) rtcram_write(a, b, c)
- #define param_sync_do()
- #else
- #define param_read8(a, b) b = cm_read8(PAGE0(a))
- #define param_write8(a, b) cm_write8(PAGE0(a), b)
- #define param_read16(a, b) b = cm_read16(PAGE0(a))
- #define param_write16(a, b) cm_write16(PAGE0(a), b)
- #define param_read32(a, b) b = cm_read32(PAGE0(a))
- #define param_write32(a, b) cm_write32(PAGE0(a), b)
- #define param_read(a, b, c) cm_read(a, PAGE0(b), c)
- #define param_write(a, b, c) cm_write(a, PAGE0(b), c)
- #define param_sync_do() cm_sync()
- #endif
- AT(.text.bsp.param)
- void param_init(bool reset)
- {
- //LANG ID初值
- if ((LANG_SELECT < LANG_EN_ZH) && xcfg_cb.lang_id >= LANG_EN_ZH) {
- printf("Language Select Error\n");
- xcfg_cb.lang_id = LANG_SELECT;
- }
- cm_init(MAX_CM_PAGE, CM_START, CM_SIZE);
- //printf("CM: %x\n", cm_read8(PAGE0(0)));
- //printf("CM: %x\n", cm_read8(PAGE1(0)));
- sys_cb.rand_seed = sys_get_rand_key();
- f_msc.cur_dev = DEV_UDISK;
- #if SYS_PARAM_RTCRAM
- //RTC专用
- if(reset) {
- f_msc.file_num = 1;
- param_write((u8 *)&f_msc.file_num, PARAM_MSC_NUM_SD, 2);
- param_write((u8 *)&f_msc.file_num, PARAM_MSC_NUM_USB, 2);
- sys_cb.vol = SYS_INIT_VOLUME;
- sys_cb.hfp_vol = SYS_INIT_VOLUME / sys_cb.hfp2sys_mul;
- param_sys_vol_write();
- fmrx_cb.ch_cur = 1;
- fmrx_cb.ch_cnt = 1;
- param_fmrx_chcur_write();
- param_fmrx_chcnt_write();
- memset(fmrx_cb.buf, 0, 26);
- param_fmrx_chbuf_write();
- #if (LANG_SELECT == LANG_EN_ZH)
- if (xcfg_cb.lang_id == 2) {
- sys_cb.lang_id = 0; //出厂默认英文
- } else if (xcfg_cb.lang_id == 3) {
- sys_cb.lang_id = 1; //出厂默认中文
- } else {
- sys_cb.lang_id = xcfg_cb.lang_id;
- }
- param_lang_id_write();
- #endif
- #if MUSIC_BREAKPOINT_EN
- memset(&f_msc.brkpt, 0, 10);
- param_write((u8 *)&f_msc.brkpt, PARAM_MSC_BRKPT_SD, 10);
- param_write((u8 *)&f_msc.brkpt, PARAM_MSC_BRKPT_USB, 10);
- #endif // MUSIC_BREAKPOINT_EN
- #if BT_LOCAL_ADDR
- param_random_key_write();
- #endif
- param_sync();
- }
- #endif
- param_sys_vol_read();
- if ((SYS_LIMIT_VOLUME == 0) || (sys_cb.vol > VOL_MAX)) {
- sys_cb.vol = SYS_INIT_VOLUME; //上电还原到默认音量
- } else {
- if (sys_cb.vol < SYS_LIMIT_VOLUME) {
- sys_cb.vol = SYS_LIMIT_VOLUME;
- }
- }
- param_hfp_vol_read();
- if (sys_cb.hfp_vol > 15) {
- sys_cb.hfp_vol = 15;
- }
- if (xcfg_cb.lang_id >= LANG_EN_ZH) {
- param_lang_id_read();
- if (sys_cb.lang_id >= LANG_EN_ZH) {
- if (xcfg_cb.lang_id == 2) {
- sys_cb.lang_id = 0; //出厂默认英文
- } else if (xcfg_cb.lang_id == 3) {
- sys_cb.lang_id = 1; //出厂默认中文
- } else {
- sys_cb.lang_id = xcfg_cb.lang_id;
- }
- param_lang_id_write();
- }
- } else {
- sys_cb.lang_id = xcfg_cb.lang_id;
- }
- sys_cb.sw_rst_flag = sw_reset_source_get();
- #if (CHARGE_BOX_TYPE == CBOX_SSW)
- param_vuart_popup_flag_read();
- #endif
- #if QTEST_EN
- update_set_qcheck_code();
- #endif
- #if MUSIC_BREAKPOINT_EN
- param_msc_breakpoint_read();
- #endif
- }
- AT(.text.bsp.param)
- void bsp_param_write(u8 *buf, u32 addr, uint len)
- {
- param_write(buf, addr, len);
- }
- AT(.text.bsp.param)
- void bsp_param_read(u8 *buf, u32 addr, uint len)
- {
- param_read(buf, addr, len);
- }
- AT(.text.bsp.param)
- void bsp_param_sync(void)
- {
- param_sync_do();
- }
- #if BT_LOCAL_ADDR
- AT(.text.bsp.param)
- void param_random_key_read(u8 *key)
- {
- if (key == NULL) {
- return;
- }
- param_read(key, PARAM_RANDOM_KEY, 4);
- }
- AT(.text.bsp.param)
- void param_random_key_write(void)
- {
- u32 key;
- param_random_key_read((u8*)&key);
- if (key == 0 || key == UINT_MAX) {
- key = sys_cb.rand_seed;
- param_write((u8 *)&key, PARAM_RANDOM_KEY, 4);
- }
- }
- #endif // BT_LOCAL_ADDR
- AT(.text.bsp.param)
- void param_msc_num_write(void)
- {
- if (f_msc.cur_dev == DEV_SDCARD) {
- param_write((u8 *)&f_msc.file_num, PARAM_MSC_NUM_SD, 2);
- } else if (f_msc.cur_dev == DEV_SDCARD1) {
- param_write((u8 *)&f_msc.file_num, PARAM_MSC_NUM_SD1, 2);
- } else {
- param_write((u8 *)&f_msc.file_num, PARAM_MSC_NUM_USB, 2);
- }
- }
- AT(.text.bsp.param)
- void param_msc_num_read(void)
- {
- if (f_msc.cur_dev == DEV_SDCARD) {
- param_read((u8 *)&f_msc.file_num, PARAM_MSC_NUM_SD, 2);
- } else if (f_msc.cur_dev == DEV_SDCARD1) {
- param_read((u8 *)&f_msc.file_num, PARAM_MSC_NUM_SD1, 2);
- } else {
- param_read((u8 *)&f_msc.file_num, PARAM_MSC_NUM_USB, 2);
- }
- if (f_msc.file_num > f_msc.file_total) {
- f_msc.file_num = f_msc.file_total;
- }
- if (f_msc.file_num < 1) {
- f_msc.file_num = 1;
- }
- }
- #if MUSIC_BREAKPOINT_EN
- AT(.text.bsp.param)
- void param_msc_breakpoint_write(void)
- {
- if (f_msc.cur_dev == DEV_SDCARD) {
- param_write((u8 *)&f_msc.brkpt, PARAM_MSC_BRKPT_SD, 10);
- } else if (f_msc.cur_dev == DEV_SDCARD1) {
- param_write((u8 *)&f_msc.brkpt, PARAM_MSC_BRKPT_SD1, 10);
- } else {
- param_write((u8 *)&f_msc.brkpt, PARAM_MSC_BRKPT_USB, 10);
- }
- }
- AT(.text.bsp.param)
- void param_msc_breakpoint_read(void)
- {
- if (f_msc.cur_dev == DEV_SDCARD) {
- param_read((u8 *)&f_msc.brkpt, PARAM_MSC_BRKPT_SD, 10);
- } else if (f_msc.cur_dev == DEV_SDCARD1) {
- param_read((u8 *)&f_msc.brkpt, PARAM_MSC_BRKPT_SD1, 10);
- } else {
- param_read((u8 *)&f_msc.brkpt, PARAM_MSC_BRKPT_USB, 10);
- }
- }
- #endif // MUSIC_BREAKPOINT_EN
- AT(.text.bsp.param)
- void param_sys_vol_write(void)
- {
- param_write((u8 *)&sys_cb.vol, PARAM_SYS_VOL, 1);
- }
- AT(.text.bsp.param)
- void param_sys_vol_read(void)
- {
- param_read((u8 *)&sys_cb.vol, PARAM_SYS_VOL, 1);
- }
- AT(.text.bsp.param)
- void param_hfp_vol_write(void)
- {
- param_write((u8 *)&sys_cb.hfp_vol, PARAM_HSF_VOL, 1);
- }
- AT(.text.bsp.param)
- void param_hfp_vol_read(void)
- {
- param_read((u8 *)&sys_cb.hfp_vol, PARAM_HSF_VOL, 1);
- }
- AT(.text.bsp.param)
- void param_lang_id_write(void)
- {
- param_write((u8 *)&sys_cb.lang_id, PARAM_LANG_ID, 1);
- }
- AT(.text.bsp.param)
- void param_lang_id_read(void)
- {
- param_read((u8 *)&sys_cb.lang_id, PARAM_LANG_ID, 1);
- }
- AT(.text.bsp.param)
- void param_sync(void)
- {
- param_sync_do();
- }
- AT(.text.bsp.param)
- u32 param_get_xosc_addr(void)
- {
- return PARAM_BT_XOSC_CAP;
- }
- #if SYS_MODE_BREAKPOINT_EN
- AT(.text.bsp.param)
- u8 param_sys_mode_read(void)
- {
- u8 mode = 0;
- param_read((u8 *)&mode, PARAM_SYS_MODE, 1);
- return mode;
- }
- AT(.text.bsp.param)
- void param_sys_mode_write(u8 mode)
- {
- if (mode == FUNC_MUSIC) {
- mode = ((sys_cb.cur_dev & 0x0f) << 4) | mode; //高4bit用来放USB/SD设备选择
- }
- param_write((u8 *)&mode, PARAM_SYS_MODE, 1);
- }
- #endif
- #if SYS_KARAOK_EN
- AT(.text.bsp.param)
- void param_echo_level_write(void)
- {
- param_write((u8 *)&sys_cb.echo_level, PARAM_ECHO_LEVEL, 1);
- }
- AT(.text.bsp.param)
- void param_echo_level_read(void)
- {
- param_read((u8 *)&sys_cb.echo_level, PARAM_ECHO_LEVEL, 1);
- }
- AT(.text.bsp.param)
- void param_echo_delay_write(void)
- {
- param_write((u8 *)&sys_cb.echo_delay, PARAM_ECHO_LEVEL, 1);
- }
- AT(.text.bsp.param)
- void param_echo_delay_read(void)
- {
- param_read((u8 *)&sys_cb.echo_delay, PARAM_ECHO_LEVEL, 1);
- }
- #endif
- #if (CHARGE_BOX_TYPE == CBOX_SSW)
- //充电仓命令开关广播功能
- void param_vuart_popup_flag_read(void)
- {
- u8 temp;
- param_read(&temp, PARAM_VUART_POPUP_FLAG, 1);
- if ((temp == 1) || (temp == 2)) {
- sys_cb.popup_en = temp - 1;
- }else{
- sys_cb.popup_en = 1;
- }
- }
- void param_vuart_popup_flag_write(u8 data)
- {
- u8 temp;
- param_read(&temp, PARAM_VUART_POPUP_FLAG, 1);
- if (temp != data) {
- temp = data;
- param_write((u8 *)&temp, PARAM_VUART_POPUP_FLAG, 1);
- param_sync();
- }
- }
- #endif
- #if BT_TWS_EN
- AT(.text.bsp.param)
- void param_tws_channel_write(u8 channel)
- {
- if (sys_cb.vusb_force_channel != channel) {
- sys_cb.vusb_force_channel = channel;
- cm_write8(PARAM_VHOUSE_CH_VALID, channel);
- cm_sync();
- }
- }
- AT(.text.bsp.param)
- void param_tws_channel_read(void)
- {
- u8 channel = cm_read8(PARAM_VHOUSE_CH_VALID);
- if (channel == 1) {
- sys_cb.vusb_force_channel = 1; //固定为右声道
- } else if (channel == 2) {
- sys_cb.vusb_force_channel = 2; //固定为左声音
- }
- }
- #endif
- AT(.text.bsp.param.fota)
- void param_fot_addr_write(u8 *param)
- {
- param_write((u8 *)param, PARAM_FOT_ADDR, 4);
- param_sync();
- }
- AT(.text.bsp.param.fota)
- void param_fot_addr_read(u8 *param)
- {
- param_read(param, PARAM_FOT_ADDR, 4);
- }
- AT(.text.bsp.param.fota)
- void param_fot_remote_ver_write(u8 *param)
- {
- param_write((u8 *)param, PARAM_FOT_REMOTE_VER, 2);
- param_sync();
- }
- AT(.text.bsp.param.fota)
- void param_fot_remote_ver_read(u8 *param)
- {
- param_read(param, PARAM_FOT_REMOTE_VER, 2);
- }
- AT(.text.bsp.param.fota)
- void param_fot_head_info_write(u8 *param)
- {
- param_write((u8 *)param, PARAM_FOT_HEAD_INFO, 8);
- param_sync();
- }
- AT(.text.bsp.param.fota)
- void param_fot_head_info_read(u8 *param)
- {
- param_read(param, PARAM_FOT_HEAD_INFO, 8);
- }
- AT(.text.bsp.param.fota)
- void param_fot_hash_write(u8 *param)
- {
- param_write((u8 *)param, PARAM_FOT_HASH, 4);
- param_sync();
- }
- AT(.text.bsp.param.fota)
- void param_fot_hash_read(u8 *param)
- {
- param_read(param, PARAM_FOT_HASH, 4);
- }
- AT(.text.bsp.param.fota)
- void param_fot_type_write(u8 *param)
- {
- param_write((u8 *)param, PARAM_FOT_TYPE, 1);
- param_sync();
- }
- AT(.text.bsp.param.fota)
- void param_fot_type_read(u8 *param)
- {
- param_read(param, PARAM_FOT_TYPE, 1);
- }
|