X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=plugins%2Fiospm.c;h=cded9e0040db82ecf8bd1b0442a70756d64b6517;hb=e2aacb30e612fed1db0ab4a35b922b55d52e90ae;hp=ead675e2978f97df3f06e6a66c642b48b17c61e2;hpb=dd0678d005a28c3936f04dcbafb481fc80f0bea8;p=platform%2Fupstream%2Fconnman.git diff --git a/plugins/iospm.c b/plugins/iospm.c old mode 100644 new mode 100755 index ead675e..cded9e0 --- a/plugins/iospm.c +++ b/plugins/iospm.c @@ -2,7 +2,7 @@ * * Connection Manager * - * Copyright (C) 2007-2009 Intel Corporation. All rights reserved. + * Copyright (C) 2007-2012 Intel Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -25,15 +25,86 @@ #define CONNMAN_API_SUBJECT_TO_CHANGE #include +#include +#include #include +#define IOSPM_SERVICE "com.intel.mid.ospm" +#define IOSPM_INTERFACE IOSPM_SERVICE ".Comms" + +#define IOSPM_BLUETOOTH "/com/intel/mid/ospm/bluetooth" +#define IOSPM_FLIGHT_MODE "/com/intel/mid/ospm/flight_mode" + +static DBusConnection *connection; + +static void send_indication(const char *path, bool enabled) +{ + DBusMessage *message; + const char *method; + + DBG("path %s enabled %d", path, enabled); + + if (enabled) + method = "IndicateStart"; + else + method = "IndicateStop"; + + message = dbus_message_new_method_call(IOSPM_SERVICE, path, + IOSPM_INTERFACE, method); + if (!message) + return; + + dbus_message_set_no_reply(message, TRUE); + + dbus_connection_send(connection, message, NULL); + + dbus_message_unref(message); +} + +static void iospm_service_enabled(enum connman_service_type type, + bool enabled) +{ + switch (type) { + case CONNMAN_SERVICE_TYPE_UNKNOWN: + case CONNMAN_SERVICE_TYPE_SYSTEM: + case CONNMAN_SERVICE_TYPE_ETHERNET: + case CONNMAN_SERVICE_TYPE_WIFI: + case CONNMAN_SERVICE_TYPE_CELLULAR: + case CONNMAN_SERVICE_TYPE_GPS: + case CONNMAN_SERVICE_TYPE_VPN: + case CONNMAN_SERVICE_TYPE_GADGET: + case CONNMAN_SERVICE_TYPE_P2P: + break; + case CONNMAN_SERVICE_TYPE_BLUETOOTH: + send_indication(IOSPM_BLUETOOTH, enabled); + break; + } +} + +static void iospm_offline_mode(bool enabled) +{ + send_indication(IOSPM_FLIGHT_MODE, enabled); +} + +static const struct connman_notifier iospm_notifier = { + .name = "iospm", + .priority = CONNMAN_NOTIFIER_PRIORITY_DEFAULT, + .service_enabled= iospm_service_enabled, + .offline_mode = iospm_offline_mode, +}; + static int iospm_init(void) { - return 0; + connection = connman_dbus_get_connection(); + + return connman_notifier_register(&iospm_notifier); } static void iospm_exit(void) { + connman_notifier_unregister(&iospm_notifier); + + dbus_connection_unref(connection); } CONNMAN_PLUGIN_DEFINE(ospm, "Intel OSPM notification plugin", VERSION,