linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Claudio Takahasi <cktakahasi@gmail.com>
To: bluez-devel@lists.sourceforge.net
Subject: [Bluez-devel] hcid D-Bus patch
Date: Fri, 16 Sep 2005 11:42:37 -0300	[thread overview]
Message-ID: <e1effdeb05091607426f824afa@mail.gmail.com> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 729 bytes --]

Hi Marcel,

I am sending the initial patch that implementing the skeleton
of the hcid D-Bus services.

Run hcid with a non-daemon option to see the output

Send the following messages to see the message handling.

dbus-send --system --type=method_call --dest=org.bluez /org/bluez/hci 
org.bluez.hci.PeriodicInqReq byte:1 byte:2 byte:3
dbus-send --system --type=method_call --dest=org.bluez /org/bluez/hci 
org.bluez.hci.CancelPeriodicInqReq
dbus-send --system --type=method_call --dest=org.bluez /org/bluez/hci 
org.bluez.hci.InquiryReq byte:1
dbus-send --system --type=method_call --dest=org.bluez /org/bluez/hci 
org.bluez.hci.RoleSwitchReq string:panu byte:1

Suggestions are welcome!

Regards,
Claudio.

[-- Attachment #1.2: Type: text/html, Size: 793 bytes --]

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: hcid_dbus_0006.patch --]
[-- Type: text/x-patch; name="hcid_dbus_0006.patch", Size: 16047 bytes --]

--- bluez-utils-cvs.orig/hcid/Makefile.am	2005-09-14 08:51:58.000000000 -0300
+++ bluez-utils-cvs-hcid-dbus/hcid/Makefile.am	2005-09-15 17:03:22.000000000 -0300
@@ -13,7 +13,7 @@
 sbin_PROGRAMS = hcid
 
 if DBUS
-dbus_hcid_sources = dbus.c
+dbus_hcid_sources = common.c dbus.c
 dbus_hcid_libs    = @DBUS_LIBS@
 dbus_hcid_cflags  = -DENABLE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
 else
