mcu_ab568x/app/platform/bsp/bsp_param.c
2025-05-30 18:03:10 +08:00

189 lines
3.9 KiB
C

#include "include.h"
#include "app_variable.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();
}
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_sys_vol_write(void)
{
// param_write((u8 *)&SysVariable.vol, PARAM_SYS_VOL, 1);
}
AT(.text.bsp.param)
void param_sys_vol_read(void)
{
// param_read((u8 *)&SysVariable.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_dial_update_write(void)
{
//param_write((u8 *)&sys_cb.ble_dial_updated, BLE_DIAL_UPDATED, 1);
cm_write((u8 *)&sys_cb.ble_dial_updated, BLE_DIAL_UPDATED, 1);
cm_sync();
}
AT(.text.bsp.param)
void param_dial_update_read(void)
{
//param_read((u8 *)&sys_cb.ble_dial_updated, BLE_DIAL_UPDATED, 1);
sys_cb.ble_dial_updated = cm_read8(BLE_DIAL_UPDATED);
}
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 FOT_EN
AT(.text.bsp.param)
void param_fot_addr_write(u8 *param)
{
param_write((u8 *)param, PARAM_FOT_ADDR, 4);
param_sync();
}
AT(.text.bsp.param)
void param_fot_addr_read(u8 *param)
{
param_read(param, PARAM_FOT_ADDR, 4);
}
AT(.text.bsp.param)
void param_fot_remote_ver_write(u8 *param)
{
param_write((u8 *)param, PARAM_FOT_REMOTE_VER, 2);
param_sync();
}
AT(.text.bsp.param)
void param_fot_remote_ver_read(u8 *param)
{
param_read(param, PARAM_FOT_REMOTE_VER, 2);
}
AT(.text.bsp.param)
void param_fot_head_info_write(u8 *param)
{
param_write((u8 *)param, PARAM_FOT_HEAD_INFO, 8);
param_sync();
}
AT(.text.bsp.param)
void param_fot_head_info_read(u8 *param)
{
param_read(param, PARAM_FOT_HEAD_INFO, 8);
}
AT(.text.bsp.param)
void param_fot_hash_write(u8 *param)
{
param_write((u8 *)param, PARAM_FOT_HASH, 4);
param_sync();
}
AT(.text.bsp.param)
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);
}
#endif