fix:修改UDP通讯中,取电变化上报机制
1、问题点:当RCU网络状态异常的情况下,网络还处于协商状态下,还未进入正常通讯环节时,取电变化不会进行判断。这会导致取电变化上报与实际产生取电状态时间点对不上。 2、将BLV_C1F_Module代码上传至Gitea,之前代码修改记录请查看 .\BasicCode\Readme.txt
This commit is contained in:
107
BasicCode/Drive/BLE/data_save.c
Normal file
107
BasicCode/Drive/BLE/data_save.c
Normal file
@@ -0,0 +1,107 @@
|
||||
#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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user