Skip to content

Commit 6727477

Browse files
Merge pull request #8 from tdk-invn-oss/main
Add icp101xx driver (#10)
2 parents 9054913 + 73606f4 commit 6727477

File tree

6 files changed

+893
-0
lines changed

6 files changed

+893
-0
lines changed

CMakeLists.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,21 @@ if(CONFIG_TDK_HAL)
3434
)
3535
endif()
3636

37+
if(CONFIG_USE_EMD_ICP101XX)
38+
zephyr_include_directories(
39+
common/Invn
40+
icp101xx
41+
)
42+
43+
# When building native_sim on Zephyr we need to explicitely disable messages
44+
zephyr_compile_definitions(-DINV_MSG_DISABLE=1)
45+
46+
if (NOT CONFIG_CPU_HAS_FPU STREQUAL "y")
47+
zephyr_compile_definitions(ICP101XX_DISABLE_FLOATING_POINT)
48+
endif()
49+
zephyr_library_sources(
50+
icp101xx/Icp101xx.c
51+
)
52+
endif()
53+
3754
endif()

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ https://invensense.tdk.com/products/motion-tracking/3-axis/
2020
And MEMs Barometric Pressure sensor drivers for:
2121

2222
* ICP-201xx
23+
* ICP-101xx
2324

2425
Find more information and product details here:
2526
https://invensense.tdk.com/smartpressure/

