1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
64
65
66
67
68
69
70
71
72
77
78
88
89
90
91
92
93
94
95
96
97
98
99
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
137
138
139
144
145
146
151
152
153
154
155
156
157
158
159
/* ... */
/* ... */
#ifndef DEBUG_H
#define DEBUG_H
#include "btstack_config.h"
#include "btstack_defines.h"
#include "hci_dump.h"
#if defined __cplusplus
extern "C" {
#endif
#ifdef __AVR__
#include <avr/pgmspace.h>
#endif
#ifdef HAVE_ASSERT
#ifndef btstack_assert
#include <assert.h>
#endif/* ... */
#endif
#ifndef BTSTACK_FILE__
#define BTSTACK_FILE__ __FILE__
#endif
#ifdef HAVE_ASSERT
#ifndef btstack_assert
#define btstack_assert(condition) assert(condition)
/* ... */#endif /* ... */
#else
#ifdef ENABLE_BTSTACK_ASSERT
void btstack_assert_failed(const char * file, uint16_t line_nr);
#ifndef btstack_assert
#define btstack_assert(condition) if (condition) {} else { btstack_assert_failed(BTSTACK_FILE__, __LINE__); }
/* ... */#endif/* ... */
#else
#define btstack_assert(condition) {(void)(condition);}
/* ... */#endif /* ... */
#endif
#ifdef UNIT_TEST
#define btstack_unreachable()
#else
#define btstack_unreachable() btstack_assert(false)
#endif
#ifndef BTSTACK_PRINTF
#ifdef __AVR__
#define BTSTACK_PRINTF(format, ...) printf_P(PSTR(format), ## __VA_ARGS__)
#else
#define BTSTACK_PRINTF(format, ...) printf(format, ## __VA_ARGS__)
#endif/* ... */
#endif
#ifdef __AVR__
#define HCI_DUMP_LOG(log_level, format, ...) hci_dump_log_P(log_level, PSTR("%S.%u: " format), PSTR(BTSTACK_FILE__), __LINE__, ## __VA_ARGS__)
#else
#define HCI_DUMP_LOG(log_level, format, ...) hci_dump_log(log_level, "%s.%u: " format, BTSTACK_FILE__, __LINE__, ## __VA_ARGS__)
#endif
#ifdef ENABLE_LOG_DEBUG
#define log_debug(format, ...) HCI_DUMP_LOG(HCI_DUMP_LOG_LEVEL_DEBUG, format, ## __VA_ARGS__)
#else
#define log_debug(...) (void)(0)
#endif
#ifdef ENABLE_LOG_INFO
#define log_info(format, ...) HCI_DUMP_LOG(HCI_DUMP_LOG_LEVEL_INFO, format, ## __VA_ARGS__)
#else
#define log_info(...) (void)(0)
#endif
#ifdef ENABLE_LOG_ERROR
#define log_error(format, ...) HCI_DUMP_LOG(HCI_DUMP_LOG_LEVEL_ERROR, format, ## __VA_ARGS__)
#else
#define log_error(...) (void)(0)
#endif
/* ... */
void log_info_key(const char * name, sm_key_t key);
/* ... */
void log_info_hexdump(const void *data, int size);
/* ... */
void log_debug_hexdump(const void *data, int size);
#if defined __cplusplus
}extern "C" { ... }
#endif
/* ... */
#endif