Statistics
| Branch: | Tag: | Revision:

amiro-os / modules / aos_chconf.h @ 3940ba8a

History | View | Annotate | Download (20.322 KB)

1 043cdf33 Thomas Schöpping
/*
2
AMiRo-OS is an operating system designed for the Autonomous Mini Robot (AMiRo) platform.
3 84f0ce9e Thomas Schöpping
Copyright (C) 2016..2019  Thomas Schöpping et al.
4 043cdf33 Thomas Schöpping

5
This program is free software: you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation, either version 3 of the License, or
8
(at your option) any later version.
9

10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
GNU General Public License for more details.
14

15
You should have received a copy of the GNU General Public License
16
along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
*/
18
19
/**
20
 * @file    os/modules/common/chconf.h
21
 * @brief   Common ChibiOS Configuration file for the all modules.
22
 * @details Contains the application specific kernel settings.
23
 *
24
 * @addtogroup config
25
 * @details Kernel related settings and hooks.
26
 * @{
27
 */
28
29 6ff06bbf Thomas Schöpping
#ifndef AOS_CHCONF_H
30
#define AOS_CHCONF_H
31 043cdf33 Thomas Schöpping
32
#define _CHIBIOS_RT_CONF_
33
34
/*===========================================================================*/
35
/**
36
 * @name System timers settings
37 1e5f7648 Thomas Schöpping
 * @{
38 043cdf33 Thomas Schöpping
 */
39
/*===========================================================================*/
40
41 1e5f7648 Thomas Schöpping
/**
42
 * @brief   System tick frequency.
43
 * @details Frequency of the system timer that drives the system ticks. This
44
 *          setting also defines the system tick time unit.
45
 */
46
#if !defined(CH_CFG_ST_FREQUENCY)
47
#define CH_CFG_ST_FREQUENCY                 1000000UL
48
#endif
49
50
/**
51
 * @brief   Time intervals data size.
52
 * @note    Allowed values are 16, 32 or 64 bits.
53
 */
54
#if !defined(CH_CFG_INTERVALS_SIZE)
55
#define CH_CFG_INTERVALS_SIZE               32
56
#endif
57
58
/**
59
 * @brief   Time types data size.
60
 * @note    Allowed values are 16 or 32 bits.
61
 */
62
#if !defined(CH_CFG_TIME_TYPES_SIZE)
63
#define CH_CFG_TIME_TYPES_SIZE              32
64
#endif
65
66
/**
67
 * @brief   Time delta constant for the tick-less mode.
68
 * @note    If this value is zero then the system uses the classic
69
 *          periodic tick. This value represents the minimum number
70
 *          of ticks that is safe to specify in a timeout directive.
71
 *          The value one is not valid, timeouts are rounded up to
72
 *          this value.
73
 */
74
#if !defined(CH_CFG_ST_TIMEDELTA)
75 9f224ade Thomas Schöpping
#define CH_CFG_ST_TIMEDELTA                 50
76 1e5f7648 Thomas Schöpping
#endif
77
78
/** @} */
79 043cdf33 Thomas Schöpping
80
/*===========================================================================*/
81
/**
82
 * @name Kernel parameters and options
83
 * @{
84
 */
85
/*===========================================================================*/
86
87
/**
88
 * @brief   Round robin interval.
89
 * @details This constant is the number of system ticks allowed for the
90
 *          threads before preemption occurs. Setting this value to zero
91
 *          disables the preemption for threads with equal priority and the
92
 *          round robin becomes cooperative. Note that higher priority
93
 *          threads can still preempt, the kernel is always preemptive.
94
 * @note    Disabling the round robin preemption makes the kernel more compact
95
 *          and generally faster.
96
 * @note    The round robin preemption is not supported in tickless mode and
97
 *          must be set to zero in that case.
98
 */
99
#define CH_CFG_TIME_QUANTUM                 0
100
101
/**
102
 * @brief   Managed RAM size.
103
 * @details Size of the RAM area to be managed by the OS. If set to zero
104
 *          then the whole available RAM is used. The core memory is made
105
 *          available to the heap allocator and/or can be used directly through
106
 *          the simplified core memory allocator.
107
 *
108
 * @note    In order to let the OS manage the whole RAM the linker script must
109
 *          provide the @p __heap_base__ and @p __heap_end__ symbols.
110
 * @note    Requires @p CH_CFG_USE_MEMCORE.
111
 */
