• R/O
  • SSH
  • HTTPS

chibios: Commit


Commit MetaInfo

Revision14908 (tree)
Time2021-10-13 23:47:22
Authorgdisirio

Log Message

Experimental code, to be removed.

Change Summary

Incremental Difference

--- trunk/os/hal/osal/sb/osal.c (nonexistent)
+++ trunk/os/hal/osal/sb/osal.c (revision 14908)
@@ -0,0 +1,147 @@
1+/*
2+ ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
3+
4+ Licensed under the Apache License, Version 2.0 (the "License");
5+ you may not use this file except in compliance with the License.
6+ You may obtain a copy of the License at
7+
8+ http://www.apache.org/licenses/LICENSE-2.0
9+
10+ Unless required by applicable law or agreed to in writing, software
11+ distributed under the License is distributed on an "AS IS" BASIS,
12+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+ See the License for the specific language governing permissions and
14+ limitations under the License.
15+*/
16+
17+/**
18+ * @file osal.c
19+ * @brief OSAL module code.
20+ *
21+ * @addtogroup OSAL
22+ * @{
23+ */
24+
25+#include "osal.h"
26+#include "osal_vt.h"
27+
28+/*===========================================================================*/
29+/* Module local definitions. */
30+/*===========================================================================*/
31+
32+/*===========================================================================*/
33+/* Module exported variables. */
34+/*===========================================================================*/
35+
36+/**
37+ * @brief Pointer to a halt error message.
38+ * @note The message is meant to be retrieved by the debugger after the
39+ * system halt caused by an unexpected error.
40+ */
41+const char *osal_halt_msg;
42+
43+/*===========================================================================*/
44+/* Module local types. */
45+/*===========================================================================*/
46+
47+/*===========================================================================*/
48+/* Module local variables. */
49+/*===========================================================================*/
50+
51+/*===========================================================================*/
52+/* Module local functions. */
53+/*===========================================================================*/
54+
55+static void callback_timeout(void *p) {
56+ osalSysLockFromISR();
57+ osalThreadResumeI((thread_reference_t *)p, MSG_TIMEOUT);
58+ osalSysUnlockFromISR();
59+}
60+
61+/*===========================================================================*/
62+/* Module exported functions. */
63+/*===========================================================================*/
64+
65+/**
66+ * @brief System halt with error message.
67+ *
68+ * @param[in] reason the halt message pointer
69+ *
70+ * @api
71+ */
72+#if !defined(__DOXYGEN__)
73+__attribute__((weak, noreturn))
74+#endif
75+void osalSysHalt(const char *reason) {
76+
77+ osalSysDisable();
78+ osal_halt_msg = reason;
79+ while (true) {
80+ }
81+}
82+
83+/**
84+ * @brief Polled delay.
85+ * @note The real delay is always few cycles in excess of the specified
86+ * value.
87+ *
88+ * @param[in] cycles number of cycles
89+ *
90+ * @xclass
91+ */
92+void osalSysPolledDelayX(rtcnt_t cycles) {
93+
94+ (void)cycles;
95+}
96+
97+/**
98+ * @brief Current system time.
99+ * @details Returns the number of system ticks since the @p osalInit()
100+ * invocation.
101+ * @note The counter can reach its maximum and then restart from zero.
102+ * @note This function can be called from any context but its atomicity
103+ * is not guaranteed on architectures whose word size is less than
104+ * @p systime_t size.
105+ *
106+ * @return The system time in ticks.
107+ *
108+ * @xclass
109+ */
110+systime_t osalOsGetSystemTimeX(void) {
111+
112+ return 0;
113+}
114+
115+/**
116+ * @brief Suspends the invoking thread for the specified time.
117+ *
118+ * @param[in] time the delay in system ticks, the special values are
119+ * handled as follow:
120+ * - @a TIME_INFINITE is allowed but interpreted as a
121+ * normal time specification.
122+ * - @a TIME_IMMEDIATE this value is not allowed.
123+ * .
124+ *
125+ * @sclass
126+ */
127+void osalThreadSleepS(sysinterval_t time) {
128+
129+}
130+
131+/**
132+ * @brief Suspends the invoking thread for the specified time.
133+ *
134+ * @param[in] time the delay in system ticks, the special values are
135+ * handled as follow:
136+ * - @a TIME_INFINITE is allowed but interpreted as a
137+ * normal time specification.
138+ * - @a TIME_IMMEDIATE this value is not allowed.
139+ * .
140+ *
141+ * @api
142+ */
143+void osalThreadSleep(sysinterval_t time) {
144+
145+}
146+
147+/** @} */
--- trunk/os/hal/osal/sb/osal.h (nonexistent)
+++ trunk/os/hal/osal/sb/osal.h (revision 14908)
@@ -0,0 +1,492 @@
1+/*
2+ ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
3+
4+ Licensed under the Apache License, Version 2.0 (the "License");
5+ you may not use this file except in compliance with the License.
6+ You may obtain a copy of the License at
7+
8+ http://www.apache.org/licenses/LICENSE-2.0
9+
10+ Unless required by applicable law or agreed to in writing, software
11+ distributed under the License is distributed on an "AS IS" BASIS,
12+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+ See the License for the specific language governing permissions and
14+ limitations under the License.
15+*/
16+
17+/**
18+ * @file osal.h
19+ * @brief OSAL module header.
20+ *
21+ * @addtogroup OSAL
22+ * @{
23+ */
24+
25+#ifndef OSAL_H
26+#define OSAL_H
27+
28+#include <stddef.h>
29+#include <stdint.h>
30+#include <stdbool.h>
31+
32+#include "sbuser.h"
33+
34+/*===========================================================================*/
35+/* Module constants. */
36+/*===========================================================================*/
37+
38+/**
39+ * @name Common constants
40+ * @{
41+ */
42+#if !defined(FALSE) || defined(__DOXYGEN__)
43+#define FALSE 0
44+#endif
45+
46+#if !defined(TRUE) || defined(__DOXYGEN__)
47+#define TRUE 1
48+#endif
49+
50+#define OSAL_SUCCESS false
51+#define OSAL_FAILED true
52+/** @} */
53+
54+/**
55+ * @name Systick modes.
56+ * @{
57+ */
58+#define OSAL_ST_MODE_NONE 0
59+#define OSAL_ST_MODE_PERIODIC 1
60+#define OSAL_ST_MODE_FREERUNNING 2
61+/** @} */
62+
63+/**
64+ * @name Systick parameters.
65+ * @{
66+ */
67+/**
68+ * @brief Systick mode required by the underlying OS.
69+ */
70+#define OSAL_ST_MODE OSAL_ST_MODE_NONE
71+/** @} */
72+
73+/*===========================================================================*/
74+/* Module pre-compile time settings. */
75+/*===========================================================================*/
76+
77+/**
78+ * @brief Enables OSAL assertions.
79+ */
80+#if !defined(OSAL_DBG_ENABLE_ASSERTS) || defined(__DOXYGEN__)
81+#define OSAL_DBG_ENABLE_ASSERTS FALSE
82+#endif
83+
84+/**
85+ * @brief Enables OSAL functions parameters checks.
86+ */
87+#if !defined(OSAL_DBG_ENABLE_CHECKS) || defined(__DOXYGEN__)
88+#define OSAL_DBG_ENABLE_CHECKS FALSE
89+#endif
90+
91+/**
92+ * @brief OSAL initialization hook.
93+ */
94+#if !defined(OSAL_INIT_HOOK) || defined(__DOXYGEN__)
95+#define OSAL_INIT_HOOK()
96+#endif
97+
98+/**
99+ * @brief Idle loop hook macro.
100+ */
101+#if !defined(OSAL_IDLE_HOOK) || defined(__DOXYGEN__)
102+#define OSAL_IDLE_HOOK()
103+#endif
104+
105+/*===========================================================================*/
106+/* Derived constants and error checks. */
107+/*===========================================================================*/
108+
109+/*===========================================================================*/
110+/* Module data structures and types. */
111+/*===========================================================================*/
112+
113+/*===========================================================================*/
114+/* Module macros. */
115+/*===========================================================================*/
116+
117+/**
118+ * @name Debug related macros
119+ * @{
120+ */
121+/**
122+ * @brief Condition assertion.
123+ * @details If the condition check fails then the OSAL panics with a
124+ * message and halts.
125+ * @note The condition is tested only if the @p OSAL_ENABLE_ASSERTIONS
126+ * switch is enabled.
127+ * @note The remark string is not currently used except for putting a
128+ * comment in the code about the assertion.
129+ *
130+ * @param[in] c the condition to be verified to be true
131+ * @param[in] remark a remark string
132+ *
133+ * @api
134+ */
135+#define osalDbgAssert(c, remark) do { \
136+ /*lint -save -e506 -e774 [2.1, 14.3] Can be a constant by design.*/ \
137+ if (OSAL_DBG_ENABLE_ASSERTS != FALSE) { \
138+ if (!(c)) { \
139+ /*lint -restore*/ \
140+ osalSysHalt(__func__); \
141+ } \
142+ } \
143+} while (false)
144+
145+/**
146+ * @brief Function parameters check.
147+ * @details If the condition check fails then the OSAL panics and halts.
148+ * @note The condition is tested only if the @p OSAL_ENABLE_CHECKS switch
149+ * is enabled.
150+ *
151+ * @param[in] c the condition to be verified to be true
152+ *
153+ * @api
154+ */
155+#define osalDbgCheck(c) do { \
156+ /*lint -save -e506 -e774 [2.1, 14.3] Can be a constant by design.*/ \
157+ if (OSAL_DBG_ENABLE_CHECKS != FALSE) { \
158+ if (!(c)) { \
159+ /*lint -restore*/ \
160+ osalSysHalt(__func__); \
161+ } \
162+ } \
163+} while (false)
164+
165+/**
166+ * @brief I-Class state check.
167+ * @note Implementation is optional.
168+ */
169+#define osalDbgCheckClassI()
170+
171+/**
172+ * @brief S-Class state check.
173+ * @note Implementation is optional.
174+ */
175+#define osalDbgCheckClassS()
176+/** @} */
177+
178+/**
179+ * @name Time conversion utilities
180+ * @{
181+ */
182+/**
183+ * @brief Seconds to time interval.
184+ * @details Converts from seconds to system ticks number.
185+ * @note The result is rounded upward to the next tick boundary.
186+ * @note Use of this macro for large values is not secure because
187+ * integer overflows, make sure your value can be correctly
188+ * converted.
189+ *
190+ * @param[in] secs number of seconds
191+ * @return The number of ticks.
192+ *
193+ * @api
194+ */
195+#define OSAL_S2I(secs) \
196+ ((sysinterval_t)((time_conv_t)(secs) * (time_conv_t)OSAL_ST_FREQUENCY))
197+
198+/**
199+ * @brief Milliseconds to time interval.
200+ * @details Converts from milliseconds to system ticks number.
201+ * @note The result is rounded upward to the next tick boundary.
202+ * @note Use of this macro for large values is not secure because
203+ * integer overflows, make sure your value can be correctly
204+ * converted.
205+ *
206+ * @param[in] msecs number of milliseconds
207+ * @return The number of ticks.
208+ *
209+ * @api
210+ */
211+#define OSAL_MS2I(msecs) \
212+ ((sysinterval_t)((((time_conv_t)(msecs) * \
213+ (time_conv_t)OSAL_ST_FREQUENCY) + \
214+ (time_conv_t)999) / (time_conv_t)1000))
215+
216+/**
217+ * @brief Microseconds to time interval.
218+ * @details Converts from microseconds to system ticks number.
219+ * @note The result is rounded upward to the next tick boundary.
220+ * @note Use of this macro for large values is not secure because
221+ * integer overflows, make sure your value can be correctly
222+ * converted.
223+ *
224+ * @param[in] usecs number of microseconds
225+ * @return The number of ticks.
226+ *
227+ * @api
228+ */
229+#define OSAL_US2I(usecs) \
230+ ((sysinterval_t)((((time_conv_t)(usecs) * \
231+ (time_conv_t)OSAL_ST_FREQUENCY) + \
232+ (time_conv_t)999999) / (time_conv_t)1000000))
233+
234+/**
235+ * @brief Time interval to seconds.
236+ * @details Converts from system ticks number to seconds.
237+ * @note The result is rounded up to the next second boundary.
238+ * @note Use of this macro for large values is not secure because
239+ * integer overflows, make sure your value can be correctly
240+ * converted.
241+ *
242+ * @param[in] interval interval in ticks
243+ * @return The number of seconds.
244+ *
245+ * @api
246+ */
247+#define OSAL_I2S(interval) \
248+ (time_secs_t)(((time_conv_t)(interval) + \
249+ (time_conv_t)OSAL_ST_FREQUENCY - \
250+ (time_conv_t)1) / (time_conv_t)OSAL_ST_FREQUENCY)
251+
252+/**
253+ * @brief Time interval to milliseconds.
254+ * @details Converts from system ticks number to milliseconds.
255+ * @note The result is rounded up to the next millisecond boundary.
256+ * @note Use of this macro for large values is not secure because
257+ * integer overflows, make sure your value can be correctly
258+ * converted.
259+ *
260+ * @param[in] interval interval in ticks
261+ * @return The number of milliseconds.
262+ *
263+ * @api
264+ */
265+#define OSAL_I2MS(interval) \
266+ (time_msecs_t)((((time_conv_t)(interval) * (time_conv_t)1000) + \
267+ (time_conv_t)OSAL_ST_FREQUENCY - (time_conv_t)1) / \
268+ (time_conv_t)OSAL_ST_FREQUENCY)
269+
270+/**
271+ * @brief Time interval to microseconds.
272+ * @details Converts from system ticks number to microseconds.
273+ * @note The result is rounded up to the next microsecond boundary.
274+ * @note Use of this macro for large values is not secure because
275+ * integer overflows, make sure your value can be correctly
276+ * converted.
277+ *
278+ * @param[in] interval interval in ticks
279+ * @return The number of microseconds.
280+ *
281+ * @api
282+ */
283+#define OSAL_I2US(interval) \
284+ (time_msecs_t)((((time_conv_t)(interval) * (time_conv_t)1000000) + \
285+ (time_conv_t)OSAL_ST_FREQUENCY - (time_conv_t)1) / \
286+ (time_conv_t)OSAL_ST_FREQUENCY)
287+/** @} */
288+
289+/**
290+ * @name Time conversion utilities for the realtime counter
291+ * @{
292+ */
293+/**
294+ * @brief Seconds to realtime counter.
295+ * @details Converts from seconds to realtime counter cycles.
296+ * @note The macro assumes that @p freq >= @p 1.
297+ *
298+ * @param[in] freq clock frequency, in Hz, of the realtime counter
299+ * @param[in] sec number of seconds
300+ * @return The number of cycles.
301+ *
302+ * @api
303+ */
304+#define OSAL_S2RTC(freq, sec) ((freq) * (sec))
305+
306+/**
307+ * @brief Milliseconds to realtime counter.
308+ * @details Converts from milliseconds to realtime counter cycles.
309+ * @note The result is rounded upward to the next millisecond boundary.
310+ * @note The macro assumes that @p freq >= @p 1000.
311+ *
312+ * @param[in] freq clock frequency, in Hz, of the realtime counter
313+ * @param[in] msec number of milliseconds
314+ * @return The number of cycles.
315+ *
316+ * @api
317+ */
318+#define OSAL_MS2RTC(freq, msec) (rtcnt_t)((((freq) + 999UL) / 1000UL) * (msec))
319+
320+/**
321+ * @brief Microseconds to realtime counter.
322+ * @details Converts from microseconds to realtime counter cycles.
323+ * @note The result is rounded upward to the next microsecond boundary.
324+ * @note The macro assumes that @p freq >= @p 1000000.
325+ *
326+ * @param[in] freq clock frequency, in Hz, of the realtime counter
327+ * @param[in] usec number of microseconds
328+ * @return The number of cycles.
329+ *
330+ * @api
331+ */
332+#define OSAL_US2RTC(freq, usec) (rtcnt_t)((((freq) + 999999UL) / 1000000UL) * (usec))
333+/** @} */
334+
335+/**
336+ * @name Sleep macros using absolute time
337+ * @{
338+ */
339+/**
340+ * @brief Delays the invoking thread for the specified number of seconds.
341+ * @note The specified time is rounded up to a value allowed by the real
342+ * system tick clock.
343+ * @note The maximum specifiable value is implementation dependent.
344+ *
345+ * @param[in] secs time in seconds, must be different from zero
346+ *
347+ * @api
348+ */
349+#define osalThreadSleepSeconds(secs) osalThreadSleep(OSAL_S2I(secs))
350+
351+/**
352+ * @brief Delays the invoking thread for the specified number of
353+ * milliseconds.
354+ * @note The specified time is rounded up to a value allowed by the real
355+ * system tick clock.
356+ * @note The maximum specifiable value is implementation dependent.
357+ *
358+ * @param[in] msecs time in milliseconds, must be different from zero
359+ *
360+ * @api
361+ */
362+#define osalThreadSleepMilliseconds(msecs) osalThreadSleep(OSAL_MS2I(msecs))
363+
364+/**
365+ * @brief Delays the invoking thread for the specified number of
366+ * microseconds.
367+ * @note The specified time is rounded up to a value allowed by the real
368+ * system tick clock.
369+ * @note The maximum specifiable value is implementation dependent.
370+ *
371+ * @param[in] usecs time in microseconds, must be different from zero
372+ *
373+ * @api
374+ */
375+#define osalThreadSleepMicroseconds(usecs) osalThreadSleep(OSAL_US2I(usecs))
376+/** @} */
377+
378+/*===========================================================================*/
379+/* External declarations. */
380+/*===========================================================================*/
381+
382+extern const char *osal_halt_msg;
383+
384+#ifdef __cplusplus
385+extern "C" {
386+#endif
387+ void osalInit(void);
388+ void osalSysHalt(const char *reason);
389+ void osalSysPolledDelayX(rtcnt_t cycles);
390+ systime_t osalOsGetSystemTimeX(void);
391+ void osalThreadSleepS(sysinterval_t time);
392+ void osalThreadSleep(sysinterval_t time);
393+#ifdef __cplusplus
394+}
395+#endif
396+
397+/*===========================================================================*/
398+/* Module inline functions. */
399+/*===========================================================================*/
400+
401+/**
402+ * @brief Disables interrupts globally.
403+ *
404+ * @special
405+ */
406+static inline void osalSysDisable(void) {
407+
408+}
409+
410+/**
411+ * @brief Enables interrupts globally.
412+ *
413+ * @special
414+ */
415+static inline void osalSysEnable(void) {
416+
417+}
418+
419+/**
420+ * @brief Enters a critical zone from thread context.
421+ * @note This function cannot be used for reentrant critical zones.
422+ *
423+ * @special
424+ */
425+static inline void osalSysLock(void) {
426+
427+}
428+
429+/**
430+ * @brief Leaves a critical zone from thread context.
431+ * @note This function cannot be used for reentrant critical zones.
432+ *
433+ * @special
434+ */
435+static inline void osalSysUnlock(void) {
436+
437+}
438+
439+/**
440+ * @brief Adds an interval to a system time returning a system time.
441+ *
442+ * @param[in] systime base system time
443+ * @param[in] interval interval to be added
444+ * @return The new system time.
445+ *
446+ * @xclass
447+ */
448+static inline systime_t osalTimeAddX(systime_t systime,
449+ sysinterval_t interval) {
450+
451+ return systime + (systime_t)interval;
452+}
453+
454+/**
455+ * @brief Subtracts two system times returning an interval.
456+ *
457+ * @param[in] start first system time
458+ * @param[in] end second system time
459+ * @return The interval representing the time difference.
460+ *
461+ * @xclass
462+ */
463+static inline sysinterval_t osalTimeDiffX(systime_t start, systime_t end) {
464+
465+ return (sysinterval_t)((systime_t)(end - start));
466+}
467+
468+/**
469+ * @brief Checks if the specified time is within the specified time window.
470+ * @note When start==end then the function returns always false because the
471+ * time window has zero size.
472+ * @note This function can be called from any context.
473+ *
474+ * @param[in] time the time to be verified
475+ * @param[in] start the start of the time window (inclusive)
476+ * @param[in] end the end of the time window (non inclusive)
477+ * @retval true current time within the specified time window.
478+ * @retval false current time not within the specified time window.
479+ *
480+ * @xclass
481+ */
482+static inline bool osalTimeIsInRangeX(systime_t time,
483+ systime_t start,
484+ systime_t end) {
485+
486+ return (bool)((systime_t)((systime_t)time - (systime_t)start) <
487+ (systime_t)((systime_t)end - (systime_t)start));
488+}
489+
490+#endif /* OSAL_H */
491+
492+/** @} */
--- trunk/os/hal/ports/sandbox/hal_lld.c (nonexistent)
+++ trunk/os/hal/ports/sandbox/hal_lld.c (revision 14908)
@@ -0,0 +1,60 @@
1+/*
2+ ChibiOS - Copyright (C) 2006..2021 Giovanni Di Sirio
3+
4+ Licensed under the Apache License, Version 2.0 (the "License");
5+ you may not use this file except in compliance with the License.
6+ You may obtain a copy of the License at
7+
8+ http://www.apache.org/licenses/LICENSE-2.0
9+
10+ Unless required by applicable law or agreed to in writing, software
11+ distributed under the License is distributed on an "AS IS" BASIS,
12+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+ See the License for the specific language governing permissions and
14+ limitations under the License.
15+*/
16+
17+/**
18+ * @file sandbox/hal_lld.c
19+ * @brief SandBox HAL subsystem low level driver source.
20+ *
21+ * @addtogroup HAL
22+ * @{
23+ */
24+
25+#include "hal.h"
26+
27+/*===========================================================================*/
28+/* Driver local definitions. */
29+/*===========================================================================*/
30+
31+/*===========================================================================*/
32+/* Driver exported variables. */
33+/*===========================================================================*/
34+
35+/*===========================================================================*/
36+/* Driver local variables and types. */
37+/*===========================================================================*/
38+
39+/*===========================================================================*/
40+/* Driver local functions. */
41+/*===========================================================================*/
42+
43+/*===========================================================================*/
44+/* Driver interrupt handlers. */
45+/*===========================================================================*/
46+
47+/*===========================================================================*/
48+/* Driver exported functions. */
49+/*===========================================================================*/
50+
51+/**
52+ * @brief Low level HAL driver initialization.
53+ *
54+ * @notapi
55+ */
56+void hal_lld_init(void) {
57+
58+}
59+
60+/** @} */
--- trunk/os/hal/ports/sandbox/hal_lld.h (nonexistent)
+++ trunk/os/hal/ports/sandbox/hal_lld.h (revision 14908)
@@ -0,0 +1,92 @@
1+/*
2+ ChibiOS - Copyright (C) 2006..2021 Giovanni Di Sirio
3+
4+ Licensed under the Apache License, Version 2.0 (the "License");
5+ you may not use this file except in compliance with the License.
6+ You may obtain a copy of the License at
7+
8+ http://www.apache.org/licenses/LICENSE-2.0
9+
10+ Unless required by applicable law or agreed to in writing, software
11+ distributed under the License is distributed on an "AS IS" BASIS,
12+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+ See the License for the specific language governing permissions and
14+ limitations under the License.
15+*/
16+
17+/**
18+ * @file sandbox/hal_lld.h
19+ * @brief SandBox HAL subsystem low level driver header.
20+ *
21+ * @addtogroup HAL
22+ * @{
23+ */
24+
25+#ifndef HAL_LLD_H
26+#define HAL_LLD_H
27+
28+/*===========================================================================*/
29+/* Driver constants. */
30+/*===========================================================================*/
31+
32+/**
33+ * @brief Specifies implementation of dynamic clock management.
34+ */
35+/*#define HAL_LLD_USE_CLOCK_MANAGEMENT*/
36+
37+/**
38+ * @name Platform identification macros
39+ * @{
40+ */
41+#define PLATFORM_NAME "SandBox"
42+/** @} */
43+
44+/*===========================================================================*/
45+/* Driver pre-compile time settings. */
46+/*===========================================================================*/
47+
48+/**
49+ * @name PLATFORM configuration options
50+ * @{
51+ */
52+/** @} */
53+
54+/*===========================================================================*/
55+/* Derived constants and error checks. */
56+/*===========================================================================*/
57+
58+/*
59+ * Configuration-related checks.
60+ */
61+#if !defined(SANDBOX_MCUCONF)
62+#error "Using a wrong mcuconf.h file, SANDBOX_MCUCONF not defined"
63+#endif
64+
65+/*===========================================================================*/
66+/* Driver data structures and types. */
67+/*===========================================================================*/
68+
69+/**
70+ * @brief Type of a clock point identifier.
71+ */
72+typedef unsigned halclkpt_t;
73+
74+/*===========================================================================*/
75+/* Driver macros. */
76+/*===========================================================================*/
77+
78+/*===========================================================================*/
79+/* External declarations. */
80+/*===========================================================================*/
81+
82+#ifdef __cplusplus
83+extern "C" {
84+#endif
85+ void hal_lld_init(void);
86+#ifdef __cplusplus
87+}
88+#endif
89+
90+#endif /* HAL_LLD_H */
91+
92+/** @} */
Show on old repository browser