|
@@ -194,7 +194,7 @@ int core_stats(void)
|
|
|
* Editor: cc
|
|
|
* Description: 扫描网关设备数据
|
|
|
******************************************************************/
|
|
|
-int CoreAlarmGateway()
|
|
|
+int CoreAlarmGateway(void)
|
|
|
{
|
|
|
static MYSQL *conn = NULL;
|
|
|
MYSQL_RES* res = NULL;
|
|
@@ -233,7 +233,7 @@ int CoreAlarmGateway()
|
|
|
if(row_count<1)
|
|
|
{
|
|
|
mysql_free_result(res);
|
|
|
- debug("row_count<1 \n");
|
|
|
+ debug("row_count<1 查询记录为0\n");
|
|
|
return 1;
|
|
|
}
|
|
|
debug("CoreAlarmGateway row_count:%d \r\n",row_count);
|
|
@@ -295,7 +295,7 @@ int CoreAlarmGateway()
|
|
|
sprintf(update_sql,"update dev_status set electric_update_flag=2 where device_mac='%s' and gateway_mac='%s' ",device_mac,gateway_mac);
|
|
|
excuteSql(conn,update_sql);
|
|
|
|
|
|
- //判断继电器数据
|
|
|
+ //判断继电器数据,有报警跳过后续判断
|
|
|
result = RelayAlarm(gateway_mac,"0F0000000001",original_relay,conn);
|
|
|
if(result==0) continue;
|
|
|
|
|
@@ -307,7 +307,7 @@ int CoreAlarmGateway()
|
|
|
int result = compareModifiedTimes(tm_time2,tm_time);
|
|
|
if(result>=0)//指令更新时间在2分钟内跳过后续判断
|
|
|
{
|
|
|
- debug("网关:%s,compareModifiedTimes tm_time2>=tm_time\n",device_name);
|
|
|
+ debug("网关:%s,compareModifiedTimes tm_time2>=tm_time ------------>skip\n",device_name);
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
@@ -322,63 +322,70 @@ int CoreAlarmGateway()
|
|
|
//判断自动模式
|
|
|
if(control_mode==0)
|
|
|
{
|
|
|
- if(compareTimes(switch_time1,switch_time2)<=0)//switch_time1<switch_time2
|
|
|
+ int isInTime1 = 0;
|
|
|
+ int isInTime2 = 0;
|
|
|
+ if(row[8]&&row[9]&&(strlen(switch_time1)>4)&&(strlen(switch_time2)>4))//第1个时间段不为空
|
|
|
+ {
|
|
|
+ debug("网关:%s,strlen(switch_time1)=%zu,strlen(switch_time2)=%zu\n",device_name,strlen(switch_time1),strlen(switch_time2));
|
|
|
+ result1 = compareTimes(switch_time1,timeString);
|
|
|
+ result2 = compareTimes(timeString,switch_time2);
|
|
|
+ //时间正常顺序
|
|
|
+ if(compareTimes(switch_time1,switch_time2)<=0)
|
|
|
{
|
|
|
- debug("网关:%s,compareTimes switch_time1<switch_time2\n",device_name);
|
|
|
- result1 = compareTimes(switch_time1,timeString);
|
|
|
- result2 = compareTimes(timeString,switch_time2);
|
|
|
- debug("result1:%d,result2:%d \n",result1,result1);
|
|
|
- //合闸时间段继电器拉闸
|
|
|
- if (result1<=0 && result2<=0)
|
|
|
- {
|
|
|
- if(current_on_off==0)
|
|
|
- {
|
|
|
- debug("网关:%s,合闸时间段继电器拉闸 \n",device_name);
|
|
|
- int ret=ElectricAlarm(gateway_mac,"0F0000000001",device_name,device_name,1101,"合闸时间段继电器拉闸",conn);
|
|
|
- if(ret==0) continue;
|
|
|
- }
|
|
|
- }
|
|
|
- //拉闸时间段继电器合闸
|
|
|
- else
|
|
|
- {
|
|
|
- if(current_on_off==1)
|
|
|
- {
|
|
|
- debug("网关:%s,拉闸时间段继电器合闸 \n",device_name);
|
|
|
- int ret=ElectricAlarm(gateway_mac,"0F0000000001",device_name,device_name,1102,"拉闸时间段继电器合闸",conn);
|
|
|
- if(ret==0) continue;
|
|
|
- }
|
|
|
- }
|
|
|
+ debug("网关:%s,时间正常顺序,compareTimes switch_time1<=switch_time2\n",device_name);
|
|
|
+ //合闸时间段
|
|
|
+ if (result1<=0 && result2<=0) isInTime1=1;
|
|
|
}
|
|
|
+ //时间非正常顺序
|
|
|
else
|
|
|
{
|
|
|
- debug("网关:%s,compareTimes switch_time1>switch_time2\n",device_name);
|
|
|
- result1 = compareTimes(switch_time1,timeString);
|
|
|
- result2 = compareTimes(timeString,switch_time2);
|
|
|
- debug("result1:%d,result2:%d \n",result1,result1);
|
|
|
+ debug("网关:%s,时间非正常顺序,compareTimes switch_time1>=switch_time2\n",device_name);
|
|
|
//合闸时间段
|
|
|
- if (result1<=0 || result2<=0)
|
|
|
- {
|
|
|
- debug("网关:%s,在合闸时间段 \n",device_name);
|
|
|
- if(current_on_off==0)
|
|
|
- {
|
|
|
- debug("网关:%s,合闸时间段继电器拉闸 \n",device_name);
|
|
|
- int ret=ElectricAlarm(gateway_mac,"0F0000000001",device_name,device_name,1101,"合闸时间段继电器拉闸",conn);
|
|
|
- if(ret==0) continue;
|
|
|
- }
|
|
|
- }
|
|
|
- //拉闸时间段
|
|
|
- else
|
|
|
- {
|
|
|
- debug("网关:%s,在拉闸时间段\n",device_name);
|
|
|
- if(current_on_off==1)
|
|
|
- {
|
|
|
- debug("网关:%s,拉闸时间段继电器合闸 \n",device_name);
|
|
|
- int ret=ElectricAlarm(gateway_mac,"0F0000000001",device_name,device_name,1102,"拉闸时间段继电器合闸",conn);
|
|
|
- if(ret==0) continue;
|
|
|
- }
|
|
|
- }
|
|
|
+ if (result1<=0 || result2<=0) isInTime1=1;
|
|
|
}
|
|
|
-
|
|
|
+ }
|
|
|
+ else //第1个时间段为空
|
|
|
+ {
|
|
|
+ isInTime1=2;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(row[10]&&row[11]&&(strlen(switch_time3)>4)&&(strlen(switch_time4)>4))//第2个时间段不为空
|
|
|
+ {
|
|
|
+ debug("网关:%s,strlen(switch_time3)=%zu,strlen(switch_time4)=%zu\n",device_name,strlen(switch_time3),strlen(switch_time4));
|
|
|
+ result3 = compareTimes(switch_time3,timeString);
|
|
|
+ result4 = compareTimes(timeString,switch_time4);
|
|
|
+ //时间正常顺序
|
|
|
+ if(compareTimes(switch_time3,switch_time4)<=0)
|
|
|
+ {
|
|
|
+ debug("网关:%s,时间正常顺序,compareTimes switch_time3<=switch_time4\n",device_name);
|
|
|
+ //合闸时间段
|
|
|
+ if (result3<=0 && result4<=0) isInTime2=1;
|
|
|
+ }
|
|
|
+ //时间非正常顺序
|
|
|
+ else
|
|
|
+ {
|
|
|
+ debug("网关:%s,时间非正常顺序,compareTimes switch_time3>=switch_time4\n",device_name);
|
|
|
+ //合闸时间段
|
|
|
+ if (result3<=0 || result4<=0) isInTime2=1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else //第1个时间段为空
|
|
|
+ {
|
|
|
+ isInTime2=2;
|
|
|
+ }
|
|
|
+
|
|
|
+ if((isInTime1==1||isInTime2==1) && current_on_off==0)
|
|
|
+ {
|
|
|
+ debug("网关:%s,合闸时间段继电器拉闸 \n",device_name);
|
|
|
+ int ret=ElectricAlarm(gateway_mac,"0F0000000001",device_name,device_name,1101,"合闸时间段继电器拉闸",conn);
|
|
|
+ if(ret==0) continue;
|
|
|
+ }
|
|
|
+ else if((isInTime1==0||isInTime2==0) && current_on_off==1)
|
|
|
+ {
|
|
|
+ debug("网关:%s,拉闸时间段继电器合闸 \n",device_name);
|
|
|
+ int ret=ElectricAlarm(gateway_mac,"0F0000000001",device_name,device_name,1102,"拉闸时间段继电器合闸",conn);
|
|
|
+ if(ret==0) continue;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//判断继电器拉闸状态有电流
|
|
@@ -423,7 +430,7 @@ int CoreAlarmGateway()
|
|
|
* Editor: cc
|
|
|
* Description: 扫描节点设备数据
|
|
|
******************************************************************/
|
|
|
-int CoreAlarmNode()
|
|
|
+int CoreAlarmNode(void)
|
|
|
{
|
|
|
static MYSQL *conn2 = NULL;
|
|
|
MYSQL_RES* res = NULL;
|
|
@@ -464,7 +471,7 @@ int CoreAlarmNode()
|
|
|
if(row_count<1)
|
|
|
{
|
|
|
mysql_free_result(res);
|
|
|
- debug("row_count<1 \n");
|
|
|
+ debug("row_count<1 查询记录为0 \n");
|
|
|
return 1;
|
|
|
}
|
|
|
debug("CoreAlarmNode row_count:%d \r\n",row_count);
|
|
@@ -538,7 +545,7 @@ int CoreAlarmNode()
|
|
|
int result = compareModifiedTimes(tm_time2,tm_time);
|
|
|
if(result>=0)//指令更新时间在2分钟内跳过后续判断
|
|
|
{
|
|
|
- debug("网关:%s,节点:%s,compareModifiedTimes tm_time2>=tm_time\n",gateway_name,node_name);
|
|
|
+ debug("网关:%s,节点:%s,compareModifiedTimes tm_time2>=tm_time------------>skip\n",gateway_name,node_name);
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
@@ -558,7 +565,7 @@ int CoreAlarmNode()
|
|
|
|
|
|
if(row[9]&&row[10]&&(strlen(switch_time1)>4)&&(strlen(switch_time2)>4))//第1个时间段不为空
|
|
|
{
|
|
|
- debug("网关:%s,节点:%s,strlen(switch_time1)=%d,strlen(switch_time2)=%d\n",gateway_name,node_name,strlen(switch_time1),strlen(switch_time2));
|
|
|
+ debug("网关:%s,节点:%s,strlen(switch_time1)=%zu,strlen(switch_time2)=%zu\n",gateway_name,node_name,strlen(switch_time1),strlen(switch_time2));
|
|
|
result1 = compareTimes(switch_time1,timeString);
|
|
|
result2 = compareTimes(timeString,switch_time2);
|
|
|
//时间正常顺序
|
|
@@ -583,7 +590,7 @@ int CoreAlarmNode()
|
|
|
|
|
|
if(row[11]&&row[12]&&(strlen(switch_time3)>4)&&(strlen(switch_time4)>4))//第2个时间段不为空
|
|
|
{
|
|
|
- debug("网关:%s,节点:%s,strlen(switch_time3)=%d,strlen(switch_time4)=%d\n",gateway_name,node_name,strlen(switch_time3),strlen(switch_time4));
|
|
|
+ debug("网关:%s,节点:%s,strlen(switch_time3)=%zu,strlen(switch_time4)=%zu\n",gateway_name,node_name,strlen(switch_time3),strlen(switch_time4));
|
|
|
result3 = compareTimes(switch_time3,timeString);
|
|
|
result4 = compareTimes(timeString,switch_time4);
|
|
|
//时间正常顺序
|
|
@@ -673,7 +680,6 @@ int ElectricAlarm(char* mac,char* subMac,char* gatewayName,char* nodeName,int al
|
|
|
char strAlarm[512] = {0};
|
|
|
char updateSql[1024] = {0};
|
|
|
char insertSql[512] = {0};
|
|
|
- int affectedRows = 0;
|
|
|
int queryRow = 0;
|
|
|
int fault_state=0;
|
|
|
int fault_count=0;
|
|
@@ -1422,14 +1428,14 @@ int compareTimes(const char *time1, const char *time2)
|
|
|
localtime_r(¤t_time, &tm_base);
|
|
|
|
|
|
// 解析时间字符串1
|
|
|
- if (strptime(time1, "%H:%M", &tm_time1) == NULL)
|
|
|
+ if (strptime(time1, "%H:%M", &tm_time1) == 0)
|
|
|
{
|
|
|
fprintf(stderr, "Failed to parse time1\n");
|
|
|
return 0; // or handle the error in an appropriate way
|
|
|
}
|
|
|
|
|
|
// 解析时间字符串2
|
|
|
- if (strptime(time2, "%H:%M", &tm_time2) == NULL)
|
|
|
+ if (strptime(time2, "%H:%M", &tm_time2) == 0)
|
|
|
{
|
|
|
fprintf(stderr, "Failed to parse time2\n");
|
|
|
return 0; // or handle the error in an appropriate way
|
|
@@ -1515,7 +1521,7 @@ int compareWithUpdateTime(const char *timeString,const char *time1,const char *t
|
|
|
localtime_r(¤t_time, &tm_base);
|
|
|
|
|
|
// 解析timeString
|
|
|
- if (strptime(timeString, "%H:%M", &tm_timeString) == NULL)
|
|
|
+ if (strptime(timeString, "%H:%M", &tm_timeString) == 0)
|
|
|
{
|
|
|
fprintf(stderr, "Failed to parse tm_timeString\n");
|
|
|
return 0; // or handle the error in an appropriate way
|
|
@@ -1805,7 +1811,7 @@ void UpgradeFileAddFromDB(list_node* f_list,char* filename,MYSQL *_db,int ota_mo
|
|
|
{
|
|
|
char logstr[512] = {0};
|
|
|
unsigned short ota_file_total_packets = 0;
|
|
|
- unsigned int file_length_bytes = 0;
|
|
|
+ int file_length_bytes = 0;
|
|
|
unsigned int ota_length_bytes = 0;
|
|
|
list_node* list = f_list;
|
|
|
ota_info* info = (ota_info*)malloc(sizeof(ota_info));
|
|
@@ -1824,7 +1830,7 @@ void UpgradeFileAddFromDB(list_node* f_list,char* filename,MYSQL *_db,int ota_mo
|
|
|
unsigned char *fp = readfile_from_db(filename,_db,&file_length_bytes);
|
|
|
if (file_length_bytes <= 0)
|
|
|
{
|
|
|
- log("%s file_length_bytes <= 0 ! \n",file_length_bytes);
|
|
|
+ log("%d file_length_bytes <= 0 ! \n",file_length_bytes);
|
|
|
free(info);
|
|
|
info = NULL;
|
|
|
return;
|
|
@@ -1833,7 +1839,7 @@ void UpgradeFileAddFromDB(list_node* f_list,char* filename,MYSQL *_db,int ota_mo
|
|
|
//计算数据库升级文件crc32校验
|
|
|
init_crc32_tab();
|
|
|
uint32_t crc_value = 0;
|
|
|
- if(calc_crc32_from_buff(fp,file_length_bytes,&crc_value) == 0)
|
|
|
+ if(calc_crc32_from_buff((const char*)fp,file_length_bytes,&crc_value) == 0)
|
|
|
{
|
|
|
log("crc_value = %x\n",crc_value);
|
|
|
}
|
|
@@ -1847,11 +1853,11 @@ void UpgradeFileAddFromDB(list_node* f_list,char* filename,MYSQL *_db,int ota_mo
|
|
|
|
|
|
info->ota_mode = 1;//模式
|
|
|
strcpy(info->new_file_name,filename);//新文件名
|
|
|
- info->new_file_len = file_length_bytes;//新文件长度
|
|
|
- info->ota_file_len = file_length_bytes;//升级文件长度
|
|
|
+ info->new_file_len = (uint32_t)file_length_bytes;//新文件长度
|
|
|
+ info->ota_file_len = (uint32_t)file_length_bytes;//升级文件长度
|
|
|
info->new_file_crc = crc_value;//新文件crc32校验
|
|
|
info->ota_file_crc = info->new_file_crc;//升级文件crc32校验
|
|
|
- ota_file_total_packets = file_length_bytes/ota_file_packet_len + 1;
|
|
|
+ ota_file_total_packets = (uint32_t)file_length_bytes/ota_file_packet_len + 1;
|
|
|
info->ota_file_total_packets = ota_file_total_packets;//升级文件总包数
|
|
|
info->ota_file_packet_len = ota_file_packet_len;//升级文件每包数据长度
|
|
|
sprintf(logstr,"新文件名:%s,新文件长度:%d,升级文件长度:%d,升级文件总包数:%d,升级文件每包数据长度:%d,新文件crc32校验:%X,升级文件crc32校验:%X \n",
|
|
@@ -1861,7 +1867,7 @@ void UpgradeFileAddFromDB(list_node* f_list,char* filename,MYSQL *_db,int ota_mo
|
|
|
//差分
|
|
|
else
|
|
|
{
|
|
|
- ota_length_bytes = file_length_bytes;
|
|
|
+ ota_length_bytes = (unsigned int)file_length_bytes;
|
|
|
memcpy(info->buf,fp,ota_length_bytes);
|
|
|
crc_value = get_crc32(0,info->buf,ota_length_bytes);//ota文件crc校验
|
|
|
|
|
@@ -1952,11 +1958,11 @@ void GetUpgradeFileFromDB(char *mac,MYSQL *_db,char* filename)
|
|
|
******************************************************************/
|
|
|
unsigned char *readfile_from_db(const char *filename, MYSQL *_db,int *file_length_bytes)
|
|
|
{
|
|
|
- MYSQL_RES* res = NULL;
|
|
|
- MYSQL_ROW row;
|
|
|
+ //MYSQL_RES* res = NULL;
|
|
|
+ //MYSQL_ROW row;
|
|
|
char sql[512] = {0};
|
|
|
int ret = 0;
|
|
|
- unsigned long *lengths;
|
|
|
+ //unsigned long *lengths;
|
|
|
unsigned char* data;
|
|
|
MYSQL_BIND result;
|
|
|
|
|
@@ -1994,7 +2000,7 @@ unsigned char *readfile_from_db(const char *filename, MYSQL *_db,int *file_lengt
|
|
|
return NULL;
|
|
|
}
|
|
|
log("readfile_from_db函数,total_length=%lu\n", total_length);
|
|
|
- while (start<(int)total_length)
|
|
|
+ while (start<total_length)
|
|
|
{
|
|
|
result.buffer = (data+start);
|
|
|
if(total_length < 1024)
|
|
@@ -2042,15 +2048,15 @@ int32_t calc_crc32_from_buff(const char *buff,int len, uint32_t *uiCrcValue)
|
|
|
int index = 0;
|
|
|
while(remain>0)
|
|
|
{
|
|
|
- if(remain > size)
|
|
|
+ if(remain > (int)size)
|
|
|
{
|
|
|
- crc = get_crc32(crc, buff + index, size);
|
|
|
+ crc = get_crc32(crc, (uint8_t*)(buff + index), size);
|
|
|
index += size;
|
|
|
- remain = remain-size;
|
|
|
+ remain = remain-(int)size;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- crc = get_crc32(crc, buff + index, remain);
|
|
|
+ crc = get_crc32(crc, (uint8_t*)(buff + index), remain);
|
|
|
index += remain;
|
|
|
remain = 0;
|
|
|
}
|