home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / usb / association.h next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  4.3 KB  |  151 lines

  1. /*
  2.  * Wireless USB - Cable Based Association
  3.  *
  4.  * Copyright (C) 2006 Intel Corporation
  5.  * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
  6.  *
  7.  * This program is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU General Public License version
  9.  * 2 as published by the Free Software Foundation.
  10.  *
  11.  */
  12. #ifndef __LINUX_USB_ASSOCIATION_H
  13. #define __LINUX_USB_ASSOCIATION_H
  14.  
  15.  
  16. /*
  17.  * Association attributes
  18.  *
  19.  * Association Models Supplement to WUSB 1.0 T[3-1]
  20.  *
  21.  * Each field in the structures has it's ID, it's length and then the
  22.  * value. This is the actual definition of the field's ID and its
  23.  * length.
  24.  */
  25. struct wusb_am_attr {
  26.     __u8 id;
  27.     __u8 len;
  28. };
  29.  
  30. /* Different fields defined by the spec */
  31. #define WUSB_AR_AssociationTypeId    { .id = 0x0000, .len =  2 }
  32. #define WUSB_AR_AssociationSubTypeId    { .id = 0x0001, .len =  2 }
  33. #define WUSB_AR_Length            { .id = 0x0002, .len =  4 }
  34. #define WUSB_AR_AssociationStatus    { .id = 0x0004, .len =  4 }
  35. #define WUSB_AR_LangID            { .id = 0x0008, .len =  2 }
  36. #define WUSB_AR_DeviceFriendlyName    { .id = 0x000b, .len = 64 } /* max */
  37. #define WUSB_AR_HostFriendlyName    { .id = 0x000c, .len = 64 } /* max */
  38. #define WUSB_AR_CHID            { .id = 0x1000, .len = 16 }
  39. #define WUSB_AR_CDID            { .id = 0x1001, .len = 16 }
  40. #define WUSB_AR_ConnectionContext    { .id = 0x1002, .len = 48 }
  41. #define WUSB_AR_BandGroups        { .id = 0x1004, .len =  2 }
  42.  
  43. /* CBAF Control Requests (AMS1.0[T4-1] */
  44. enum {
  45.     CBAF_REQ_GET_ASSOCIATION_INFORMATION = 0x01,
  46.     CBAF_REQ_GET_ASSOCIATION_REQUEST,
  47.     CBAF_REQ_SET_ASSOCIATION_RESPONSE
  48. };
  49.  
  50. /*
  51.  * CBAF USB-interface defitions
  52.  *
  53.  * No altsettings, one optional interrupt endpoint.
  54.  */
  55. enum {
  56.     CBAF_IFACECLASS    = 0xef,
  57.     CBAF_IFACESUBCLASS = 0x03,
  58.     CBAF_IFACEPROTOCOL = 0x01,
  59. };
  60.  
  61. /* Association Information (AMS1.0[T4-3]) */
  62. struct wusb_cbaf_assoc_info {
  63.     __le16 Length;
  64.     __u8 NumAssociationRequests;
  65.     __le16 Flags;
  66.     __u8 AssociationRequestsArray[];
  67. } __attribute__((packed));
  68.  
  69. /* Association Request (AMS1.0[T4-4]) */
  70. struct wusb_cbaf_assoc_request {
  71.     __u8 AssociationDataIndex;
  72.     __u8 Reserved;
  73.     __le16 AssociationTypeId;
  74.     __le16 AssociationSubTypeId;
  75.     __le32 AssociationTypeInfoSize;
  76. } __attribute__((packed));
  77.  
  78. enum {
  79.     AR_TYPE_WUSB                    = 0x0001,
  80.     AR_TYPE_WUSB_RETRIEVE_HOST_INFO = 0x0000,
  81.     AR_TYPE_WUSB_ASSOCIATE          = 0x0001,
  82. };
  83.  
  84. /* Association Attribute header (AMS1.0[3.8]) */
  85. struct wusb_cbaf_attr_hdr {
  86.     __le16 id;
  87.     __le16 len;
  88. } __attribute__((packed));
  89.  
  90. /* Host Info (AMS1.0[T4-7]) (yeah, more headers and fields...) */
  91. struct wusb_cbaf_host_info {
  92.     struct wusb_cbaf_attr_hdr AssociationTypeId_hdr;
  93.     __le16 AssociationTypeId;
  94.     struct wusb_cbaf_attr_hdr AssociationSubTypeId_hdr;
  95.     __le16 AssociationSubTypeId;
  96.     struct wusb_cbaf_attr_hdr CHID_hdr;
  97.     struct wusb_ckhdid CHID;
  98.     struct wusb_cbaf_attr_hdr LangID_hdr;
  99.     __le16 LangID;
  100.     struct wusb_cbaf_attr_hdr HostFriendlyName_hdr;
  101.     __u8 HostFriendlyName[];
  102. } __attribute__((packed));
  103.  
  104. /* Device Info (AMS1.0[T4-8])
  105.  *
  106.  * I still don't get this tag'n'header stuff for each goddamn
  107.  * field...
  108.  */
  109. struct wusb_cbaf_device_info {
  110.     struct wusb_cbaf_attr_hdr Length_hdr;
  111.     __le32 Length;
  112.     struct wusb_cbaf_attr_hdr CDID_hdr;
  113.     struct wusb_ckhdid CDID;
  114.     struct wusb_cbaf_attr_hdr BandGroups_hdr;
  115.     __le16 BandGroups;
  116.     struct wusb_cbaf_attr_hdr LangID_hdr;
  117.     __le16 LangID;
  118.     struct wusb_cbaf_attr_hdr DeviceFriendlyName_hdr;
  119.     __u8 DeviceFriendlyName[];
  120. } __attribute__((packed));
  121.  
  122. /* Connection Context; CC_DATA - Success case (AMS1.0[T4-9]) */
  123. struct wusb_cbaf_cc_data {
  124.     struct wusb_cbaf_attr_hdr AssociationTypeId_hdr;
  125.     __le16 AssociationTypeId;
  126.     struct wusb_cbaf_attr_hdr AssociationSubTypeId_hdr;
  127.     __le16 AssociationSubTypeId;
  128.     struct wusb_cbaf_attr_hdr Length_hdr;
  129.     __le32 Length;
  130.     struct wusb_cbaf_attr_hdr ConnectionContext_hdr;
  131.     struct wusb_ckhdid CHID;
  132.     struct wusb_ckhdid CDID;
  133.     struct wusb_ckhdid CK;
  134.     struct wusb_cbaf_attr_hdr BandGroups_hdr;
  135.     __le16 BandGroups;
  136. } __attribute__((packed));
  137.  
  138. /* CC_DATA - Failure case (AMS1.0[T4-10]) */
  139. struct wusb_cbaf_cc_data_fail {
  140.     struct wusb_cbaf_attr_hdr AssociationTypeId_hdr;
  141.     __le16 AssociationTypeId;
  142.     struct wusb_cbaf_attr_hdr AssociationSubTypeId_hdr;
  143.     __le16 AssociationSubTypeId;
  144.     struct wusb_cbaf_attr_hdr Length_hdr;
  145.     __le16 Length;
  146.     struct wusb_cbaf_attr_hdr AssociationStatus_hdr;
  147.     __u32 AssociationStatus;
  148. } __attribute__((packed));
  149.  
  150. #endif    /* __LINUX_USB_ASSOCIATION_H */
  151.