11619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* ----------------------------------------------------------------------------- 21619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly * Copyright (c) 2011 Ozmo Inc 31619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly * Released under the GNU General Public License Version 2 (GPLv2). 41619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly * ----------------------------------------------------------------------------- 51619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 61619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#ifndef _OZPROTOCOL_H 71619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define _OZPROTOCOL_H 81619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 91619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define PACKED __packed 101619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 111619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_ETHERTYPE 0x892e 121619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 131619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* Status codes 141619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 151619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_STATUS_SUCCESS 0 161619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_STATUS_INVALID_PARAM 1 171619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_STATUS_TOO_MANY_PDS 2 181619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_STATUS_NOT_ALLOWED 4 191619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_STATUS_SESSION_MISMATCH 5 201619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_STATUS_SESSION_TEARDOWN 6 211619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 221619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* This is the generic element header. 231619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly Every element starts with this. 241619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 251619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_elt { 261619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 271619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 length; 281619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 291619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 301619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define oz_next_elt(__elt) \ 311619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly (struct oz_elt *)((u8 *)((__elt) + 1) + (__elt)->length) 321619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 331619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* Protocol element IDs. 341619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 351619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_ELT_CONNECT_REQ 0x06 361619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_ELT_CONNECT_RSP 0x07 371619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_ELT_DISCONNECT 0x08 381619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_ELT_UPDATE_PARAM_REQ 0x11 391619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_ELT_FAREWELL_REQ 0x12 401619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_ELT_APP_DATA 0x31 411619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 421619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* This is the Ozmo header which is the first Ozmo specific part 431619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly * of a frame and comes after the MAC header. 441619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 451619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_hdr { 461619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 control; 471619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 last_pkt_num; 481619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u32 pkt_num; 491619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 501619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 511619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_PROTOCOL_VERSION 0x1 521619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* Bits in the control field. */ 531619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_VERSION_MASK 0xc 541619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_VERSION_SHIFT 2 551619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_F_ACK 0x10 561619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_F_ISOC 0x20 571619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_F_MORE_DATA 0x40 581619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_F_ACK_REQUESTED 0x80 591619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 601619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define oz_get_prot_ver(__x) (((__x) & OZ_VERSION_MASK) >> OZ_VERSION_SHIFT) 611619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 621619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* Used to select the bits of packet number to put in the last_pkt_num. 631619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 641619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_LAST_PN_MASK 0x00ff 651619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 661619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_LAST_PN_HALF_CYCLE 127 671619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 681619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* Connect request data structure. 691619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 701619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_elt_connect_req { 711619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 mode; 721619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 resv1[16]; 731619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 pd_info; 741619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 session_id; 751619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 presleep; 761619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 resv2; 771619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 host_vendor; 781619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 keep_alive; 791619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u16 apps; 801619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 max_len_div16; 811619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 ms_per_isoc; 821619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 resv3[2]; 831619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 841619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 851619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* mode field bits. 861619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 871619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_MODE_POLLED 0x0 881619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_MODE_TRIGGERED 0x1 891619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_MODE_MASK 0xf 901619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_F_ISOC_NO_ELTS 0x40 911619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_F_ISOC_ANYTIME 0x80 921619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 931619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* Keep alive field. 941619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 951619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_KALIVE_TYPE_MASK 0xc0 961619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_KALIVE_VALUE_MASK 0x3f 971619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_KALIVE_SPECIAL 0x00 981619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_KALIVE_SECS 0x40 991619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_KALIVE_MINS 0x80 1001619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_KALIVE_HOURS 0xc0 1011619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 1021619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* Connect response data structure. 1031619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 1041619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_elt_connect_rsp { 1051619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 mode; 1061619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 status; 1071619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 resv1[3]; 1081619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 session_id; 1091619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u16 apps; 1101619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u32 resv2; 1111619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 1121619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 1131619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_elt_farewell { 1141619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 ep_num; 1151619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 index; 1161619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 report[1]; 1171619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 1181619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 1191619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_elt_update_param { 1201619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 resv1[16]; 1211619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 presleep; 1221619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 resv2; 1231619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 host_vendor; 1241619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 keepalive; 1251619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 1261619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 1271619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* Header common to all application elements. 1281619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 1291619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_app_hdr { 1301619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 1311619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 1321619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 1331619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 1341619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* Values for app_id. 1351619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 1361619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_APPID_USB 0x1 1371619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_APPID_UNUSED1 0x2 1381619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_APPID_UNUSED2 0x3 1391619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_APPID_SERIAL 0x4 1401619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_APPID_MAX OZ_APPID_SERIAL 1411619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_NB_APPS (OZ_APPID_MAX+1) 1421619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 1431619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* USB header common to all elements for the USB application. 1441619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly * This header extends the oz_app_hdr and comes directly after 1451619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly * the element header in a USB application. 1461619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 1471619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_usb_hdr { 1481619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 1491619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 1501619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 1511619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 1521619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 1531619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 1541619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 1551619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* USB requests element subtypes (type field of hs_usb_hdr). 1561619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 1571619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_GET_DESC_REQ 1 1581619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_GET_DESC_RSP 2 1591619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_SET_CONFIG_REQ 3 1601619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_SET_CONFIG_RSP 4 1611619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_SET_INTERFACE_REQ 5 1621619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_SET_INTERFACE_RSP 6 1631619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_VENDOR_CLASS_REQ 7 1641619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_VENDOR_CLASS_RSP 8 1651619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_GET_STATUS_REQ 9 1661619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_GET_STATUS_RSP 10 1671619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_CLEAR_FEATURE_REQ 11 1681619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_CLEAR_FEATURE_RSP 12 1691619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_SET_FEATURE_REQ 13 1701619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_SET_FEATURE_RSP 14 1711619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_GET_CONFIGURATION_REQ 15 1721619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_GET_CONFIGURATION_RSP 16 1731619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_GET_INTERFACE_REQ 17 1741619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_GET_INTERFACE_RSP 18 1751619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_SYNCH_FRAME_REQ 19 1761619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_SYNCH_FRAME_RSP 20 1771619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_USB_ENDPOINT_DATA 23 1781619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 1791619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_REQD_D2H 0x80 1801619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 1811619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_get_desc_req { 1821619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 1831619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 1841619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 1851619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_id; 1861619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u16 offset; 1871619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u16 size; 1881619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_type; 1891619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 desc_type; 1901619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u16 w_index; 1911619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 index; 1921619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 1931619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 1941619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* Values for desc_type field. 1951619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly*/ 1961619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_DESC_DEVICE 0x01 1971619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_DESC_CONFIG 0x02 1981619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_DESC_STRING 0x03 1991619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 2001619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* Values for req_type field. 2011619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 2021619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_RECP_MASK 0x1F 2031619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_RECP_DEVICE 0x00 2041619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_RECP_INTERFACE 0x01 2051619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_RECP_ENDPOINT 0x02 2061619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 2071619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_REQT_MASK 0x60 2081619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_REQT_STD 0x00 2091619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_REQT_CLASS 0x20 2101619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_REQT_VENDOR 0x40 2111619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 2121619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_get_desc_rsp { 2131619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 2141619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 2151619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 2161619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_id; 2171619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u16 offset; 2181619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u16 total_size; 2191619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 rcode; 2201619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 data[1]; 2211619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 2221619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 2231619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_feature_req { 2241619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 2251619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 2261619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 2271619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_id; 2281619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 recipient; 2291619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 index; 2301619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u16 feature; 2311619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 2321619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 2331619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_feature_rsp { 2341619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 2351619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 2361619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 2371619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_id; 2381619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 rcode; 2391619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 2401619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 2411619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_set_config_req { 2421619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 2431619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 2441619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 2451619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_id; 2461619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 index; 2471619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 2481619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 2491619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_set_config_rsp { 2501619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 2511619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 2521619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 2531619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_id; 2541619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 rcode; 2551619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 2561619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 2571619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_set_interface_req { 2581619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 2591619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 2601619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 2611619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_id; 2621619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 index; 2631619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 alternative; 2641619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 2651619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 2661619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_set_interface_rsp { 2671619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 2681619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 2691619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 2701619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_id; 2711619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 rcode; 2721619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 2731619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 2741619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_get_interface_req { 2751619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 2761619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 2771619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 2781619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_id; 2791619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 index; 2801619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 2811619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 2821619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_get_interface_rsp { 2831619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 2841619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 2851619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 2861619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_id; 2871619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 rcode; 2881619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 alternative; 2891619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 2901619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 2911619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_vendor_class_req { 2921619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 2931619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 2941619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 2951619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_id; 2961619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_type; 2971619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 request; 2981619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u16 value; 2991619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u16 index; 3001619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 data[1]; 3011619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 3021619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 3031619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_vendor_class_rsp { 3041619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 3051619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 3061619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 3071619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 req_id; 3081619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 rcode; 3091619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 data[1]; 3101619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 3111619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 3121619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_data { 3131619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 3141619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 3151619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 3161619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 endpoint; 3171619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 format; 3181619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 3191619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 3201619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_isoc_fixed { 3211619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 3221619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 3231619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 3241619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 endpoint; 3251619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 format; 3261619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 unit_size; 3271619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 frame_number; 3281619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 data[1]; 3291619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 3301619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 3311619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_multiple_fixed { 3321619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 3331619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 3341619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 3351619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 endpoint; 3361619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 format; 3371619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 unit_size; 3381619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 data[1]; 3391619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 3401619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 3411619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_fragmented { 3421619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 app_id; 3431619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 elt_seq_num; 3441619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 type; 3451619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 endpoint; 3461619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 format; 3471619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u16 total_size; 3481619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u16 offset; 3491619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 data[1]; 3501619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 3511619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 3521619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly/* Note: the following does not get packaged in an element in the same way 3531619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly * that other data formats are packaged. Instead the data is put in a frame 3541619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly * directly after the oz_header and is the only permitted data in such a 3551619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly * frame. The length of the data is directly determined from the frame size. 3561619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly */ 3571619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kellystruct oz_isoc_large { 3581619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 endpoint; 3591619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 format; 3601619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 ms_data; 3611619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly u8 frame_number; 3621619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly} PACKED; 3631619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 3641619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_DATA_F_TYPE_MASK 0xF 3651619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_DATA_F_MULTIPLE_FIXED 0x1 3661619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_DATA_F_MULTIPLE_VAR 0x2 3671619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_DATA_F_ISOC_FIXED 0x3 3681619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_DATA_F_ISOC_VAR 0x4 3691619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_DATA_F_FRAGMENTED 0x5 3701619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#define OZ_DATA_F_ISOC_LARGE 0x7 3711619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly 3721619cb6f2dd9674491e5772bf37b45e03666dc10Chris Kelly#endif /* _OZPROTOCOL_H */ 373