On Tue, Jun 05, 2012 at 12:09:18PM +0300, Andrei Emeltchenko wrote: > From: Andrei Emeltchenko <andrei.emeltchenko@xxxxxxxxx> ping > > --- > lib/a2mp.h | 38 ------------- > lib/amp.h | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 174 insertions(+), 38 deletions(-) > create mode 100644 lib/amp.h > > diff --git a/lib/a2mp.h b/lib/a2mp.h > index 61f1c1e..da937d1 100644 > --- a/lib/a2mp.h > +++ b/lib/a2mp.h > @@ -142,44 +142,6 @@ struct a2mp_disconn_rsp { > #define A2MP_STATUS_PHYS_LINK_EXISTS 0x05 > #define A2MP_STATUS_SECURITY_VIOLATION 0x06 > > -#define A2MP_MAC_ADDR_TYPE 1 > -#define A2MP_PREF_CHANLIST_TYPE 2 > -#define A2MP_CONNECTED_CHAN 3 > -#define A2MP_PAL_CAP_TYPE 4 > -#define A2MP_PAL_VER_INFO 5 > - > -struct a2mp_tlv { > - uint8_t type; > - uint16_t len; > - uint8_t val[0]; > -} __attribute__ ((packed)); > - > -struct a2mp_pal_ver { > - uint8_t ver; > - uint16_t company_id; > - uint16_t sub_ver; > -} __attribute__ ((packed)); > - > -struct a2mp_country_triplet { > - union { > - struct { > - uint8_t first_channel; > - uint8_t num_channels; > - int8_t max_power; > - } __attribute__ ((packed)) chans; > - struct { > - uint8_t reg_extension_id; > - uint8_t reg_class; > - uint8_t coverage_class; > - } __attribute__ ((packed)) ext; > - }; > -} __attribute__ ((packed)); > - > -struct a2mp_chan_list { > - uint8_t country_code[3]; > - struct a2mp_country_triplet triplets[0]; > -} __attribute__ ((packed)); > - > #ifdef __cplusplus > } > #endif > diff --git a/lib/amp.h b/lib/amp.h > new file mode 100644 > index 0000000..f364f85 > --- /dev/null > +++ b/lib/amp.h > @@ -0,0 +1,174 @@ > +/* > + * > + * BlueZ - Bluetooth protocol stack for Linux > + * > + * Copyright (C) 2010-2011 Code Aurora Forum. All rights reserved. > + * Copyright (C) 2012 Intel Corp. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 and > + * only version 2 as published by the Free Software Foundation. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + */ > + > +#ifndef __AMP_H > +#define __AMP_H > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +#define AMP_MGR_CID 0x03 > + > +/* AMP manager codes */ > +#define AMP_COMMAND_REJ 0x01 > +#define AMP_DISCOVER_REQ 0x02 > +#define AMP_DISCOVER_RSP 0x03 > +#define AMP_CHANGE_NOTIFY 0x04 > +#define AMP_CHANGE_RSP 0x05 > +#define AMP_INFO_REQ 0x06 > +#define AMP_INFO_RSP 0x07 > +#define AMP_ASSOC_REQ 0x08 > +#define AMP_ASSOC_RSP 0x09 > +#define AMP_LINK_REQ 0x0a > +#define AMP_LINK_RSP 0x0b > +#define AMP_DISCONN_REQ 0x0c > +#define AMP_DISCONN_RSP 0x0d > + > +typedef struct { > + uint8_t code; > + uint8_t ident; > + uint16_t len; > +} __attribute__ ((packed)) amp_mgr_hdr; > +#define AMP_MGR_HDR_SIZE 4 > + > +/* AMP ASSOC structure */ > +typedef struct { > + uint8_t type_id; > + uint16_t len; > + uint8_t data[0]; > +} __attribute__ ((packed)) amp_assoc_tlv; > + > +typedef struct { > + uint16_t reason; > +} __attribute__ ((packed)) amp_cmd_rej_parms; > + > +typedef struct { > + uint16_t mtu; > + uint16_t mask; > +} __attribute__ ((packed)) amp_discover_req_parms; > + > +typedef struct { > + uint16_t mtu; > + uint16_t mask; > + uint8_t controller_list[0]; > +} __attribute__ ((packed)) amp_discover_rsp_parms; > + > +typedef struct { > + uint8_t id; > +} __attribute__ ((packed)) amp_info_req_parms; > + > +typedef struct { > + uint8_t id; > + uint8_t status; > + uint32_t total_bandwidth; > + uint32_t max_bandwidth; > + uint32_t min_latency; > + uint16_t pal_caps; > + uint16_t assoc_size; > +} __attribute__ ((packed)) amp_info_rsp_parms; > + > +typedef struct { > + uint8_t id; > + uint8_t status; > + amp_assoc_tlv assoc; > +} __attribute__ ((packed)) amp_assoc_rsp_parms; > + > +typedef struct { > + uint8_t local_id; > + uint8_t remote_id; > + amp_assoc_tlv assoc; > +} __attribute__ ((packed)) amp_link_req_parms; > + > +typedef struct { > + uint8_t local_id; > + uint8_t remote_id; > + uint8_t status; > +} __attribute__ ((packed)) amp_link_rsp_parms; > + > +typedef struct { > + uint8_t local_id; > + uint8_t remote_id; > +} __attribute__ ((packed)) amp_disconn_req_parms; > + > +#define A2MP_MAC_ADDR_TYPE 1 > +#define A2MP_PREF_CHANLIST_TYPE 2 > +#define A2MP_CONNECTED_CHAN 3 > +#define A2MP_PAL_CAP_TYPE 4 > +#define A2MP_PAL_VER_INFO 5 > + > +struct amp_tlv { > + uint8_t type; > + uint16_t len; > + uint8_t val[0]; > +} __attribute__ ((packed)); > + > +struct amp_pal_ver { > + uint8_t ver; > + uint16_t company_id; > + uint16_t sub_ver; > +} __attribute__ ((packed)); > + > +struct amp_country_triplet { > + union { > + struct { > + uint8_t first_channel; > + uint8_t num_channels; > + int8_t max_power; > + } __attribute__ ((packed)) chans; > + struct { > + uint8_t reg_extension_id; > + uint8_t reg_class; > + uint8_t coverage_class; > + } __attribute__ ((packed)) ext; > + }; > +} __attribute__ ((packed)); > + > +struct amp_chan_list { > + uint8_t country_code[3]; > + struct amp_country_triplet triplets[0]; > +} __attribute__ ((packed)); > + > +#define AMP_COMMAND_NOT_RECOGNIZED 0x0000 > + > +/* AMP controller status */ > +#define AMP_CT_POWERED_DOWN 0x00 > +#define AMP_CT_BLUETOOTH_ONLY 0x01 > +#define AMP_CT_NO_CAPACITY 0x02 > +#define AMP_CT_LOW_CAPACITY 0x03 > +#define AMP_CT_MEDIUM_CAPACITY 0x04 > +#define AMP_CT_HIGH_CAPACITY 0x05 > +#define AMP_CT_FULL_CAPACITY 0x06 > + > +/* AMP response status */ > +#define AMP_STATUS_SUCCESS 0x00 > +#define AMP_STATUS_INVALID_CTRL_ID 0x01 > +#define AMP_STATUS_UNABLE_START_LINK_CREATION 0x02 > +#define AMP_STATUS_NO_PHYSICAL_LINK_EXISTS 0x02 > +#define AMP_STATUS_COLLISION_OCCURED 0x03 > +#define AMP_STATUS_DISCONN_REQ_RECVD 0x04 > +#define AMP_STATUS_PHYS_LINK_EXISTS 0x05 > +#define AMP_STATUS_SECURITY_VIOLATION 0x06 > + > +void amp_assoc_dump(int level, uint8_t *assoc, uint16_t len); > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /* __AMP_H */ > -- > 1.7.9.5 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html