@@ -24,14 +24,12 @@ class SinricProDevice {
2424 DynamicJsonDocument prepareEvent (const char * deviceId, const char * action, const char * cause);
2525 private:
2626 EventSender* eventSender;
27- unsigned long lastEventMillis;
2827 unsigned long eventWaitTime;
2928 std::map<String, unsigned long > eventFilter;
3029};
3130
3231SinricProDevice::SinricProDevice (const char * newDeviceId, unsigned long eventWaitTime) :
3332 eventSender(nullptr ),
34- lastEventMillis(0 ),
3533 eventWaitTime(eventWaitTime) {
3634 deviceId = strdup (newDeviceId);
3735 if (this ->eventWaitTime < 100 ) this ->eventWaitTime = 100 ;
@@ -56,17 +54,17 @@ DynamicJsonDocument SinricProDevice::prepareEvent(const char* deviceId, const ch
5654
5755bool SinricProDevice::sendEvent (JsonDocument& event) {
5856 unsigned long actualMillis = millis ();
59- /*
60- if (actualMillis - lastEventMillis < eventWaitTime) return;
61- if (eventSender) eventSender->sendEvent(event);
62- lastEventMillis = actualMillis;
63- */
6457 String eventName = event[" payload" ][" action" ] | " " ; // get event name
58+
59+ if (eventFilter.find (eventName) == eventFilter.end ()) { // if eventFilter is not initialized
60+ eventFilter[eventName] = -eventWaitTime; // initialize eventFilter
61+ }
62+
6563 unsigned long lastEventMillis = eventFilter[eventName] | 0 ; // get the last timestamp for event
6664 if (actualMillis - lastEventMillis < eventWaitTime) return false ; // if last event was before waitTime return...
6765
6866 if (eventSender) eventSender->sendEvent (event); // send event
69- eventFilter[eventName] = actualMillis; // set lastEventTime to now
67+ eventFilter[eventName] = actualMillis; // update lastEventTime
7068 return true ;
7169}
7270#endif
0 commit comments