Files
caocong 95916b9995 fix:修改UDP通讯中,取电变化上报机制
1、问题点:当RCU网络状态异常的情况下,网络还处于协商状态下,还未进入正常通讯环节时,取电变化不会进行判断。这会导致取电变化上报与实际产生取电状态时间点对不上。
2、将BLV_C1F_Module代码上传至Gitea,之前代码修改记录请查看 .\BasicCode\Readme.txt
2026-01-23 09:23:12 +08:00

108 lines
2.4 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "data_save.h"
#include "stdlib.h"
DataFlash_Save_T dataFlash_save_t={
.flash_save_flg = 0, //需要保存标志
.flash_save_head = 0, //保存的头
.bleName_len = 15, //蓝牙名长度
.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) //有头标记从flash读参数
{
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 //往flash写默认参数
{
dataFlash_save_t.flash_save_flg = 1;
}
}
/*参数保存任务*/
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; //写头标记
uint8 err = FlashBlockErase(DATAFLASH_SAVE_START_ADDR); //512对齐,擦除
if(err) PRINT("Erase flash err:%d\n", err);
int len = 0;
if( sizeof(DataFlash_Save_T) %4 != 0) //参数非4字节对齐
{
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);
}
}