1 /*
2  *  Copyright (c) 2019, The OpenThread Authors.
3  *  All rights reserved.
4  *
5  *  Redistribution and use in source and binary forms, with or without
6  *  modification, are permitted provided that the following conditions are met:
7  *  1. Redistributions of source code must retain the above copyright
8  *     notice, this list of conditions and the following disclaimer.
9  *  2. Redistributions in binary form must reproduce the above copyright
10  *     notice, this list of conditions and the following disclaimer in the
11  *     documentation and/or other materials provided with the distribution.
12  *  3. Neither the name of the copyright holder nor the
13  *     names of its contributors may be used to endorse or promote products
14  *     derived from this software without specific prior written permission.
15  *
16  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20  *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23  *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25  *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26  *  POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 /**
30  * @file
31  *   This file includes compile-time configurations for the MAC.
32  *
33  */
34 
35 #ifndef CONFIG_MAC_H_
36 #define CONFIG_MAC_H_
37 
38 #include "config/time_sync.h"
39 
40 /**
41  * @def OPENTHREAD_CONFIG_MAC_MAX_CSMA_BACKOFFS_DIRECT
42  *
43  * The maximum number of backoffs the CSMA-CA algorithm will attempt before declaring a channel access failure.
44  *
45  * Equivalent to macMaxCSMABackoffs in IEEE 802.15.4-2006, default value is 4.
46  *
47  */
48 #ifndef OPENTHREAD_CONFIG_MAC_MAX_CSMA_BACKOFFS_DIRECT
49 #define OPENTHREAD_CONFIG_MAC_MAX_CSMA_BACKOFFS_DIRECT 4
50 #endif
51 
52 /**
53  * @def OPENTHREAD_CONFIG_MAC_MAX_CSMA_BACKOFFS_INDIRECT
54  *
55  * The maximum number of backoffs the CSMA-CA algorithm will attempt before declaring a channel access failure.
56  *
57  * Equivalent to macMaxCSMABackoffs in IEEE 802.15.4-2006, default value is 4.
58  *
59  */
60 #ifndef OPENTHREAD_CONFIG_MAC_MAX_CSMA_BACKOFFS_INDIRECT
61 #define OPENTHREAD_CONFIG_MAC_MAX_CSMA_BACKOFFS_INDIRECT 4
62 #endif
63 
64 /**
65  * @def OPENTHREAD_CONFIG_MAC_DEFAULT_MAX_FRAME_RETRIES_DIRECT
66  *
67  * The default maximum number of retries allowed after a transmission failure for direct transmissions.
68  *
69  * Equivalent to macMaxFrameRetries, default value is 15.
70  *
71  */
72 #ifndef OPENTHREAD_CONFIG_MAC_DEFAULT_MAX_FRAME_RETRIES_DIRECT
73 #define OPENTHREAD_CONFIG_MAC_DEFAULT_MAX_FRAME_RETRIES_DIRECT 15
74 #endif
75 
76 /**
77  * @def OPENTHREAD_CONFIG_MAC_DEFAULT_MAX_FRAME_RETRIES_INDIRECT
78  *
79  * The default maximum number of retries allowed after a transmission failure for indirect transmissions.
80  *
81  * Equivalent to macMaxFrameRetries, default value is 0.
82  *
83  */
84 #ifndef OPENTHREAD_CONFIG_MAC_DEFAULT_MAX_FRAME_RETRIES_INDIRECT
85 #define OPENTHREAD_CONFIG_MAC_DEFAULT_MAX_FRAME_RETRIES_INDIRECT 0
86 #endif
87 
88 /**
89  * @def OPENTHREAD_CONFIG_MAC_ADD_DELAY_ON_NO_ACK_ERROR_BEFORE_RETRY
90  *
91  * Define as 1 to add random backoff delay in between frame transmission retries when the previous attempt resulted in
92  * no-ack error.
93  *
94  */
95 #ifndef OPENTHREAD_CONFIG_MAC_ADD_DELAY_ON_NO_ACK_ERROR_BEFORE_RETRY
96 #define OPENTHREAD_CONFIG_MAC_ADD_DELAY_ON_NO_ACK_ERROR_BEFORE_RETRY 1
97 #endif
98 
99 /**
100  * @def OPENTHREAD_CONFIG_MAC_RETX_DELAY_MIN_BACKOFF_EXPONENT
101  *
102  * Specifies the minimum backoff exponent to start with when adding random delay in between frame transmission
103  * retries on no-ack error. It is applicable only when `OPENTHREAD_CONFIG_MAC_ADD_DELAY_ON_NO_ACK_ERROR_BEFORE_RETRY`
104  * is enabled.
105  *
106  */
107 #ifndef OPENTHREAD_CONFIG_MAC_RETX_DELAY_MIN_BACKOFF_EXPONENT
108 #define OPENTHREAD_CONFIG_MAC_RETX_DELAY_MIN_BACKOFF_EXPONENT 0
109 #endif
110 
111 /**
112  * @def OPENTHREAD_CONFIG_MAC_RETX_DELAY_MAX_BACKOFF_EXPONENT
113  *
114  * Specifies the maximum backoff exponent when adding random delay in between frame transmission retries on no-ack
115  * error. It is applicable only when `OPENTHREAD_CONFIG_MAC_ADD_DELAY_ON_NO_ACK_ERROR_BEFORE_RETRY` is enabled.
116  *
117  */
118 #ifndef OPENTHREAD_CONFIG_MAC_RETX_DELAY_MAX_BACKOFF_EXPONENT
119 #define OPENTHREAD_CONFIG_MAC_RETX_DELAY_MAX_BACKOFF_EXPONENT 5
120 #endif
121 
122 /**
123  * @def OPENTHREAD_CONFIG_MAC_COLLISION_AVOIDANCE_DELAY_ENABLE
124  *
125  * Define as 1 to enable collision avoidance delay feature, which adds a delay wait time after a successful frame tx
126  * to a neighbor which is expected to forward the frame. This delay is applied before the next direct frame tx (towards
127  * any neighbor) on an FTD.
128  *
129  * The delay interval is specified by `OPENTHREAD_CONFIG_MAC_COLLISION_AVOIDANCE_DELAY_INTERVAL` (in milliseconds).
130  *
131  */
132 #ifndef OPENTHREAD_CONFIG_MAC_COLLISION_AVOIDANCE_DELAY_ENABLE
133 #define OPENTHREAD_CONFIG_MAC_COLLISION_AVOIDANCE_DELAY_ENABLE 1
134 #endif
135 
136 /**
137  * @def OPENTHREAD_CONFIG_MAC_COLLISION_AVOIDANCE_DELAY_INTERVAL
138  *
139  * Specifies the collision avoidance delay interval in milliseconds. This is added after a successful frame tx to a
140  * neighbor that is expected to forward the frame (when `OPENTHREAD_CONFIG_MAC_COLLISION_AVOIDANCE_DELAY_ENABLE` is
141  * enabled).
142  *
143  */
144 #ifndef OPENTHREAD_CONFIG_MAC_COLLISION_AVOIDANCE_DELAY_INTERVAL
145 #define OPENTHREAD_CONFIG_MAC_COLLISION_AVOIDANCE_DELAY_INTERVAL 8
146 #endif
147 
148 /**
149  * @def OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_ENABLE
150  *
151  * Define to 1 to enable MAC retry packets histogram analysis.
152  *
153  */
154 #ifndef OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_ENABLE
155 #define OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_ENABLE 0
156 #endif
157 
158 /**
159  * @def OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_DIRECT
160  *
161  * The default size of MAC histogram array for success message retry direct transmission.
162  *
163  * Default value is (OPENTHREAD_CONFIG_MAC_DEFAULT_MAX_FRAME_RETRIES_DIRECT + 1).
164  *
165  */
166 #ifndef OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_DIRECT
167 #define OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_DIRECT \
168     (OPENTHREAD_CONFIG_MAC_DEFAULT_MAX_FRAME_RETRIES_DIRECT + 1)
169 #endif
170 
171 /**
172  * @def OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_INDIRECT
173  *
174  * The default size of MAC histogram array for success message retry direct transmission.
175  *
176  * Default value is (OPENTHREAD_CONFIG_MAC_DEFAULT_MAX_FRAME_RETRIES_INDIRECT + 1).
177  *
178  */
179 #ifndef OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_INDIRECT
180 #define OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_MAX_SIZE_COUNT_INDIRECT \
181     (OPENTHREAD_CONFIG_MAC_DEFAULT_MAX_FRAME_RETRIES_INDIRECT + 1)
182 #endif
183 
184 /**
185  * @def OPENTHREAD_CONFIG_MAC_MAX_TX_ATTEMPTS_INDIRECT_POLLS
186  *
187  * Maximum number of received IEEE 802.15.4 Data Requests for a queued indirect transaction.
188  *
189  * The indirect frame remains in the transaction queue until it is successfully transmitted or until the indirect
190  * transmission fails after the maximum number of IEEE 802.15.4 Data Request messages have been received.
191  *
192  * Takes the place of macTransactionPersistenceTime. The time period is specified in units of IEEE 802.15.4 Data
193  * Request receptions, rather than being governed by macBeaconOrder.
194  *
195  * @sa OPENTHREAD_CONFIG_MAC_DEFAULT_MAX_FRAME_RETRIES_INDIRECT
196  *
197  */
198 #ifndef OPENTHREAD_CONFIG_MAC_MAX_TX_ATTEMPTS_INDIRECT_POLLS
199 #define OPENTHREAD_CONFIG_MAC_MAX_TX_ATTEMPTS_INDIRECT_POLLS 4
200 #endif
201 
202 /**
203  * @def OPENTHREAD_CONFIG_MAC_CSL_REQUEST_AHEAD_US
204  *
205  * Define how many microseconds ahead should MAC deliver CSL frame to SubMac.
206  *
207  */
208 #ifndef OPENTHREAD_CONFIG_MAC_CSL_REQUEST_AHEAD_US
209 #define OPENTHREAD_CONFIG_MAC_CSL_REQUEST_AHEAD_US 2000
210 #endif
211 
212 /**
213  * @def OPENTHREAD_CONFIG_MAC_FILTER_ENABLE
214  *
215  * Define to 1 to enable MAC filter support.
216  *
217  */
218 #ifndef OPENTHREAD_CONFIG_MAC_FILTER_ENABLE
219 #define OPENTHREAD_CONFIG_MAC_FILTER_ENABLE 0
220 #endif
221 
222 /**
223  * @def OPENTHREAD_CONFIG_MAC_FILTER_SIZE
224  *
225  * The number of MAC Filter entries.
226  *
227  */
228 #ifndef OPENTHREAD_CONFIG_MAC_FILTER_SIZE
229 #define OPENTHREAD_CONFIG_MAC_FILTER_SIZE 32
230 #endif
231 
232 /**
233  * @def OPENTHREAD_CONFIG_MAC_TX_NUM_BCAST
234  *
235  * The number of times each IEEE 802.15.4 broadcast frame is transmitted.
236  *
237  * The minimum value is 1. Values larger than 1 may improve broadcast reliability by increasing redundancy, but may
238  * also increase congestion.
239  *
240  */
241 #ifndef OPENTHREAD_CONFIG_MAC_TX_NUM_BCAST
242 #define OPENTHREAD_CONFIG_MAC_TX_NUM_BCAST 1
243 #endif
244 
245 /**
246  * @def OPENTHREAD_CONFIG_MAC_STAY_AWAKE_BETWEEN_FRAGMENTS
247  *
248  * Define as 1 to stay awake between fragments while transmitting a large packet,
249  * and to stay awake after receiving a packet with frame pending set to true.
250  *
251  */
252 #ifndef OPENTHREAD_CONFIG_MAC_STAY_AWAKE_BETWEEN_FRAGMENTS
253 #define OPENTHREAD_CONFIG_MAC_STAY_AWAKE_BETWEEN_FRAGMENTS 0
254 #endif
255 
256 /**
257  * @def OPENTHREAD_CONFIG_MAC_JOIN_BEACON_VERSION
258  *
259  * The Beacon version to use when the beacon join flag is set.
260  *
261  */
262 #ifndef OPENTHREAD_CONFIG_MAC_JOIN_BEACON_VERSION
263 #define OPENTHREAD_CONFIG_MAC_JOIN_BEACON_VERSION OPENTHREAD_CONFIG_THREAD_VERSION
264 #endif
265 
266 /**
267  * @def OPENTHREAD_CONFIG_MAC_BEACON_RSP_WHEN_JOINABLE_ENABLE
268  *
269  * Define to 1 to enable IEEE 802.15.4 Beacons when joining is enabled.
270  *
271  * @note When this feature is enabled, the device will transmit IEEE 802.15.4 Beacons in response to IEEE 802.15.4
272  * Beacon Requests even while the device is not router capable and detached.
273  *
274  */
275 #ifndef OPENTHREAD_CONFIG_MAC_BEACON_RSP_WHEN_JOINABLE_ENABLE
276 #define OPENTHREAD_CONFIG_MAC_BEACON_RSP_WHEN_JOINABLE_ENABLE 0
277 #endif
278 
279 /**
280  * @def OPENTHREAD_CONFIG_MAC_HEADER_IE_SUPPORT
281  *
282  * Define as 1 to support IEEE 802.15.4-2015 Header IE (Information Element) generation and parsing, it must be set
283  * to support following features:
284  *    1. Time synchronization service feature (i.e., OPENTHREAD_CONFIG_TIME_SYNC_ENABLE is set).
285  *    2. Thread 1.2.
286  *
287  * @note If it's enabled, platform must support interrupt context and concurrent access AES.
288  *
289  */
290 #ifndef OPENTHREAD_CONFIG_MAC_HEADER_IE_SUPPORT
291 #if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE || (OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2)
292 #define OPENTHREAD_CONFIG_MAC_HEADER_IE_SUPPORT 1
293 #else
294 #define OPENTHREAD_CONFIG_MAC_HEADER_IE_SUPPORT 0
295 #endif
296 #endif
297 
298 /**
299  * @def OPENTHREAD_CONFIG_MAC_ATTACH_DATA_POLL_PERIOD
300  *
301  * The Data Poll period during attach in milliseconds.
302  *
303  */
304 #ifndef OPENTHREAD_CONFIG_MAC_ATTACH_DATA_POLL_PERIOD
305 #define OPENTHREAD_CONFIG_MAC_ATTACH_DATA_POLL_PERIOD 100
306 #endif
307 
308 /**
309  * @def OPENTHREAD_CONFIG_MAC_MINIMUM_POLL_PERIOD
310  *
311  * This setting configures the minimum poll period in milliseconds.
312  *
313  */
314 #ifndef OPENTHREAD_CONFIG_MAC_MINIMUM_POLL_PERIOD
315 #define OPENTHREAD_CONFIG_MAC_MINIMUM_POLL_PERIOD 10
316 #endif
317 
318 /**
319  * @def OPENTHREAD_CONFIG_MAC_RETX_POLL_PERIOD
320  *
321  * This setting configures the retx poll period in milliseconds.
322  *
323  */
324 #ifndef OPENTHREAD_CONFIG_MAC_RETX_POLL_PERIOD
325 #define OPENTHREAD_CONFIG_MAC_RETX_POLL_PERIOD 1000
326 #endif
327 
328 /**
329  * @def OPENTHREAD_CONFIG_MAC_SOFTWARE_ACK_TIMEOUT_ENABLE
330  *
331  * Define to 1 to enable software ACK timeout logic.
332  *
333  */
334 #ifndef OPENTHREAD_CONFIG_MAC_SOFTWARE_ACK_TIMEOUT_ENABLE
335 #define OPENTHREAD_CONFIG_MAC_SOFTWARE_ACK_TIMEOUT_ENABLE 0
336 #endif
337 
338 /**
339  * @def OPENTHREAD_CONFIG_MAC_SOFTWARE_RETRANSMIT_ENABLE
340  *
341  * Define to 1 to enable software retransmission logic.
342  *
343  */
344 #ifndef OPENTHREAD_CONFIG_MAC_SOFTWARE_RETRANSMIT_ENABLE
345 #define OPENTHREAD_CONFIG_MAC_SOFTWARE_RETRANSMIT_ENABLE 0
346 #endif
347 
348 /**
349  * @def OPENTHREAD_CONFIG_MAC_SOFTWARE_CSMA_BACKOFF_ENABLE
350  *
351  * Define to 1 to enable software CSMA-CA backoff logic.
352  *
353  */
354 #ifndef OPENTHREAD_CONFIG_MAC_SOFTWARE_CSMA_BACKOFF_ENABLE
355 #define OPENTHREAD_CONFIG_MAC_SOFTWARE_CSMA_BACKOFF_ENABLE 0
356 #endif
357 
358 /**
359  * @def OPENTHREAD_CONFIG_MAC_SOFTWARE_TX_SECURITY_ENABLE
360  *
361  * Define to 1 to enable software transmission security logic.
362  *
363  */
364 #ifndef OPENTHREAD_CONFIG_MAC_SOFTWARE_TX_SECURITY_ENABLE
365 #define OPENTHREAD_CONFIG_MAC_SOFTWARE_TX_SECURITY_ENABLE 0
366 #endif
367 
368 /**
369  * @def OPENTHREAD_CONFIG_MAC_SOFTWARE_TX_TIMING_ENABLE
370  *
371  * Define to 1 to enable software transmission target time logic.
372  *
373  */
374 #ifndef OPENTHREAD_CONFIG_MAC_SOFTWARE_TX_TIMING_ENABLE
375 #define OPENTHREAD_CONFIG_MAC_SOFTWARE_TX_TIMING_ENABLE 0
376 #endif
377 
378 /**
379  * @def OPENTHREAD_CONFIG_MAC_SOFTWARE_RX_TIMING_ENABLE
380  *
381  * Define to 1 to enable software reception target time logic.
382  *
383  */
384 #ifndef OPENTHREAD_CONFIG_MAC_SOFTWARE_RX_TIMING_ENABLE
385 #define OPENTHREAD_CONFIG_MAC_SOFTWARE_RX_TIMING_ENABLE 0
386 #endif
387 
388 /**
389  * @def OPENTHREAD_CONFIG_MAC_SOFTWARE_ENERGY_SCAN_ENABLE
390  *
391  * Define to 1 to enable software energy scanning logic.
392  *
393  */
394 #ifndef OPENTHREAD_CONFIG_MAC_SOFTWARE_ENERGY_SCAN_ENABLE
395 #define OPENTHREAD_CONFIG_MAC_SOFTWARE_ENERGY_SCAN_ENABLE 0
396 #endif
397 
398 /**
399  * @def OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
400  *
401  * Define to 1 to enable csl transmitter logic.
402  *
403  */
404 #ifndef OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
405 #define OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE (OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_2)
406 #endif
407 
408 /**
409  * @def OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
410  *
411  * This setting configures the CSL receiver feature in Thread 1.2.
412  *
413  */
414 #ifndef OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
415 #define OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE 0
416 #endif
417 
418 /**
419  * @def OPENTHREAD_CONFIG_MAC_CSL_AUTO_SYNC_ENABLE
420  *
421  * This setting configures CSL auto synchronization based on data poll mechanism in Thread 1.2.
422  *
423  */
424 #ifndef OPENTHREAD_CONFIG_MAC_CSL_AUTO_SYNC_ENABLE
425 #define OPENTHREAD_CONFIG_MAC_CSL_AUTO_SYNC_ENABLE OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
426 #endif
427 
428 /**
429  * @def OPENTHREAD_CONFIG_MAC_CSL_MIN_PERIOD
430  *
431  * This setting configures the minimum CSL period that could be used, in units of milliseconds.
432  *
433  */
434 #ifndef OPENTHREAD_CONFIG_MAC_CSL_MIN_PERIOD
435 #define OPENTHREAD_CONFIG_MAC_CSL_MIN_PERIOD 10
436 #endif
437 
438 /**
439  * @def OPENTHREAD_CONFIG_MAC_CSL_MAX_TIMEOUT
440  *
441  * This setting configures the maximum CSL timeout that could be used, in units of seconds.
442  *
443  */
444 #ifndef OPENTHREAD_CONFIG_MAC_CSL_MAX_TIMEOUT
445 #define OPENTHREAD_CONFIG_MAC_CSL_MAX_TIMEOUT 10000
446 #endif
447 
448 /**
449  * @def OPENTHREAD_CONFIG_CSL_TIMEOUT
450  *
451  * The default CSL timeout in seconds.
452  *
453  */
454 #ifndef OPENTHREAD_CONFIG_CSL_TIMEOUT
455 #define OPENTHREAD_CONFIG_CSL_TIMEOUT 100
456 #endif
457 
458 /**
459  * @def OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE
460  *
461  * CSL receiver debug option. When this option is enabled, a CSL receiver wouldn't actually sleep in CSL state so it
462  * can still receive packets from the CSL transmitter.
463  *
464  */
465 #ifndef OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE
466 #define OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE 0
467 #endif
468 
469 /**
470  * @def OPENTHREAD_CONFIG_CSL_TRANSMIT_TIME_AHEAD
471  *
472  * Transmission scheduling and ramp up time needed for the CSL transmitter to be ready, in units of microseconds.
473  * This time must include at least the radio's turnaround time between end of CCA and start of preamble transmission.
474  * To avoid early CSL transmission it also must not be configured higher than the actual scheduling and ramp up time.
475  *
476  */
477 #ifndef OPENTHREAD_CONFIG_CSL_TRANSMIT_TIME_AHEAD
478 #define OPENTHREAD_CONFIG_CSL_TRANSMIT_TIME_AHEAD 40
479 #endif
480 
481 /**
482  * @def OPENTHREAD_CONFIG_CSL_RECEIVE_TIME_AHEAD
483  *
484  * Reception scheduling and ramp up time needed for the CSL receiver to be ready, in units of microseconds.
485  *
486  */
487 #ifndef OPENTHREAD_CONFIG_CSL_RECEIVE_TIME_AHEAD
488 #define OPENTHREAD_CONFIG_CSL_RECEIVE_TIME_AHEAD 320
489 #endif
490 
491 /**
492  * @def OPENTHREAD_CONFIG_MIN_RECEIVE_ON_AHEAD
493  *
494  * The minimum time (in microseconds) before the MHR start that the radio should be in receive state and ready to
495  * properly receive in order to properly receive any IEEE 802.15.4 frame. Defaults to the duration of SHR + PHR.
496  *
497  */
498 #ifndef OPENTHREAD_CONFIG_MIN_RECEIVE_ON_AHEAD
499 #define OPENTHREAD_CONFIG_MIN_RECEIVE_ON_AHEAD (6 * 32)
500 #endif
501 
502 /**
503  * @def OPENTHREAD_CONFIG_MIN_RECEIVE_ON_AFTER
504  *
505  * The minimum time (in microseconds) after the MHR start that the radio should be in receive state in order
506  * to properly receive any IEEE 802.15.4 frame. Defaults to the duration of a maximum size frame, plus AIFS,
507  * plus the duration of maximum enh-ack frame. Platforms are encouraged to improve this value for energy
508  * efficiency purposes.
509  *
510  */
511 #ifndef OPENTHREAD_CONFIG_MIN_RECEIVE_ON_AFTER
512 #define OPENTHREAD_CONFIG_MIN_RECEIVE_ON_AFTER ((127 + 6 + 39) * 32)
513 #endif
514 
515 /**
516  * @def OPENTHREAD_CONFIG_MAC_SCAN_DURATION
517  *
518  * This setting configures the default scan duration in milliseconds.
519  *
520  */
521 #ifndef OPENTHREAD_CONFIG_MAC_SCAN_DURATION
522 #define OPENTHREAD_CONFIG_MAC_SCAN_DURATION 300
523 #endif
524 
525 /**
526  * @def OPENTHREAD_CONFIG_MAC_BEACON_PAYLOAD_PARSING_ENABLE
527  *
528  * This setting configures if the beacon payload parsing needs to be enabled in MAC. This is optional and is disabled by
529  * default because Thread 1.2.1 has removed support for beacon payloads.
530  *
531  */
532 #ifndef OPENTHREAD_CONFIG_MAC_BEACON_PAYLOAD_PARSING_ENABLE
533 #define OPENTHREAD_CONFIG_MAC_BEACON_PAYLOAD_PARSING_ENABLE 0
534 #endif
535 
536 /**
537  * @def OPENTHREAD_CONFIG_MAC_OUTGOING_BEACON_PAYLOAD_ENABLE
538  *
539  * This setting configures if the beacon payload needs to be enabled in outgoing beacon frames. This is optional and is
540  * disabled by default because Thread 1.2.1 has removed support for beacon payloads.
541  *
542  */
543 #ifndef OPENTHREAD_CONFIG_MAC_OUTGOING_BEACON_PAYLOAD_ENABLE
544 #define OPENTHREAD_CONFIG_MAC_OUTGOING_BEACON_PAYLOAD_ENABLE 0
545 #endif
546 
547 /**
548  * @def OPENTHREAD_CONFIG_MAC_DATA_POLL_TIMEOUT
549  *
550  * This setting specifies the timeout for receiving the Data Frame (in msec) - after an ACK with FP bit set was
551  * received.
552  *
553  */
554 #ifndef OPENTHREAD_CONFIG_MAC_DATA_POLL_TIMEOUT
555 #define OPENTHREAD_CONFIG_MAC_DATA_POLL_TIMEOUT 100
556 #endif
557 
558 #endif // CONFIG_MAC_H_
559