Merge pull request #3406 from jp-bennett/master
Continued work on ONVIF
This commit is contained in:
commit
af8964c043
|
@ -421,6 +421,7 @@ Monitor::Monitor()
|
||||||
linked_monitors(nullptr),
|
linked_monitors(nullptr),
|
||||||
#ifdef WITH_GSOAP
|
#ifdef WITH_GSOAP
|
||||||
soap(nullptr),
|
soap(nullptr),
|
||||||
|
ONVIF_Closes_Event(FALSE),
|
||||||
#endif
|
#endif
|
||||||
red_val(0),
|
red_val(0),
|
||||||
green_val(0),
|
green_val(0),
|
||||||
|
@ -1080,6 +1081,9 @@ bool Monitor::connect() {
|
||||||
if (onvif_event_listener) { //Temporarily using this option to enable the feature
|
if (onvif_event_listener) { //Temporarily using this option to enable the feature
|
||||||
Debug(1, "Starting ONVIF");
|
Debug(1, "Starting ONVIF");
|
||||||
ONVIF_Healthy = FALSE;
|
ONVIF_Healthy = FALSE;
|
||||||
|
if (onvif_options.find("closes_event") != std::string::npos) { //Option to indicate that ONVIF will send a close event message
|
||||||
|
ONVIF_Closes_Event = TRUE;
|
||||||
|
}
|
||||||
tev__PullMessages.Timeout = "PT600S";
|
tev__PullMessages.Timeout = "PT600S";
|
||||||
tev__PullMessages.MessageLimit = 100;
|
tev__PullMessages.MessageLimit = 100;
|
||||||
soap = soap_new();
|
soap = soap_new();
|
||||||
|
@ -1802,6 +1806,10 @@ bool Monitor::Poll() {
|
||||||
} else {
|
} else {
|
||||||
Debug(1, "Triggered off ONVIF");
|
Debug(1, "Triggered off ONVIF");
|
||||||
ONVIF_Trigger_State = FALSE;
|
ONVIF_Trigger_State = FALSE;
|
||||||
|
if (!ONVIF_Closes_Event) { //If we get a close event, then we know to expect them.
|
||||||
|
ONVIF_Closes_Event = TRUE;
|
||||||
|
Debug(1,"Setting ClosesEvent");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1868,6 +1876,9 @@ bool Monitor::Analyse() {
|
||||||
Event::StringSet noteSet;
|
Event::StringSet noteSet;
|
||||||
noteSet.insert("ONVIF2");
|
noteSet.insert("ONVIF2");
|
||||||
noteSetMap[MOTION_CAUSE] = noteSet;
|
noteSetMap[MOTION_CAUSE] = noteSet;
|
||||||
|
//If the camera isn't going to send an event close, we need to close it here, but only after it has actually triggered an alarm.
|
||||||
|
if (!ONVIF_Closes_Event && state == ALARM)
|
||||||
|
ONVIF_Trigger_State = FALSE;
|
||||||
} // end ONVIF_Trigger
|
} // end ONVIF_Trigger
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -2163,6 +2174,7 @@ bool Monitor::Analyse() {
|
||||||
snap->analysis_image->Overlay(*(zone.AlarmImage()));
|
snap->analysis_image->Overlay(*(zone.AlarmImage()));
|
||||||
} // end if zone is alarmed
|
} // end if zone is alarmed
|
||||||
} // end foreach zone
|
} // end foreach zone
|
||||||
|
if (snap->analysis_image != nullptr)
|
||||||
alarm_image.Assign(*(snap->analysis_image));
|
alarm_image.Assign(*(snap->analysis_image));
|
||||||
} // end if image.
|
} // end if image.
|
||||||
|
|
||||||
|
@ -2177,6 +2189,7 @@ bool Monitor::Analyse() {
|
||||||
snap->analysis_image->Overlay(*(zone.AlarmImage()));
|
snap->analysis_image->Overlay(*(zone.AlarmImage()));
|
||||||
} // end if zone is alarmed
|
} // end if zone is alarmed
|
||||||
} // end foreach zone
|
} // end foreach zone
|
||||||
|
if (snap->analysis_image != nullptr)
|
||||||
alarm_image.Assign(*(snap->analysis_image));
|
alarm_image.Assign(*(snap->analysis_image));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -436,6 +436,7 @@ protected:
|
||||||
struct soap *soap;
|
struct soap *soap;
|
||||||
bool ONVIF_Trigger_State;
|
bool ONVIF_Trigger_State;
|
||||||
bool ONVIF_Healthy;
|
bool ONVIF_Healthy;
|
||||||
|
bool ONVIF_Closes_Event;
|
||||||
_tev__CreatePullPointSubscription request;
|
_tev__CreatePullPointSubscription request;
|
||||||
_tev__CreatePullPointSubscriptionResponse response;
|
_tev__CreatePullPointSubscriptionResponse response;
|
||||||
_tev__PullMessages tev__PullMessages;
|
_tev__PullMessages tev__PullMessages;
|
||||||
|
|
Loading…
Reference in New Issue