home *** CD-ROM | disk | FTP | other *** search
- /*
- * Wireless USB - Cable Based Association
- *
- * Copyright (C) 2006 Intel Corporation
- * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License version
- * 2 as published by the Free Software Foundation.
- *
- */
- #ifndef __LINUX_USB_ASSOCIATION_H
- #define __LINUX_USB_ASSOCIATION_H
-
-
- /*
- * Association attributes
- *
- * Association Models Supplement to WUSB 1.0 T[3-1]
- *
- * Each field in the structures has it's ID, it's length and then the
- * value. This is the actual definition of the field's ID and its
- * length.
- */
- struct wusb_am_attr {
- __u8 id;
- __u8 len;
- };
-
- /* Different fields defined by the spec */
- #define WUSB_AR_AssociationTypeId { .id = 0x0000, .len = 2 }
- #define WUSB_AR_AssociationSubTypeId { .id = 0x0001, .len = 2 }
- #define WUSB_AR_Length { .id = 0x0002, .len = 4 }
- #define WUSB_AR_AssociationStatus { .id = 0x0004, .len = 4 }
- #define WUSB_AR_LangID { .id = 0x0008, .len = 2 }
- #define WUSB_AR_DeviceFriendlyName { .id = 0x000b, .len = 64 } /* max */
- #define WUSB_AR_HostFriendlyName { .id = 0x000c, .len = 64 } /* max */
- #define WUSB_AR_CHID { .id = 0x1000, .len = 16 }
- #define WUSB_AR_CDID { .id = 0x1001, .len = 16 }
- #define WUSB_AR_ConnectionContext { .id = 0x1002, .len = 48 }
- #define WUSB_AR_BandGroups { .id = 0x1004, .len = 2 }
-
- /* CBAF Control Requests (AMS1.0[T4-1] */
- enum {
- CBAF_REQ_GET_ASSOCIATION_INFORMATION = 0x01,
- CBAF_REQ_GET_ASSOCIATION_REQUEST,
- CBAF_REQ_SET_ASSOCIATION_RESPONSE
- };
-
- /*
- * CBAF USB-interface defitions
- *
- * No altsettings, one optional interrupt endpoint.
- */
- enum {
- CBAF_IFACECLASS = 0xef,
- CBAF_IFACESUBCLASS = 0x03,
- CBAF_IFACEPROTOCOL = 0x01,
- };
-
- /* Association Information (AMS1.0[T4-3]) */
- struct wusb_cbaf_assoc_info {
- __le16 Length;
- __u8 NumAssociationRequests;
- __le16 Flags;
- __u8 AssociationRequestsArray[];
- } __attribute__((packed));
-
- /* Association Request (AMS1.0[T4-4]) */
- struct wusb_cbaf_assoc_request {
- __u8 AssociationDataIndex;
- __u8 Reserved;
- __le16 AssociationTypeId;
- __le16 AssociationSubTypeId;
- __le32 AssociationTypeInfoSize;
- } __attribute__((packed));
-
- enum {
- AR_TYPE_WUSB = 0x0001,
- AR_TYPE_WUSB_RETRIEVE_HOST_INFO = 0x0000,
- AR_TYPE_WUSB_ASSOCIATE = 0x0001,
- };
-
- /* Association Attribute header (AMS1.0[3.8]) */
- struct wusb_cbaf_attr_hdr {
- __le16 id;
- __le16 len;
- } __attribute__((packed));
-
- /* Host Info (AMS1.0[T4-7]) (yeah, more headers and fields...) */
- struct wusb_cbaf_host_info {
- struct wusb_cbaf_attr_hdr AssociationTypeId_hdr;
- __le16 AssociationTypeId;
- struct wusb_cbaf_attr_hdr AssociationSubTypeId_hdr;
- __le16 AssociationSubTypeId;
- struct wusb_cbaf_attr_hdr CHID_hdr;
- struct wusb_ckhdid CHID;
- struct wusb_cbaf_attr_hdr LangID_hdr;
- __le16 LangID;
- struct wusb_cbaf_attr_hdr HostFriendlyName_hdr;
- __u8 HostFriendlyName[];
- } __attribute__((packed));
-
- /* Device Info (AMS1.0[T4-8])
- *
- * I still don't get this tag'n'header stuff for each goddamn
- * field...
- */
- struct wusb_cbaf_device_info {
- struct wusb_cbaf_attr_hdr Length_hdr;
- __le32 Length;
- struct wusb_cbaf_attr_hdr CDID_hdr;
- struct wusb_ckhdid CDID;
- struct wusb_cbaf_attr_hdr BandGroups_hdr;
- __le16 BandGroups;
- struct wusb_cbaf_attr_hdr LangID_hdr;
- __le16 LangID;
- struct wusb_cbaf_attr_hdr DeviceFriendlyName_hdr;
- __u8 DeviceFriendlyName[];
- } __attribute__((packed));
-
- /* Connection Context; CC_DATA - Success case (AMS1.0[T4-9]) */
- struct wusb_cbaf_cc_data {
- struct wusb_cbaf_attr_hdr AssociationTypeId_hdr;
- __le16 AssociationTypeId;
- struct wusb_cbaf_attr_hdr AssociationSubTypeId_hdr;
- __le16 AssociationSubTypeId;
- struct wusb_cbaf_attr_hdr Length_hdr;
- __le32 Length;
- struct wusb_cbaf_attr_hdr ConnectionContext_hdr;
- struct wusb_ckhdid CHID;
- struct wusb_ckhdid CDID;
- struct wusb_ckhdid CK;
- struct wusb_cbaf_attr_hdr BandGroups_hdr;
- __le16 BandGroups;
- } __attribute__((packed));
-
- /* CC_DATA - Failure case (AMS1.0[T4-10]) */
- struct wusb_cbaf_cc_data_fail {
- struct wusb_cbaf_attr_hdr AssociationTypeId_hdr;
- __le16 AssociationTypeId;
- struct wusb_cbaf_attr_hdr AssociationSubTypeId_hdr;
- __le16 AssociationSubTypeId;
- struct wusb_cbaf_attr_hdr Length_hdr;
- __le16 Length;
- struct wusb_cbaf_attr_hdr AssociationStatus_hdr;
- __u32 AssociationStatus;
- } __attribute__((packed));
-
- #endif /* __LINUX_USB_ASSOCIATION_H */
-