112
#define CH_CFG_MEMCORE_SIZE                 0
113
114
/**
115
 * @brief   Idle thread automatic spawn suppression.
116
 * @details When this option is activated the function @p chSysInit()
117
 *          does not spawn the idle thread. The application @p main()
118
 *          function becomes the idle thread and must implement an
119
 *          infinite loop.
120
 */
121
#define CH_CFG_NO_IDLE_THREAD               FALSE
122
123
/** @} */
124
125
/*===========================================================================*/
126
/**
127
 * @name Performance options
128
 * @{
129
 */
130
/*===========================================================================*/
131
132
/**
133
 * @brief   OS optimization.
134
 * @details If enabled then time efficient rather than space efficient code
135
 *          is used when two possible implementations exist.
136
 *
137
 * @note    This is not related to the compiler optimization options.
138
 * @note    The default is @p TRUE.
139
 */
140
#define CH_CFG_OPTIMIZE_SPEED               TRUE
141
142
/** @} */
143
144
/*===========================================================================*/
145
/**
146
 * @name Subsystem options
147
 * @{
148
 */
149
/*===========================================================================*/
150
151
/**
152
 * @brief   Time Measurement APIs.
153
 * @details If enabled then the time measurement APIs are included in
154
 *          the kernel.
155
 *
156
 * @note    The default is @p TRUE.
157
 */
158
#define CH_CFG_USE_TM                       TRUE
159
160
/**
161
 * @brief   Threads registry APIs.
162
 * @details If enabled then the registry APIs are included in the kernel.
163
 *
164
 * @note    The default is @p TRUE.
165
 */
166
#define CH_CFG_USE_REGISTRY                 FALSE
167
168
/**
169 0a89baf2 Thomas Schöpping
 * @brief   Thread hierarchy APIs.
170
 * @details Id enabled then the thread hierarchy APIs are included in the kernel.
171
 *
172
 * @note    The default is @p FALSE.
173
 */
174
#define CH_CFG_USE_THREADHIERARCHY          TRUE
175
176
/**
177
 * @brief   Enable ordering of child lists.
178
 * @details Children will be ordered by their priority (descending).
179
 *          If sibliblings have identical priority, they are ordered by age (descending).
180
 */
181
#define CH_CFG_THREADHIERARCHY_ORDERED      TRUE
182
183
/**
184 043cdf33 Thomas Schöpping
 * @brief   Threads synchronization APIs.
185
 * @details If enabled then the @p chThdWait() function is included in
186
 *          the kernel.
187
 *
188
 * @note    The default is @p TRUE.
189
 */
190
#define CH_CFG_USE_WAITEXIT                 TRUE
191
192
/**
193
 * @brief   Semaphores APIs.
194
 * @details If enabled then the Semaphores APIs are included in the kernel.
195
 *
196
 * @note    The default is @p TRUE.
197
 */
198
#define CH_CFG_USE_SEMAPHORES               TRUE
199
200
/**
201
 * @brief   Semaphores queuing mode.
202
 * @details If enabled then the threads are enqueued on semaphores by
203
 *          priority rather than in FIFO order.
204
 *
205
 * @note    The default is @p FALSE. Enable this if you have special
206
 *          requirements.
207
 * @note    Requires @p CH_CFG_USE_SEMAPHORES.
208
 */
209
#define CH_CFG_USE_SEMAPHORES_PRIORITY      FALSE
210
211
/**
212
 * @brief   Mutexes APIs.
213
 * @details If enabled then the mutexes APIs are included in the kernel.
214
 *
215
 * @note    The default is @p TRUE.
216
 */
217
#define CH_CFG_USE_MUTEXES                  TRUE
218
219
/**
220
 * @brief   Enables recursive behavior on mutexes.
221
 * @note    Recursive mutexes are heavier and have an increased
222
 *          memory footprint.
223
 *
224
 * @note    The default is @p FALSE.
225
 * @note    Requires @p CH_CFG_USE_MUTEXES.
226
 */
