171 lines
4.1 KiB
C
171 lines
4.1 KiB
C
#include "include.h"
|
|
|
|
#define CM_SIZE FLASH_CM_SIZE
|
|
#define CM_START (FLASH_SIZE - CM_SIZE)
|
|
|
|
#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_write332(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()
|
|
|
|
|
|
AT(.text.bsp.param)
|
|
void param_init(bool reset)
|
|
{
|
|
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();
|
|
#if FUNC_MUSIC_EN
|
|
f_msc.cur_dev = DEV_UDISK;
|
|
#endif
|
|
|
|
param_sys_vol_read();
|
|
if (sys_cb.vol < SYS_LIMIT_VOLUME) {
|
|
sys_cb.vol = SYS_INIT_VOLUME;
|
|
}
|
|
sys_cb.hfp_vol = sys_cb.vol / sys_cb.hfp2sys_mul;
|
|
}
|
|
|
|
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
|
|
|
|
#if FUNC_MUSIC_EN
|
|
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
|
|
#endif // FUNC_MUSIC_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_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;
|
|
}
|
|
|
|
|