/****************************************************************************** * * Copyright 2014 Google, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ #pragma once // 2 bytes for opcode, 1 byte for parameter length (Volume 2, Part E, 5.4.1) #define HCI_COMMAND_PREAMBLE_SIZE 3 // 2 bytes for handle, 2 bytes for data length (Volume 2, Part E, 5.4.2) #define HCI_ACL_PREAMBLE_SIZE 4 // 2 bytes for handle, 1 byte for data length (Volume 2, Part E, 5.4.3) #define HCI_SCO_PREAMBLE_SIZE 3 // 1 byte for event code, 1 byte for parameter length (Volume 2, Part E, 5.4.4) #define HCI_EVENT_PREAMBLE_SIZE 2 // ISO // 2 bytes for handle, 2 bytes for data length (Volume 2, Part E, 5.4.5) #define HCI_ISO_PREAMBLE_SIZE 4 #define HCI_ISO_BF_FIRST_FRAGMENTED_PACKET (0) #define HCI_ISO_BF_CONTINUATION_FRAGMENT_PACKET (1) #define HCI_ISO_BF_COMPLETE_PACKET (2) #define HCI_ISO_BF_LAST_FRAGMENT_PACKET (3) #define HCI_ISO_HEADER_TIMESTAMP_SIZE (4) #define HCI_ISO_HEADER_ISO_LEN_SIZE (2) #define HCI_ISO_HEADER_PACKET_SEQ_SIZE (2) #define HCI_ISO_HEADER_LEN_WITHOUT_TS \ (HCI_ISO_HEADER_ISO_LEN_SIZE + HCI_ISO_HEADER_PACKET_SEQ_SIZE) #define HCI_ISO_HEADER_LEN_WITH_TS \ (HCI_ISO_HEADER_LEN_WITHOUT_TS + HCI_ISO_HEADER_TIMESTAMP_SIZE) #define HCI_ISO_SET_CONTINUATION_FLAG(handle) \ (((handle)&0x4FFF) | (0x0001 << 12)) #define HCI_ISO_SET_COMPLETE_FLAG(handle) (((handle)&0x4FFF) | (0x0002 << 12)) #define HCI_ISO_SET_END_FRAG_FLAG(handle) (((handle)&0x4FFF) | (0x0003 << 12)) #define HCI_ISO_SET_TIMESTAMP_FLAG(handle) (((handle)&0x3FFF) | (0x0001 << 14)) #define HCI_ISO_GET_TS_FLAG(handle) (((handle) >> 14) & 0x0001) #define HCI_ISO_GET_PACKET_STATUS_FLAGS(iso_sdu_length) \ (iso_sdu_length & 0xC000) #define HCI_ISO_SDU_LENGTH_MASK 0x0FFF