227
#define CH_CFG_USE_MUTEXES_RECURSIVE        FALSE
228
229
/**
230
 * @brief   Conditional Variables APIs.
231
 * @details If enabled then the conditional variables APIs are included
232
 *          in the kernel.
233
 *
234
 * @note    The default is @p TRUE.
235
 * @note    Requires @p CH_CFG_USE_MUTEXES.
236
 */
237
#define CH_CFG_USE_CONDVARS                 TRUE
238
239
/**
240
 * @brief   Conditional Variables APIs with timeout.
241
 * @details If enabled then the conditional variables APIs with timeout
242
 *          specification are included in the kernel.
243
 *
244
 * @note    The default is @p TRUE.
245
 * @note    Requires @p CH_CFG_USE_CONDVARS.
246
 */
247
#define CH_CFG_USE_CONDVARS_TIMEOUT         TRUE
248
249
/**
250
 * @brief   Events Flags APIs.
251
 * @details If enabled then the event flags APIs are included in the kernel.
252
 *
253
 * @note    The default is @p TRUE.
254
 */
255
#define CH_CFG_USE_EVENTS                   TRUE
256
257
/**
258
 * @brief   Events Flags APIs with timeout.
259
 * @details If enabled then the events APIs with timeout specification
260
 *          are included in the kernel.
261
 *
262
 * @note    The default is @p TRUE.
263
 * @note    Requires @p CH_CFG_USE_EVENTS.
264
 */
265
#define CH_CFG_USE_EVENTS_TIMEOUT           TRUE
266
267
/**
268
 * @brief   Synchronous Messages APIs.
269
 * @details If enabled then the synchronous messages APIs are included
270
 *          in the kernel.
271
 *
272
 * @note    The default is @p TRUE.
273
 */
274
#define CH_CFG_USE_MESSAGES                 FALSE
275
276
/**
277
 * @brief   Synchronous Messages queuing mode.
278
 * @details If enabled then messages are served by priority rather than in
279
 *          FIFO order.
280
 *
281
 * @note    The default is @p FALSE. Enable this if you have special
282
 *          requirements.
283
 * @note    Requires @p CH_CFG_USE_MESSAGES.
284
 */
285
#define CH_CFG_USE_MESSAGES_PRIORITY        FALSE
286
287
/**
288
 * @brief   Mailboxes APIs.
289
 * @details If enabled then the asynchronous messages (mailboxes) APIs are
290
 *          included in the kernel.
291
 *
292
 * @note    The default is @p TRUE.
293
 * @note    Requires @p CH_CFG_USE_SEMAPHORES.
294
 */
295
#define CH_CFG_USE_MAILBOXES                FALSE
296
297
/**
298
 * @brief   Core Memory Manager APIs.
299
 * @details If enabled then the core memory manager APIs are included
300
 *          in the kernel.
301
 *
302
 * @note    The default is @p TRUE.
303
 */
304
#define CH_CFG_USE_MEMCORE                  FALSE
305
306
/**
307
 * @brief   Heap Allocator APIs.
308
 * @details If enabled then the memory heap allocator APIs are included
309
 *          in the kernel.
310
 *
311
 * @note    The default is @p TRUE.
312
 * @note    Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
313
 *          @p CH_CFG_USE_SEMAPHORES.
314
 * @note    Mutexes are recommended.
315
 */
316
#define CH_CFG_USE_HEAP                     FALSE
317
318
/**
319
 * @brief   Memory Pools Allocator APIs.
320
 * @details If enabled then the memory pools allocator APIs are included
321
 *          in the kernel.
322
 *
323
 * @note    The default is @p TRUE.
324
 */
325
#define CH_CFG_USE_MEMPOOLS                 FALSE
326
327
/**
328 1e5f7648 Thomas Schöpping
 * @brief  Objects FIFOs APIs.
329
 * @details If enabled then the objects FIFOs APIs are included
330
 *          in the kernel.
331
 *
332
 * @note    The default is @p TRUE.
333
 */
334
#define CH_CFG_USE_OBJ_FIFOS                FALSE
335
336
/**
337 043cdf33 Thomas Schöpping
 * @brief   Dynamic Threads APIs.
338
 * @details If enabled then the dynamic threads creation APIs are included
339
 *          in the kernel.
340
 *
341
 * @note    The default is @p TRUE.
342
 * @note    Requires @p CH_CFG_USE_WAITEXIT.
343
 * @note    Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
344
 */
