diff options
| author | Johan Hedberg <johan.hedberg@nokia.com> | 2006-03-10 21:27:51 +0000 | 
|---|---|---|
| committer | Johan Hedberg <johan.hedberg@nokia.com> | 2006-03-10 21:27:51 +0000 | 
| commit | 6508cdb8cd4ecf53c21826a878ec57d0dbb9205c (patch) | |
| tree | 874e5c61c5894f1b2fa9c2908c4c4b7c503c3975 /hcid/dbus-adapter.c | |
| parent | 1c37ee6736011106383c591cb387c724b0ff494e (diff) | |
Break everything
Diffstat (limited to 'hcid/dbus-adapter.c')
| -rw-r--r-- | hcid/dbus-adapter.c | 128 | 
1 files changed, 54 insertions, 74 deletions
diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c index 06eb40f6..e1627a6e 100644 --- a/hcid/dbus-adapter.c +++ b/hcid/dbus-adapter.c @@ -1310,68 +1310,59 @@ static DBusMessage *handle_dev_discover_service_req(DBusMessage *msg, void *data  }  static const struct service_data dev_services[] = { -	{ DEV_GET_ADDRESS,		handle_dev_get_address_req,		DEV_GET_ADDRESS_SIGNATURE		}, -	{ DEV_GET_VERSION,		handle_dev_get_version_req,		DEV_GET_VERSION_SIGNATURE		}, -	{ DEV_GET_REVISION,		handle_dev_get_revision_req,		DEV_GET_REVISION_SIGNATURE		}, -	{ DEV_GET_MANUFACTURER,		handle_dev_get_manufacturer_req,	DEV_GET_MANUFACTURER_SIGNATURE		}, -	{ DEV_GET_COMPANY,		handle_dev_get_company_req,		DEV_GET_COMPANY_SIGNATURE		}, -	{ DEV_GET_FEATURES,		handle_dev_get_features_req,		DEV_GET_FEATURES_SIGNATURE		}, -	{ DEV_GET_MODE,			handle_dev_get_mode_req,		DEV_GET_MODE_SIGNATURE			}, -	{ DEV_LIST_MINOR_CLASSES,	handle_dev_list_minor_classes_req,	DEV_LIST_MINOR_CLASSES_SIGNATURE	}, -	{ DEV_SET_MODE,			handle_dev_set_mode_req,		DEV_SET_MODE_SIGNATURE			}, -	{ DEV_GET_DISCOVERABLE_TO,	handle_dev_get_discoverable_to_req,	DEV_GET_DISCOVERABLE_TO_SIGNATURE	}, -	{ DEV_SET_DISCOVERABLE_TO,	handle_dev_set_discoverable_to_req,	DEV_SET_DISCOVERABLE_TO_SIGNATURE	}, -	{ DEV_IS_CONNECTABLE,		handle_dev_is_connectable_req,		DEV_IS_CONNECTABLE_SIGNATURE		}, -	{ DEV_IS_DISCOVERABLE,		handle_dev_is_discoverable_req,		DEV_IS_DISCOVERABLE_SIGNATURE		}, -	{ DEV_GET_MAJOR_CLASS,		handle_dev_get_major_class_req,		DEV_GET_MAJOR_CLASS_SIGNATURE		}, -	{ DEV_GET_MINOR_CLASS,		handle_dev_get_minor_class_req,		DEV_GET_MINOR_CLASS_SIGNATURE		}, -	{ DEV_SET_MINOR_CLASS,		handle_dev_set_minor_class_req,		DEV_SET_MINOR_CLASS_SIGNATURE		}, -	{ DEV_GET_SERVICE_CLASSES,	handle_dev_get_service_classes_req,	DEV_GET_SERVICE_CLASSES_SIGNATURE	}, -	{ DEV_GET_NAME,			handle_dev_get_name_req,		DEV_GET_NAME_SIGNATURE			}, -	{ DEV_SET_NAME,			handle_dev_set_name_req,		DEV_SET_NAME_SIGNATURE			}, +	{ DEV_GET_ADDRESS,		handle_dev_get_address_req,		}, +	{ DEV_GET_VERSION,		handle_dev_get_version_req,		}, +	{ DEV_GET_REVISION,		handle_dev_get_revision_req,		}, +	{ DEV_GET_MANUFACTURER,		handle_dev_get_manufacturer_req,	}, +	{ DEV_GET_COMPANY,		handle_dev_get_company_req,		}, +	{ DEV_GET_FEATURES,		handle_dev_get_features_req,		}, +	{ DEV_GET_MODE,			handle_dev_get_mode_req,		}, +	{ DEV_LIST_MINOR_CLASSES,	handle_dev_list_minor_classes_req,	}, +	{ DEV_SET_MODE,			handle_dev_set_mode_req,		}, +	{ DEV_GET_DISCOVERABLE_TO,	handle_dev_get_discoverable_to_req,	}, +	{ DEV_SET_DISCOVERABLE_TO,	handle_dev_set_discoverable_to_req,	}, +	{ DEV_IS_CONNECTABLE,		handle_dev_is_connectable_req,		}, +	{ DEV_IS_DISCOVERABLE,		handle_dev_is_discoverable_req,		}, +	{ DEV_GET_MAJOR_CLASS,		handle_dev_get_major_class_req,		}, +	{ DEV_GET_MINOR_CLASS,		handle_dev_get_minor_class_req,		}, +	{ DEV_SET_MINOR_CLASS,		handle_dev_set_minor_class_req,		}, +	{ DEV_GET_SERVICE_CLASSES,	handle_dev_get_service_classes_req,	}, +	{ DEV_GET_NAME,			handle_dev_get_name_req,		}, +	{ DEV_SET_NAME,			handle_dev_set_name_req,		}, -	{ DEV_GET_REMOTE_VERSION,	handle_dev_get_remote_version_req,	DEV_GET_REMOTE_VERSION_SIGNATURE	}, -	{ DEV_GET_REMOTE_REVISION,	handle_dev_get_remote_revision_req,	DEV_GET_REMOTE_REVISION_SIGNATURE	}, -	{ DEV_GET_REMOTE_MANUFACTURER,	handle_dev_get_remote_manufacturer_req,	DEV_GET_REMOTE_MANUFACTURER_SIGNATURE	}, -	{ DEV_GET_REMOTE_COMPANY,	handle_dev_get_remote_company_req,	DEV_GET_REMOTE_COMPANY_SIGNATURE	}, -	{ DEV_GET_REMOTE_NAME,		handle_dev_get_remote_name_req,		DEV_GET_REMOTE_NAME_SIGNATURE		}, -	{ DEV_GET_REMOTE_ALIAS,		handle_dev_get_remote_alias_req,	DEV_GET_REMOTE_ALIAS_SIGNATURE		}, -	{ DEV_SET_REMOTE_ALIAS,		handle_dev_set_remote_alias_req,	DEV_SET_REMOTE_ALIAS_SIGNATURE		}, - -	{ DEV_LAST_SEEN,		handle_dev_last_seen_req,		DEV_LAST_SEEN_SIGNATURE			}, -	{ DEV_LAST_USED,		handle_dev_last_used_req,		DEV_LAST_USED_SIGNATURE			}, - -	{ DEV_CREATE_BONDING,		handle_dev_create_bonding_req,		DEV_CREATE_BONDING_SIGNATURE		}, -	{ DEV_REMOVE_BONDING,		handle_dev_remove_bonding_req,		DEV_REMOVE_BONDING_SIGNATURE		}, -	{ DEV_HAS_BONDING_NAME,		handle_dev_has_bonding_req,		DEV_HAS_BONDING_SIGNATURE		}, -	{ DEV_LIST_BONDINGS,		handle_dev_list_bondings_req,		DEV_LIST_BONDINGS_SIGNATURE		}, -	{ 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_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		}, - -	{ NULL, NULL, NULL} +	{ DEV_GET_REMOTE_VERSION,	handle_dev_get_remote_version_req,	}, +	{ DEV_GET_REMOTE_REVISION,	handle_dev_get_remote_revision_req,	}, +	{ DEV_GET_REMOTE_MANUFACTURER,	handle_dev_get_remote_manufacturer_req,	}, +	{ DEV_GET_REMOTE_COMPANY,	handle_dev_get_remote_company_req,	}, +	{ DEV_GET_REMOTE_NAME,		handle_dev_get_remote_name_req,		}, +	{ DEV_GET_REMOTE_ALIAS,		handle_dev_get_remote_alias_req,	}, +	{ DEV_SET_REMOTE_ALIAS,		handle_dev_set_remote_alias_req,	}, + +	{ DEV_LAST_SEEN,		handle_dev_last_seen_req,		}, +	{ DEV_LAST_USED,		handle_dev_last_used_req,		}, + +	{ DEV_CREATE_BONDING,		handle_dev_create_bonding_req,		}, +	{ DEV_REMOVE_BONDING,		handle_dev_remove_bonding_req,		}, +	{ DEV_HAS_BONDING_NAME,		handle_dev_has_bonding_req,		}, +	{ DEV_LIST_BONDINGS,		handle_dev_list_bondings_req,		}, +	{ DEV_GET_PIN_CODE_LENGTH,	handle_dev_get_pin_code_length_req,	}, +	{ DEV_GET_ENCRYPTION_KEY_SIZE,	handle_dev_get_encryption_key_size_req,	}, + +	{ DEV_DISCOVER_DEVICES,		handle_dev_discover_devices_req,	}, +	{ DEV_CANCEL_DISCOVERY,		handle_dev_cancel_discovery_req,	}, +	{ DEV_DISCOVER_CACHE,		handle_dev_discover_cache_req,		}, +	{ DEV_DISCOVER_SERVICE,		handle_dev_discover_service_req,	}, + +	{ NULL, NULL }  };  DBusHandlerResult msg_func_device(DBusConnection *conn, DBusMessage *msg, void *data)  { -	const struct service_data *handlers = dev_services; -	DBusMessage *reply = NULL;  	struct hci_dbus_data *dbus_data = data; -	const char *method; -	const char *signature;  	const char *iface; -	uint32_t err = BLUEZ_EDBUS_UNKNOWN_METHOD; -	method = dbus_message_get_member(msg); -	signature = dbus_message_get_signature(msg);  	iface = dbus_message_get_interface(msg); -	info("Adapter path:%s iface:%s method:%s", dbus_message_get_path(msg), iface, method); -  	if (strcmp(ADAPTER_INTERFACE, iface))  		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; @@ -1381,33 +1372,22 @@ DBusHandlerResult msg_func_device(DBusConnection *conn, DBusMessage *msg, void *  		goto failed;  	} -	/* It's a device path id */ -	for (; handlers->name != NULL; handlers++) { -		if (strcmp(handlers->name, method)) -			continue; +	handler = find_service_handler(dev_services, msg); +	if (!handler) +		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; -		if (!strcmp(handlers->signature, signature)) { -			reply = handlers->handler_func(msg, data); -			err = 0; -			break; -		} else { -			/* Set the error, but continue looping incase there is -			 * another method with the same name but a different -			 * signature */ -			err = BLUEZ_EDBUS_WRONG_SIGNATURE; -			continue; -		} -	} +	return handler(conn, msg, data);  failed: -	if (err) -		reply = bluez_new_failure_msg(msg, err); +	if (err) { +		DBusMessage *reply = bluez_new_failure_msg(msg, err); -	if (reply) { -		if (!dbus_connection_send (conn, reply, NULL)) -			error("Can't send reply message"); +		if (reply) { +			if (!dbus_connection_send(conn, reply, NULL)) +				error("Can't send reply message"); -		dbus_message_unref(reply); +			dbus_message_unref(reply); +		}  	}  	return DBUS_HANDLER_RESULT_HANDLED;  | 
