Workshop example

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Committer:
JimCarver
Date:
Tue May 21 21:16:24 2019 +0000
Revision:
35:42b3fba640b1
Parent:
18:a15bfe7aaebd
Simple version for workshop

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 18:a15bfe7aaebd 1 /*******************************************************************************
screamer 18:a15bfe7aaebd 2 Copyright © 2015, STMicroelectronics International N.V.
screamer 18:a15bfe7aaebd 3 All rights reserved.
screamer 18:a15bfe7aaebd 4
screamer 18:a15bfe7aaebd 5 Redistribution and use in source and binary forms, with or without
screamer 18:a15bfe7aaebd 6 modification, are permitted provided that the following conditions are met:
screamer 18:a15bfe7aaebd 7 * Redistributions of source code must retain the above copyright
screamer 18:a15bfe7aaebd 8 notice, this list of conditions and the following disclaimer.
screamer 18:a15bfe7aaebd 9 * Redistributions in binary form must reproduce the above copyright
screamer 18:a15bfe7aaebd 10 notice, this list of conditions and the following disclaimer in the
screamer 18:a15bfe7aaebd 11 documentation and/or other materials provided with the distribution.
screamer 18:a15bfe7aaebd 12 * Neither the name of STMicroelectronics nor the
screamer 18:a15bfe7aaebd 13 names of its contributors may be used to endorse or promote products
screamer 18:a15bfe7aaebd 14 derived from this software without specific prior written permission.
screamer 18:a15bfe7aaebd 15
screamer 18:a15bfe7aaebd 16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
screamer 18:a15bfe7aaebd 17 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
screamer 18:a15bfe7aaebd 18 WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
screamer 18:a15bfe7aaebd 19 NON-INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS ARE DISCLAIMED.
screamer 18:a15bfe7aaebd 20 IN NO EVENT SHALL STMICROELECTRONICS INTERNATIONAL N.V. BE LIABLE FOR ANY
screamer 18:a15bfe7aaebd 21 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
screamer 18:a15bfe7aaebd 22 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
screamer 18:a15bfe7aaebd 23 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
screamer 18:a15bfe7aaebd 24 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
screamer 18:a15bfe7aaebd 25 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
screamer 18:a15bfe7aaebd 26 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
screamer 18:a15bfe7aaebd 27 ********************************************************************************/
screamer 18:a15bfe7aaebd 28
screamer 18:a15bfe7aaebd 29
screamer 18:a15bfe7aaebd 30 #ifndef _VL53L0X_PLATFORM_LOG_H_
screamer 18:a15bfe7aaebd 31 #define _VL53L0X_PLATFORM_LOG_H_
screamer 18:a15bfe7aaebd 32
screamer 18:a15bfe7aaebd 33 #include <stdio.h>
screamer 18:a15bfe7aaebd 34 #include <string.h>
screamer 18:a15bfe7aaebd 35 /* LOG Functions */
screamer 18:a15bfe7aaebd 36
screamer 18:a15bfe7aaebd 37 #ifdef __cplusplus
screamer 18:a15bfe7aaebd 38 extern "C" {
screamer 18:a15bfe7aaebd 39 #endif
screamer 18:a15bfe7aaebd 40
screamer 18:a15bfe7aaebd 41 /**
screamer 18:a15bfe7aaebd 42 * @file vl53l0_platform_log.h
screamer 18:a15bfe7aaebd 43 *
screamer 18:a15bfe7aaebd 44 * @brief platform log function definition
screamer 18:a15bfe7aaebd 45 */
screamer 18:a15bfe7aaebd 46
screamer 18:a15bfe7aaebd 47 //#define VL53L0X_LOG_ENABLE 0
screamer 18:a15bfe7aaebd 48
screamer 18:a15bfe7aaebd 49 enum {
screamer 18:a15bfe7aaebd 50 TRACE_LEVELS_NONE,
screamer 18:a15bfe7aaebd 51 TRACE_LEVELS_ERRORS,
screamer 18:a15bfe7aaebd 52 TRACE_LEVELS_WARNING,
screamer 18:a15bfe7aaebd 53 TRACE_LEVELS_INFO,
screamer 18:a15bfe7aaebd 54 TRACE_LEVELS_DEBUG,
screamer 18:a15bfe7aaebd 55 TRACE_LEVELS_ALL,
screamer 18:a15bfe7aaebd 56 TRACE_LEVELS_IGNORE
screamer 18:a15bfe7aaebd 57 };
screamer 18:a15bfe7aaebd 58
screamer 18:a15bfe7aaebd 59 enum {
screamer 18:a15bfe7aaebd 60 TRACE_FUNCTION_NONE = 0,
screamer 18:a15bfe7aaebd 61 TRACE_FUNCTION_I2C = 1,
screamer 18:a15bfe7aaebd 62 TRACE_FUNCTION_ALL = 0x7fffffff //all bits except sign
screamer 18:a15bfe7aaebd 63 };
screamer 18:a15bfe7aaebd 64
screamer 18:a15bfe7aaebd 65 enum {
screamer 18:a15bfe7aaebd 66 TRACE_MODULE_NONE = 0x0,
screamer 18:a15bfe7aaebd 67 TRACE_MODULE_API = 0x1,
screamer 18:a15bfe7aaebd 68 TRACE_MODULE_PLATFORM = 0x2,
screamer 18:a15bfe7aaebd 69 TRACE_MODULE_ALL = 0x7fffffff //all bits except sign
screamer 18:a15bfe7aaebd 70 };
screamer 18:a15bfe7aaebd 71
screamer 18:a15bfe7aaebd 72
screamer 18:a15bfe7aaebd 73 #ifdef VL53L0X_LOG_ENABLE
screamer 18:a15bfe7aaebd 74
screamer 18:a15bfe7aaebd 75 #include <sys/time.h>
screamer 18:a15bfe7aaebd 76
screamer 18:a15bfe7aaebd 77 extern uint32_t _trace_level;
screamer 18:a15bfe7aaebd 78
screamer 18:a15bfe7aaebd 79
screamer 18:a15bfe7aaebd 80
screamer 18:a15bfe7aaebd 81 int32_t VL53L0X_trace_config(char *filename, uint32_t modules, uint32_t level, uint32_t functions);
screamer 18:a15bfe7aaebd 82
screamer 18:a15bfe7aaebd 83 void trace_print_module_function(uint32_t module, uint32_t level, uint32_t function, const char *format, ...);
screamer 18:a15bfe7aaebd 84
screamer 18:a15bfe7aaebd 85
screamer 18:a15bfe7aaebd 86 //extern FILE * log_file;
screamer 18:a15bfe7aaebd 87
screamer 18:a15bfe7aaebd 88 #define LOG_GET_TIME() (int)clock()
screamer 18:a15bfe7aaebd 89
screamer 18:a15bfe7aaebd 90 #define _LOG_FUNCTION_START(module, fmt, ... ) \
screamer 18:a15bfe7aaebd 91 trace_print_module_function(module, _trace_level, TRACE_FUNCTION_ALL, "%ld <START> %s "fmt"\n", LOG_GET_TIME(), __FUNCTION__, ##__VA_ARGS__);
screamer 18:a15bfe7aaebd 92
screamer 18:a15bfe7aaebd 93 #define _LOG_FUNCTION_END(module, status, ... )\
screamer 18:a15bfe7aaebd 94 trace_print_module_function(module, _trace_level, TRACE_FUNCTION_ALL, "%ld <END> %s %d\n", LOG_GET_TIME(), __FUNCTION__, (int)status, ##__VA_ARGS__)
screamer 18:a15bfe7aaebd 95
screamer 18:a15bfe7aaebd 96 #define _LOG_FUNCTION_END_FMT(module, status, fmt, ... )\
screamer 18:a15bfe7aaebd 97 trace_print_module_function(module, _trace_level, TRACE_FUNCTION_ALL, "%ld <END> %s %d "fmt"\n", LOG_GET_TIME(), __FUNCTION__, (int)status,##__VA_ARGS__)
screamer 18:a15bfe7aaebd 98
screamer 18:a15bfe7aaebd 99 // __func__ is gcc only
screamer 18:a15bfe7aaebd 100 #define VL53L0X_ErrLog( fmt, ...) fprintf(stderr, "VL53L0X_ErrLog %s" fmt "\n", __func__, ##__VA_ARGS__)
screamer 18:a15bfe7aaebd 101
screamer 18:a15bfe7aaebd 102 #else /* VL53L0X_LOG_ENABLE no logging */
screamer 18:a15bfe7aaebd 103 #define VL53L0X_ErrLog(...) (void)0
screamer 18:a15bfe7aaebd 104 #define _LOG_FUNCTION_START(module, fmt, ... ) (void)0
screamer 18:a15bfe7aaebd 105 #define _LOG_FUNCTION_END(module, status, ... ) (void)0
screamer 18:a15bfe7aaebd 106 #define _LOG_FUNCTION_END_FMT(module, status, fmt, ... ) (void)0
screamer 18:a15bfe7aaebd 107 #endif /* else */
screamer 18:a15bfe7aaebd 108
screamer 18:a15bfe7aaebd 109 #define VL53L0X_COPYSTRING(str, ...) strcpy(str, ##__VA_ARGS__)
screamer 18:a15bfe7aaebd 110
screamer 18:a15bfe7aaebd 111 #ifdef __cplusplus
screamer 18:a15bfe7aaebd 112 }
screamer 18:a15bfe7aaebd 113 #endif
screamer 18:a15bfe7aaebd 114
screamer 18:a15bfe7aaebd 115 #endif /* _VL53L0X_PLATFORM_LOG_H_ */
screamer 18:a15bfe7aaebd 116
screamer 18:a15bfe7aaebd 117
screamer 18:a15bfe7aaebd 118
screamer 18:a15bfe7aaebd 119