345
#define CH_CFG_USE_DYNAMIC                  FALSE
346
347
/** @} */
348
349
/*===========================================================================*/
350
/**
351 1e5f7648 Thomas Schöpping
 * @name Objects factory options
352
 * @{
353
 */
354
/*===========================================================================*/
355
356
/**
357
 * @brief   Objects Factory APIs.
358
 * @details If enabled then the objects factory APIs are included in the
359
 *          kernel.
360
 *
361
 * @note    The default is @p FALSE.
362
 */
363
#if !defined(CH_CFG_USE_FACTORY)
364
#define CH_CFG_USE_FACTORY                  FALSE
365
#endif
366
367
/**
368
 * @brief   Maximum length for object names.
369
 * @details If the specified length is zero then the name is stored by
370
 *          pointer but this could have unintended side effects.
371
 */
372
#if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH)
373
#define CH_CFG_FACTORY_MAX_NAMES_LENGTH     8
374
#endif
375
376
/**
377
 * @brief   Enables the registry of generic objects.
378
 */
379
#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY)
380
#define CH_CFG_FACTORY_OBJECTS_REGISTRY     TRUE
381
#endif
382
383
/**
384
 * @brief   Enables factory for generic buffers.
385
 */
386
#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS)
387
#define CH_CFG_FACTORY_GENERIC_BUFFERS      TRUE
388
#endif
389
390
/**
391
 * @brief   Enables factory for semaphores.
392
 */
393
#if !defined(CH_CFG_FACTORY_SEMAPHORES)
394
#define CH_CFG_FACTORY_SEMAPHORES           TRUE
395
#endif
396
397
/**
398
 * @brief   Enables factory for mailboxes.
399
 */
400
#if !defined(CH_CFG_FACTORY_MAILBOXES)
401
#define CH_CFG_FACTORY_MAILBOXES            TRUE
402
#endif
403
404
/**
405
 * @brief   Enables factory for objects FIFOs.
406
 */
407
#if !defined(CH_CFG_FACTORY_OBJ_FIFOS)
408
#define CH_CFG_FACTORY_OBJ_FIFOS            TRUE
409
#endif
410
411
/** @} */
412
413
/*===========================================================================*/
414
/**
415 043cdf33 Thomas Schöpping
 * @name Debug options
416
 * @{
417
 */
418
/*===========================================================================*/
419
420
/**
421
 * @brief   Debug option, kernel statistics.
422
 *
423
 * @note    The default is @p FALSE.
424
 */
425
#if ((CH_CFG_USE_TM == TRUE) && (AMIROOS_CFG_DBG == true)) || defined(__DOXYGEN__)
426
  #define CH_DBG_STATISTICS                 TRUE
427
#else
428
  #define CH_DBG_STATISTICS                 FALSE
429
#endif
430
431
/**
432
 * @brief   Debug option, system state check.
433
 * @details If enabled the correct call protocol for system APIs is checked
434
 *          at runtime.
435
 *
436
 * @note    The default is @p FALSE.
437
 */
438
#if (AMIROOS_CFG_DBG == true) || defined(__DOXYGEN__)
439
  #define CH_DBG_SYSTEM_STATE_CHECK         TRUE
440
#else
441
  #define CH_DBG_SYSTEM_STATE_CHECK         FALSE
442
#endif
443
444
/**
445
 * @brief   Debug option, parameters checks.
446
 * @details If enabled then the checks on the API functions input
447
 *          parameters are activated.
448
 *
449
 * @note    The default is @p FALSE.
450
 */
451
#if (AMIROOS_CFG_DBG == true) || defined(__DOXYGEN__)
452
  #define CH_DBG_ENABLE_CHECKS              TRUE
453
#else
454
  #define CH_DBG_ENABLE_CHECKS              FALSE
455
#endif
456
457
/**
458
 * @brief   Debug option, consistency checks.
459
 * @details If enabled then all the assertions in the kernel code are
460
 *          activated. This includes consistency checks inside the kernel,
461
 *          runtime anomalies and port-defined checks.
462
 *
463
 * @note    The default is @p FALSE.
464
 */
