#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
#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"
*/
#include <ContextTypes.h>
+#include <JobSchedulerTypesPrivate.h>
+#include <job_scheduler_types_internal.h>
#include "AgentTypes.h"
#include "GeofenceAgent.h"
{
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);
+}
bool isIdle();
private:
+ void __publish(const char* event, int placeId);
+
bool __idle;
IAgentUtil* __agentUtil;
};
CTX_DBUS_PATH "/" CTX_JOB_SCHEDULER,
CTX_DBUS_IFACE "." CTX_JOB_SCHEDULER,
GEOFENCE_SIGNAL, this);
+ _D("Subscription ID: %u", __signalId);
}
void GeofenceEvent::unsubscribe()
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();
}