diff options
Diffstat (limited to 'hcid/dbus.h')
-rw-r--r-- | hcid/dbus.h | 255 |
1 files changed, 1 insertions, 254 deletions
diff --git a/hcid/dbus.h b/hcid/dbus.h index 478949a1..695633db 100644 --- a/hcid/dbus.h +++ b/hcid/dbus.h @@ -24,168 +24,8 @@ #ifndef __H_BLUEZ_DBUS_H__ #define __H_BLUEZ_DBUS_H__ -#include <stdint.h> #include <dbus/dbus.h> -#include <bluetooth/bluetooth.h> -#include <bluetooth/sdp.h> -#include "list.h" -#include "glib-ectomy.h" - -#define BASE_PATH "/org/bluez" -#define BASE_INTERFACE "org.bluez" - -#define ADAPTER_INTERFACE BASE_INTERFACE ".Adapter" - -#define MANAGER_INTERFACE BASE_INTERFACE ".Manager" - -#define ERROR_INTERFACE BASE_INTERFACE ".Error" - -#define SECURITY_INTERFACE BASE_INTERFACE ".Security" - -#define TEST_INTERFACE BASE_INTERFACE ".Test" - -#define RFCOMM_INTERFACE BASE_INTERFACE ".RFCOMM" - -#define SDP_INTERFACE BASE_INTERFACE ".SDP" - -#define INVALID_DEV_ID 0xFFFF - -#define MAX_PATH_LENGTH 64 - -#define BONDING_TIMEOUT 45000 /* 45 sec */ - -typedef DBusHandlerResult (*service_handler_func_t) (DBusConnection *conn, - DBusMessage *msg, - void *user_data); - -struct service_data { - const char *name; - service_handler_func_t handler_func; -}; - -/* Discover types */ -#define DISCOVER_TYPE_NONE 0x00 -#define STD_INQUIRY 0x01 -#define PERIODIC_INQUIRY 0x02 - -/* Actions executed after inquiry complete */ -#define RESOLVE_NAME 0x10 - -typedef enum { - NAME_ANY, - NAME_NOT_REQUIRED, /* used by get remote name without name resolving */ - NAME_REQUIRED, /* remote name needs be resolved */ - NAME_REQUESTED, /* HCI remote name request was sent */ - NAME_SENT /* D-Bus signal RemoteNameUpdated sent */ -} name_status_t; - -struct remote_dev_info { - bdaddr_t bdaddr; - int8_t rssi; - name_status_t name_status; -}; - -struct bonding_request_info { - bdaddr_t bdaddr; - DBusConnection *conn; - DBusMessage *rq; - GIOChannel *io; - guint io_id; - int hci_status; - int cancel; - int auth_active; -}; - -struct pending_pin_info { - bdaddr_t bdaddr; - int replied; /* If we've already replied to the request */ -}; - -struct active_conn_info { - bdaddr_t bdaddr; - uint16_t handle; -}; - -struct adapter { - uint16_t dev_id; - int up; - char address[18]; /* adapter Bluetooth Address */ - guint timeout_id; /* discoverable timeout id */ - uint32_t discov_timeout; /* discoverable time(msec) */ - uint8_t mode; /* scan mode */ - int discov_active; /* standard discovery active: includes name resolution step */ - int pdiscov_active; /* periodic discovery active */ - int pinq_idle; /* tracks the idle time for periodic inquiry */ - int discov_type; /* type requested */ - int pdiscov_resolve_names; /* Resolve names when doing periodic discovery */ - struct slist *found_devices; - struct slist *oor_devices; /* out of range device list */ - char *pdiscov_requestor; /* periodic discovery requestor unique name */ - char *discov_requestor; /* discovery requestor unique name */ - DBusMessage *discovery_cancel; /* discovery cancel message request */ - struct slist *passkey_agents; - struct slist *auth_agents; /* Authorization agents */ - bdaddr_t agents_disabled; /* temporarely disable agents for bda */ - struct slist *active_conn; - struct bonding_request_info *bonding; - struct slist *pin_reqs; -}; - -struct passkey_agent { - struct adapter *adapter; - DBusConnection *conn; - char *addr; - char *name; - char *path; - struct slist *pending_requests; - int exited; - guint timeout; -}; - -struct pending_agent_request { - struct passkey_agent *agent; - int dev; - bdaddr_t sba; - bdaddr_t bda; - char *path; - DBusPendingCall *call; - int old_if; - char *pin; -}; - -struct authorization_agent { - DBusConnection *conn; - char *name; - char *path; - int exited; -}; - -struct service_agent { - char *id; /* Connection id */ - char *name; - char *description; - int running; - struct slist *trusted_devices; -}; - -typedef int register_function_t(DBusConnection *conn, uint16_t id); -typedef int unregister_function_t(DBusConnection *conn, uint16_t id); - -DBusHandlerResult msg_func_device(DBusConnection *conn, DBusMessage *msg, void *data); -DBusHandlerResult msg_func_manager(DBusConnection *conn, DBusMessage *msg, void *data); - -int register_service_agent(DBusConnection *conn, const char *sender, const char *path, - const char *name, const char *description); -int unregister_service_agent(DBusConnection *conn, const char *sender, const char *path); -void release_service_agents(DBusConnection *conn); -void append_available_services(DBusMessageIter *iter); - -const char *major_class_str(uint32_t class); -const char *minor_class_str(uint32_t class); -struct slist *service_classes_str(uint32_t class); - -DBusHandlerResult bluez_new_failure_msg(DBusConnection *conn, DBusMessage *msg, - const uint32_t ecode); +#include "dbus-adapter.h" DBusMessage *dev_signal_factory(const int devid, const char *prop_name, const int first, ...); @@ -193,95 +33,11 @@ DBusMessage *new_authentication_return(DBusMessage *msg, uint8_t status); int get_default_dev_id(void); -DBusHandlerResult error_failed(DBusConnection *conn, DBusMessage *msg, int err); -DBusHandlerResult error_not_ready(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_invalid_arguments(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_unknown_method(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_not_authorized(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_out_of_memory(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_no_such_adapter(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_not_available(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_not_supported(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_request_deferred(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_not_connected(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_not_in_progress(DBusConnection *conn, DBusMessage *msg, const char *str); -DBusHandlerResult error_unsupported_major_class(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_connection_attempt_failed(DBusConnection *conn, DBusMessage *msg, int err); -DBusHandlerResult error_bonding_already_exists(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_bonding_does_not_exist(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_bonding_in_progress(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_bonding_not_in_progress(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_authentication_canceled(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_discover_in_progress(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_connect_in_progress(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_connect_not_in_progress(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_record_does_not_exist(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_passkey_agent_already_exists(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_passkey_agent_does_not_exist(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_auth_agent_already_exists(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_auth_agent_does_not_exist(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_binding_does_not_exist(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_service_already_exists(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_service_does_not_exist(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_service_search_in_progress(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_connect_canceled(DBusConnection *conn, DBusMessage *msg); -DBusHandlerResult error_sdp_failed(DBusConnection *conn, DBusMessage *msg, int err); -DBusHandlerResult error_audit_already_exists(DBusConnection *conn, DBusMessage *msg); - -typedef void (*name_cb_t)(const char *name, void *user_data); - -int name_listener_add(DBusConnection *connection, const char *name, - name_cb_t func, void *user_data); -int name_listener_remove(DBusConnection *connection, const char *name, - name_cb_t func, void *user_data); - -int l2raw_connect(const char *local, const bdaddr_t *remote); - -int check_address(const char *addr); - -void process_audits_list(const char *adapter_path); - -DBusHandlerResult handle_test_method(DBusConnection *conn, DBusMessage *msg, void *data); - -DBusHandlerResult handle_security_method(DBusConnection *conn, DBusMessage *msg, void *data); - -DBusHandlerResult handle_rfcomm_method(DBusConnection *conn, DBusMessage *msg, void *data); - -DBusHandlerResult handle_sdp_method(DBusConnection *conn, DBusMessage *msg, void *data); -DBusHandlerResult get_remote_svc_handles(DBusConnection *conn, DBusMessage *msg, void *data); -DBusHandlerResult get_remote_svc_rec(DBusConnection *conn, DBusMessage *msg, void *data); - -DBusHandlerResult simple_introspect(DBusConnection *conn, DBusMessage *msg, void *data); - -service_handler_func_t find_service_handler(struct service_data *services, DBusMessage *msg); -int str2uuid(uuid_t *uuid, const char *string); - void create_bond_req_exit(const char *name, struct adapter *adapter); void discover_devices_req_exit(const char *name, struct adapter *adapter); int cancel_discovery(struct adapter *adapter); void periodic_discover_req_exit(const char *name, struct adapter *adapter); int cancel_periodic_discovery(struct adapter *adapter); -int pending_remote_name_cancel(struct adapter *adapter); - -int handle_passkey_request(DBusConnection *conn, int dev, const char *path, - bdaddr_t *sba, bdaddr_t *dba); -int handle_confirm_request(DBusConnection *conn, int dev, const char *path, - bdaddr_t *sba, bdaddr_t *dba, const char *pin); -void release_default_agent(void); -void release_default_auth_agent(void); -void release_passkey_agents(struct adapter *adapter, bdaddr_t *bda); -void cancel_passkey_agent_requests(struct slist *agents, const char *path, bdaddr_t *dba); - -static inline DBusHandlerResult send_message_and_unref(DBusConnection *conn, DBusMessage *reply) -{ - if (reply) { - dbus_connection_send(conn, reply, NULL); - - dbus_message_unref(reply); - } - - return DBUS_HANDLER_RESULT_HANDLED; -} int active_conn_find_by_bdaddr(const void *data, const void *user_data); void bonding_request_free(struct bonding_request_info *dev); @@ -294,13 +50,4 @@ int found_device_req_name(struct adapter *dbus_data); int discov_timeout_handler(void *data); -uint16_t sdp_str2svclass(const char *str); -typedef void get_record_cb_t(sdp_record_t *rec, void *data, int err); -int get_record_with_uuid(DBusConnection *conn, DBusMessage *msg, - uint16_t dev_id, const char *dst, - const uuid_t *uuid, get_record_cb_t *cb, void *data); -int get_record_with_handle(DBusConnection *conn, DBusMessage *msg, - uint16_t dev_id, const char *dst, - uint32_t handle, get_record_cb_t *cb, void *data); - #endif /* __H_BLUEZ_DBUS_H__ */ |