/*
- * Bluetooth-frwk
+ * bluetooth-frwk
*
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Hocheol Seo <hocheol.seo@samsung.com>
- * Girishashok Joshi <girish.joshi@samsung.com>
- * Chanyeol Park <chanyeol.park@samsung.com>
+ * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
#include "bt-service-event.h"
static DBusConnection *event_conn;
-static DBusConnection *hf_local_term_event_conn;
int _bt_send_event(int event_type, int event, int type, ...)
{
- BT_DBG("+");
-
DBusMessage *msg;
char *path;
char *signal;
retv_if(event_conn == NULL, BLUETOOTH_ERROR_INTERNAL);
- BT_DBG("event_type [%d], event [%d]", event_type, event);
-
switch (event_type) {
case BT_ADAPTER_EVENT:
path = BT_ADAPTER_PATH;
break;
- case BT_LE_ADAPTER_EVENT:
- path = BT_LE_ADAPTER_PATH;
- break;
case BT_DEVICE_EVENT:
path = BT_DEVICE_PATH;
break;
case BT_AVRCP_EVENT:
path = BT_AVRCP_PATH;
break;
- case BT_AVRCP_CONTROL_EVENT:
- path = BT_AVRCP_CONTROL_PATH;
- break;
case BT_NETWORK_EVENT:
path = BT_NETWORK_PATH;
break;
case BT_OPP_SERVER_EVENT:
path = BT_OPP_SERVER_PATH;
break;
- case BT_PBAP_CLIENT_EVENT:
- path = BT_PBAP_CLIENT_PATH;
- break;
case BT_RFCOMM_CLIENT_EVENT:
path = BT_RFCOMM_CLIENT_PATH;
break;
case BLUETOOTH_EVENT_DISABLED:
signal = BT_DISABLED;
break;
- case BLUETOOTH_EVENT_LE_ENABLED:
- signal = BT_LE_ENABLED;
- break;
- case BLUETOOTH_EVENT_LE_DISABLED:
- signal = BT_LE_DISABLED;
- break;
case BLUETOOTH_EVENT_LOCAL_NAME_CHANGED:
signal = BT_ADAPTER_NAME_CHANGED;
break;
case BLUETOOTH_EVENT_DISCOVERABLE_TIMEOUT_CHANGED:
signal = BT_DISCOVERABLE_TIMEOUT_CHANGED;
break;
- case BLUETOOTH_EVENT_CONNECTABLE_CHANGED:
- signal = BT_CONNECTABLE_CHANGED;
- break;
case BLUETOOTH_EVENT_DISCOVERY_STARTED:
signal = BT_DISCOVERY_STARTED;
break;
case BLUETOOTH_EVENT_DISCOVERY_FINISHED:
signal = BT_DISCOVERY_FINISHED;
break;
- case BLUETOOTH_EVENT_LE_DISCOVERY_STARTED:
- signal = BT_LE_DISCOVERY_STARTED;
- break;
- case BLUETOOTH_EVENT_REMOTE_LE_DEVICE_FOUND:
- signal = BT_LE_DEVICE_FOUND;
- break;
- case BLUETOOTH_EVENT_LE_DISCOVERY_FINISHED:
- signal = BT_LE_DISCOVERY_FINISHED;
- break;
- case BLUETOOTH_EVENT_ADVERTISING_STARTED:
- signal = BT_ADVERTISING_STARTED;
- break;
- case BLUETOOTH_EVENT_ADVERTISING_STOPPED:
- signal = BT_ADVERTISING_STOPPED;
- break;
- case BLUETOOTH_EVENT_ADVERTISING_MANUFACTURER_DATA_CHANGED:
- signal = BT_ADVERTISING_MANUFACTURER_DATA_CHANGED;
- break;
- case BLUETOOTH_EVENT_SCAN_RESPONSE_MANUFACTURER_DATA_CHANGED:
- signal = BT_SCAN_RESPONSE_MANUFACTURER_DATA_CHANGED;
- break;
- case BLUETOOTH_EVENT_MANUFACTURER_DATA_CHANGED:
- signal = BT_MANUFACTURER_DATA_CHANGED;
- break;
case BLUETOOTH_EVENT_BONDING_FINISHED:
signal = BT_BOND_CREATED;
break;
case BLUETOOTH_EVENT_BONDED_DEVICE_REMOVED:
signal = BT_BOND_DESTROYED;
break;
- case BLUETOOTH_EVENT_DEVICE_AUTHORIZED:
- signal = BT_DEVICE_AUTHORIZED;
- break;
- case BLUETOOTH_EVENT_DEVICE_UNAUTHORIZED:
- signal = BT_DEVICE_UNAUTHORIZED;
- break;
- case BLUETOOTH_EVENT_RSSI_ENABLED:
- signal = BT_RSSI_MONITORING_ENABLED;
- break;
- case BLUETOOTH_EVENT_RSSI_ALERT:
- signal = BT_RSSI_ALERT;
- break;
- case BLUETOOTH_EVENT_RAW_RSSI:
- signal = BT_RAW_RSSI_EVENT;
- break;
case BLUETOOTH_EVENT_SERVICE_SEARCHED:
signal = BT_SERVICE_SEARCHED;
break;
case BLUETOOTH_HID_CONNECTED:
signal = BT_INPUT_CONNECTED;
- BT_INFO_C("Connected [HID]");
break;
case BLUETOOTH_HID_DISCONNECTED:
signal = BT_INPUT_DISCONNECTED;
- BT_INFO_C("Disconnected [HID]");
- break;
- case BLUETOOTH_PBAP_CONNECTED:
- signal = BT_PBAP_CONNECTED;
- BT_INFO_C("Connected [PBAP Client]");
- break;
- case BLUETOOTH_PBAP_PHONEBOOK_SIZE:
- signal = BT_PBAP_PHONEBOOK_SIZE;
- break;
- case BLUETOOTH_PBAP_PHONEBOOK_PULL:
- signal = BT_PBAP_PHONEBOOK_PULL;
- break;
- case BLUETOOTH_PBAP_VCARD_LIST:
- signal = BT_PBAP_VCARD_LIST;
- break;
- case BLUETOOTH_PBAP_VCARD_PULL:
- signal = BT_PBAP_VCARD_PULL;
- break;
- case BLUETOOTH_PBAP_PHONEBOOK_SEARCH:
- signal = BT_PBAP_SEARCH_PHONEBOOK;
break;
case BLUETOOTH_EVENT_AG_CONNECTED:
signal = BT_HEADSET_CONNECTED;
- BT_INFO_C("Connected [HSP/HFP]");
break;
case BLUETOOTH_EVENT_AG_DISCONNECTED:
signal = BT_HEADSET_DISCONNECTED;
- BT_INFO_C("Disconnected [HSP/HFP]");
break;
case BLUETOOTH_EVENT_AV_CONNECTED:
signal = BT_STEREO_HEADSET_CONNECTED;
- BT_INFO_C("Connected [A2DP]");
break;
case BLUETOOTH_EVENT_AV_DISCONNECTED:
signal = BT_STEREO_HEADSET_DISCONNECTED;
- BT_INFO_C("Disconnected [A2DP]");
break;
case BLUETOOTH_EVENT_AG_AUDIO_CONNECTED:
signal = BT_SCO_CONNECTED;
- BT_INFO_C("Connected [SCO]");
break;
case BLUETOOTH_EVENT_AG_AUDIO_DISCONNECTED:
signal = BT_SCO_DISCONNECTED;
- BT_INFO_C("Disonnected [SCO]");
break;
case BLUETOOTH_EVENT_AG_SPEAKER_GAIN:
signal = BT_SPEAKER_GAIN;
break;
case BLUETOOTH_EVENT_NETWORK_CONNECTED:
signal = BT_NETWORK_CONNECTED;
- BT_INFO_C("Connected [Newwork]");
break;
case BLUETOOTH_EVENT_NETWORK_DISCONNECTED:
signal = BT_NETWORK_DISCONNECTED;
- BT_INFO_C("Disconnected [Newwork]");
break;
case BLUETOOTH_EVENT_NETWORK_SERVER_CONNECTED:
signal = BT_NETWORK_SERVER_CONNECTED;
- BT_INFO_C("Connected [Network Server]");
break;
case BLUETOOTH_EVENT_NETWORK_SERVER_DISCONNECTED:
signal = BT_NETWORK_SERVER_DISCONNECTED;
- BT_INFO_C("Disconnected [Network Server]");
break;
case BLUETOOTH_EVENT_OPC_CONNECTED:
signal = BT_OPP_CONNECTED;
- BT_INFO_C("Connected [OPP]");
break;
case BLUETOOTH_EVENT_OPC_DISCONNECTED:
signal = BT_OPP_DISCONNECTED;
- BT_INFO_C("Disconnected [OPP]");
- break;
- case BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_CONNECTED:
- signal = BT_TRANSFER_CONNECTED;
- break;
- case BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_DISCONNECTED:
- signal = BT_TRANSFER_DISCONNECTED;
break;
case BLUETOOTH_EVENT_OPC_TRANSFER_STARTED:
case BLUETOOTH_EVENT_OBEX_SERVER_TRANSFER_STARTED:
case BLUETOOTH_EVENT_DEVICE_DISCONNECTED:
signal = BT_DEVICE_DISCONNECTED;
break;
- case BLUETOOTH_EVENT_AVRCP_CONNECTED:
- case BLUETOOTH_EVENT_AVRCP_CONTROL_CONNECTED:
- signal = BT_AVRCP_CONNECTED;
- BT_INFO_C("Connected [AVRCP]");
- break;
- case BLUETOOTH_EVENT_AVRCP_DISCONNECTED:
- case BLUETOOTH_EVENT_AVRCP_CONTROL_DISCONNECTED:
- signal = BT_AVRCP_DISCONNECTED;
- BT_INFO_C("Disconnected [AVRCP]");
- break;
case BLUETOOTH_EVENT_AVRCP_SETTING_SHUFFLE_STATUS:
- case BLUETOOTH_EVENT_AVRCP_CONTROL_SHUFFLE_STATUS:
signal = BT_MEDIA_SHUFFLE_STATUS;
break;
case BLUETOOTH_EVENT_AVRCP_SETTING_EQUALIZER_STATUS:
- case BLUETOOTH_EVENT_AVRCP_CONTROL_EQUALIZER_STATUS:
signal = BT_MEDIA_EQUALIZER_STATUS;
break;
case BLUETOOTH_EVENT_AVRCP_SETTING_REPEAT_STATUS:
- case BLUETOOTH_EVENT_AVRCP_CONTROL_REPEAT_STATUS:
signal = BT_MEDIA_REPEAT_STATUS;
break;
case BLUETOOTH_EVENT_AVRCP_SETTING_SCAN_STATUS:
- case BLUETOOTH_EVENT_AVRCP_CONTROL_SCAN_STATUS:
signal = BT_MEDIA_SCAN_STATUS;
break;
- case BLUETOOTH_EVENT_AVRCP_SONG_POSITION_STATUS:
- signal = BT_MEDIA_POSITION_STATUS;
- break;
- case BLUETOOTH_EVENT_AVRCP_PLAY_STATUS_CHANGED:
- signal = BT_MEDIA_PLAY_STATUS;
- break;
- case BLUETOOTH_EVENT_AVRCP_TRACK_CHANGED:
- signal = BT_MEDIA_TRACK_CHANGE;
- break;
- case BLUETOOTH_EVENT_GATT_CONNECTED:
- signal = BT_GATT_CONNECTED;
- break;
- case BLUETOOTH_EVENT_GATT_DISCONNECTED:
- signal = BT_GATT_DISCONNECTED;
- break;
- default:
- BT_ERR("Unknown event");
- return BLUETOOTH_ERROR_INTERNAL;
- }
-
- BT_DBG("Path : %s", path);
- BT_INFO_C("Signal : %s", signal);
-
- msg = dbus_message_new_signal(path, BT_EVENT_SERVICE,
- signal);
-
- if (msg == NULL) {
- BT_ERR("Message is NULL");
- return BLUETOOTH_ERROR_INTERNAL;
- }
-
- if (type) {
- /* Set the arguments of the dbus message */
- va_start(arguments, type);
-
- if (!dbus_message_append_args_valist(msg, type, arguments)) {
- dbus_message_unref(msg);
- va_end(arguments);
- return BLUETOOTH_ERROR_INTERNAL;
- }
-
- va_end(arguments);
- }
-
- if (!dbus_connection_send(event_conn, msg, NULL)) {
- BT_ERR("send failed");
- dbus_message_unref(msg);
- return BLUETOOTH_ERROR_INTERNAL;
- }
-
- dbus_connection_flush(event_conn);
- dbus_message_unref(msg);
-
- BT_DBG("-");
-
- return BLUETOOTH_ERROR_NONE;
-}
-
-int _bt_send_event_to_dest(const char* dest, int event_type, int event, int type, ...)
-{
- BT_DBG("+");
-
- DBusMessage *msg;
- char *path;
- char *signal;
- va_list arguments;
-
- retv_if(event_conn == NULL, BLUETOOTH_ERROR_INTERNAL);
-
- BT_DBG("event_type [%d], event [%d]", event_type, event);
-
- switch (event_type) {
- case BT_ADAPTER_EVENT:
- path = BT_ADAPTER_PATH;
- break;
- default:
- BT_ERR("Unknown event");
- return BLUETOOTH_ERROR_INTERNAL;
- }
-
- switch (event) {
- case BLUETOOTH_EVENT_ADVERTISING_STARTED:
- signal = BT_ADVERTISING_STARTED;
- break;
- case BLUETOOTH_EVENT_ADVERTISING_STOPPED:
- signal = BT_ADVERTISING_STOPPED;
- break;
default:
BT_ERR("Unknown event");
return BLUETOOTH_ERROR_INTERNAL;
}
- BT_DBG("Path : %s", path);
- BT_INFO_C("Signal : %s", signal);
-
msg = dbus_message_new_signal(path, BT_EVENT_SERVICE,
signal);
if (msg == NULL) {
- BT_ERR("Message is NULL");
+ BT_ERR("Message is NULL\n");
return BLUETOOTH_ERROR_INTERNAL;
}
- if (dbus_message_set_destination(msg, dest) == FALSE)
- BT_ERR("Setting destination is failed");
-
if (type) {
/* Set the arguments of the dbus message */
va_start(arguments, type);
}
if (!dbus_connection_send(event_conn, msg, NULL)) {
- BT_ERR("send failed");
+ BT_ERR("send failed\n");
dbus_message_unref(msg);
return BLUETOOTH_ERROR_INTERNAL;
}
dbus_connection_flush(event_conn);
dbus_message_unref(msg);
- BT_DBG("-");
-
return BLUETOOTH_ERROR_NONE;
}
-int _bt_send_hf_local_term_event(char *address)
-{
- DBusMessage *msg;
- char *signal = BT_HF_LOCAL_TERM;
-
- retv_if(hf_local_term_event_conn == NULL, BLUETOOTH_ERROR_INTERNAL);
-
- msg = dbus_message_new_signal(BT_HF_LOCAL_TERM_EVENT_PATH,
- BT_HF_LOCAL_TERM_EVENT_INTERFACE, signal);
- if (msg == NULL) {
- BT_ERR("Message is NULL\n");
- return BLUETOOTH_ERROR_INTERNAL;
- }
-
- dbus_message_append_args(msg, DBUS_TYPE_STRING, &address, DBUS_TYPE_INVALID);
-
- if (!dbus_connection_send(hf_local_term_event_conn, msg, NULL)) {
- BT_ERR("send failed\n");
- dbus_message_unref(msg);
- return BLUETOOTH_ERROR_INTERNAL;
- }
-
- dbus_connection_flush(hf_local_term_event_conn);
- dbus_message_unref(msg);
-
- return BLUETOOTH_ERROR_NONE;
-}
/* To send the event from service daemon to application*/
int _bt_init_service_event_sender(void)
}
}
-int _bt_init_hf_local_term_event_sender(void)
-{
- DBusConnection *conn;
- DBusError err;
- int ret;
-
- if (hf_local_term_event_conn) {
- BT_ERR("Event handler is already exist");
- return BLUETOOTH_ERROR_INTERNAL;
- }
-
- conn = dbus_bus_get_private(DBUS_BUS_SYSTEM, NULL);
- retv_if(conn == NULL, BLUETOOTH_ERROR_INTERNAL);
-
- dbus_error_init(&err);
-
- ret = dbus_bus_request_name(conn, BT_HF_LOCAL_TERM_EVENT_INTERFACE,
- DBUS_NAME_FLAG_REPLACE_EXISTING, &err);
-
- if (ret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
- if (dbus_error_is_set(&err) == TRUE) {
- BT_ERR("Event init failed, %s", err.message);
- dbus_error_free(&err);
- }
- return BLUETOOTH_ERROR_INTERNAL;
- }
-
- hf_local_term_event_conn = conn;
-
- return BLUETOOTH_ERROR_NONE;
-}
-
-void _bt_deinit_hf_local_term_event_sender(void)
-{
- if (hf_local_term_event_conn) {
- dbus_connection_close(hf_local_term_event_conn);
- hf_local_term_event_conn = NULL;
- }
-}