common/Invn/Message.h

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
/*
2+
* Copyright (c) 2017 TDK Invensense
3+
*
4+
* SPDX-License-Identifier: BSD 3-Clause
5+
*/
6+
7+
/** @defgroup Message Message
8+
* @brief Utility functions to display and redirect diagnostic messages
9+
*
10+
* Use INV_MSG_DISABLE or INV_MSG_ENABLE define before including
11+
* this header to enable/disable messages for a compilation unit.
12+
*
13+
* Under Linux, Windows or Arduino, messages are enabled by default.
14+
* Use INV_MSG_DISABLE to disable them.
15+
*
16+
* Under orther environmment, message are disabled by default.
17+
* Use INV_MSG_ENABLE to disable them.
18+
*
19+
* @ingroup EmbUtils
20+
* @{
21+
*/
22+
23+
#ifndef _INV_MESSAGE_H_
24+
#define _INV_MESSAGE_H_
25+
26+
#include "InvExport.h"
27+
28+
#ifdef __cplusplus
29+
extern "C" {
30+
#endif
31+
32+
#include <stdarg.h>
33+
34+
/** @brief For eMD target, disable log by default
35+
* If compile switch is set for a compilation unit
36+
* messages will be totally disabled by default
37+
*/
38+
#if !defined(__linux) && !defined(_WIN32) && !defined(ARDUINO)
39+
#define INV_MSG_DISABLE 1
40+
#endif
41+
42+
43+
/** @brief Allow to force enabling messaging using INV_MSG_ENABLE define */
44+
#ifdef INV_MSG_ENABLE
45+
#undef INV_MSG_DISABLE
46+
#endif
47+
48+
49+
/** @brief Helper macro for calling inv_msg()
50+
* If INV_MSG_DISABLE compile switch is set for a compilation unit
51+
* messages will be totally disabled
52+
*/
53+
#define INV_MSG(level, ...) _INV_MSG(level, __VA_ARGS__)
54+
55+
/** @brief Helper macro for calling inv_msg_setup()
56+
* If INV_MSG_DISABLE compile switch is set for a compilation unit
57+
* messages will be totally disabled
58+
*/
59+
#define INV_MSG_SETUP(level, printer) _INV_MSG_SETUP(level, printer)
60+
61+
/** @brief Helper macro for calling inv_msg_setup_level()
62+
* If INV_MSG_DISABLE compile switch is set for a compilation unit
63+
* messages will be totally disabled
64+
*/
65+
#define INV_MSG_SETUP_LEVEL(level) _INV_MSG_SETUP_LEVEL(level)
66+
67+
/** @brief Helper macro for calling inv_msg_setup_default()
68+
* If INV_MSG_DISABLE compile switch is set for a compilation unit
69+
* messages will be totally disabled
70+
*/
71+
#define INV_MSG_SETUP_DEFAULT() _INV_MSG_SETUP_DEFAULT()
72+
73+
/** @brief Return current level
74+
* @warning This macro may expand as a function call
75+
*/
76+
#define INV_MSG_LEVEL _INV_MSG_LEVEL
77+
78+
#if defined(INV_MSG_DISABLE)
79+
#define _INV_MSG(level, ...) (void)0
80+
#define _INV_MSG_SETUP(level, printer) (void)0
81+
#define _INV_MSG_SETUP_LEVEL(level) (void)0
82+
#define _INV_MSG_LEVEL INV_MSG_LEVEL_OFF
83+
#else
84+
#define _INV_MSG(level, ...) inv_msg(level, __VA_ARGS__)
85+
#define _INV_MSG_SETUP(level, printer) inv_msg_setup(level, printer)
86+
#define _INV_MSG_SETUP_LEVEL(level) inv_msg_setup(level, inv_msg_printer_default)
87+
#define _INV_MSG_SETUP_DEFAULT() inv_msg_setup_default()
88+
#define _INV_MSG_LEVEL inv_msg_get_level()
89+
#endif
90+
91+
/** @brief message level definition
92+
*/
93+
enum inv_msg_level {
94+
INV_MSG_LEVEL_OFF = 0,
95+
INV_MSG_LEVEL_ERROR,
96+
INV_MSG_LEVEL_WARNING,
97+
INV_MSG_LEVEL_INFO,
98+
INV_MSG_LEVEL_VERBOSE,
99+
INV_MSG_LEVEL_DEBUG,
100+
INV_MSG_LEVEL_MAX
101+
};
102+
103+
104+
/** @brief Prototype for print routine function
105+
*/
106+
typedef void (*inv_msg_printer_t)(int level, const char * str, va_list ap);
107+
108+
109+
/** @brief Set message level and printer function
110+
* @param[in] level only message above level will be passed to printer function
111+
* @param[in] printer user provided function in charge printing message
112+
* @return none
113+
*/
114+
void INV_EXPORT inv_msg_setup(int level, inv_msg_printer_t printer);
115+
116+
117+
/** @brief Default printer function that display messages to stderr
118+
* Function uses stdio. Care must be taken on embeded platfrom.
119+
* Function does nothing with IAR compiler.
120+
* @return none
121+
*/
122+
void INV_EXPORT inv_msg_printer_default(int level, const char * str, va_list ap);
123+
124+
/** @brief Set message level
125+
* Default printer function will be used.
126+
* @param[in] level only message above level will be passed to printer function
127+
* @return none
128+
*/
129+
static inline void inv_msg_setup_level(int level)
130+
{
131+
inv_msg_setup(level, inv_msg_printer_default);
132+
}
133+
134+
135+
/** @brief Set default message level and printer
136+
* @return none
137+
*/
138+
static inline void inv_msg_setup_default(void)
139+
{
140+
inv_msg_setup(INV_MSG_LEVEL_INFO, inv_msg_printer_default);
141+
}
142+
143+
/** @brief Return current message level
144+
* @return current message level
145+
*/
146+
int INV_EXPORT inv_msg_get_level(void);
147+
148+
/** @brief Display a message (through means of printer function)
149+
* @param[in] level for the message
150+
* @param[in] str message string
151+
* @param[in] ... optional arguments
152+
* @return none
153+
*/
154+
void INV_EXPORT inv_msg(int level, const char * str, ...);
155+
156+
157+
#ifdef __cplusplus
158+
}
159+
#endif
160+
161+
#endif /* INV_MESSAGE_H_ */
162+
163+
/** @} */

0 commit comments

Comments
 (0)