File: /usr/include/linux/irda.h

1     /*********************************************************************
2      *                
3      * Filename:      irda.h
4      * Version:       
5      * Description:   
6      * Status:        Experimental.
7      * Author:        Dag Brattli <dagb@cs.uit.no>
8      * Created at:    Mon Mar  8 14:06:12 1999
9      * Modified at:   Sat Dec 25 16:06:42 1999
10      * Modified by:   Dag Brattli <dagb@cs.uit.no>
11      * 
12      *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
13      *      
14      *     This program is free software; you can redistribute it and/or 
15      *     modify it under the terms of the GNU General Public License as 
16      *     published by the Free Software Foundation; either version 2 of 
17      *     the License, or (at your option) any later version.
18      *  
19      *     Neither Dag Brattli nor University of Tromsų admit liability nor
20      *     provide warranty for any of this software. This material is 
21      *     provided "AS-IS" and at no charge.
22      *
23      ********************************************************************/
24     
25     #ifndef KERNEL_IRDA_H
26     #define KERNEL_IRDA_H
27     
28     /* Hint bit positions for first hint byte */
29     #define HINT_PNP         0x01
30     #define HINT_PDA         0x02
31     #define HINT_COMPUTER    0x04
32     #define HINT_PRINTER     0x08
33     #define HINT_MODEM       0x10
34     #define HINT_FAX         0x20
35     #define HINT_LAN         0x40
36     #define HINT_EXTENSION   0x80
37     
38     /* Hint bit positions for second hint byte (first extension byte) */
39     #define HINT_TELEPHONY   0x01
40     #define HINT_FILE_SERVER 0x02
41     #define HINT_COMM        0x04
42     #define HINT_MESSAGE     0x08
43     #define HINT_HTTP        0x10
44     #define HINT_OBEX        0x20
45     
46     /* IrLMP character code values */
47     #define CS_ASCII         0x00
48     #define	CS_ISO_8859_1    0x01
49     #define	CS_ISO_8859_2    0x02
50     #define	CS_ISO_8859_3    0x03
51     #define	CS_ISO_8859_4    0x04
52     #define	CS_ISO_8859_5    0x05
53     #define	CS_ISO_8859_6    0x06
54     #define	CS_ISO_8859_7    0x07
55     #define	CS_ISO_8859_8    0x08
56     #define	CS_ISO_8859_9    0x09
57     #define CS_UNICODE       0xff
58     
59     /* These are the currently known dongles */
60     typedef enum {
61     	IRDA_TEKRAM_DONGLE       = 0,
62     	IRDA_ESI_DONGLE          = 1,
63     	IRDA_ACTISYS_DONGLE      = 2,
64     	IRDA_ACTISYS_PLUS_DONGLE = 3,
65     	IRDA_GIRBIL_DONGLE       = 4,
66     	IRDA_LITELINK_DONGLE     = 5,
67     	IRDA_AIRPORT_DONGLE      = 6,
68     	IRDA_OLD_BELKIN_DONGLE   = 7,
69     } IRDA_DONGLE;
70     
71     /* Protocol types to be used for SOCK_DGRAM */
72     enum {
73     	IRDAPROTO_UNITDATA = 0,
74     	IRDAPROTO_ULTRA    = 1,
75     	IRDAPROTO_MAX
76     };
77     
78     #define SOL_IRLMP      266 /* Same as SOL_IRDA for now */
79     #define SOL_IRTTP      266 /* Same as SOL_IRDA for now */
80     
81     #define IRLMP_ENUMDEVICES        1	/* Return discovery log */
82     #define IRLMP_IAS_SET            2	/* Set an attribute in local IAS */
83     #define IRLMP_IAS_QUERY          3	/* Query remote IAS for attribute */
84     #define IRLMP_HINTS_SET          4	/* Set hint bits advertised */
85     #define IRLMP_QOS_SET            5
86     #define IRLMP_QOS_GET            6
87     #define IRLMP_MAX_SDU_SIZE       7
88     #define IRLMP_IAS_GET            8	/* Get an attribute from local IAS */
89     #define IRLMP_IAS_DEL		 9	/* Remove attribute from local IAS */
90     #define IRLMP_HINT_MASK_SET	10	/* Set discovery filter */
91     #define IRLMP_WAITDEVICE	11	/* Wait for a new discovery */
92     
93     #define IRTTP_MAX_SDU_SIZE IRLMP_MAX_SDU_SIZE /* Compatibility */
94     
95     #define IAS_MAX_STRING         256
96     #define IAS_MAX_OCTET_STRING  1024
97     #define IAS_MAX_CLASSNAME       64
98     #define IAS_MAX_ATTRIBNAME     256
99     
100     /* Attribute type needed for struct irda_ias_set */
101     #define IAS_MISSING 0
102     #define IAS_INTEGER 1
103     #define IAS_OCT_SEQ 2
104     #define IAS_STRING  3
105     
106     #define LSAP_ANY              0xff
107     
108     struct sockaddr_irda {
109     	sa_family_t sir_family;   /* AF_IRDA */
110     	__u8        sir_lsap_sel; /* LSAP selector */
111     	__u32       sir_addr;     /* Device address */
112     	char        sir_name[25]; /* Usually <service>:IrDA:TinyTP */
113     };
114     
115     struct irda_device_info {
116     	__u32       saddr;    /* Address of local interface */
117     	__u32       daddr;    /* Address of remote device */
118     	char        info[22]; /* Description */
119     	__u8        charset;  /* Charset used for description */
120     	__u8        hints[2]; /* Hint bits */
121     };
122     
123     struct irda_device_list {
124            __u32 len;
125            struct irda_device_info dev[1];
126     };
127     
128     struct irda_ias_set {
129     	char irda_class_name[IAS_MAX_CLASSNAME];
130     	char irda_attrib_name[IAS_MAX_ATTRIBNAME];
131     	unsigned int irda_attrib_type;
132     	union {
133     		unsigned int irda_attrib_int;
134     		struct {
135     			unsigned short len;
136     			__u8 octet_seq[IAS_MAX_OCTET_STRING];
137     		} irda_attrib_octet_seq;
138     		struct {
139     			__u8 len;
140     			__u8 charset;
141     			__u8 string[IAS_MAX_STRING];
142     		} irda_attrib_string;
143     	} attribute;
144     	__u32       daddr;    /* Address of device (for some queries only) */
145     };
146     
147     /* Some private IOCTL's (max 16) */
148     #define SIOCSDONGLE    (SIOCDEVPRIVATE + 0)
149     #define SIOCGDONGLE    (SIOCDEVPRIVATE + 1)
150     #define SIOCSBANDWIDTH (SIOCDEVPRIVATE + 2)
151     #define SIOCSMEDIABUSY (SIOCDEVPRIVATE + 3)
152     #define SIOCGMEDIABUSY (SIOCDEVPRIVATE + 4)
153     #define SIOCGRECEIVING (SIOCDEVPRIVATE + 5)
154     #define SIOCSMODE      (SIOCDEVPRIVATE + 6)
155     #define SIOCGMODE      (SIOCDEVPRIVATE + 7)
156     #define SIOCSDTRRTS    (SIOCDEVPRIVATE + 8)
157     #define SIOCGQOS       (SIOCDEVPRIVATE + 9)
158     
159     /* No reason to include <linux/if.h> just because of this one ;-) */
160     #define IRNAMSIZ 16 
161     
162     /* IrDA quality of service information (must not exceed 16 bytes) */
163     struct if_irda_qos {
164     	unsigned long  baudrate;
165     	unsigned short data_size;
166     	unsigned short window_size;
167     	unsigned short min_turn_time;
168     	unsigned short max_turn_time;
169     	unsigned char  add_bofs;
170     	unsigned char  link_disc;
171     };
172     
173     /* For setting RTS and DTR lines of a dongle */
174     struct if_irda_line {
175     	__u8 dtr;
176     	__u8 rts;
177     };
178     
179     /* IrDA interface configuration (data part must not exceed 16 bytes) */
180     struct if_irda_req {
181     	union {
182     		char ifrn_name[IRNAMSIZ];  /* if name, e.g. "irda0" */
183     	} ifr_ifrn;
184     	
185     	/* Data part */
186     	union {
187     		struct if_irda_line ifru_line;
188     		struct if_irda_qos  ifru_qos;
189     		unsigned short      ifru_flags;
190     		unsigned int        ifru_receiving;
191     		unsigned int        ifru_mode;
192     		unsigned int        ifru_dongle;
193     	} ifr_ifru;
194     };
195     
196     #define ifr_baudrate  ifr_ifru.ifru_qos.baudrate
197     #define ifr_receiving ifr_ifru.ifru_receiving 
198     #define ifr_dongle    ifr_ifru.ifru_dongle
199     #define ifr_mode      ifr_ifru.ifru_mode
200     #define ifr_dtr       ifr_ifru.ifru_line.dtr
201     #define ifr_rts       ifr_ifru.ifru_line.rts
202     
203     #endif /* KERNEL_IRDA_H */
204     
205     
206     
207     
208