mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-10-27 16:43:59 +08:00
22a8575199
Keep official openpilot ancestry and dependency licenses. Store resources directly in Git, remove LFS setup requirements, and leave the downloadable big model outside the source tree.
50 lines
1.4 KiB
C
50 lines
1.4 KiB
C
#pragma once
|
|
|
|
// cppcheck-suppress-macro [misra-c2012-1.2, misra-c2012-17.3]; allow __typeof__ extension
|
|
#define MIN(a, b) ({ \
|
|
__typeof__ (a) _a = (a); \
|
|
__typeof__ (b) _b = (b); \
|
|
(_a < _b) ? _a : _b; \
|
|
})
|
|
|
|
// cppcheck-suppress-macro [misra-c2012-1.2, misra-c2012-17.3]; allow __typeof__ extension
|
|
#define MAX(a, b) ({ \
|
|
__typeof__ (a) _a = (a); \
|
|
__typeof__ (b) _b = (b); \
|
|
(_a > _b) ? _a : _b; \
|
|
})
|
|
|
|
// cppcheck-suppress-macro [misra-c2012-1.2, misra-c2012-17.3]; allow __typeof__ extension
|
|
#define CLAMP(x, low, high) ({ \
|
|
__typeof__(x) __x = (x); \
|
|
__typeof__(low) __low = (low);\
|
|
__typeof__(high) __high = (high);\
|
|
(__x > __high) ? __high : ((__x < __low) ? __low : __x); \
|
|
})
|
|
|
|
// cppcheck-suppress-macro [misra-c2012-1.2, misra-c2012-17.3]; allow __typeof__ extension
|
|
#define ABS(a) ({ \
|
|
__typeof__ (a) _a = (a); \
|
|
(_a > 0) ? _a : (-_a); \
|
|
})
|
|
|
|
#ifndef NULL
|
|
// this just provides a standard implementation of NULL
|
|
// in lieu of including libc in the panda build
|
|
// cppcheck-suppress [misra-c2012-21.1]
|
|
#define NULL ((void*)0)
|
|
#endif
|
|
|
|
// STM32 HAL defines this
|
|
#ifndef UNUSED
|
|
#define UNUSED(x) ((void)(x))
|
|
#endif
|
|
|
|
#define COMPILE_TIME_ASSERT(pred) ((void)sizeof(char[1 - (2 * (!(pred) ? 1 : 0))]))
|
|
|
|
// compute the time elapsed (in microseconds) from 2 counter samples
|
|
// case where ts < ts_last is ok: overflow is properly re-casted into uint32_t
|
|
uint32_t get_ts_elapsed(uint32_t ts, uint32_t ts_last) {
|
|
return ts - ts_last;
|
|
}
|