Timer: Fix the timer expire property.

Presently when the call back associated with timer
gets called then the expire property becomes true,
which is correct as it tells the timer has expired
and calls the callback.
On the other hand it doesn't set the expire property
to false when it starts the timer.

This commit sets the expire property to false when
startTimer function gets called.

Change-Id: I0bb4fe3c375b2a73d214ba9ccbdf25f223b11449
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
diff --git a/timer.cpp b/timer.cpp
index 4e8fd9a..06965de 100644
--- a/timer.cpp
+++ b/timer.cpp
@@ -51,13 +51,14 @@
     auto timer = static_cast<Timer*>(userData);
     timer->expired = true;
 
+    log<level::INFO>("Timer expired");
     // Call optional user call back function if available
     if(timer->userCallBack)
     {
         timer->userCallBack();
     }
 
-    log<level::INFO>("Timer expired");
+    sd_event_source_set_enabled(eventSource, SD_EVENT_OFF);
     return 0;
 }
 
@@ -80,6 +81,7 @@
 {
     // Disable the timer
     setTimer(SD_EVENT_OFF);
+    expired = false;
 
     // Get the current MONOTONIC time and add the delta
     auto expireTime = getTime() + timeValue;
diff --git a/timer.hpp b/timer.hpp
index 6a59c0d..e39d85c 100644
--- a/timer.hpp
+++ b/timer.hpp
@@ -67,7 +67,7 @@
          *
          *  This is set to true when the timeoutHandler is called into
          */
-        bool expired = false;
+        bool expired = true;
 
         /** @brief Initializes the timer object with infinite
          *         expiration time and sets up the callback handler