465
#if (AMIROOS_CFG_DBG == true) || defined(__DOXYGEN__)
466
  #define CH_DBG_ENABLE_ASSERTS             TRUE
467
#else
468
  #define CH_DBG_ENABLE_ASSERTS             FALSE
469
#endif
470
471
/**
472
 * @brief   Debug option, trace buffer.
473
 * @details If enabled then the trace buffer is activated.
474
 *
475
 * @note    The default is @p CH_DBG_TRACE_MASK_DISABLED.
476
 */
477
#define CH_DBG_TRACE_MASK                   CH_DBG_TRACE_MASK_DISABLED
478
479
/**
480
 * @brief   Trace buffer entries.
481
 * @note    The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is
482
 *          different from @p CH_DBG_TRACE_MASK_DISABLED.
483
 */
484
#define CH_DBG_TRACE_BUFFER_SIZE            128
485
486
/**
487
 * @brief   Debug option, stack checks.
488
 * @details If enabled then a runtime stack check is performed.
489
 *
490
 * @note    The default is @p FALSE.
491
 * @note    The stack check is performed in a architecture/port dependent way.
492
 *          It may not be implemented or some ports.
493
 * @note    The default failure mode is to halt the system with the global
494
 *          @p panic_msg variable set to @p NULL.
495
 */
496
#if (AMIROOS_CFG_DBG == true) || defined(__DOXYGEN__)
497
  #define CH_DBG_ENABLE_STACK_CHECK         TRUE
498
#else
499
  #define CH_DBG_ENABLE_STACK_CHECK         FALSE
500
#endif
501
502
/**
503
 * @brief   Debug option, stacks initialization.
504
 * @details If enabled then the threads working area is filled with a byte
505
 *          value when a thread is created. This can be useful for the
506
 *          runtime measurement of the used stack.
507
 *
508
 * @note    The default is @p FALSE.
509
 */
510
#if (AMIROOS_CFG_PROFILE == true) || defined(__DOXYGEN__)
511
  #define CH_DBG_FILL_THREADS               TRUE
512
#else
513
  #define CH_DBG_FILL_THREADS               FALSE
514
#endif
515
516
/**
517
 * @brief   Debug option, threads profiling.
518
 * @details If enabled then a field is added to the @p thread_t structure that
519
 *          counts the system ticks occurred while executing the thread.
520
 *
521
 * @note    The default is @p FALSE.
522
 * @note    This debug option is not currently compatible with the
523
 *          tickless mode.
524
 */
525
#if ((CH_CFG_ST_TIMEDELTA == 0) && (AMIROOS_CFG_PROFILE == true)) || defined(__DOXYGEN__)
526
  #define CH_DBG_THREADS_PROFILING          TRUE
527
#else
528
  #define CH_DBG_THREADS_PROFILING          FALSE
529
#endif
530
531
/** @} */
532
533
/*===========================================================================*/
534
/**
535
 * @name Kernel hooks
536
 * @{
537
 */
538
/*===========================================================================*/
539
540
/**
541 1e5f7648 Thomas Schöpping
 * @brief   System structure extension.
542
 * @details User fields added to the end of the @p ch_system_t structure.
543
 */
544
#define CH_CFG_SYSTEM_EXTRA_FIELDS                                          \
545
  /* Add threads custom fields here.*/
546
547
/**
548
 * @brief   System initialization hook.
549
 * @details User initialization code added to the @p chSysInit() function
550
 *          just before interrupts are enabled globally.
551
 */
552
#define CH_CFG_SYSTEM_INIT_HOOK() {                                         \
553
  /* Add threads initialization code here.*/                                \
554
}
555
556
/**
557 043cdf33 Thomas Schöpping
 * @brief   Threads descriptor structure extension.
558
 * @details User fields added to the end of the @p thread_t structure.
559
 */
560
#define CH_CFG_THREAD_EXTRA_FIELDS                                          \
561
  /* Add threads custom fields here.*/
