/****************************************************************************
 ****************************************************************************
 ***
 ***   This header was automatically generated from a Linux kernel header
 ***   of the same name, to make information necessary for userspace to
 ***   call into the kernel available to libc.  It contains only constants,
 ***   structures, and macros generated from the original header, and thus,
 ***   contains no copyrightable information.
 ***
 ***   To edit the content of this header, modify the corresponding
 ***   source file (e.g. under external/kernel-headers/original/) then
 ***   run bionic/libc/kernel/tools/update_all.py
 ***
 ***   Any manual change here will be lost the next time this script will
 ***   be run. You've been warned!
 ***
 ****************************************************************************
 ****************************************************************************/
#ifndef KERNEL_IRDA_H
#define KERNEL_IRDA_H
#include <linux/types.h>
#include <linux/socket.h>
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define HINT_PNP 0x01
#define HINT_PDA 0x02
#define HINT_COMPUTER 0x04
#define HINT_PRINTER 0x08
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define HINT_MODEM 0x10
#define HINT_FAX 0x20
#define HINT_LAN 0x40
#define HINT_EXTENSION 0x80
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define HINT_TELEPHONY 0x01
#define HINT_FILE_SERVER 0x02
#define HINT_COMM 0x04
#define HINT_MESSAGE 0x08
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define HINT_HTTP 0x10
#define HINT_OBEX 0x20
#define CS_ASCII 0x00
#define CS_ISO_8859_1 0x01
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define CS_ISO_8859_2 0x02
#define CS_ISO_8859_3 0x03
#define CS_ISO_8859_4 0x04
#define CS_ISO_8859_5 0x05
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define CS_ISO_8859_6 0x06
#define CS_ISO_8859_7 0x07
#define CS_ISO_8859_8 0x08
#define CS_ISO_8859_9 0x09
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define CS_UNICODE 0xff
typedef enum {
  IRDA_TEKRAM_DONGLE = 0,
  IRDA_ESI_DONGLE = 1,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IRDA_ACTISYS_DONGLE = 2,
  IRDA_ACTISYS_PLUS_DONGLE = 3,
  IRDA_GIRBIL_DONGLE = 4,
  IRDA_LITELINK_DONGLE = 5,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IRDA_AIRPORT_DONGLE = 6,
  IRDA_OLD_BELKIN_DONGLE = 7,
  IRDA_EP7211_IR = 8,
  IRDA_MCP2120_DONGLE = 9,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IRDA_ACT200L_DONGLE = 10,
  IRDA_MA600_DONGLE = 11,
  IRDA_TOIM3232_DONGLE = 12,
  IRDA_EP7211_DONGLE = 13,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
} IRDA_DONGLE;
enum {
  IRDAPROTO_UNITDATA = 0,
  IRDAPROTO_ULTRA = 1,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IRDAPROTO_MAX
};
#define SOL_IRLMP 266
#define SOL_IRTTP 266
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IRLMP_ENUMDEVICES 1
#define IRLMP_IAS_SET 2
#define IRLMP_IAS_QUERY 3
#define IRLMP_HINTS_SET 4
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IRLMP_QOS_SET 5
#define IRLMP_QOS_GET 6
#define IRLMP_MAX_SDU_SIZE 7
#define IRLMP_IAS_GET 8
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IRLMP_IAS_DEL 9
#define IRLMP_HINT_MASK_SET 10
#define IRLMP_WAITDEVICE 11
#define IRTTP_MAX_SDU_SIZE IRLMP_MAX_SDU_SIZE
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IAS_MAX_STRING 256
#define IAS_MAX_OCTET_STRING 1024
#define IAS_MAX_CLASSNAME 60
#define IAS_MAX_ATTRIBNAME 60
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IAS_MAX_ATTRIBNUMBER 256
#define IAS_EXPORT_CLASSNAME 64
#define IAS_EXPORT_ATTRIBNAME 256
#define IAS_MISSING 0
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IAS_INTEGER 1
#define IAS_OCT_SEQ 2
#define IAS_STRING 3
#define LSAP_ANY 0xff
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
struct sockaddr_irda {
  __kernel_sa_family_t sir_family;
  __u8 sir_lsap_sel;
  __u32 sir_addr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char sir_name[25];
};
struct irda_device_info {
  __u32 saddr;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 daddr;
  char info[22];
  __u8 charset;
  __u8 hints[2];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct irda_device_list {
  __u32 len;
  struct irda_device_info dev[1];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
struct irda_ias_set {
  char irda_class_name[IAS_EXPORT_CLASSNAME];
  char irda_attrib_name[IAS_EXPORT_ATTRIBNAME];
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int irda_attrib_type;
  union {
    unsigned int irda_attrib_int;
    struct {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
      unsigned short len;
      __u8 octet_seq[IAS_MAX_OCTET_STRING];
    } irda_attrib_octet_seq;
    struct {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
      __u8 len;
      __u8 charset;
      __u8 string[IAS_MAX_STRING];
    } irda_attrib_string;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } attribute;
  __u32 daddr;
};
#define SIOCSDONGLE (SIOCDEVPRIVATE + 0)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SIOCGDONGLE (SIOCDEVPRIVATE + 1)
#define SIOCSBANDWIDTH (SIOCDEVPRIVATE + 2)
#define SIOCSMEDIABUSY (SIOCDEVPRIVATE + 3)
#define SIOCGMEDIABUSY (SIOCDEVPRIVATE + 4)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SIOCGRECEIVING (SIOCDEVPRIVATE + 5)
#define SIOCSMODE (SIOCDEVPRIVATE + 6)
#define SIOCGMODE (SIOCDEVPRIVATE + 7)
#define SIOCSDTRRTS (SIOCDEVPRIVATE + 8)
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define SIOCGQOS (SIOCDEVPRIVATE + 9)
#define IRNAMSIZ 16
struct if_irda_qos {
  unsigned long baudrate;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short data_size;
  unsigned short window_size;
  unsigned short min_turn_time;
  unsigned short max_turn_time;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char add_bofs;
  unsigned char link_disc;
};
struct if_irda_line {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 dtr;
  __u8 rts;
};
struct if_irda_req {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
    char ifrn_name[IRNAMSIZ];
  } ifr_ifrn;
  union {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    struct if_irda_line ifru_line;
    struct if_irda_qos ifru_qos;
    unsigned short ifru_flags;
    unsigned int ifru_receiving;
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    unsigned int ifru_mode;
    unsigned int ifru_dongle;
  } ifr_ifru;
};
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#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
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define ifr_dtr ifr_ifru.ifru_line.dtr
#define ifr_rts ifr_ifru.ifru_line.rts
#define IRDA_NL_NAME "irda"
#define IRDA_NL_VERSION 1
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
enum irda_nl_commands {
  IRDA_NL_CMD_UNSPEC,
  IRDA_NL_CMD_SET_MODE,
  IRDA_NL_CMD_GET_MODE,
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __IRDA_NL_CMD_AFTER_LAST
};
#define IRDA_NL_CMD_MAX (__IRDA_NL_CMD_AFTER_LAST - 1)
enum nl80211_attrs {
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IRDA_NL_ATTR_UNSPEC,
  IRDA_NL_ATTR_IFNAME,
  IRDA_NL_ATTR_MODE,
  __IRDA_NL_ATTR_AFTER_LAST
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
};
#define IRDA_NL_ATTR_MAX (__IRDA_NL_ATTR_AFTER_LAST - 1)
#define IRDA_MODE_PRIMARY 0x1
#define IRDA_MODE_SECONDARY 0x2
/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
#define IRDA_MODE_MONITOR 0x4
#endif
