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