152 lines
3.6 KiB
C
152 lines
3.6 KiB
C
|
/***************************************************************************
|
||
|
*
|
||
|
* Copyright 2015-2019 BES.
|
||
|
* All rights reserved. All unpublished rights reserved.
|
||
|
*
|
||
|
* No part of this work may be used or reproduced in any form or by any
|
||
|
* means, or stored in a database or retrieval system, without prior written
|
||
|
* permission of BES.
|
||
|
*
|
||
|
* Use of this work is governed by a license granted by BES.
|
||
|
* This work contains confidential and proprietary information of
|
||
|
* BES. which is protected by copyright, trade secret,
|
||
|
* trademark and other intellectual property rights.
|
||
|
*
|
||
|
****************************************************************************/
|
||
|
#ifdef NEW_NV_RECORD_ENABLED
|
||
|
|
||
|
#include <stdbool.h>
|
||
|
#include <assert.h>
|
||
|
#include "nvrecord_extension.h"
|
||
|
#include "nvrecord_dma_config.h"
|
||
|
#include "nvrecord.h"
|
||
|
#include "hal_trace.h"
|
||
|
|
||
|
#ifdef NVREC_BAIDU_DATA_SECTION
|
||
|
extern uint32_t* __factory_start;
|
||
|
|
||
|
void nvrecord_rebuild_dma_configuration(NV_DMA_CONFIGURATION_T* pDmaConfig)
|
||
|
{
|
||
|
memset((uint8_t *)pDmaConfig, 0, sizeof(NV_DMA_CONFIGURATION_T));
|
||
|
pDmaConfig->fmfreq = BAIDU_DATA_DEF_FM_FREQ;
|
||
|
}
|
||
|
|
||
|
int nvrec_baidu_data_init(void)
|
||
|
{
|
||
|
if (NULL == nvrecord_extension_p)
|
||
|
{
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
uint32_t lock = nv_record_pre_write_operation();
|
||
|
nvrecord_rebuild_dma_configuration(&(nvrecord_extension_p->dma_config));
|
||
|
nv_record_update_runtime_userdata();
|
||
|
nv_record_post_write_operation(lock);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
int nvrec_get_fm_freq(void)
|
||
|
{
|
||
|
if (NULL == nvrecord_extension_p)
|
||
|
{
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
int _fmfreq = nvrecord_extension_p->dma_config.fmfreq;
|
||
|
|
||
|
TRACE(2,"%s:get fm freq %d", __func__, _fmfreq);
|
||
|
return _fmfreq;
|
||
|
}
|
||
|
|
||
|
int nvrec_set_fm_freq(int fmfreq)
|
||
|
{
|
||
|
if (NULL == nvrecord_extension_p)
|
||
|
{
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
uint32_t lock = nv_record_pre_write_operation();
|
||
|
nvrecord_extension_p->dma_config.fmfreq = fmfreq;
|
||
|
nv_record_update_runtime_userdata();
|
||
|
nv_record_post_write_operation(lock);
|
||
|
|
||
|
#if defined(NVREC_BAIDU_DATA_FLUSH_DIRECT)
|
||
|
nv_record_flash_flush_int(false);
|
||
|
#endif
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
int nvrec_get_rand(char *rand)
|
||
|
{
|
||
|
char _rand[BAIDU_DATA_RAND_LEN];
|
||
|
int8_t copy_len = 0;
|
||
|
|
||
|
if (NULL == rand)
|
||
|
{
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
if (NULL == nvrecord_extension_p)
|
||
|
{
|
||
|
//_rand = BAIDU_DATA_DEF_RAND;
|
||
|
copy_len = (sizeof(BAIDU_DATA_DEF_RAND)<BAIDU_DATA_RAND_LEN)?sizeof(BAIDU_DATA_DEF_RAND):BAIDU_DATA_RAND_LEN;
|
||
|
memcpy(_rand, BAIDU_DATA_DEF_RAND, copy_len);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
memcpy(_rand, nvrecord_extension_p->dma_config.rand, BAIDU_DATA_RAND_LEN);
|
||
|
}
|
||
|
|
||
|
memcpy(rand, _rand, BAIDU_DATA_RAND_LEN);
|
||
|
TRACE(2,"%s:rand %s", __func__, rand);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
int nvrec_set_rand(char *rand)
|
||
|
{
|
||
|
if (NULL == rand)
|
||
|
{
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
if (NULL == nvrecord_extension_p)
|
||
|
{
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
uint32_t lock = nv_record_pre_write_operation();
|
||
|
memcpy(nvrecord_extension_p->dma_config.rand, rand, BAIDU_DATA_RAND_LEN);
|
||
|
nv_record_update_runtime_userdata();
|
||
|
nv_record_post_write_operation(lock);
|
||
|
|
||
|
#if defined(NVREC_BAIDU_DATA_FLUSH_DIRECT)
|
||
|
nv_record_flash_flush_int(false);
|
||
|
#endif
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
//#define GET_SN_FROM_FACTORY
|
||
|
int nvrec_dev_get_sn(char *sn)
|
||
|
{
|
||
|
|
||
|
if (NULL == sn)
|
||
|
{
|
||
|
return -1;
|
||
|
}
|
||
|
#ifdef GET_SN_FROM_FACTORY
|
||
|
unsigned int sn_addr;
|
||
|
sn_addr = (unsigned int)(__factory_start + rev2_dev_prod_sn);
|
||
|
#else
|
||
|
char sn_addr[BAIDU_DATA_SN_LEN] = "01234567890123sf";
|
||
|
#endif
|
||
|
memcpy((void *)sn, (void *)sn_addr, BAIDU_DATA_SN_LEN);
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
#endif // #ifdef NVREC_BAIDU_DATA_SECTION
|
||
|
|
||
|
#endif // #ifdef NEW_NV_RECORD_ENABLED
|