562
563
/**
564
 * @brief   Threads initialization hook.
565 1e5f7648 Thomas Schöpping
 * @details User initialization code added to the @p _thread_init() function.
566 043cdf33 Thomas Schöpping
 *
567 1e5f7648 Thomas Schöpping
 * @note    It is invoked from within @p _thread_init() and implicitly from all
568 043cdf33 Thomas Schöpping
 *          the threads creation APIs.
569
 */
570
#define CH_CFG_THREAD_INIT_HOOK(tp) {                                       \
571
  /* Add threads initialization code here.*/                                \
572
}
573
574
/**
575
 * @brief   Threads finalization hook.
576
 * @details User finalization code added to the @p chThdExit() API.
577
 */
578
#define CH_CFG_THREAD_EXIT_HOOK(tp) {                                       \
579
  /* Add threads finalization code here.*/                                  \
580
}
581
582
/**
583
 * @brief   Context switch hook.
584
 * @details This hook is invoked just before switching between threads.
585
 */
586
#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) {                              \
587
  /* Context switch code here.*/                                            \
588
}
589
590
/**
591
 * @brief   ISR enter hook.
592
 */
593
#define CH_CFG_IRQ_PROLOGUE_HOOK() {                                        \
594
  /* IRQ prologue code here.*/                                              \
595
}
596
597
/**
598
 * @brief   ISR exit hook.
599
 */
600
#define CH_CFG_IRQ_EPILOGUE_HOOK() {                                        \
601
  /* IRQ epilogue code here.*/                                              \
602
}
603
604
/**
605
 * @brief   Idle thread enter hook.
606
 * @note    This hook is invoked within a critical zone, no OS functions
607
 *          should be invoked from here.
608
 * @note    This macro can be used to activate a power saving mode.
609
 */
610
#define CH_CFG_IDLE_ENTER_HOOK() {                                          \
611
  /* Idle-enter code here.*/                                                \
612
}
613
614
/**
615
 * @brief   Idle thread leave hook.
616
 * @note    This hook is invoked within a critical zone, no OS functions
617
 *          should be invoked from here.
618
 * @note    This macro can be used to deactivate a power saving mode.
619
 */
620
#define CH_CFG_IDLE_LEAVE_HOOK() {                                          \
621
  /* Idle-leave code here.*/                                                \
622
}
623
624
/**
625
 * @brief   Idle Loop hook.
626
 * @details This hook is continuously invoked by the idle thread loop.
627
 */
628
#define CH_CFG_IDLE_LOOP_HOOK() {                                           \
629
  /* Idle loop code here.*/                                                 \
630
}
631
632
/**
633
 * @brief   System tick event hook.
634
 * @details This hook is invoked in the system tick handler immediately
635
 *          after processing the virtual timers queue.
636
 */
637
#define CH_CFG_SYSTEM_TICK_HOOK() {                                         \
638
  /* System tick event code here.*/                                         \
639
}
640
641
/**
642
 * @brief   System halt hook.
643
 * @details This hook is invoked in case to a system halting error before
644
 *          the system is halted.
645
 */
646
#define CH_CFG_SYSTEM_HALT_HOOK(reason) {                                   \
647 efbf7cb1 Thomas Schöpping
  /* System halt code here.*/                                               \
648 043cdf33 Thomas Schöpping
}
649
650
/**
651
 * @brief   Trace hook.
652
 * @details This hook is invoked each time a new record is written in the
653
 *          trace buffer.
654
 */
655
#define CH_CFG_TRACE_HOOK(tep) {                                            \
656
  /* Trace code here.*/                                                     \
657
}
658
659
/** @} */
660
661
/*===========================================================================*/
662
/**
663
 * @name Port specific settings
664
 */
665
/*===========================================================================*/
666
667
// These settings are specific to each module.
668
669
/*===========================================================================*/
670
/**
671
 * @name other
672
 * @{
673
 */
674
/*===========================================================================*/
675
676
/**
677 1e5f7648 Thomas Schöpping
 * @brief   Flag to enable/disable floating point support in chprintf() and all deriviates.
678 043cdf33 Thomas Schöpping
 */
679
#define CHPRINTF_USE_FLOAT                  TRUE
680
681
/** @} */
682
683 6ff06bbf Thomas Schöpping
#endif  /* AOS_CHCONF_H */
684 043cdf33 Thomas Schöpping
685
/** @} */