linux/include/linux/irda.h
<<
>>
Prefs
   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#include <linux/types.h>
  29#include <linux/socket.h>
  30
  31/* Note that this file is shared with user space. */
  32
  33/* Hint bit positions for first hint byte */
  34#define HINT_PNP         0x01
  35#define HINT_PDA         0x02
  36#define HINT_COMPUTER    0x04
  37#define HINT_PRINTER     0x08
  38#define HINT_MODEM       0x10
  39#define HINT_FAX         0x20
  40#define HINT_LAN         0x40
  41#define HINT_EXTENSION   0x80
  42
  43/* Hint bit positions for second hint byte (first extension byte) */
  44#define HINT_TELEPHONY   0x01
  45#define HINT_FILE_SERVER 0x02
  46#define HINT_COMM        0x04
  47#define HINT_MESSAGE     0x08
  48#define HINT_HTTP        0x10
  49#define HINT_OBEX        0x20
  50
  51/* IrLMP character code values */
  52#define CS_ASCII         0x00
  53#define CS_ISO_8859_1    0x01
  54#define CS_ISO_8859_2    0x02
  55#define CS_ISO_8859_3    0x03
  56#define CS_ISO_8859_4    0x04
  57#define CS_ISO_8859_5    0x05
  58#define CS_ISO_8859_6    0x06
  59#define CS_ISO_8859_7    0x07
  60#define CS_ISO_8859_8    0x08
  61#define CS_ISO_8859_9    0x09
  62#define CS_UNICODE       0xff
  63
  64/* These are the currently known dongles */
  65typedef enum {
  66        IRDA_TEKRAM_DONGLE       = 0,
  67        IRDA_ESI_DONGLE          = 1,
  68        IRDA_ACTISYS_DONGLE      = 2,
  69        IRDA_ACTISYS_PLUS_DONGLE = 3,
  70        IRDA_GIRBIL_DONGLE       = 4,
  71        IRDA_LITELINK_DONGLE     = 5,
  72        IRDA_AIRPORT_DONGLE      = 6,
  73        IRDA_OLD_BELKIN_DONGLE   = 7,
  74        IRDA_EP7211_IR           = 8,
  75        IRDA_MCP2120_DONGLE      = 9,
  76        IRDA_ACT200L_DONGLE      = 10,
  77        IRDA_MA600_DONGLE        = 11,
  78        IRDA_TOIM3232_DONGLE     = 12,
  79        IRDA_EP7211_DONGLE       = 13,
  80} IRDA_DONGLE;
  81
  82/* Protocol types to be used for SOCK_DGRAM */
  83enum {
  84        IRDAPROTO_UNITDATA = 0,
  85        IRDAPROTO_ULTRA    = 1,
  86        IRDAPROTO_MAX
  87};
  88
  89#define SOL_IRLMP      266 /* Same as SOL_IRDA for now */
  90#define SOL_IRTTP      266 /* Same as SOL_IRDA for now */
  91
  92#define IRLMP_ENUMDEVICES        1      /* Return discovery log */
  93#define IRLMP_IAS_SET            2      /* Set an attribute in local IAS */
  94#define IRLMP_IAS_QUERY          3      /* Query remote IAS for attribute */
  95#define IRLMP_HINTS_SET          4      /* Set hint bits advertised */
  96#define IRLMP_QOS_SET            5
  97#define IRLMP_QOS_GET            6
  98#define IRLMP_MAX_SDU_SIZE       7
  99#define IRLMP_IAS_GET            8      /* Get an attribute from local IAS */
 100#define IRLMP_IAS_DEL            9      /* Remove attribute from local IAS */
 101#define IRLMP_HINT_MASK_SET     10      /* Set discovery filter */
 102#define IRLMP_WAITDEVICE        11      /* Wait for a new discovery */
 103
 104#define IRTTP_MAX_SDU_SIZE IRLMP_MAX_SDU_SIZE /* Compatibility */
 105
 106#define IAS_MAX_STRING         256      /* See IrLMP 1.1, 4.3.3.2 */
 107#define IAS_MAX_OCTET_STRING  1024      /* See IrLMP 1.1, 4.3.3.2 */
 108#define IAS_MAX_CLASSNAME       60      /* See IrLMP 1.1, 4.3.1 */
 109#define IAS_MAX_ATTRIBNAME      60      /* See IrLMP 1.1, 4.3.3.1 */
 110#define IAS_MAX_ATTRIBNUMBER   256      /* See IrLMP 1.1, 4.3.3.1 */
 111/* For user space backward compatibility - may be fixed in kernel 2.5.X
 112 * Note : need 60+1 ('\0'), make it 64 for alignement - Jean II */
 113#define IAS_EXPORT_CLASSNAME       64
 114#define IAS_EXPORT_ATTRIBNAME     256
 115
 116/* Attribute type needed for struct irda_ias_set */
 117#define IAS_MISSING 0
 118#define IAS_INTEGER 1
 119#define IAS_OCT_SEQ 2
 120#define IAS_STRING  3
 121
 122#define LSAP_ANY              0xff
 123
 124struct sockaddr_irda {
 125        __kernel_sa_family_t sir_family; /* AF_IRDA */
 126        __u8        sir_lsap_sel; /* LSAP selector */
 127        __u32       sir_addr;     /* Device address */
 128        char        sir_name[25]; /* Usually <service>:IrDA:TinyTP */
 129};
 130
 131struct irda_device_info {
 132        __u32       saddr;    /* Address of local interface */
 133        __u32       daddr;    /* Address of remote device */
 134        char        info[22]; /* Description */
 135        __u8        charset;  /* Charset used for description */
 136        __u8        hints[2]; /* Hint bits */
 137};
 138
 139struct irda_device_list {
 140       __u32 len;
 141       struct irda_device_info dev[1];
 142};
 143
 144struct irda_ias_set {
 145        char irda_class_name[IAS_EXPORT_CLASSNAME];
 146        char irda_attrib_name[IAS_EXPORT_ATTRIBNAME];
 147        unsigned int irda_attrib_type;
 148        union {
 149                unsigned int irda_attrib_int;
 150                struct {
 151                        unsigned short len;
 152                        __u8 octet_seq[IAS_MAX_OCTET_STRING];
 153                } irda_attrib_octet_seq;
 154                struct {
 155                        __u8 len;
 156                        __u8 charset;
 157                        __u8 string[IAS_MAX_STRING];
 158                } irda_attrib_string;
 159        } attribute;
 160        __u32       daddr;    /* Address of device (for some queries only) */
 161};
 162
 163/* Some private IOCTL's (max 16) */
 164#define SIOCSDONGLE    (SIOCDEVPRIVATE + 0)
 165#define SIOCGDONGLE    (SIOCDEVPRIVATE + 1)
 166#define SIOCSBANDWIDTH (SIOCDEVPRIVATE + 2)
 167#define SIOCSMEDIABUSY (SIOCDEVPRIVATE + 3)
 168#define SIOCGMEDIABUSY (SIOCDEVPRIVATE + 4)
 169#define SIOCGRECEIVING (SIOCDEVPRIVATE + 5)
 170#define SIOCSMODE      (SIOCDEVPRIVATE + 6)
 171#define SIOCGMODE      (SIOCDEVPRIVATE + 7)
 172#define SIOCSDTRRTS    (SIOCDEVPRIVATE + 8)
 173#define SIOCGQOS       (SIOCDEVPRIVATE + 9)
 174
 175/* No reason to include <linux/if.h> just because of this one ;-) */
 176#define IRNAMSIZ 16 
 177
 178/* IrDA quality of service information (must not exceed 16 bytes) */
 179struct if_irda_qos {
 180        unsigned long  baudrate;
 181        unsigned short data_size;
 182        unsigned short window_size;
 183        unsigned short min_turn_time;
 184        unsigned short max_turn_time;
 185        unsigned char  add_bofs;
 186        unsigned char  link_disc;
 187};
 188
 189/* For setting RTS and DTR lines of a dongle */
 190struct if_irda_line {
 191        __u8 dtr;
 192        __u8 rts;
 193};
 194
 195/* IrDA interface configuration (data part must not exceed 16 bytes) */
 196struct if_irda_req {
 197        union {
 198                char ifrn_name[IRNAMSIZ];  /* if name, e.g. "irda0" */
 199        } ifr_ifrn;
 200        
 201        /* Data part */
 202        union {
 203                struct if_irda_line ifru_line;
 204                struct if_irda_qos  ifru_qos;
 205                unsigned short      ifru_flags;
 206                unsigned int        ifru_receiving;
 207                unsigned int        ifru_mode;
 208                unsigned int        ifru_dongle;
 209        } ifr_ifru;
 210};
 211
 212#define ifr_baudrate  ifr_ifru.ifru_qos.baudrate
 213#define ifr_receiving ifr_ifru.ifru_receiving 
 214#define ifr_dongle    ifr_ifru.ifru_dongle
 215#define ifr_mode      ifr_ifru.ifru_mode
 216#define ifr_dtr       ifr_ifru.ifru_line.dtr
 217#define ifr_rts       ifr_ifru.ifru_line.rts
 218
 219
 220/* IrDA netlink definitions */
 221#define IRDA_NL_NAME "irda"
 222#define IRDA_NL_VERSION 1
 223
 224enum irda_nl_commands {
 225        IRDA_NL_CMD_UNSPEC,
 226        IRDA_NL_CMD_SET_MODE,
 227        IRDA_NL_CMD_GET_MODE,
 228
 229        __IRDA_NL_CMD_AFTER_LAST
 230};
 231#define IRDA_NL_CMD_MAX (__IRDA_NL_CMD_AFTER_LAST - 1)
 232
 233enum nl80211_attrs {
 234        IRDA_NL_ATTR_UNSPEC,
 235        IRDA_NL_ATTR_IFNAME,
 236        IRDA_NL_ATTR_MODE,
 237
 238        __IRDA_NL_ATTR_AFTER_LAST
 239};
 240#define IRDA_NL_ATTR_MAX (__IRDA_NL_ATTR_AFTER_LAST - 1)
 241
 242/* IrDA modes */
 243#define IRDA_MODE_PRIMARY   0x1
 244#define IRDA_MODE_SECONDARY 0x2
 245#define IRDA_MODE_MONITOR   0x4
 246
 247#endif /* KERNEL_IRDA_H */
 248
 249
 250
 251
 252