net/bluetooth/hidp/hidp.h

Source file repositories/reference/linux-study-clean/net/bluetooth/hidp/hidp.h

File Facts

System
Linux kernel
Corpus path
net/bluetooth/hidp/hidp.h
Extension
.h
Size
5182 bytes
Lines
190
Domain
Networking Core
Bucket
Sockets, Protocols, Packet Path, And Network Policy
Inferred role
Networking Core: implementation source
Status
source implementation candidate

Why This File Exists

Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.

Dependency Surface

Detected Declarations

Annotated Snippet

struct hidp_connadd_req {
	int   ctrl_sock;	/* Connected control socket */
	int   intr_sock;	/* Connected interrupt socket */
	__u16 parser;
	__u16 rd_size;
	__u8 __user *rd_data;
	__u8  country;
	__u8  subclass;
	__u16 vendor;
	__u16 product;
	__u16 version;
	__u32 flags;
	__u32 idle_to;
	char  name[128];
};

struct hidp_conndel_req {
	bdaddr_t bdaddr;
	__u32    flags;
};

struct hidp_conninfo {
	bdaddr_t bdaddr;
	__u32    flags;
	__u16    state;
	__u16    vendor;
	__u16    product;
	__u16    version;
	char     name[128];
};

struct hidp_connlist_req {
	__u32  cnum;
	struct hidp_conninfo __user *ci;
};

int hidp_connection_add(const struct hidp_connadd_req *req, struct socket *ctrl_sock, struct socket *intr_sock);
int hidp_connection_del(struct hidp_conndel_req *req);
int hidp_get_connlist(struct hidp_connlist_req *req);
int hidp_get_conninfo(struct hidp_conninfo *ci);

enum hidp_session_state {
	HIDP_SESSION_IDLING,
	HIDP_SESSION_PREPARING,
	HIDP_SESSION_RUNNING,
};

/* HIDP session defines */
struct hidp_session {
	struct list_head list;
	struct kref ref;

	/* runtime management */
	atomic_t state;
	wait_queue_head_t state_queue;
	atomic_t terminate;
	struct task_struct *task;
	unsigned long flags;

	/* connection management */
	bdaddr_t bdaddr;
	struct l2cap_conn *conn;
	struct l2cap_user user;
	struct socket *ctrl_sock;
	struct socket *intr_sock;
	struct sk_buff_head ctrl_transmit;
	struct sk_buff_head intr_transmit;
	uint ctrl_mtu;
	uint intr_mtu;
	unsigned long idle_to;

	/* device management */
	struct work_struct dev_init;
	struct input_dev *input;
	struct hid_device *hid;
	struct timer_list timer;

	/* Report descriptor */
	__u8 *rd_data;
	uint rd_size;

	/* session data */
	unsigned char keys[8];
	unsigned char leds;

	/* Used in hidp_get_raw_report() */
	int waiting_report_type; /* HIDP_DATA_RTYPE_* */
	int waiting_report_number; /* -1 for not numbered */
	struct mutex report_mutex;
	struct sk_buff *report_return;

Annotation

Implementation Notes