18b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann/*
28b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann *
38b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann *  BlueZ - Bluetooth protocol stack for Linux
48b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann *
59184e2eeb7b97371c6b83b747c8984e2340d2b47Marcel Holtmann *  Copyright (C) 2003-2010  Marcel Holtmann <marcel@holtmann.org>
68b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann *
78b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann *
88b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann *  This program is free software; you can redistribute it and/or modify
9c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  it under the terms of the GNU General Public License as published by
10c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  the Free Software Foundation; either version 2 of the License, or
11c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  (at your option) any later version.
128b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann *
13c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  This program is distributed in the hope that it will be useful,
14c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  GNU General Public License for more details.
178b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann *
18c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  You should have received a copy of the GNU General Public License
19c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  along with this program; if not, write to the Free Software
20c0d524486a50e8366c12c5ebea1a4441e9db46aaMarcel Holtmann *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
218b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann *
228b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann */
238b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann
248b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#ifndef __HIDP_H
258b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#define __HIDP_H
268b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann
278b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#ifdef __cplusplus
288b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmannextern "C" {
298b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#endif
308b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann
318b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann/* HIDP defaults */
328b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#define HIDP_MINIMUM_MTU 48
338b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#define HIDP_DEFAULT_MTU 48
348b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann
358b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann/* HIDP ioctl defines */
368b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#define HIDPCONNADD	_IOW('H', 200, int)
378b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#define HIDPCONNDEL	_IOW('H', 201, int)
388b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#define HIDPGETCONNLIST	_IOR('H', 210, int)
398b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#define HIDPGETCONNINFO	_IOR('H', 211, int)
408b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann
418b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#define HIDP_VIRTUAL_CABLE_UNPLUG	0
42a4a1f2b6249f30899c8226d15d9006d878cf55b5Marcel Holtmann#define HIDP_BOOT_PROTOCOL_MODE		1
43a4a1f2b6249f30899c8226d15d9006d878cf55b5Marcel Holtmann#define HIDP_BLUETOOTH_VENDOR_ID	9
448b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann
458b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmannstruct hidp_connadd_req {
468b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	int ctrl_sock;		/* Connected control socket */
478b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	int intr_sock;		/* Connected interrupt socket */
488b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	uint16_t parser;	/* Parser version */
498b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	uint16_t rd_size;	/* Report descriptor size */
508b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	uint8_t *rd_data;	/* Report descriptor data */
518b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	uint8_t  country;
52a4a1f2b6249f30899c8226d15d9006d878cf55b5Marcel Holtmann	uint8_t  subclass;
538b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	uint16_t vendor;
548b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	uint16_t product;
558b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	uint16_t version;
568b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	uint32_t flags;
578b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	uint32_t idle_to;
588b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	char name[128];		/* Device name */
598b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann};
608b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann
618b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmannstruct hidp_conndel_req {
628b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	bdaddr_t bdaddr;
638b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	uint32_t flags;
648b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann};
658b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann
668b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmannstruct hidp_conninfo {
678b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	bdaddr_t bdaddr;
688b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	uint32_t flags;
698b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	uint16_t state;
7055543cd15f83edbc560f45bd23adae86c511d7acMarcel Holtmann	uint16_t vendor;
7155543cd15f83edbc560f45bd23adae86c511d7acMarcel Holtmann	uint16_t product;
7255543cd15f83edbc560f45bd23adae86c511d7acMarcel Holtmann	uint16_t version;
7355543cd15f83edbc560f45bd23adae86c511d7acMarcel Holtmann	char name[128];
748b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann};
758b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann
768b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmannstruct hidp_connlist_req {
77113e48df05d54510646b3dcf33a1df2c60e3461fMarcel Holtmann	uint32_t cnum;
788b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann	struct hidp_conninfo *ci;
798b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann};
808b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann
818b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#ifdef __cplusplus
828b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann}
838b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#endif
848b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann
858b9071e009bb469a12095ae83178567d30e9177bMarcel Holtmann#endif /* __HIDP_H */
86