X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=plugins%2Fiospm.c;h=af6250bd64060b5b74b5bd3ae4ba58e721a44f8e;hb=8321c3efe50f691724ef8b601990acbf7945f304;hp=9d5db44bd1ca254d8d4dae5bc8bb4fa7e7e504af;hpb=c23a88af4f9b3e55d7c76dcf0c25070d05ba8cf1;p=connman diff --git a/plugins/iospm.c b/plugins/iospm.c index 9d5db44..af6250b 100644 --- a/plugins/iospm.c +++ b/plugins/iospm.c @@ -26,17 +26,65 @@ #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, connman_bool_t enabled) +{ + DBusMessage *message; + const char *method; + + DBG("path %s enabled %d", path, enabled); + + if (enabled == TRUE) + method = "IndicateStart"; + else + method = "IndicateStop"; + + message = dbus_message_new_method_call(IOSPM_SERVICE, path, + IOSPM_INTERFACE, method); + if (message == NULL) + return; + + dbus_message_set_no_reply(message, TRUE); + + dbus_connection_send(connection, message, NULL); + + dbus_message_unref(message); +} + static void iospm_device_enabled(enum connman_device_type type, connman_bool_t enabled) { - DBG("type %d enabled %d", type, enabled); + switch (type) { + case CONNMAN_DEVICE_TYPE_UNKNOWN: + case CONNMAN_DEVICE_TYPE_VENDOR: + case CONNMAN_DEVICE_TYPE_ETHERNET: + case CONNMAN_DEVICE_TYPE_WIFI: + case CONNMAN_DEVICE_TYPE_WIMAX: + case CONNMAN_DEVICE_TYPE_GPS: + case CONNMAN_DEVICE_TYPE_HSO: + case CONNMAN_DEVICE_TYPE_NOZOMI: + case CONNMAN_DEVICE_TYPE_HUAWEI: + case CONNMAN_DEVICE_TYPE_NOVATEL: + break; + case CONNMAN_DEVICE_TYPE_BLUETOOTH: + send_indication(IOSPM_BLUETOOTH, enabled); + break; + } } static void iospm_offline_mode(connman_bool_t enabled) { - DBG("enabled %d", enabled); + send_indication(IOSPM_FLIGHT_MODE, enabled); } static struct connman_notifier iospm_notifier = { @@ -48,12 +96,16 @@ static struct connman_notifier iospm_notifier = { static int iospm_init(void) { + 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,