Add event publisher function to the geofence agent 93/141893/1
authorMu-Woong Lee <muwoong.lee@samsung.com>
Wed, 2 Aug 2017 02:27:36 +0000 (11:27 +0900)
committerMu-Woong Lee <muwoong.lee@samsung.com>
Wed, 2 Aug 2017 02:27:36 +0000 (11:27 +0900)
Change-Id: I461aa59ddb1aacead54a96075f8f0d05cc655597
Signed-off-by: Mu-Woong Lee <muwoong.lee@samsung.com>
include/job_scheduler_types_internal.h
src/agent/GeofenceAgent.cpp
src/agent/GeofenceAgent.h
src/server/publisher/GeofenceEvent.cpp

index 282d2742cf972ac4b2db7cdb5bed194af41d3323..ea513c9419a44f54a4bd406e05858754d7d08301 100644 (file)
@@ -50,6 +50,7 @@
 #define CTX_SCHED_ATTR_NAME_DAY_OF_MONTH       "DayOfMonth"
 #define CTX_SCHED_ATTR_NAME_DAY_OF_WEEK                "DayOfWeek"
 #define CTX_SCHED_ATTR_NAME_TIME_OF_DAY                "TimeOfDay"
+#define CTX_SCHED_ATTR_NAME_PLACE_ID           "PlaceId"
 
 /* Attribute values */
 #define CTX_SCHED_ATTR_VALUE_TRUE                      1
@@ -63,6 +64,9 @@
 #define CTX_SCHED_ATTR_VALUE_HEADSET           "Headset"
 #define CTX_SCHED_ATTR_VALUE_NORMAL                    "Normal"
 #define CTX_SCHED_ATTR_VALUE_SEARCHING         "Searching"
+#define CTX_SCHED_ATTR_VALUE_CHANGED           "Changed"
+#define CTX_SCHED_ATTR_VALUE_IN                                "In"
+#define CTX_SCHED_ATTR_VALUE_OUT                       "Out"
 
 #define CTX_SCHED_ATTR_VALUE_EMPTY                     "Empty"
 #define CTX_SCHED_ATTR_VALUE_CRITICAL          "Critical"
index 603ebe10c6df1b93c3ef7721adbce59cdb80f82f..b40904676dbc26c17c7555fb9efd3e8d01e25692 100644 (file)
@@ -15,6 +15,8 @@
  */
 
 #include <ContextTypes.h>
+#include <JobSchedulerTypesPrivate.h>
+#include <job_scheduler_types_internal.h>
 #include "AgentTypes.h"
 #include "GeofenceAgent.h"
 
@@ -57,3 +59,15 @@ bool GeofenceAgent::isIdle()
 {
        return __idle;
 }
+
+void GeofenceAgent::__publish(const char* event, int placeId)
+{
+       _D("Publish <%s, %d>", event, placeId);
+       IF_FAIL_VOID_TAG(event && placeId > 0, _E, "Invalid parameter");
+
+       GError* gerr = NULL;
+       g_dbus_connection_emit_signal(__agentUtil->getDBusConnection(), CTX_DBUS_DEST,
+                       CTX_DBUS_PATH "/" CTX_JOB_SCHEDULER, CTX_DBUS_IFACE "." CTX_JOB_SCHEDULER,
+                       GEOFENCE_SIGNAL, g_variant_new("(si)", event, placeId), &gerr);
+       HANDLE_GERROR(gerr);
+}
index 1d2dbcddcd5706f96baefb441159d3dba78ef8e4..20963981c96e68e974962a9b70b98dfaf5653aae 100644 (file)
@@ -31,6 +31,8 @@ namespace ctx {
                bool isIdle();
 
        private:
+               void __publish(const char* event, int placeId);
+
                bool __idle;
                IAgentUtil* __agentUtil;
        };
index dcdceff81bab7b3cc14e178266a40cfb107df534..7b86f76b0cdc4251ec74469095604b15ab9c4c5a 100644 (file)
@@ -101,6 +101,7 @@ void GeofenceEvent::subscribe()
                        CTX_DBUS_PATH "/" CTX_JOB_SCHEDULER,
                        CTX_DBUS_IFACE "." CTX_JOB_SCHEDULER,
                        GEOFENCE_SIGNAL, this);
+       _D("Subscription ID: %u", __signalId);
 }
 
 void GeofenceEvent::unsubscribe()
@@ -118,5 +119,16 @@ void GeofenceEvent::onSignal(const std::string& sender,
                const std::string& objPath, const std::string& interface,
                const std::string& signalName, GVariant* param)
 {
-       // TODO
+       const char* event = NULL;
+       int placeId = 0;
+
+       g_variant_get(param, "(&si)", &event, &placeId);
+       IF_FAIL_VOID_TAG(event && placeId > 0, _E, "Invalid parameter");
+
+       _D("Event: %s, PlaceId: %d", event, placeId);
+
+       __data[NAME(EVENT)] = event;
+       __data[NAME(PLACE_ID)] = placeId;
+
+       notifyObservers();
 }