#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