--- bluez-utils-cvs.orig/hcid/dbus-internal.h	1969-12-31 21:00:00.000000000 -0300
+++ bluez-utils-cvs-hcid-dbus/hcid/dbus-internal.h	2005-09-16 11:33:09.049265392 -0300
@@ -0,0 +1,71 @@
+/*
+ *
+ *  BlueZ - Bluetooth protocol stack for Linux
+ *
+ *  Copyright (C) 2000-2001  Qualcomm Incorporated
+ *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com>
+ *  Copyright (C) 2002-2005  Marcel Holtmann <marcel@holtmann.org>
+ *
+ *
+ *  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
+ *  published by the Free Software Foundation;
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ *  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+ *  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
+ *  CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES 
+ *  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 
+ *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 
+ *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ *  ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, 
+ *  COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS 
+ *  SOFTWARE IS DISCLAIMED.
+ *
+ *
+ *  $Id: dbus-internal.h,v 0.1 2005/09/16 08:00:00 holtmann Exp $
+ */
+ 
+#ifndef __H_BLUEZ_DBUS_INTERNAL_H__
+#define __H_BLUEZ_DBUS_INTERNAL_H__
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdint.h>
+#include <dbus/dbus.h>
+#include <errno.h>
+#include <signal.h>
+
+#include <sys/syslog.h>
+
+#include "dbus.h"
+
+typedef DBusMessage* (service_handler_func_t)(DBusMessage *, void *);
+
+typedef struct
+{
+	const char             *name;
+	service_handler_func_t *handler_func;
+	const char             *signature;
+}__attribute__((packed))service_table_t;
+
+typedef enum 
+{
+	RESULT_SUCCESS = 0,
+	RESULT_FAILED = 0x01,
+	RESULT_WRONG_PARAM = 0x02,
+	RESULT_BUSY = 0x04,
+	RESULT_ADAPTER_NOT_FOUND = 0x08,
+	RESULT_WRONG_SIG = 0x10,
+	RESULT_UNKNOWN_METHOD = 0x20,
+	RESULT_SVC_NOT_FOUND = 0x40,
+}__attribute__((packed)) EXEC_RESULT;
+
+
+DBusMessage *create_error_reply_message(DBusMessage *msg, const char *iface, EXEC_RESULT result);
+
+#endif /*__H_BLUEZ_DBUS_INTERNAL_H__*/
--- bluez-utils-cvs.orig/hcid/dbus.h	1969-12-31 21:00:00.000000000 -0300
+++ bluez-utils-cvs-hcid-dbus/hcid/dbus.h	2005-09-16 11:33:38.448795984 -0300
@@ -0,0 +1,86 @@
+/*
+ *
+ *  BlueZ - Bluetooth protocol stack for Linux
+ *
+ *  Copyright (C) 2000-2001  Qualcomm Incorporated
+ *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com>
+ *  Copyright (C) 2002-2005  Marcel Holtmann <marcel@holtmann.org>
+ *
+ *
+ *  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
+ *  published by the Free Software Foundation;
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ *  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+ *  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
+ *  CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES 
+ *  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 
+ *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 
+ *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ *  ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, 
+ *  COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS 
+ *  SOFTWARE IS DISCLAIMED.
+ *
+ *
+ *  $Id: dbus.h,v 0.1 2005/09/16 08:00:00 holtmann Exp $
+ */
+ 
+#ifndef __H_BLUEZ_DBUS_H__
+#define __H_BLUEZ_DBUS_H__
+
+#define __END_SIG__ DBUS_TYPE_INVALID_AS_STRING
+
+/* bluetoothd Bus name */
+#define BLUEZ_DBUS_NAME		"org.bluez"
+
+/* HCI definitions */
+#define BLUEZ_DBUS_HCI_PATH		"/org/bluez/hci"
+#define BLUEZ_DBUS_HCI_INTERFACE	BLUEZ_DBUS_NAME".hci"
+
+//HCI signals
+#define BLUEZ_DBUS_HCI_SIG_INQ_START		"InquiryStartSig"
+#define BLUEZ_DBUS_HCI_SIG_INQ_COMPLETE		"InquiryCompleteSig"
+#define BLUEZ_DBUS_HCI_SIG_INQ_RESULT		"InquiryResultSig"
+#define BLUEZ_DBUS_HCI_SIG_REMOTE_NAME		"RemoteNameSig"
+
+//HCI Provided services
+#define HCI_PERIODIC_INQ_REQ               "PeriodicInqReq"
+#define HCI_CANCEL_PERIODIC_INQ_REQ        "CancelPeriodicInqReq"
+#define HCI_INQ_REQ                        "InquiryReq"
+#define HCI_ROLE_SWITCH_REQ                "RoleSwitchReq"
+
+//HCI signatures
+#define HCI_PERIODIC_INQ_REQ_SIGNATURE		        DBUS_TYPE_BYTE_AS_STRING\
+							DBUS_TYPE_BYTE_AS_STRING\
+							DBUS_TYPE_BYTE_AS_STRING\
+							__END_SIG__
+#define HCI_CANCEL_PERIODIC_INQ_REQ_SIGNATURE		__END_SIG__
+#define HCI_INQ_REQ_SIGNATURE                	    	DBUS_TYPE_BYTE_AS_STRING\
+							__END_SIG__
+#define HCI_ROLE_SWITCH_REQ_SIGNATURE                   DBUS_TYPE_STRING_AS_STRING\
+							DBUS_TYPE_BYTE_AS_STRING\
+							__END_SIG__
+
+
+/* Common Error messages */
+#define ERR_UNKNOWN_METHOD      ".error.UnknowMethod"
+#define ERR_WRONG_SIGNATURE     ".error.WrongSignature"
+#define ERR_WRONG_PARAM         ".error.WrongParam"
+#define ERR_FAILED              ".error.Failed"
+#define ERR_REC_NOT_FOUND       ".error.RecordNotFound"
+#define ERR_BUSY                ".error.Busy"
+#define ERR_NO_DEV_FOUND                ".error.NoDevFound"
+
+#define ERR_MSG_INVALID_PARAMETERS     "Invalid parameters"
+#define ERR_MSG_NO_SVC_FOUND           "No service found"
+#define ERR_MSG_DEV_BUSY               "Device is busy"
+#define ERR_MSG_FAILED                 "Operation failed"
+#define ERR_MSG_NO_DEV_FOUND           "Active Bluetooth adapter not found"
+#define ERR_MSG_WRONG_SIG              "Wrong method signature"
+#define ERR_MSG_METHOD_NOT_FOUND       "Method not found on the interface"
+
+
+#endif /*__H_BLUEZ_DBUS_H__*/
--- bluez-utils-cvs.orig/hcid/dbus.c	2005-09-15 18:05:23.000000000 -0300
+++ bluez-utils-cvs-hcid-dbus/hcid/dbus.c	2005-09-16 11:36:41.362988800 -0300
@@ -45,6 +45,7 @@
 #include "glib-ectomy.h"
 
 #include "hcid.h"
+#include "dbus-internal.h"
 
 static DBusConnection *connection;
 
