|
@@ -1,10 +1,10 @@
|
|
|
#include "coreobject.h"
|
|
|
|
|
|
-//#define iServerIP "172.19.198.166"
|
|
|
-//#define oServerIP "47.103.74.123"
|
|
|
+#define iServerIP "172.19.198.166"
|
|
|
+#define oServerIP "47.103.74.123"
|
|
|
|
|
|
-#define iServerIP "172.19.198.168"
|
|
|
-#define oServerIP "101.133.214.75"
|
|
|
+//#define iServerIP "172.19.198.168"
|
|
|
+//#define oServerIP "101.133.214.75"
|
|
|
|
|
|
#define UN_REFERENCED_PARAMETER(x) {(x) = (x);}
|
|
|
|
|
@@ -162,6 +162,7 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
|
|
|
CoreObject *obj = (CoreObject *)pUser;
|
|
|
QDateTime zeroTime = QDateTime::fromTime_t(0);
|
|
|
QDateTime t_now = QDateTime::currentDateTime();
|
|
|
+ ytShm->workingTime[0] = t_now.toTime_t();
|
|
|
if (ENUM_DEV_ON == dwDataType)
|
|
|
{
|
|
|
NET_EHOME_DEV_REG_INFO *pDevInfo = (NET_EHOME_DEV_REG_INFO *)pOutBuffer;
|
|
@@ -172,7 +173,7 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
|
|
|
if(strcmp(ytShm->eHomeDevice[i].deviceID,QString((char*)(pDevInfo->byDeviceID)).replace(" ","_").toUtf8().data())==0){
|
|
|
found = true;
|
|
|
memcpy(ytShm->eHomeDevice[i].devIp,(char *)(pDevInfo->struDevAdd.szIP),sizeof(ytShm->eHomeDevice[i].devIp));
|
|
|
- obj->appendLog(QString("[ %1 (%2) online ]").arg(t_now.toString("yyyy-MM-dd HH:mm:ss")).arg(ytShm->eHomeDevice[i].deviceID));
|
|
|
+// obj->appendLog(QString("[ %1 (%2) online ]").arg(t_now.toString("yyyy-MM-dd HH:mm:ss")).arg(ytShm->eHomeDevice[i].deviceID));
|
|
|
ytShm->eHomeDevice[i].LoginId = lUserID;
|
|
|
ytShm->eHomeDevice[i].Connected = 0x00;
|
|
|
ytShm->eHomeDevice[i].Inited = 0x01;
|
|
@@ -210,7 +211,7 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
|
|
|
ytShm->eHomeDevice[i].io[15]=0x00;
|
|
|
ytShm->eHomeDevice[i].io[14]=0x02;
|
|
|
ytShm->eHomeDevice[i].LoginId = -1;
|
|
|
- obj->appendLog(QString("[ %1 (%2) offline ]").arg(t_now.toString("yyyy-MM-dd HH:mm:ss")).arg(ytShm->eHomeDevice[i].deviceID));
|
|
|
+// obj->appendLog(QString("[ %1 (%2) offline ]").arg(t_now.toString("yyyy-MM-dd HH:mm:ss")).arg(ytShm->eHomeDevice[i].deviceID));
|
|
|
if(ytShm->eHomeDevice[i].SessionId>=0){
|
|
|
if(NET_ECMS_StopGetRealStream(lUserID,ytShm->eHomeDevice[i].SessionId)){
|
|
|
ytShm->eHomeDevice[i].SessionId = -1;
|
|
@@ -268,6 +269,7 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
|
|
|
|
|
|
BOOL CALLBACK fnPREVIEW_NEWLINK_CB(LONG lPreviewHandle, NET_EHOME_NEWLINK_CB_MSG *pNewLinkCBMsg, void *pUserData)
|
|
|
{
|
|
|
+ ytShm->workingTime[0] = QDateTime::currentDateTime().toTime_t();
|
|
|
for(int i=0;i<DEVICES_COUNT;i++){
|
|
|
if((ytShm->eHomeDevice[i].LoginId>-1)&&(ytShm->eHomeDevice[i].listen_preview_handle>-1)){
|
|
|
if(strcmp(ytShm->eHomeDevice[i].deviceID,QString((char *)pNewLinkCBMsg->szDeviceID).replace(" ","_").toUtf8().data())==0){
|
|
@@ -310,6 +312,7 @@ bool CoreObject::checkAlarmDevTime(QString deviceid){
|
|
|
|
|
|
void CALLBACK fnPREVIEW_DATA_CB(LONG lPreviewHandle, NET_EHOME_PREVIEW_CB_MSG *pPreviewCBMsg, void *pUserData)
|
|
|
{
|
|
|
+ ytShm->workingTime[0] = QDateTime::currentDateTime().toTime_t();
|
|
|
if (NULL == pPreviewCBMsg)
|
|
|
{
|
|
|
return ;
|
|
@@ -387,7 +390,7 @@ BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, voi
|
|
|
QDateTime dt = QDateTime::currentDateTime();
|
|
|
CoreObject *obj = (CoreObject *)pUserData;
|
|
|
DWORD dwType = pAlarmMsg->dwAlarmType; //不同的报警类型(dwAlarmType),pAlarmInfo对应不同的报警信息类型
|
|
|
-
|
|
|
+ ytShm->workingTime[0] = dt.toTime_t();
|
|
|
if(pAlarmMsg->pHttpUrl!=NULL)
|
|
|
dwType = EHOME_ISAPI_ALARM;
|
|
|
switch(dwType)
|
|
@@ -402,8 +405,8 @@ BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, voi
|
|
|
{
|
|
|
QString devId = QString(struAlarmInfo.szDeviceID);
|
|
|
if(obj->checkAlarmDevTime(devId)){
|
|
|
- obj->appendLog(QString("[ %1 alm] Basic Alarm: Device ID[%2], szAlarmTime[%3], Alarm Type[%4], Action[%5], VideoChannel[%6]!")
|
|
|
- .arg(dt.toString("yyyy-MM-dd HH:mm:ss"))
|
|
|
+ obj->appendLog(QString("[ %1 alm(%2) ] Basic Alarm: Device ID[%3], szAlarmTime[%4], Alarm Type[%5], Action[%6], VideoChannel[%7]!")
|
|
|
+ .arg(dt.toString("yyyy-MM-dd HH:mm:ss")).arg(obj->alarmList.length())
|
|
|
.arg(struAlarmInfo.szDeviceID).arg(struAlarmInfo.szAlarmTime).arg(struAlarmInfo.dwAlarmType).arg(struAlarmInfo.dwAlarmAction).arg(struAlarmInfo.dwVideoChannel));
|
|
|
for(idx=0;idx<DEVICES_COUNT;idx++){
|
|
|
if((strcmp(ytShm->eHomeDevice[idx].deviceID,(char*)(struAlarmInfo.szDeviceID))==0)
|
|
@@ -444,6 +447,7 @@ BOOL InputStreamData(QString deviceid, BYTE byDataType, char* pBuffer, int iData
|
|
|
{
|
|
|
int i;
|
|
|
uint t = QDateTime::currentDateTime().toTime_t();
|
|
|
+ ytShm->workingTime[0] = t;
|
|
|
for(i=0;i<DEVICES_COUNT;i++){
|
|
|
if(QString(ytShm->eHomeDevice[i].deviceID).compare(deviceid)==0){
|
|
|
if(ytShm->eHomeDevice[i].io[0]==0x01){
|
|
@@ -622,8 +626,46 @@ QString CoreObject::getCompanyCode(QString addr){
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
+void CoreObject::clear_devalarm(AlarmEvent devAlarm)
|
|
|
+{
|
|
|
+ for(int i=0;i<DEVICES_COUNT;i++){
|
|
|
+ if(devAlarm.Device_Code.compare(QString(ytShm->eHomeDevice[i].deviceID))==0){
|
|
|
+ if(processList.at(i)->pid()>0)
|
|
|
+ processList.at(i)->close();
|
|
|
+ ytShm->eHomeDevice[i].io[6]=0x00;
|
|
|
+ ytShm->eHomeDevice[i].io[0]=0x00;
|
|
|
+ QString tmpfile = QString(ytShm->eHomeDevice[i].filename);
|
|
|
+ if(ytShm->eHomeDevice[i].tmpfile!=NULL)
|
|
|
+ fclose(ytShm->eHomeDevice[i].tmpfile);
|
|
|
+ ytShm->eHomeDevice[i].savetmp = 0x00;
|
|
|
+ ytShm->eHomeDevice[i].tmpfile = NULL;
|
|
|
+ QFile(tmpfile).remove();
|
|
|
+ ytShm->eHomeDevice[i].transed = 0x00;
|
|
|
+ sprintf(ytShm->eHomeDevice[i].filename,"");
|
|
|
+ if(ytShm->eHomeDevice[i].io[8]==0x02){
|
|
|
+ reportList.append(Alarm_Report(devAlarm.Device_Code,devAlarm.Event_Time,QString::fromUtf8("200104"),
|
|
|
+ QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','消防占道告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
+ .arg(2).arg(devAlarm.Device_Code).arg(devAlarm.Event_Time).arg(1)
|
|
|
+ .arg(104).arg(devAlarm.Event_Status).arg("").arg("")));
|
|
|
+ }else if(ytShm->eHomeDevice[i].io[8]==0x04){
|
|
|
+ reportList.append(Alarm_Report(devAlarm.Device_Code,devAlarm.Event_Time,QString::fromUtf8("200105"),
|
|
|
+ QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','电动车禁入/区域入侵告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
+ .arg(2).arg(devAlarm.Device_Code).arg(devAlarm.Event_Time).arg(1)
|
|
|
+ .arg(106).arg(devAlarm.Event_Status).arg("").arg("")));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for(int i=0;i<alarmList.length();i++){
|
|
|
+ if(alarmList.at(i).Device_Code.compare(devAlarm.Device_Code)==0){
|
|
|
+ alarmList.removeAt(i);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void CoreObject::time_out()
|
|
|
{
|
|
|
+ uint ChkTime = 0;
|
|
|
QDateTime t = QDateTime::currentDateTime();
|
|
|
ytShm->workingTime[0] = t.toTime_t();
|
|
|
if(!had_reg){
|
|
@@ -640,7 +682,7 @@ void CoreObject::time_out()
|
|
|
for(int i=0;i<DEVICES_COUNT;i++){
|
|
|
if(ytShm->eHomeDevice[i].Inited==0x01){
|
|
|
t = QDateTime::currentDateTime();
|
|
|
- ytShm->workingTime[0] = t.toTime_t();
|
|
|
+ ytShm->workingTime[0] = t.toTime_t();
|
|
|
if(ytShm->eHomeDevice[i].Connected==0x00){
|
|
|
if(ytShm->eHomeDevice[i].io[8]==0x01)
|
|
|
ytShm->eHomeDevice[i].io[0] = 0x01;
|
|
@@ -817,7 +859,7 @@ void CoreObject::time_out()
|
|
|
ytShm->workingTime[0] = t.toTime_t();
|
|
|
QString phonelist = "";
|
|
|
Alarm_Report rep = reportList.first();
|
|
|
- appendLog(QString("[ %1 sql ] %2").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Sql));
|
|
|
+ appendLog(QString("[ %1 sql(%2) ] %3").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(alarmList.length()).arg(rep.Sql));
|
|
|
QSqlQuery qry = db.exec(rep.Sql);
|
|
|
quint64 insertId = qry.lastInsertId().toULongLong();
|
|
|
QString type="";
|
|
@@ -872,13 +914,33 @@ void CoreObject::time_out()
|
|
|
}
|
|
|
int a_count=0;
|
|
|
t = QDateTime::currentDateTime();
|
|
|
- QListIterator<AlarmEvent> AlaList(alarmList);
|
|
|
- while(AlaList.hasNext()){
|
|
|
- AlarmEvent ae = AlaList.next();
|
|
|
- if((t.toTime_t()-ae.t_stamp)>120){
|
|
|
- a_count++;
|
|
|
- if(a_count>8)
|
|
|
- exit(1);
|
|
|
+ if((t.toTime_t()-ChkTime)>60){
|
|
|
+ ChkTime = t.toTime_t();
|
|
|
+// foreach(auto ae,alarmList){
|
|
|
+// if((t.toTime_t()-ae.t_stamp)>120){
|
|
|
+// a_count++;
|
|
|
+// appendLog(QString("[ %1 tmo(%2:%3) ] %4 %5").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(alarmList.length()).arg(a_count).arg(ae.Device_Code).arg(ae.Event_Time));
|
|
|
+// if(a_count>8){
|
|
|
+// sleep(5);
|
|
|
+// exit(1);
|
|
|
+// }
|
|
|
+// clear_devalarm(ae);
|
|
|
+// alarmList.removeOne(ae);
|
|
|
+// }
|
|
|
+// }
|
|
|
+ QListIterator<AlarmEvent> AlaList(alarmList);
|
|
|
+ while(AlaList.hasNext()){
|
|
|
+ AlarmEvent ae = AlaList.next();
|
|
|
+ if((t.toTime_t()-ae.t_stamp)>120){
|
|
|
+ a_count++;
|
|
|
+ appendLog(QString("[ %1 tmo(%2:%3) ] %4 %5").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(alarmList.length()).arg(a_count).arg(ae.Device_Code).arg(ae.Event_Time));
|
|
|
+ if(a_count>8){
|
|
|
+ sleep(5);
|
|
|
+ exit(1);
|
|
|
+ }
|
|
|
+ clear_devalarm(ae);
|
|
|
+// alarmList.removeOne((const AlarmEvent)ae);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
isWorking = false;
|