108 lines
2.4 KiB
C
108 lines
2.4 KiB
C
|
|
#include "data_save.h"
|
|||
|
|
#include "stdlib.h"
|
|||
|
|
|
|||
|
|
DataFlash_Save_T dataFlash_save_t={
|
|||
|
|
.flash_save_flg = 0, //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
|
.flash_save_head = 0, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|||
|
|
.bleName_len = 15, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
.scanRspData = {
|
|||
|
|
// complete name
|
|||
|
|
0x10, // length of this data
|
|||
|
|
GAP_ADTYPE_LOCAL_NAME_COMPLETE,
|
|||
|
|
'B',
|
|||
|
|
'L',
|
|||
|
|
'V',
|
|||
|
|
'-',
|
|||
|
|
'C',
|
|||
|
|
'1',
|
|||
|
|
' ',
|
|||
|
|
'R',
|
|||
|
|
'C',
|
|||
|
|
'U',
|
|||
|
|
':',
|
|||
|
|
'8',
|
|||
|
|
'8',
|
|||
|
|
'8',
|
|||
|
|
'8',
|
|||
|
|
// connection interval range
|
|||
|
|
0x05, // length of this data
|
|||
|
|
GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE,
|
|||
|
|
LO_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ), // 100ms
|
|||
|
|
HI_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ),
|
|||
|
|
LO_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ), // 1s
|
|||
|
|
HI_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ),
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
void DataFlash_Save_Init()
|
|||
|
|
{
|
|||
|
|
//DataFlash_Save_T save_t = {0};
|
|||
|
|
PRINT("flash head:%X, %X\n", (*(uint8*)DATAFLASH_SAVE_START_ADDR & 3), *(uint8*)DATAFLASH_SAVE_START_ADDR);
|
|||
|
|
if( (*(uint8*)DATAFLASH_SAVE_START_ADDR & 3) == FALSH_SAVE_HEAD) //<2F><>ͷ<EFBFBD><CDB7><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD>flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
PRINT("Read flash\n");
|
|||
|
|
memset(&dataFlash_save_t, 0, sizeof(DataFlash_Save_T));
|
|||
|
|
memcpy((uint8*)&dataFlash_save_t, (uint8*)DATAFLASH_SAVE_START_ADDR, sizeof(DataFlash_Save_T));
|
|||
|
|
|
|||
|
|
PRINT("bleName_len:%d\n", dataFlash_save_t.bleName_len);
|
|||
|
|
for(int i = 0; i< dataFlash_save_t.bleName_len ; i++)
|
|||
|
|
{
|
|||
|
|
PRINT("%c", (char)dataFlash_save_t.scanRspData[i+2]);
|
|||
|
|
}
|
|||
|
|
PRINT("\n");
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
else //<2F><>flashдĬ<D0B4>ϲ<EFBFBD><CFB2><EFBFBD>
|
|||
|
|
{
|
|||
|
|
dataFlash_save_t.flash_save_flg = 1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
|
void DataFlash_Save_Task()
|
|||
|
|
{
|
|||
|
|
if(dataFlash_save_t.flash_save_flg)
|
|||
|
|
{
|
|||
|
|
PRINT("Write flash\n");
|
|||
|
|
dataFlash_save_t.flash_save_flg = 0;
|
|||
|
|
dataFlash_save_t.flash_save_head = FALSH_SAVE_HEAD; //дͷ<D0B4><CDB7><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
uint8 err = FlashBlockErase(DATAFLASH_SAVE_START_ADDR); //512<31><32><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>
|
|||
|
|
if(err) PRINT("Erase flash err:%d\n", err);
|
|||
|
|
|
|||
|
|
int len = 0;
|
|||
|
|
|
|||
|
|
if( sizeof(DataFlash_Save_T) %4 != 0) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD>
|
|||
|
|
{
|
|||
|
|
len = sizeof(DataFlash_Save_T) / 4 + 1;
|
|||
|
|
}
|
|||
|
|
else len = sizeof(DataFlash_Save_T) / 4;
|
|||
|
|
|
|||
|
|
// PRINT("buff size:%d\n", len);
|
|||
|
|
|
|||
|
|
uint32* buff = malloc(len);
|
|||
|
|
if(buff == NULL) return;
|
|||
|
|
|
|||
|
|
for(int i = 0; i< len; i++)
|
|||
|
|
{
|
|||
|
|
buff[i] = 0x00000000;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
memcpy((uint8*)buff, (uint8*)&dataFlash_save_t, sizeof(DataFlash_Save_T));
|
|||
|
|
|
|||
|
|
err = FlashWriteBuf(DATAFLASH_SAVE_START_ADDR, buff, len*4);
|
|||
|
|
|
|||
|
|
if(err) PRINT("Write flash err:%d\n", err);
|
|||
|
|
|
|||
|
|
free(buff);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|