@@ -62,6 +63,32 @@
 	bdaddr_t bda;
 };
 
+static DBusHandlerResult hci_msg_func(DBusConnection *conn, 
+				      DBusMessage *msg, void *data);
+
+static DBusMessage* handle_periodic_inq_req(DBusMessage *msg, void *data);
+static DBusMessage* handle_cancel_periodic_inq_req(DBusMessage *msg, void *data);
+static DBusMessage* handle_inq_req(DBusMessage *msg, void *data);
+static DBusMessage* handle_role_switch_req(DBusMessage *msg, void *data);
+
+				      
+static const DBusObjectPathVTable hci_vtable = {
+	NULL,
+	&hci_msg_func,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+static const service_table_t hci_services[] = {
+	{HCI_PERIODIC_INQ_REQ,        handle_periodic_inq_req,        HCI_PERIODIC_INQ_REQ_SIGNATURE},
+	{HCI_CANCEL_PERIODIC_INQ_REQ, handle_cancel_periodic_inq_req, HCI_CANCEL_PERIODIC_INQ_REQ_SIGNATURE},
+	{HCI_ROLE_SWITCH_REQ,         handle_role_switch_req,         HCI_ROLE_SWITCH_REQ_SIGNATURE},
+	{HCI_INQ_REQ,                 handle_inq_req,                 HCI_INQ_REQ_SIGNATURE},	
+	{NULL, NULL, NULL}
+};
+
 static void reply_handler_function(DBusPendingCall *call, void *user_data)
 {
 	struct pin_request *req = (struct pin_request *) user_data;
@@ -169,8 +196,9 @@
 
 	baswap(&tmp, local); local_addr = batostr(&tmp);
 
-	message = dbus_message_new_signal("/org/bluez/DevAgent",
-				"org.bluez.DevAgent", "InquiryStart");
+	message = dbus_message_new_signal(BLUEZ_DBUS_HCI_PATH,
+					  BLUEZ_DBUS_HCI_INTERFACE, 
+					  BLUEZ_DBUS_HCI_SIG_INQ_START);
 	if (message == NULL) {
 		syslog(LOG_ERR, "Can't allocate D-BUS inquiry start message");
 		goto failed;
@@ -203,8 +231,9 @@
 
 	baswap(&tmp, local); local_addr = batostr(&tmp);
 
-	message = dbus_message_new_signal("/org/bluez/DevAgent",
-				"org.bluez.DevAgent", "InquiryComplete");
+	message = dbus_message_new_signal(BLUEZ_DBUS_HCI_PATH,
+				BLUEZ_DBUS_HCI_INTERFACE, 
+				BLUEZ_DBUS_HCI_SIG_INQ_COMPLETE);
 	if (message == NULL) {
 		syslog(LOG_ERR, "Can't allocate D-BUS inquiry complete message");
 		goto failed;
@@ -238,8 +267,9 @@
 	baswap(&tmp, local); local_addr = batostr(&tmp);
 	baswap(&tmp, peer); peer_addr = batostr(&tmp);
 
-	message = dbus_message_new_signal("/org/bluez/DevAgent",
-				"org.bluez.DevAgent", "InquiryResult");
+	message = dbus_message_new_signal(BLUEZ_DBUS_HCI_PATH,
+				BLUEZ_DBUS_HCI_INTERFACE, 
+				BLUEZ_DBUS_HCI_SIG_INQ_RESULT);
 	if (message == NULL) {
 		syslog(LOG_ERR, "Can't allocate D-BUS inquiry result message");
 		goto failed;
@@ -277,8 +307,9 @@
 	baswap(&tmp, local); local_addr = batostr(&tmp);
 	baswap(&tmp, peer); peer_addr = batostr(&tmp);
 
-	message = dbus_message_new_signal("/org/bluez/DevAgent",
-				"org.bluez.DevAgent", "RemoteName");
+	message = dbus_message_new_signal(BLUEZ_DBUS_HCI_PATH,
+				BLUEZ_DBUS_HCI_INTERFACE,
+				BLUEZ_DBUS_HCI_SIG_REMOTE_NAME);
 	if (message == NULL) {
 		syslog(LOG_ERR, "Can't allocate D-BUS remote name message");
 		goto failed;
@@ -388,15 +419,114 @@
 	dbus_error_init(&error);
 
 	connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
+	
 	if (connection == NULL) {
 		fprintf(stderr, "Failed to open connection to system message bus: %s\n",
 			error.message);
 		dbus_error_free(&error);
 		return FALSE;
 	}
+	
+	dbus_bus_request_name(connection, BLUEZ_DBUS_NAME, 
+			      DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT, 
+			      &error);
+	
+	if (dbus_error_is_set (&error)) {
+		syslog(LOG_ERR,"D-Bus Error: %s\n", error.message);
+		dbus_error_free (&error);
+		return FALSE;
+	}
+	
+	if (!dbus_connection_register_object_path(connection, BLUEZ_DBUS_HCI_PATH, &hci_vtable, NULL)) {
+		syslog(LOG_ERR,"DBUS failed to register %s object", BLUEZ_DBUS_HCI_PATH);
+		return FALSE;
+	}
 
 	dbus_connection_set_watch_functions(connection,
 		add_watch, remove_watch, watch_toggled, NULL, NULL);
-
 	return TRUE;
 }
+
+/*****************************************************************
+ *  
+ *  Section reserved to D-Bus message handlers
+ *  
+ *****************************************************************/
+
+static DBusHandlerResult hci_msg_func(DBusConnection *conn, 
+				      DBusMessage *msg, void *data)
+{
+	const service_table_t *ptr_handlers =  hci_services;
+	DBusMessage *reply = NULL;
+	uint16_t type;
+	const char *iface;
+	const char *method;
+	const char *signature;
+	EXEC_RESULT result = RESULT_UNKNOWN_METHOD;
+	DBusHandlerResult ret = DBUS_HANDLER_RESULT_NOT_YET_HANDLED;;
+	
+	type = dbus_message_get_type(msg);
+	iface = dbus_message_get_interface(msg);
+	method = dbus_message_get_member (msg);
+	signature = dbus_message_get_signature(msg);
+	
+	syslog(LOG_INFO, "%s - type:%d, iface:%s, method:%s, sig:%s",__PRETTY_FUNCTION__, type, iface, method, signature);
+	
+	if ((type == DBUS_MESSAGE_TYPE_METHOD_CALL) && 
+		(strcmp(iface, BLUEZ_DBUS_HCI_INTERFACE) == 0) && 
+		(method != NULL)) {
+		
+		for (; ptr_handlers->name; ptr_handlers++) {
+			if (strcmp(method, ptr_handlers->name) == 0) {
+				/* resetting unknown method. It's possible handle method overload */
+				result = RESULT_WRONG_SIG; 
+				if (strcmp(ptr_handlers->signature, signature) == 0) {
+					reply = (ptr_handlers->handler_func)(msg, data);
+					result = 0; /* resetting wrong signature*/
+					break;
+				} 
+				
+			}
+		}
+		
+		if (result) {
+			reply = create_error_reply_message(msg, BLUEZ_DBUS_HCI_INTERFACE, result);
+		}
+		
+		/* send an error or the success reply*/
+		if (reply) {
+			if (!dbus_connection_send (conn, reply, NULL)) { 
+				syslog(LOG_ERR, "%s line:%d Can't send reply message!", \
+					__PRETTY_FUNCTION__, __LINE__) ;
+			}
+			dbus_message_unref (reply);
+		}
+		
+		ret = DBUS_HANDLER_RESULT_HANDLED;
+	}
+	return ret;
+}
+
+static DBusMessage* handle_periodic_inq_req(DBusMessage *msg, void *data) 
+{
+	syslog(LOG_INFO, "%s", __PRETTY_FUNCTION__);
+	return NULL;
+}
+
+static DBusMessage* handle_cancel_periodic_inq_req(DBusMessage *msg, void *data)
+{
+	syslog(LOG_INFO, "%s", __PRETTY_FUNCTION__);
+	return NULL;
+}
+
+static DBusMessage* handle_inq_req(DBusMessage *msg, void *data)
+{
+	syslog(LOG_INFO, "%s", __PRETTY_FUNCTION__);
+	return NULL;
+}
+
+static DBusMessage* handle_role_switch_req(DBusMessage *msg, void *data)
+{
+	syslog(LOG_INFO, "%s", __PRETTY_FUNCTION__);
+	return NULL;
+}
--- bluez-utils-cvs.orig/hcid/common.c	1969-12-31 21:00:00.000000000 -0300
+++ bluez-utils-cvs-hcid-dbus/hcid/common.c	2005-09-16 11:33:26.074677136 -0300
@@ -0,0 +1,80 @@
+/*
+ *
+ *  BlueZ - Bluetooth protocol stack for Linux
+ *
+ *  Copyright (C) 2000-2001  Qualcomm Incorporated
+ *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com>
+ *  Copyright (C) 2002-2005  Marcel Holtmann <marcel@holtmann.org>
+ *
+ *
+ *  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
+ *  published by the Free Software Foundation;
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ *  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+ *  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
+ *  CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES 
+ *  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 
+ *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 
+ *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ *  ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, 
+ *  COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS 
+ *  SOFTWARE IS DISCLAIMED.
+ *
+ *
+ *  $Id: common.c ,v 0.1 2005/09/16 08:00:00 holtmann Exp $
+ */
+ 
+#include "dbus-internal.h"
+
+DBusMessage *create_error_reply_message(DBusMessage *msg, const char *iface, EXEC_RESULT result) 
+{
+	DBusMessage *reply = NULL;
+	const char *error_msg = NULL;
+	char perror_name[128];
+	
+	switch(result) {
+		case RESULT_FAILED:
+			sprintf(perror_name, "%s%s",iface, ERR_FAILED);
+			error_msg = ERR_MSG_FAILED;
+			break;
+		case RESULT_BUSY:
+			sprintf(perror_name, "%s%s",iface, ERR_BUSY);
+			error_msg = ERR_MSG_DEV_BUSY;
+			break;
+		case RESULT_WRONG_PARAM:
+			sprintf(perror_name, "%s%s",iface, ERR_WRONG_PARAM);
+			error_msg = ERR_MSG_INVALID_PARAMETERS;
+			break;
+		case RESULT_ADAPTER_NOT_FOUND:
+			sprintf(perror_name, "%s%s",iface, ERR_NO_DEV_FOUND);
+			error_msg = ERR_MSG_NO_DEV_FOUND;
+			break;
+		case RESULT_WRONG_SIG:
+			sprintf(perror_name, "%s%s",iface, ERR_WRONG_SIGNATURE);
+			error_msg = ERR_MSG_WRONG_SIG;
+			break;
+		case RESULT_UNKNOWN_METHOD:
+			sprintf(perror_name, "%s%s",iface, ERR_UNKNOWN_METHOD);
+			error_msg  = ERR_MSG_METHOD_NOT_FOUND;
+			break;
+		case RESULT_SVC_NOT_FOUND:
+			sprintf(perror_name, "%s%s",iface, ERR_REC_NOT_FOUND);
+			error_msg = ERR_MSG_NO_SVC_FOUND;
+			break;	
+		default:
+			error_msg = NULL;
+			break;
+	/* RESULT_SUCCESS: ignore, it must be created by the caller
+			break;
+	*/		
+	}
+	
+	syslog(LOG_INFO, "%s - error:%s", __PRETTY_FUNCTION__, perror_name);
+	reply = dbus_message_new_error(msg, (const char*)perror_name, error_msg);
+	
+	return reply;
+}

             reply	other threads:[~2005-09-16 14:42 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-16 14:42 Claudio Takahasi [this message]
2005-09-19 14:31 ` [Bluez-devel] Re: hcid D-Bus patch (RSSI question) Claudio Takahasi
2005-09-20 11:39   ` Marcel Holtmann
2005-09-21  8:51 ` [Bluez-devel] hcid D-Bus patch Marcel Holtmann
2005-09-21 12:49   ` Claudio Takahasi
2005-09-21 13:19     ` P. Durante
2005-09-21 13:52       ` Claudio Takahasi
2005-09-22 14:13         ` Marcel Holtmann
2005-09-22 17:12           ` Claudio Takahasi
2005-09-22 14:17     ` Marcel Holtmann
2005-09-22 16:51       ` Claudio Takahasi
2005-09-22 17:54         ` Marcel Holtmann
2005-09-23 14:28           ` Claudio Takahasi
2005-09-23 17:15             ` Claudio Takahasi
2005-09-25 10:33               ` Marcel Holtmann
2005-09-26 11:59                 ` Claudio Takahasi
2005-09-28  8:45                   ` Marcel Holtmann
2005-09-28  9:08                     ` [Bluez-devel] help: HIDD and HID2HCI Charles Majola
2005-09-28 19:19                     ` [Bluez-devel] hcid D-Bus patch Claudio Takahasi
2005-09-28 19:53                       ` Eduardo Rocha
2005-09-29 16:25                       ` Marcel Holtmann
2005-09-29 19:26                         ` Claudio Takahasi
2005-09-30  8:37                           ` Marcel Holtmann
2005-09-30 14:52                             ` Claudio Takahasi
2005-09-30 15:03                               ` Marcel Holtmann
2005-10-02 11:52                                 ` P. Durante
2005-10-03 13:57                                   ` Marcel Holtmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e1effdeb05091607426f824afa@mail.gmail.com \
    --to=cktakahasi@gmail.com \
    --cc=bluez-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).