|
@@ -53,7 +53,7 @@ CoreObject::CoreObject(QObject *parent) :
|
|
|
ytShm->eHomeDevice[i].onLined = 0x00;
|
|
|
ytShm->eHomeDevice[i].savetmp = 0x00;
|
|
|
ytShm->eHomeDevice[i].transed = 0x00;
|
|
|
- for(int j=0;j<8;j++)
|
|
|
+ for(int j=0;j<7;j++)
|
|
|
ytShm->eHomeDevice[i].io[j] = 0x00;
|
|
|
ytShm->eHomeDevice[i].time[0]=0;
|
|
|
ytShm->eHomeDevice[i].time[1]=0;
|
|
@@ -168,8 +168,8 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
|
|
|
ytShm->eHomeDevice[i].Inited = 0x01;
|
|
|
ytShm->eHomeDevice[i].onLined = 0x00;
|
|
|
ytShm->eHomeDevice[i].savetmp = 0x00;
|
|
|
- if(ytShm->eHomeDevice[i].transed==0x01)
|
|
|
- fclose(ytShm->eHomeDevice[i].tmpfile);
|
|
|
+// if(ytShm->eHomeDevice[i].tmpfile!=NULL)
|
|
|
+// fclose(ytShm->eHomeDevice[i].tmpfile);
|
|
|
ytShm->eHomeDevice[i].tmpfile = NULL;
|
|
|
ytShm->eHomeDevice[i].transed = 0x00;
|
|
|
ytShm->eHomeDevice[i].io[15]=0x00;
|
|
@@ -182,28 +182,6 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
|
|
|
}
|
|
|
if(!found){
|
|
|
return FALSE;
|
|
|
-// for(int i=0;i<DEVICES_COUNT;i++){
|
|
|
-// if(QString(ytShm->eHomeDevice[i].deviceID).trimmed().length()==0){
|
|
|
-// ytShm->eHomeDevice[i].io[8]=0x00;
|
|
|
-// ytShm->eHomeDevice[i].LoginId = lUserID;
|
|
|
-// sprintf(ytShm->eHomeDevice[i].deviceID,"%s",QString((char *)(pDevInfo->byDeviceID)).replace(" ","_").toUtf8().data());
|
|
|
-// obj->appendLog(QString("[ %1 (%2) regist new dev ]").arg(t_now.toString("yyyy-MM-dd HH:mm:ss")).arg(ytShm->eHomeDevice[i].deviceID));
|
|
|
-// ytShm->eHomeDevice[i].Connected = 0x00;
|
|
|
-// ytShm->eHomeDevice[i].onLined = 0x00;
|
|
|
-// setFullTime(&(ytShm->eHomeDevice[i].onLinetime),zeroTime);
|
|
|
-// setFullTime(&(ytShm->eHomeDevice[i].transtime),zeroTime);
|
|
|
-// ytShm->eHomeDevice[i].Inited = 0x01;
|
|
|
-// ytShm->eHomeDevice[i].savetmp = 0x00;
|
|
|
-// if(ytShm->eHomeDevice[i].transed==0x01)
|
|
|
-// fclose(ytShm->eHomeDevice[i].tmpfile);
|
|
|
-// ytShm->eHomeDevice[i].tmpfile = NULL;
|
|
|
-// ytShm->eHomeDevice[i].transed = 0x00;
|
|
|
-// ytShm->eHomeDevice[i].io[15]=0x00;
|
|
|
-// ytShm->eHomeDevice[i].io[14]=0x03;
|
|
|
-// idx = i;
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// }
|
|
|
}
|
|
|
|
|
|
//输入参数
|
|
@@ -222,7 +200,6 @@ 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;
|
|
|
-// printf("%s link off\n",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)){
|
|
@@ -240,8 +217,8 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
|
|
|
setFullTime(&(ytShm->eHomeDevice[i].transtime),zeroTime);
|
|
|
|
|
|
ytShm->eHomeDevice[i].savetmp = 0x00;
|
|
|
- if(ytShm->eHomeDevice[i].transed==0x01)
|
|
|
- fclose(ytShm->eHomeDevice[i].tmpfile);
|
|
|
+// if(ytShm->eHomeDevice[i].tmpfile!=NULL)
|
|
|
+// fclose(ytShm->eHomeDevice[i].tmpfile);
|
|
|
ytShm->eHomeDevice[i].tmpfile = NULL;
|
|
|
ytShm->eHomeDevice[i].transed = 0x00;
|
|
|
if(ytShm->eHomeDevice[i].lLinkHandle>0){
|
|
@@ -265,8 +242,8 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
|
|
|
setFullTime(&(ytShm->eHomeDevice[i].transtime),zeroTime);
|
|
|
ytShm->eHomeDevice[i].lLinkHandle = -1;
|
|
|
ytShm->eHomeDevice[i].savetmp = 0x00;
|
|
|
- if(ytShm->eHomeDevice[i].transed==0x01)
|
|
|
- fclose(ytShm->eHomeDevice[i].tmpfile);
|
|
|
+// if(ytShm->eHomeDevice[i].transed==0x01)
|
|
|
+// fclose(ytShm->eHomeDevice[i].tmpfile);
|
|
|
ytShm->eHomeDevice[i].tmpfile = NULL;
|
|
|
ytShm->eHomeDevice[i].transed = 0x00;
|
|
|
}
|
|
@@ -395,32 +372,27 @@ void ProcessHttpAlarmInfo(void *pXml, unsigned long dwLen, void *pUrl, unsigned
|
|
|
|
|
|
BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, void *pUserData)
|
|
|
{
|
|
|
-// LONG lListenHandle = -1;
|
|
|
-// lListenHandle = lHandle;
|
|
|
int i,idx;
|
|
|
+ QDateTime dt = QDateTime::currentDateTime();
|
|
|
CoreObject *obj = (CoreObject *)pUserData;
|
|
|
DWORD dwType = pAlarmMsg->dwAlarmType; //不同的报警类型(dwAlarmType),pAlarmInfo对应不同的报警信息类型
|
|
|
|
|
|
if(pAlarmMsg->pHttpUrl!=NULL)
|
|
|
dwType = EHOME_ISAPI_ALARM;
|
|
|
-// printf("Callback of alarm listening, dwAlarmType[%d]\n", dwType);
|
|
|
-
|
|
|
switch(dwType)
|
|
|
{
|
|
|
case EHOME_ALARM_UNKNOWN://未知报警信息
|
|
|
-// printf("Unknown Alarm Type!\n");
|
|
|
break;
|
|
|
case EHOME_ALARM://基本报警信息:移动侦测、视频遮盖、视频丢失、PIR报警、人脸侦测、区域入侵等
|
|
|
{
|
|
|
NET_EHOME_ALARM_INFO struAlarmInfo;
|
|
|
memcpy(&struAlarmInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_ALARM_INFO));
|
|
|
-// printf("Basic Alarm: Device ID[%s], szAlarmTime[%s], Alarm Type[%d], Action[%d], VideoChannel[%d]!\n", struAlarmInfo.szDeviceID, \
|
|
|
-// struAlarmInfo.szAlarmTime, struAlarmInfo.dwAlarmType, struAlarmInfo.dwAlarmAction, struAlarmInfo.dwVideoChannel);
|
|
|
if((struAlarmInfo.dwAlarmType==ALARM_TYPE_INTRUSION)||(struAlarmInfo.dwAlarmType==ALARM_TYPE_LEFT)||(struAlarmInfo.dwAlarmType==ALARM_TYPE_TAKE))
|
|
|
{
|
|
|
QString devId = QString(struAlarmInfo.szDeviceID);
|
|
|
if(obj->checkAlarmDevTime(devId)){
|
|
|
- obj->appendLog(QString("Basic Alarm: Device ID[%1], szAlarmTime[%2], Alarm Type[%3], Action[%4], VideoChannel[%5]!")
|
|
|
+ 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"))
|
|
|
.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)
|
|
@@ -436,51 +408,17 @@ BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, voi
|
|
|
}
|
|
|
QString time1 = QString(struAlarmInfo.szAlarmTime);
|
|
|
QString time2 = time1.mid(0,10)+" "+time1.mid(11,8);
|
|
|
- // QString sql = 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','','','占道检测告警','','1970-01-01 08:00:00','','','','','',0,'','')")
|
|
|
- // .arg(1).arg(struAlarmInfo.szDeviceID).arg(time2).arg(struAlarmInfo.dwAlarmAction==0?1:0)
|
|
|
- // .arg(struAlarmInfo.dwAlarmType).arg(struAlarmInfo.dwAlarmAction);
|
|
|
- // obj->sqlList.append(sql);
|
|
|
if(struAlarmInfo.dwAlarmType==ALARM_TYPE_INTRUSION)
|
|
|
- obj->alarmList.append(AlarmEvent(devId,time2,(struAlarmInfo.dwAlarmAction==0?1:0)));
|
|
|
+ obj->alarmList.append(AlarmEvent(devId,time2,(struAlarmInfo.dwAlarmAction==0?1:0),dt.toTime_t()));
|
|
|
else
|
|
|
- obj->alarmList.append(AlarmEvent(devId,time2,1));
|
|
|
+ obj->alarmList.append(AlarmEvent(devId,time2,1,dt.toTime_t()));
|
|
|
ytShm->eHomeDevice[idx].io[6]=0x01;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-// for(i=0;i<DEVICES_COUNT;i++){
|
|
|
-// if(strcmp(ytShm->eHomeDevice[i].deviceID,(char*)(struAlarmInfo.szDeviceID))==0){
|
|
|
-// ytShm->eHomeDevice[i].io[6]=0x01;
|
|
|
-// }
|
|
|
-// }
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
-// case EHOME_ALARM_HEATMAP_REPORT://热度图报告上传
|
|
|
-// NET_EHOME_HEATMAP_REPORT struHeatmapInfo;
|
|
|
-// memcpy(&struHeatmapInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_HEATMAP_REPORT));
|
|
|
-// printf("Heatmap report: Device ID[%s], StartTime[%s], StopTime[%s], dwVideoChannel[%d]!\n", struHeatmapInfo.byDeviceID, \
|
|
|
-// struHeatmapInfo.byStartTime, struHeatmapInfo.byStopTime, struHeatmapInfo.dwVideoChannel);
|
|
|
-// break;
|
|
|
-// case EHOME_ALARM_FACESNAP_REPORT://人脸抓拍报告上传
|
|
|
-// NET_EHOME_FACESNAP_REPORT struFaceSnap;
|
|
|
-// memcpy(&struFaceSnap, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_FACESNAP_REPORT));
|
|
|
-// printf("Face snap: Device ID[%s], AlarmTime[%s], dwFaceScore[%d], dwVideoChannel[%d]!\n", struFaceSnap.byDeviceID, \
|
|
|
-// struFaceSnap.byAlarmTime, struFaceSnap.dwFaceScore, struFaceSnap.dwVideoChannel);
|
|
|
-// break;
|
|
|
-// case EHOME_ALARM_GPS://GPS信息上传
|
|
|
-// NET_EHOME_GPS_INFO struGpsInfo;
|
|
|
-// memcpy(&struGpsInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_GPS_INFO));
|
|
|
-// printf("GPS info: Device ID[%s], SampleTime[%s], Longitude[%d], Latitude[%d]!\n", struGpsInfo.byDeviceID, \
|
|
|
-// struGpsInfo.bySampleTime, struGpsInfo.dwLongitude, struGpsInfo.dwLatitude );
|
|
|
-// break;
|
|
|
-// case EHOME_ALARM_CID_REPORT://报警主机CID报警信息
|
|
|
-// NET_EHOME_CID_INFO struCIDInfo;
|
|
|
-// memcpy(&struCIDInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_CID_INFO));
|
|
|
-// printf("CID info: Device ID[%s], AlarmTime[%s], CID Code[%d], CID Type[%d], CID Describe[%s]!\n", struCIDInfo.byDeviceID, \
|
|
|
-// struCIDInfo.byTriggerTime, struCIDInfo.dwCIDCode, struCIDInfo.dwCIDType, struCIDInfo.byCIDDescribe );
|
|
|
-// break;
|
|
|
case EHOME_ISAPI_ALARM:
|
|
|
ProcessHttpAlarmInfo(pAlarmMsg->pAlarmInfo,pAlarmMsg->dwAlarmInfoLen,pAlarmMsg->pHttpUrl,pAlarmMsg->dwHttpUrlLen,pUserData);
|
|
|
break;
|
|
@@ -502,6 +440,7 @@ BOOL InputStreamData(QString deviceid, BYTE byDataType, char* pBuffer, int iData
|
|
|
if(ytShm->eHomeDevice[i].savetmp==0x00){
|
|
|
if(ytShm->eHomeDevice[i].tmpfile!=NULL){
|
|
|
fclose(ytShm->eHomeDevice[i].tmpfile);
|
|
|
+ ytShm->eHomeDevice[i].tmpfile = NULL;
|
|
|
}
|
|
|
QString tmpfile = QString("/tmp/%1.mp4").arg(ytShm->eHomeDevice[i].deviceID).replace(" ","_");
|
|
|
sprintf(ytShm->eHomeDevice[i].filename,"%s",tmpfile.toUtf8().data());
|
|
@@ -603,6 +542,7 @@ void CoreObject::start()
|
|
|
exit(1);
|
|
|
}
|
|
|
// printf("NET_EALARM_StartListen!\n");
|
|
|
+ NET_ECMS_SetLogToFile(1,QString("/var/log/usky/").toUtf8().data(),true);
|
|
|
for(int i=0;i<DEVICES_COUNT;i++){
|
|
|
ytShm->eHomeDevice[i].previewport = 58000+i;
|
|
|
ytShm->eHomeDevice[i].listen_alarm_handle = lHandle;
|
|
@@ -839,7 +779,6 @@ void CoreObject::time_out()
|
|
|
processList.at(i)->close();
|
|
|
processList.at(i)->start(cmd1);
|
|
|
ytShm->eHomeDevice[i].time[1] = t.toTime_t();
|
|
|
-// qDebug()<<QString("%1 will on line.(%2)").arg(ytShm->eHomeDevice[i].deviceID).arg(i).toUtf8().data();
|
|
|
}
|
|
|
}else if((ytShm->eHomeDevice[i].transed==0x01)&&(ytShm->eHomeDevice[i].time[1]>0)&&((t.toTime_t()-ytShm->eHomeDevice[i].time[1])>600)){
|
|
|
if(NET_ECMS_StopGetRealStream(ytShm->eHomeDevice[i].LoginId,ytShm->eHomeDevice[i].SessionId)){
|
|
@@ -899,7 +838,6 @@ void CoreObject::time_out()
|
|
|
if(phonelist.length()>0){
|
|
|
QString data = QString("evt_name=%1&device_code=%2&phone=%3&insert_id=%4&time=%5&bz=%1").arg(type).arg(rep.Device_Code).arg(phonelist).arg(insertId).arg(rep.Event_Time)
|
|
|
.replace(",","%2C").replace(":","%3A").replace(" ","+");
|
|
|
-// printf("%s\n",data.toUtf8().data());
|
|
|
wxThreads[wxcur]->appendData(data);
|
|
|
wxcur++;
|
|
|
wxcur &= 0x07;
|
|
@@ -916,12 +854,21 @@ void CoreObject::time_out()
|
|
|
while(sqlList.length()>0){
|
|
|
db.exec(sqlList.first());
|
|
|
appendLog(QString("[ %1 sql ] %2").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(sqlList.first()));
|
|
|
-// system(QString("echo \"%1\" > /tmp/pic_sql.log").arg(sqlList.first()).toUtf8().data());
|
|
|
-// printf("%s\n",sqlList.first().toUtf8().data());
|
|
|
sqlList.removeFirst();
|
|
|
}
|
|
|
db.close();
|
|
|
}
|
|
|
}
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
isWorking = false;
|
|
|
}
|