123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- /*********************************************************************
- *
- * 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 */
|