From: Mu-Woong Lee Date: Wed, 2 Aug 2017 02:27:36 +0000 (+0900) Subject: Add event publisher function to the geofence agent X-Git-Tag: submit/tizen/20170802.043634^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aafb1d21761bb0666e8381879fd01a84ac75cc26;p=platform%2Fcore%2Fcontext%2Fjob-scheduler.git Add event publisher function to the geofence agent Change-Id: I461aa59ddb1aacead54a96075f8f0d05cc655597 Signed-off-by: Mu-Woong Lee --- diff --git a/include/job_scheduler_types_internal.h b/include/job_scheduler_types_internal.h index 282d274..ea513c9 100644 --- a/include/job_scheduler_types_internal.h +++ b/include/job_scheduler_types_internal.h @@ -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" diff --git a/src/agent/GeofenceAgent.cpp b/src/agent/GeofenceAgent.cpp index 603ebe1..b409046 100644 --- a/src/agent/GeofenceAgent.cpp +++ b/src/agent/GeofenceAgent.cpp @@ -15,6 +15,8 @@ */ #include +#include +#include #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); +} diff --git a/src/agent/GeofenceAgent.h b/src/agent/GeofenceAgent.h index 1d2dbcd..2096398 100644 --- a/src/agent/GeofenceAgent.h +++ b/src/agent/GeofenceAgent.h @@ -31,6 +31,8 @@ namespace ctx { bool isIdle(); private: + void __publish(const char* event, int placeId); + bool __idle; IAgentUtil* __agentUtil; }; diff --git a/src/server/publisher/GeofenceEvent.cpp b/src/server/publisher/GeofenceEvent.cpp index dcdceff..7b86f76 100644 --- a/src/server/publisher/GeofenceEvent.cpp +++ b/src/server/publisher/GeofenceEvent.cpp @@ -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(); }