summaryrefslogtreecommitdiffstats
path: root/hcid
diff options
context:
space:
mode:
authorClaudio Takahasi <claudio.takahasi@openbossa.org>2006-03-09 19:46:40 +0000
committerClaudio Takahasi <claudio.takahasi@openbossa.org>2006-03-09 19:46:40 +0000
commitc11d692fed46ea2e0dac68abde5028b85a6caf0e (patch)
tree82aa0896da19bb7ff98fec9ca382172fbd49dfd5 /hcid
parenta476163c9d9ee1c1c295ce3f9bc8858d33d51b92 (diff)
Minor changes: Changed the RemoteDeviceFound signal and renamed discover method.
Diffstat (limited to 'hcid')
-rw-r--r--hcid/dbus-adapter.c8
-rw-r--r--hcid/dbus.c49
-rw-r--r--hcid/dbus.h18
3 files changed, 55 insertions, 20 deletions
diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c
index 51eed18a..41cd1037 100644
--- a/hcid/dbus-adapter.c
+++ b/hcid/dbus-adapter.c
@@ -1126,7 +1126,7 @@ static DBusMessage *handle_dev_get_encryption_key_size_req(DBusMessage *msg, voi
return reply;
}
-static DBusMessage *handle_dev_discover_req(DBusMessage *msg, void *data)
+static DBusMessage *handle_dev_discover_devices_req(DBusMessage *msg, void *data)
{
DBusMessage *reply = NULL;
inquiry_cp cp;
@@ -1172,7 +1172,7 @@ failed:
return reply;
}
-static DBusMessage *handle_dev_discover_cancel_req(DBusMessage *msg, void *data)
+static DBusMessage *handle_dev_cancel_discovery_req(DBusMessage *msg, void *data)
{
DBusMessage *reply = NULL;
struct hci_request rq;
@@ -1261,8 +1261,8 @@ static const struct service_data dev_services[] = {
{ DEV_GET_PIN_CODE_LENGTH, handle_dev_get_pin_code_length_req, DEV_GET_PIN_CODE_LENGTH_SIGNATURE },
{ DEV_GET_ENCRYPTION_KEY_SIZE, handle_dev_get_encryption_key_size_req, DEV_GET_ENCRYPTION_KEY_SIZE_SIGNATURE },
- { DEV_DISCOVER, handle_dev_discover_req, DEV_DISCOVER_SIGNATURE },
- { DEV_DISCOVER_CANCEL, handle_dev_discover_cancel_req, DEV_DISCOVER_CANCEL_SIGNATURE },
+ { DEV_DISCOVER_DEVICES, handle_dev_discover_devices_req, DEV_DISCOVER_DEVICES_SIGNATURE },
+ { DEV_CANCEL_DISCOVERY, handle_dev_cancel_discovery_req, DEV_CANCEL_DISCOVERY_SIGNATURE },
{ DEV_DISCOVER_CACHE, handle_dev_discover_cache_req, DEV_DISCOVER_CACHE_SIGNATURE },
{ DEV_DISCOVER_SERVICE, handle_dev_discover_service_req, DEV_DISCOVER_SERVICE_SIGNATURE },
diff --git a/hcid/dbus.c b/hcid/dbus.c
index 4f30a42c..c0834afb 100644
--- a/hcid/dbus.c
+++ b/hcid/dbus.c
@@ -45,6 +45,7 @@
#include "hcid.h"
#include "dbus.h"
+#include "textfile.h"
#ifndef DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT
#define DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT 0x00
@@ -582,11 +583,14 @@ failed:
void hcid_dbus_inquiry_result(bdaddr_t *local, bdaddr_t *peer, uint32_t class, int8_t rssi)
{
+ char filename[PATH_MAX + 1];
DBusMessage *message = NULL;
char path[MAX_PATH_LENGTH];
- char *local_addr, *peer_addr;
- dbus_uint32_t tmp_class = class;
- dbus_int32_t tmp_rssi = rssi;
+ char *local_addr, *peer_addr, *name = NULL;
+ const char *service = "none";
+ const char *major_class = "none";
+ const char *minor_class = "none";
+ dbus_int16_t tmp_rssi = rssi;
bdaddr_t tmp;
int id;
@@ -602,7 +606,7 @@ void hcid_dbus_inquiry_result(bdaddr_t *local, bdaddr_t *peer, uint32_t class, i
snprintf(path, sizeof(path), "%s/hci%d", ADAPTER_PATH, id);
message = dbus_message_new_signal(path, ADAPTER_INTERFACE,
- DEV_SIG_DISCOVER_RESULT);
+ DEV_SIG_REMOTE_DEVICE_FOUND);
if (message == NULL) {
syslog(LOG_ERR, "Can't allocate D-Bus inquiry result message");
goto failed;
@@ -610,8 +614,35 @@ void hcid_dbus_inquiry_result(bdaddr_t *local, bdaddr_t *peer, uint32_t class, i
dbus_message_append_args(message,
DBUS_TYPE_STRING, &peer_addr,
- DBUS_TYPE_UINT32, &tmp_class,
- DBUS_TYPE_INT32, &tmp_rssi,
+ DBUS_TYPE_INT16, &tmp_rssi,
+ DBUS_TYPE_STRING, &major_class,
+ DBUS_TYPE_STRING, &minor_class,
+ DBUS_TYPE_STRING, &service,
+ DBUS_TYPE_INVALID);
+
+ if (dbus_connection_send(connection, message, NULL) == FALSE) {
+ syslog(LOG_ERR, "Can't send D-Bus inquiry result message");
+ goto failed;
+ }
+
+ snprintf(filename, PATH_MAX, "%s/%s/names", STORAGEDIR, local_addr);
+
+ name = textfile_get(filename, peer_addr);
+
+ if (!name)
+ goto failed;
+
+ dbus_message_unref(message);
+
+ message = dbus_message_new_signal(path, ADAPTER_INTERFACE,
+ DEV_SIG_REMOTE_DEVICE_FOUND);
+ if (message == NULL) {
+ syslog(LOG_ERR, "Can't allocate D-Bus inquiry result message");
+ goto failed;
+ }
+
+ dbus_message_append_args(message,
+ DBUS_TYPE_STRING, &name,
DBUS_TYPE_INVALID);
if (dbus_connection_send(connection, message, NULL) == FALSE) {
@@ -626,6 +657,10 @@ failed:
bt_free(local_addr);
bt_free(peer_addr);
+
+ if (name)
+ bt_free(name);
+
}
void hcid_dbus_remote_name(bdaddr_t *local, bdaddr_t *peer, char *name)
@@ -648,7 +683,7 @@ void hcid_dbus_remote_name(bdaddr_t *local, bdaddr_t *peer, char *name)
snprintf(path, sizeof(path), "%s/hci%d", ADAPTER_PATH, id);
message = dbus_message_new_signal(path, ADAPTER_INTERFACE,
- DEV_SIG_REMOTE_NAME_CHANGED);
+ DEV_SIG_REMOTE_NAME_UPDATED);
if (message == NULL) {
syslog(LOG_ERR, "Can't allocate D-Bus remote name message");
goto failed;
diff --git a/hcid/dbus.h b/hcid/dbus.h
index 05efeb18..8c20c4a3 100644
--- a/hcid/dbus.h
+++ b/hcid/dbus.h
@@ -165,8 +165,8 @@ int name_listener_remove(DBusConnection *connection, const char *name,
#define DEV_LIST_BONDINGS "ListBondings"
#define DEV_GET_PIN_CODE_LENGTH "GetPinCodeLength"
#define DEV_GET_ENCRYPTION_KEY_SIZE "GetEncryptionKeySize"
-#define DEV_DISCOVER "Discover"
-#define DEV_DISCOVER_CANCEL "DiscoverCancel"
+#define DEV_DISCOVER_DEVICES "DiscoverdDevices"
+#define DEV_CANCEL_DISCOVERY "CancelDiscovery"
#define DEV_DISCOVER_CACHE "DiscoverCache"
#define DEV_DISCOVER_SERVICE "DiscoverService"
@@ -224,24 +224,24 @@ int name_listener_remove(DBusConnection *connection, const char *name,
__END_SIG__
#define DEV_GET_ENCRYPTION_KEY_SIZE_SIGNATURE DBUS_TYPE_STRING_AS_STRING \
__END_SIG__
-#define DEV_DISCOVER_SIGNATURE __END_SIG__
-#define DEV_DISCOVER_CANCEL_SIGNATURE __END_SIG__
+#define DEV_DISCOVER_DEVICES_SIGNATURE __END_SIG__
+#define DEV_CANCEL_DISCOVERY_SIGNATURE __END_SIG__
#define DEV_DISCOVER_CACHE_SIGNATURE __END_SIG__
#define DEV_DISCOVER_SERVICE_SIGNATURE DBUS_TYPE_STRING_AS_STRING \
__END_SIG__
-/* Signals sent in the Manager path */
+/* Signals sent in the adapter based path /org/bluez/Adapter/{hci0, hci1, ...} */
#define DEV_SIG_MODE_CHANGED "ModeChanged"
#define DEV_SIG_NAME_CHANGED "NameChanged"
#define DEV_SIG_MINOR_CLASS_CHANGED "MinorClassChanged"
-#define DEV_SIG_REMOTE_NAME_CHANGED "RemoteNameChange"
+#define DEV_SIG_REMOTE_NAME_UPDATED "RemoteNameUpdated"
#define DEV_SIG_REMOTE_ALIAS_CHANGED "RemoteAliasChanged"
#define DEV_SIG_BONDING_CREATED "BondingCreated"
#define DEV_SIG_BONDING_FAILED "BondingFailed"
#define DEV_SIG_BONDING_REMOVED "BondingRemoved"
-#define DEV_SIG_DISCOVER_START "DiscoverStart"
-#define DEV_SIG_DISCOVER_COMPLETE "DiscoverComplete"
-#define DEV_SIG_DISCOVER_RESULT "DiscoverResult"
+#define DEV_SIG_DISCOVER_START "DiscoveryStart"
+#define DEV_SIG_DISCOVER_COMPLETE "DiscoveryCompleted"
+#define DEV_SIG_REMOTE_DEVICE_FOUND "RemoteDeviceFound"
/*
* Scanning modes, used by DEV_SET_MODE