修复 getFileSize() 内存泄露的问题
更新 updateCacheFileName()
This commit is contained in:
parent
4dbcd25af8
commit
7d06ab7e7b
@ -66,11 +66,6 @@ int trDataTolog(uint8_t *din, size_t len, uint8_t isTx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RT_WEAK int set_cfg(const char *k, const char*v)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//3.2.1双模通信功能
|
//3.2.1双模通信功能
|
||||||
//1为TT通信,0为BD短报文通信
|
//1为TT通信,0为BD短报文通信
|
||||||
void setCommMode(int isTT)
|
void setCommMode(int isTT)
|
||||||
@ -167,7 +162,7 @@ void upSend_thread_entry(void* parameter)
|
|||||||
//cache to file
|
//cache to file
|
||||||
LOG_W("TT is not ready, try to cache %d bytes data to file.",msg->len);
|
LOG_W("TT is not ready, try to cache %d bytes data to file.",msg->len);
|
||||||
cacheDataToFile(msg->data, msg->len);
|
cacheDataToFile(msg->data, msg->len);
|
||||||
return -RT_ERROR;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -181,7 +176,7 @@ void upSend_thread_entry(void* parameter)
|
|||||||
packInit(&cfg, fin, 0); //写入配置
|
packInit(&cfg, fin, 0); //写入配置
|
||||||
cfg.fcurpiece[0] = 1;
|
cfg.fcurpiece[0] = 1;
|
||||||
cfg.fallpiece[0] = 1;
|
cfg.fallpiece[0] = 1;
|
||||||
size_t rst = packMsg(&cfg, msg->data, msg->len, dout);
|
size_t rst = packMsg(&cfg, msg->data, msg->len, dout);//packMsgs
|
||||||
LOG_HEX("upSend", 27, dout, rst);
|
LOG_HEX("upSend", 27, dout, rst);
|
||||||
if (rst)
|
if (rst)
|
||||||
{
|
{
|
||||||
@ -200,7 +195,7 @@ void upSend_thread_entry(void* parameter)
|
|||||||
cacheDataToFile(msg->data, msg->len);
|
cacheDataToFile(msg->data, msg->len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return ;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 上傳天通數據
|
* 上傳天通數據
|
||||||
@ -234,7 +229,7 @@ RT_WEAK int upSend(uint8_t *din, size_t len)
|
|||||||
//
|
//
|
||||||
// //此函数有打包操作,需线程操作
|
// //此函数有打包操作,需线程操作
|
||||||
//// LOG_D("upsend.");
|
//// LOG_D("upsend.");
|
||||||
//// return 0;
|
// return 0;
|
||||||
//
|
//
|
||||||
static SMSG msg;
|
static SMSG msg;
|
||||||
memset(&msg, 0, sizeof(SMSG));
|
memset(&msg, 0, sizeof(SMSG));
|
||||||
@ -861,6 +856,7 @@ unsigned long getFileSize(char *file)
|
|||||||
{
|
{
|
||||||
struct stat stat;
|
struct stat stat;
|
||||||
char *fullpath, *path;
|
char *fullpath, *path;
|
||||||
|
unsigned long rst=0;
|
||||||
|
|
||||||
#ifdef DFS_USING_WORKDIR
|
#ifdef DFS_USING_WORKDIR
|
||||||
/* open current working directory */
|
/* open current working directory */
|
||||||
@ -873,12 +869,11 @@ unsigned long getFileSize(char *file)
|
|||||||
rt_memset(&stat, 0, sizeof(struct stat));
|
rt_memset(&stat, 0, sizeof(struct stat));
|
||||||
if (dfs_file_stat(fullpath, &stat) == 0)
|
if (dfs_file_stat(fullpath, &stat) == 0)
|
||||||
{
|
{
|
||||||
return (unsigned long) stat.st_size;
|
rst = stat.st_size;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
rt_free(fullpath);
|
||||||
|
rt_free(path);
|
||||||
|
return rst;
|
||||||
}
|
}
|
||||||
|
|
||||||
void d_getFileSize(int argc, char ** argv)
|
void d_getFileSize(int argc, char ** argv)
|
||||||
@ -960,12 +955,12 @@ int cacheDataToFile(uint8_t *din, size_t len)
|
|||||||
}
|
}
|
||||||
// cnt += len;
|
// cnt += len;
|
||||||
close(fd);
|
close(fd);
|
||||||
size_t size = getFileSize(f);
|
unsigned long size = getFileSize(f);
|
||||||
LOG_I("cached %d bytes data to '%s', new size is %d bytes.",len,f,size);
|
LOG_I("cached %d bytes data to '%s', new size is %ld bytes.",len,f,size);
|
||||||
|
|
||||||
if (size > scfg.maxSizePerFile) {
|
if (size > scfg.maxSizePerFile) {
|
||||||
postFileInfo(f,0);//加入待发列表
|
postFileInfo(f,0);//加入待发列表
|
||||||
getNewCacheFileName(f);//更新文件名
|
updateCacheFileName();//更新文件名
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -987,7 +982,7 @@ void parseRS232(uint8_t *din, size_t len)
|
|||||||
//有HEX有ASCII,统一按HEX解析
|
//有HEX有ASCII,统一按HEX解析
|
||||||
//部分数据以10字节(20字符)的0数据开始,如深度查询,心跳包等
|
//部分数据以10字节(20字符)的0数据开始,如深度查询,心跳包等
|
||||||
//处理思路是先不管前导0,对应指令手动加前导数据
|
//处理思路是先不管前导0,对应指令手动加前导数据
|
||||||
uint8_t asciiHead[]={0x41, 0x54, 0x2B, 0x53, 0x4E, 0x44,};//"AT+SND"
|
// uint8_t asciiHead[]={0x41, 0x54, 0x2B, 0x53, 0x4E, 0x44,};//"AT+SND"
|
||||||
uint8_t hexHead[]={0x5a, 0xa5};//"5AA5"
|
uint8_t hexHead[]={0x5a, 0xa5};//"5AA5"
|
||||||
//由于帧头有多种,且ascii和hex混发,无法处理粘包
|
//由于帧头有多种,且ascii和hex混发,无法处理粘包
|
||||||
|
|
||||||
@ -1026,7 +1021,7 @@ void parseRS232(uint8_t *din, size_t len)
|
|||||||
}
|
}
|
||||||
else//如果不是ASCII则统一按HEX计// if (memcmp(din,hexHead,sizeof(hexHead)) == 0)
|
else//如果不是ASCII则统一按HEX计// if (memcmp(din,hexHead,sizeof(hexHead)) == 0)
|
||||||
{
|
{
|
||||||
//hex
|
//bin
|
||||||
LOG_I("type = BIN");
|
LOG_I("type = BIN");
|
||||||
char tmp[200]="";
|
char tmp[200]="";
|
||||||
trDataTolog(bytes2str(din, len, 16, " ", tmp), strlen(tmp), 0);
|
trDataTolog(bytes2str(din, len, 16, " ", tmp), strlen(tmp), 0);
|
||||||
|
@ -391,7 +391,7 @@ size_t isInByte(uint8_t *din, size_t len, uint8_t *s, size_t slen, uint8_t *dout
|
|||||||
* @param fin 指向文件名的数组
|
* @param fin 指向文件名的数组
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
char *getNewCacheFileName(char *fin)
|
void updateCacheFileName()
|
||||||
{
|
{
|
||||||
char f[60]="";
|
char f[60]="";
|
||||||
char rootDir[22] = ROOT_PATH_DATA;
|
char rootDir[22] = ROOT_PATH_DATA;
|
||||||
@ -415,8 +415,8 @@ char *getNewCacheFileName(char *fin)
|
|||||||
|
|
||||||
// strcpy(cfname,f);
|
// strcpy(cfname,f);
|
||||||
updateLstFile(f);
|
updateLstFile(f);
|
||||||
strcpy(fin,f);
|
// strcpy(fin,f);
|
||||||
return fin;
|
// return fin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -432,8 +432,9 @@ char *getLstCacheFileName(char *fin)
|
|||||||
// getNewCacheFileName(fin);
|
// getNewCacheFileName(fin);
|
||||||
// }
|
// }
|
||||||
char f[60];
|
char f[60];
|
||||||
if (!getLstFile(f)) {
|
while (!getLstFile(f)) {
|
||||||
getNewCacheFileName(fin);
|
updateCacheFileName();
|
||||||
|
rt_thread_mdelay(1000);
|
||||||
}
|
}
|
||||||
strcpy(fin,f);
|
strcpy(fin,f);
|
||||||
return fin;
|
return fin;
|
||||||
@ -445,7 +446,8 @@ void d_gcf()
|
|||||||
{
|
{
|
||||||
char f[60];
|
char f[60];
|
||||||
LOG_D("--%s",getLstCacheFileName(f));
|
LOG_D("--%s",getLstCacheFileName(f));
|
||||||
LOG_D("--%s",getNewCacheFileName(f));
|
updateCacheFileName();
|
||||||
|
LOG_D("--%s",getLstCacheFileName(f));
|
||||||
}
|
}
|
||||||
MSH_CMD_EXPORT(d_gcf,cache file);
|
MSH_CMD_EXPORT(d_gcf,cache file);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user