1 /* 2 * Copyright 2020 HIMSA II K/S - www.himsa.com. 3 * Represented by EHIMA - www.ehima.com 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 #pragma once 19 20 #include <cstdint> 21 22 #include "hcimsgs.h" 23 #include "stack/include/bt_hdr.h" 24 #include "stack/include/btm_ble_api_types.h" 25 26 namespace bluetooth { 27 namespace hci { 28 constexpr uint8_t kIsoCodingFormatTransparent = 0x03; 29 constexpr uint8_t kIsoCodingFormatLc3 = 0x06; 30 constexpr uint8_t kIsoCodingFormatVendorSpecific = 0xFF; 31 32 constexpr uint8_t kIsoCigPackingSequential = 0x00; 33 constexpr uint8_t kIsoCigPackingInterleaved = 0x01; 34 35 constexpr uint8_t kIsoCigFramingUnframed = 0x00; 36 constexpr uint8_t kIsoCigFramingFramed = 0x01; 37 38 constexpr uint8_t kIsoCigPhy1M = 0x01; 39 constexpr uint8_t kIsoCigPhy2M = 0x02; 40 constexpr uint8_t kIsoCigPhyC = 0x04; 41 42 namespace iso_manager { 43 44 constexpr uint8_t kIsoDataPathDirectionIn = 0x00; 45 constexpr uint8_t kIsoDataPathDirectionOut = 0x01; 46 47 constexpr uint8_t kRemoveIsoDataPathDirectionInput = 0x01; 48 constexpr uint8_t kRemoveIsoDataPathDirectionOutput = 0x02; 49 50 constexpr uint8_t kIsoDataPathHci = 0x00; 51 constexpr uint8_t kIsoDataPathPlatformDefault = 0x01; 52 constexpr uint8_t kIsoDataPathDisabled = 0xFF; 53 54 constexpr uint8_t kIsoSca251To500Ppm = 0x00; 55 constexpr uint8_t kIsoSca151To250Ppm = 0x01; 56 constexpr uint8_t kIsoSca101To150Ppm = 0x02; 57 constexpr uint8_t kIsoSca76To100Ppm = 0x03; 58 constexpr uint8_t kIsoSca51To75Ppm = 0x04; 59 constexpr uint8_t kIsoSca31To50Ppm = 0x05; 60 constexpr uint8_t kIsoSca21To30Ppm = 0x06; 61 constexpr uint8_t kIsoSca0To20Ppm = 0x07; 62 63 constexpr uint8_t kIsoEventCisDataAvailable = 0x00; 64 constexpr uint8_t kIsoEventCisEstablishCmpl = 0x01; 65 constexpr uint8_t kIsoEventCisDisconnected = 0x02; 66 67 constexpr uint8_t kIsoEventCigOnCreateCmpl = 0x00; 68 constexpr uint8_t kIsoEventCigOnReconfigureCmpl = 0x01; 69 constexpr uint8_t kIsoEventCigOnRemoveCmpl = 0x02; 70 71 constexpr uint8_t kIsoEventBigOnCreateCmpl = 0x00; 72 constexpr uint8_t kIsoEventBigOnTerminateCmpl = 0x01; 73 74 struct cig_create_params { 75 uint32_t sdu_itv_mtos; 76 uint32_t sdu_itv_stom; 77 uint8_t sca; 78 uint8_t packing; 79 uint8_t framing; 80 uint16_t max_trans_lat_stom; 81 uint16_t max_trans_lat_mtos; 82 std::vector<EXT_CIS_CFG> cis_cfgs; 83 }; 84 85 struct cig_remove_cmpl_evt { 86 uint8_t status; 87 uint8_t cig_id; 88 }; 89 90 struct cig_create_cmpl_evt { 91 uint8_t status; 92 uint8_t cig_id; 93 std::vector<uint16_t> conn_handles; 94 }; 95 96 struct cis_data_evt { 97 uint8_t cig_id; 98 uint16_t cis_conn_hdl; 99 uint32_t ts; 100 uint16_t evt_lost; 101 uint16_t seq_nb; 102 BT_HDR* p_msg; 103 }; 104 105 struct cis_establish_params { 106 std::vector<EXT_CIS_CREATE_CFG> conn_pairs; 107 }; 108 109 struct cis_establish_cmpl_evt { 110 uint8_t status; 111 uint8_t cig_id; 112 uint16_t cis_conn_hdl; 113 uint32_t cig_sync_delay; 114 uint32_t cis_sync_delay; 115 uint32_t trans_lat_mtos; 116 uint32_t trans_lat_stom; 117 uint8_t phy_mtos; 118 uint8_t phy_stom; 119 uint8_t nse; 120 uint8_t bn_mtos; 121 uint8_t bn_stom; 122 uint8_t ft_mtos; 123 uint8_t ft_stom; 124 uint16_t max_pdu_mtos; 125 uint16_t max_pdu_stom; 126 uint16_t iso_itv; 127 }; 128 129 struct cis_disconnected_evt { 130 uint8_t reason; 131 uint8_t cig_id; 132 uint16_t cis_conn_hdl; 133 }; 134 135 struct big_create_params { 136 uint8_t adv_handle; 137 uint8_t num_bis; 138 uint32_t sdu_itv; 139 uint16_t max_sdu_size; 140 uint16_t max_transport_latency; 141 uint8_t rtn; 142 uint8_t phy; 143 uint8_t packing; 144 uint8_t framing; 145 uint8_t enc; 146 std::array<uint8_t, 16> enc_code; 147 }; 148 149 struct big_create_cmpl_evt { 150 uint8_t status; 151 uint8_t big_id; 152 uint32_t big_sync_delay; 153 uint32_t transport_latency_big; 154 uint8_t phy; 155 uint8_t nse; 156 uint8_t bn; 157 uint8_t pto; 158 uint8_t irc; 159 uint16_t max_pdu; 160 uint16_t iso_interval; 161 std::vector<uint16_t> conn_handles; 162 }; 163 164 struct big_terminate_cmpl_evt { 165 uint8_t big_id; 166 uint8_t reason; 167 }; 168 169 struct iso_data_path_params { 170 uint8_t data_path_dir; 171 uint8_t data_path_id; 172 uint8_t codec_id_format; 173 uint16_t codec_id_company; 174 uint16_t codec_id_vendor; 175 uint32_t controller_delay; 176 std::vector<uint8_t> codec_conf; 177 }; 178 179 } // namespace iso_manager 180 } // namespace hci 181 } // namespace bluetooth 182