1little_endian_packets 2 3enum Opcode : 8 { 4 LL_CONNECTION_UPDATE_IND = 0x00, 5 LL_CHANNEL_MAP_IND = 0x01, 6 LL_TERMINATE_IND = 0x02, 7 LL_ENC_REQ = 0x03, 8 LL_ENC_RSP = 0x04, 9 LL_START_ENC_REQ = 0x05, 10 LL_START_ENC_RSP = 0x06, 11 LL_UNKNOWN_RSP = 0x07, 12 LL_FEATURE_REQ = 0x08, 13 LL_FEATURE_RSP = 0x09, 14 LL_PAUSE_ENC_REQ = 0x0A, 15 LL_PAUSE_ENC_RSP = 0x0B, 16 LL_VERSION_IND = 0x0C, 17 LL_REJECT_IND = 0x0D, 18 LL_PERIPHERAL_FEATURE_REQ = 0x0E, 19 LL_CONNECTION_PARAM_REQ = 0x0F, 20 LL_CONNECTION_PARAM_RSP = 0x10, 21 LL_REJECT_EXT_IND = 0x11, 22 LL_PING_REQ = 0x12, 23 LL_PING_RSP = 0x13, 24 LL_LENGTH_REQ = 0x14, 25 LL_LENGTH_RSP = 0x15, 26 LL_PHY_REQ = 0x16, 27 LL_PHY_RSP = 0x17, 28 LL_PHY_UPDATE_IND = 0x18, 29 LL_MIN_USED_CHANNELS_IND = 0x19, 30 LL_CTE_REQ = 0x1A, 31 LL_CTE_RSP = 0x1B, 32 LL_PERIODIC_SYNC_IND = 0x1C, 33 LL_CLOCK_ACCURACY_REQ = 0x1D, 34 LL_CLOCK_ACCURACY_RSP = 0x1E, 35 LL_CIS_REQ = 0x1F, 36 LL_CIS_RSP = 0x20, 37 LL_CIS_IND = 0x21, 38 LL_CIS_TERMINATE_IND = 0x22, 39 LL_POWER_CONTROL_REQ = 0x23, 40 LL_POWER_CONTROL_RSP = 0x24, 41 LL_POWER_CHANGE_IND = 0x25, 42 LL_SUBRATE_REQ = 0x26, 43 LL_SUBRATE_IND = 0x27, 44 LL_CHANNEL_REPORTING_IND = 0x28, 45 LL_CHANNEL_STATUS_IND = 0x29, 46} 47 48packet LlcpPacket { 49 opcode: Opcode, 50 _payload_, 51} 52 53packet ConnectionUpdateInd : LlcpPacket (opcode = LL_CONNECTION_UPDATE_IND) { 54 window_size: 8, 55 window_offset: 16, 56 interval: 16, 57 latency: 16, 58 timeout: 16, 59 instant: 16, 60} 61 62packet ChannelMapInd : LlcpPacket (opcode = LL_CHANNEL_MAP_IND) { 63 channel_map: 40, 64 instant: 16, 65} 66 67packet TerminateInd : LlcpPacket (opcode = LL_TERMINATE_IND) { 68 error_code: 8, 69} 70 71packet EncReq : LlcpPacket (opcode = LL_ENC_REQ) { 72 rand: 64, 73 ediv: 16, 74 skd_c: 64, 75 iv_c: 16, 76} 77 78packet EncRsp : LlcpPacket (opcode = LL_ENC_RSP) { 79 skd_p: 64, 80 iv_p: 16, 81} 82 83packet StartEncReq : LlcpPacket (opcode = LL_START_ENC_REQ) { 84} 85 86packet StartEncRsp : LlcpPacket (opcode = LL_START_ENC_RSP) { 87} 88 89packet UnknownRsp : LlcpPacket (opcode = LL_UNKNOWN_RSP) { 90 unknown_type: 8, 91} 92 93packet FeatureReq : LlcpPacket (opcode = LL_FEATURE_REQ) { 94 feature_set: 64, 95} 96 97packet FeatureRsp : LlcpPacket (opcode = LL_FEATURE_RSP) { 98 feature_set: 64, 99} 100 101packet PauseEncReq : LlcpPacket (opcode = LL_PAUSE_ENC_REQ) { 102} 103 104packet PauseEncRsp : LlcpPacket (opcode = LL_PAUSE_ENC_RSP) { 105} 106 107packet VersionInd : LlcpPacket (opcode = LL_VERSION_IND) { 108 version: 8, 109 company_identifier: 16, 110 subversion: 16, 111} 112 113packet RejectInd : LlcpPacket (opcode = LL_REJECT_IND) { 114 error_code: 16, 115} 116 117packet PeripheralFeatureReq : LlcpPacket (opcode = LL_PERIPHERAL_FEATURE_REQ) { 118 feature_set: 64, 119} 120 121packet ConnectionParamReq : LlcpPacket (opcode = LL_CONNECTION_PARAM_REQ) { 122 interval_min: 16, 123 interval_max: 16, 124 latency: 16, 125 timeout: 16, 126 preferred_periodicity: 8, 127 reference_conn_event_count: 16, 128 offset0: 16, 129 offset1: 16, 130 offset2: 16, 131 offset3: 16, 132 offset4: 16, 133 offset5: 16, 134} 135 136packet ConnectionParamRsp : LlcpPacket (opcode = LL_CONNECTION_PARAM_RSP) { 137 interval_min: 16, 138 interval_max: 16, 139 latency: 16, 140 timeout: 16, 141 preferred_periodicity: 8, 142 reference_conn_event_count: 16, 143 offset0: 16, 144 offset1: 16, 145 offset2: 16, 146 offset3: 16, 147 offset4: 16, 148 offset5: 16, 149} 150 151packet RejectExtInd : LlcpPacket (opcode = LL_REJECT_EXT_IND) { 152 reject_opcode: 8, 153 error_code: 8, 154} 155 156packet PingReq : LlcpPacket (opcode = LL_PING_REQ) { 157} 158 159packet PingRsp : LlcpPacket (opcode = LL_PING_RSP) { 160} 161 162packet LengthReq : LlcpPacket (opcode = LL_LENGTH_REQ) { 163 max_rx_octets: 16, 164 max_rx_time: 16, 165 max_tx_octets: 16, 166 max_tx_time: 16, 167} 168 169packet LengthRsp : LlcpPacket (opcode = LL_LENGTH_RSP) { 170 max_rx_octets: 16, 171 max_rx_time: 16, 172 max_tx_octets: 16, 173 max_tx_time: 16, 174} 175 176packet PhyReq : LlcpPacket (opcode = LL_PHY_REQ) { 177 tx_phys: 8, 178 rx_phys: 8, 179} 180 181packet PhyRsp : LlcpPacket (opcode = LL_PHY_RSP) { 182 tx_phys: 8, 183 rx_phys: 8, 184} 185 186packet PhyUpdateInd : LlcpPacket (opcode = LL_PHY_UPDATE_IND) { 187 phy_c_to_p: 8, 188 phy_p_to_c: 8, 189 instant: 16, 190} 191 192packet MinUsedChannelsInd : LlcpPacket (opcode = LL_MIN_USED_CHANNELS_IND) { 193 phys: 8, 194 min_used_channels: 8, 195} 196 197packet CteReq : LlcpPacket (opcode = LL_CTE_REQ) { 198 min_cte_len_req: 5, 199 _reserved_: 1, 200 cte_type_req: 2, 201} 202 203packet CteRsp : LlcpPacket (opcode = LL_CTE_RSP) { 204} 205 206packet PeriodicSyncInd : LlcpPacket (opcode = LL_PERIODIC_SYNC_IND) { 207 id: 16, 208 sync_info: 8[18], 209 conn_event_count: 16, 210 last_pa_event_counter: 16, 211 sid: 4, 212 atype: 1, 213 sca: 3, 214 phy: 8, 215 adva: 48, 216 sync_conn_event_count: 16, 217} 218 219packet ClockAccuracyReq : LlcpPacket (opcode = LL_CLOCK_ACCURACY_REQ) { 220 sca: 8, 221} 222 223packet ClockAccuracyRsp : LlcpPacket (opcode = LL_CLOCK_ACCURACY_RSP) { 224 sca: 8, 225} 226 227// 2.4.2.29 LL_CIS_REQ 228packet CisReq : LlcpPacket (opcode = LL_CIS_REQ) { 229 cig_id : 8, 230 cis_id : 8, 231 phy_c_to_p : 8, 232 phy_p_to_c : 8, 233 framed : 1, 234 _reserved_ : 3, 235 max_sdu_c_to_p : 12, 236 _reserved_ : 4, 237 max_sdu_p_to_c : 12, 238 _reserved_ : 4, 239 sdu_interval_c_to_p : 20, 240 _reserved_ : 4, 241 sdu_interval_p_to_c : 20, 242 max_pdu_c_to_p : 16, 243 max_pdu_p_to_c : 16, 244 nse : 8, 245 sub_interval : 24, 246 bn_p_to_c : 4, 247 bn_c_to_p : 4, 248 ft_c_to_p : 8, 249 ft_p_to_c : 8, 250 iso_interval : 16, 251 cis_offset_min : 24, 252 cis_offset_max : 24, 253 conn_event_count : 16, 254} 255 256// 2.4.2.30 LL_CIS_RSP 257packet CisRsp : LlcpPacket (opcode = LL_CIS_RSP) { 258 cis_offset_min: 24, 259 cis_offset_max: 24, 260 conn_event_count: 16, 261} 262 263// 2.4.2.31 LL_CIS_IND 264packet CisInd : LlcpPacket (opcode = LL_CIS_IND) { 265 aa: 32, 266 cis_offset: 24, 267 cig_sync_delay: 24, 268 cis_sync_delay: 24, 269 conn_event_count: 16, 270} 271 272// 2.4.2.32 LL_CIS_TERMINATE_IND 273packet CisTerminateInd : LlcpPacket (opcode = LL_CIS_TERMINATE_IND) { 274 cig_id: 8, 275 cis_id: 8, 276 error_code: 8, 277} 278 279packet PowerControlReq : LlcpPacket (opcode = LL_POWER_CONTROL_REQ) { 280 phy: 8, 281 delta: 8, 282 tx_power: 8, 283} 284 285packet PowerControlRsp : LlcpPacket (opcode = LL_POWER_CONTROL_RSP) { 286 min: 1, 287 max: 1, 288 _reserved_: 6, 289 delta: 8, 290 tx_power: 8, 291 apr: 8, 292} 293 294packet PowerChangeInd : LlcpPacket (opcode = LL_POWER_CHANGE_IND) { 295 phy: 8, 296 min: 1, 297 max: 1, 298 _reserved_: 6, 299 delta: 8, 300 tx_power: 8, 301} 302 303packet SubrateReq : LlcpPacket (opcode = LL_SUBRATE_REQ) { 304 subrate_factor_min: 16, 305 subrate_factor_max: 16, 306 max_latency: 16, 307 continuation_number: 16, 308 timeout: 16, 309} 310 311packet SubrateInd : LlcpPacket (opcode = LL_SUBRATE_IND) { 312 subrate_factor: 16, 313 subrate_base_event: 16, 314 latency: 16, 315 continuation_number: 16, 316 timeout: 16, 317} 318 319packet ChannelReportingInd : LlcpPacket (opcode = LL_CHANNEL_REPORTING_IND) { 320 enable: 8, 321 min_spacing: 8, 322 max_delay: 8, 323} 324 325packet ChannelStatusInd : LlcpPacket (opcode = LL_CHANNEL_STATUS_IND) { 326 channel_classification: 8[10], 327} 328