diff options
Diffstat (limited to 'include/uapi/linux/irda.h')
| -rw-r--r-- | include/uapi/linux/irda.h | 251 | 
1 files changed, 251 insertions, 0 deletions
diff --git a/include/uapi/linux/irda.h b/include/uapi/linux/irda.h new file mode 100644 index 00000000000..a014c325231 --- /dev/null +++ b/include/uapi/linux/irda.h @@ -0,0 +1,251 @@ +/********************************************************************* + *                 + * Filename:      irda.h + * Version:        + * Description:    + * Status:        Experimental. + * Author:        Dag Brattli <dagb@cs.uit.no> + * Created at:    Mon Mar  8 14:06:12 1999 + * Modified at:   Sat Dec 25 16:06:42 1999 + * Modified by:   Dag Brattli <dagb@cs.uit.no> + *  + *     Copyright (c) 1999 Dag Brattli, All Rights Reserved. + *       + *     This program is free software; you can redistribute it and/or  + *     modify it under the terms of the GNU General Public License as  + *     published by the Free Software Foundation; either version 2 of  + *     the License, or (at your option) any later version. + *   + *     Neither Dag Brattli nor University of Tromsø admit liability nor + *     provide warranty for any of this software. This material is  + *     provided "AS-IS" and at no charge. + * + ********************************************************************/ + +#ifndef KERNEL_IRDA_H +#define KERNEL_IRDA_H + +#include <linux/types.h> +#include <linux/socket.h> + +/* Note that this file is shared with user space. */ + +/* Hint bit positions for first hint byte */ +#define HINT_PNP         0x01 +#define HINT_PDA         0x02 +#define HINT_COMPUTER    0x04 +#define HINT_PRINTER     0x08 +#define HINT_MODEM       0x10 +#define HINT_FAX         0x20 +#define HINT_LAN         0x40 +#define HINT_EXTENSION   0x80 + +/* Hint bit positions for second hint byte (first extension byte) */ +#define HINT_TELEPHONY   0x01 +#define HINT_FILE_SERVER 0x02 +#define HINT_COMM        0x04 +#define HINT_MESSAGE     0x08 +#define HINT_HTTP        0x10 +#define HINT_OBEX        0x20 + +/* IrLMP character code values */ +#define CS_ASCII         0x00 +#define	CS_ISO_8859_1    0x01 +#define	CS_ISO_8859_2    0x02 +#define	CS_ISO_8859_3    0x03 +#define	CS_ISO_8859_4    0x04 +#define	CS_ISO_8859_5    0x05 +#define	CS_ISO_8859_6    0x06 +#define	CS_ISO_8859_7    0x07 +#define	CS_ISO_8859_8    0x08 +#define	CS_ISO_8859_9    0x09 +#define CS_UNICODE       0xff + +/* These are the currently known dongles */ +typedef enum { +	IRDA_TEKRAM_DONGLE       = 0, +	IRDA_ESI_DONGLE          = 1, +	IRDA_ACTISYS_DONGLE      = 2, +	IRDA_ACTISYS_PLUS_DONGLE = 3, +	IRDA_GIRBIL_DONGLE       = 4, +	IRDA_LITELINK_DONGLE     = 5, +	IRDA_AIRPORT_DONGLE      = 6, +	IRDA_OLD_BELKIN_DONGLE   = 7, +	IRDA_EP7211_IR           = 8, +	IRDA_MCP2120_DONGLE      = 9, +	IRDA_ACT200L_DONGLE      = 10, +	IRDA_MA600_DONGLE        = 11, +	IRDA_TOIM3232_DONGLE     = 12, +	IRDA_EP7211_DONGLE       = 13, +} IRDA_DONGLE; + +/* Protocol types to be used for SOCK_DGRAM */ +enum { +	IRDAPROTO_UNITDATA = 0, +	IRDAPROTO_ULTRA    = 1, +	IRDAPROTO_MAX +}; + +#define SOL_IRLMP      266 /* Same as SOL_IRDA for now */ +#define SOL_IRTTP      266 /* Same as SOL_IRDA for now */ + +#define IRLMP_ENUMDEVICES        1	/* Return discovery log */ +#define IRLMP_IAS_SET            2	/* Set an attribute in local IAS */ +#define IRLMP_IAS_QUERY          3	/* Query remote IAS for attribute */ +#define IRLMP_HINTS_SET          4	/* Set hint bits advertised */ +#define IRLMP_QOS_SET            5 +#define IRLMP_QOS_GET            6 +#define IRLMP_MAX_SDU_SIZE       7 +#define IRLMP_IAS_GET            8	/* Get an attribute from local IAS */ +#define IRLMP_IAS_DEL		 9	/* Remove attribute from local IAS */ +#define IRLMP_HINT_MASK_SET	10	/* Set discovery filter */ +#define IRLMP_WAITDEVICE	11	/* Wait for a new discovery */ + +#define IRTTP_MAX_SDU_SIZE IRLMP_MAX_SDU_SIZE /* Compatibility */ + +#define IAS_MAX_STRING         256	/* See IrLMP 1.1, 4.3.3.2 */ +#define IAS_MAX_OCTET_STRING  1024	/* See IrLMP 1.1, 4.3.3.2 */ +#define IAS_MAX_CLASSNAME       60	/* See IrLMP 1.1, 4.3.1 */ +#define IAS_MAX_ATTRIBNAME      60	/* See IrLMP 1.1, 4.3.3.1 */ +#define IAS_MAX_ATTRIBNUMBER   256	/* See IrLMP 1.1, 4.3.3.1 */ +/* For user space backward compatibility - may be fixed in kernel 2.5.X + * Note : need 60+1 ('\0'), make it 64 for alignement - Jean II */ +#define IAS_EXPORT_CLASSNAME       64 +#define IAS_EXPORT_ATTRIBNAME     256 + +/* Attribute type needed for struct irda_ias_set */ +#define IAS_MISSING 0 +#define IAS_INTEGER 1 +#define IAS_OCT_SEQ 2 +#define IAS_STRING  3 + +#define LSAP_ANY              0xff + +struct sockaddr_irda { +	__kernel_sa_family_t sir_family; /* AF_IRDA */ +	__u8        sir_lsap_sel; /* LSAP selector */ +	__u32       sir_addr;     /* Device address */ +	char        sir_name[25]; /* Usually <service>:IrDA:TinyTP */ +}; + +struct irda_device_info { +	__u32       saddr;    /* Address of local interface */ +	__u32       daddr;    /* Address of remote device */ +	char        info[22]; /* Description */ +	__u8        charset;  /* Charset used for description */ +	__u8        hints[2]; /* Hint bits */ +}; + +struct irda_device_list { +       __u32 len; +       struct irda_device_info dev[1]; +}; + +struct irda_ias_set { +	char irda_class_name[IAS_EXPORT_CLASSNAME]; +	char irda_attrib_name[IAS_EXPORT_ATTRIBNAME]; +	unsigned int irda_attrib_type; +	union { +		unsigned int irda_attrib_int; +		struct { +			unsigned short len; +			__u8 octet_seq[IAS_MAX_OCTET_STRING]; +		} irda_attrib_octet_seq; +		struct { +			__u8 len; +			__u8 charset; +			__u8 string[IAS_MAX_STRING]; +		} irda_attrib_string; +	} attribute; +	__u32       daddr;    /* Address of device (for some queries only) */ +}; + +/* Some private IOCTL's (max 16) */ +#define SIOCSDONGLE    (SIOCDEVPRIVATE + 0) +#define SIOCGDONGLE    (SIOCDEVPRIVATE + 1) +#define SIOCSBANDWIDTH (SIOCDEVPRIVATE + 2) +#define SIOCSMEDIABUSY (SIOCDEVPRIVATE + 3) +#define SIOCGMEDIABUSY (SIOCDEVPRIVATE + 4) +#define SIOCGRECEIVING (SIOCDEVPRIVATE + 5) +#define SIOCSMODE      (SIOCDEVPRIVATE + 6) +#define SIOCGMODE      (SIOCDEVPRIVATE + 7) +#define SIOCSDTRRTS    (SIOCDEVPRIVATE + 8) +#define SIOCGQOS       (SIOCDEVPRIVATE + 9) + +/* No reason to include <linux/if.h> just because of this one ;-) */ +#define IRNAMSIZ 16  + +/* IrDA quality of service information (must not exceed 16 bytes) */ +struct if_irda_qos { +	unsigned long  baudrate; +	unsigned short data_size; +	unsigned short window_size; +	unsigned short min_turn_time; +	unsigned short max_turn_time; +	unsigned char  add_bofs; +	unsigned char  link_disc; +}; + +/* For setting RTS and DTR lines of a dongle */ +struct if_irda_line { +	__u8 dtr; +	__u8 rts; +}; + +/* IrDA interface configuration (data part must not exceed 16 bytes) */ +struct if_irda_req { +	union { +		char ifrn_name[IRNAMSIZ];  /* if name, e.g. "irda0" */ +	} ifr_ifrn; +	 +	/* Data part */ +	union { +		struct if_irda_line ifru_line; +		struct if_irda_qos  ifru_qos; +		unsigned short      ifru_flags; +		unsigned int        ifru_receiving; +		unsigned int        ifru_mode; +		unsigned int        ifru_dongle; +	} ifr_ifru; +}; + +#define ifr_baudrate  ifr_ifru.ifru_qos.baudrate +#define ifr_receiving ifr_ifru.ifru_receiving  +#define ifr_dongle    ifr_ifru.ifru_dongle +#define ifr_mode      ifr_ifru.ifru_mode +#define ifr_dtr       ifr_ifru.ifru_line.dtr +#define ifr_rts       ifr_ifru.ifru_line.rts + + +/* IrDA netlink definitions */ +#define IRDA_NL_NAME "irda" +#define IRDA_NL_VERSION 1 + +enum irda_nl_commands { +	IRDA_NL_CMD_UNSPEC, +	IRDA_NL_CMD_SET_MODE, +	IRDA_NL_CMD_GET_MODE, + +	__IRDA_NL_CMD_AFTER_LAST +}; +#define IRDA_NL_CMD_MAX (__IRDA_NL_CMD_AFTER_LAST - 1) + +enum nl80211_attrs { +	IRDA_NL_ATTR_UNSPEC, +	IRDA_NL_ATTR_IFNAME, +	IRDA_NL_ATTR_MODE, + +	__IRDA_NL_ATTR_AFTER_LAST +}; +#define IRDA_NL_ATTR_MAX (__IRDA_NL_ATTR_AFTER_LAST - 1) + +/* IrDA modes */ +#define IRDA_MODE_PRIMARY   0x1 +#define IRDA_MODE_SECONDARY 0x2 +#define IRDA_MODE_MONITOR   0x4 + +#endif /* KERNEL_IRDA_H */ + + + +  |