TIOVX User Guide
include/TI/tivx_debug.h
Go to the documentation of this file.
1 /*
2 *
3 * Copyright (c) 2017 Texas Instruments Incorporated
4 *
5 * All rights reserved not granted herein.
6 *
7 * Limited License.
8 *
9 * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
10 * license under copyrights and patents it now or hereafter owns or controls to make,
11 * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
12 * terms herein. With respect to the foregoing patent license, such license is granted
13 * solely to the extent that any such patent is necessary to Utilize the software alone.
14 * The patent license shall not apply to any combinations which include this software,
15 * other than combinations with devices manufactured by or for TI ("TI Devices").
16 * No hardware patent is licensed hereunder.
17 *
18 * Redistributions must preserve existing copyright notices and reproduce this license
19 * (including the above copyright notice and the disclaimer and (if applicable) source
20 * code license limitations below) in the documentation and/or other materials provided
21 * with the distribution
22 *
23 * Redistribution and use in binary form, without modification, are permitted provided
24 * that the following conditions are met:
25 *
26 * * No reverse engineering, decompilation, or disassembly of this software is
27 * permitted with respect to any software provided in binary form.
28 *
29 * * any redistribution and use are licensed by TI for use only with TI Devices.
30 *
31 * * Nothing shall obligate TI to provide you with source code for the software
32 * licensed and provided to you in object code.
33 *
34 * If software source code is provided to you, modification and redistribution of the
35 * source code are permitted provided that the following conditions are met:
36 *
37 * * any redistribution and use of the source code, including any resulting derivative
38 * works, are licensed by TI for use only with TI Devices.
39 *
40 * * any redistribution and use of any object code compiled from the source code
41 * and any resulting derivative works, are licensed by TI for use only with TI Devices.
42 *
43 * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
44 *
45 * may be used to endorse or promote products derived from this software without
46 * specific prior written permission.
47 *
48 * DISCLAIMER.
49 *
50 * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
51 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
53 * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
54 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
55 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
57 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
58 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59 * OF THE POSSIBILITY OF SUCH DAMAGE.
60 *
61 */
62 
63 
64 
65 #ifndef TIVX_DEBUG_H
66 #define TIVX_DEBUG_H
67 
68 #include <stdbool.h>
69 #include <VX/vx.h>
70 
74 #define ASSERT_CONCAT_(a, b) a##b
75 #define ASSERT_CONCAT(a, b) ASSERT_CONCAT_(a, b)
76 #define BUILD_ASSERT(e) \
77  enum { ASSERT_CONCAT(assert_line_, __LINE__) = (1U/(e)) }
78 
92 };
93 
98 #define VX_PRINT(zone, message, ...) do { tivx_print_global(((vx_enum)zone), "[%s:%u] " message, __FUNCTION__, __LINE__, ## __VA_ARGS__); } while (1 == 0)
99 
104 #define VX_PRINT_GRAPH(zone, graph, message, ...) do { tivx_print_object(((vx_enum)zone), tivxGetGraphDebugZonemask(graph), "[ %s ] " message, tivxGetGraphName(graph), ## __VA_ARGS__); } while (1 == 0)
105 
110 #define VX_PRINT_NODE(zone, node, message, ...) do { tivx_print_object(((vx_enum)zone), tivxGetNodeDebugZonemask(node), "[ %s ] " message, tivxGetNodeName(node), ## __VA_ARGS__); } while (1 == 0)
111 
112 #ifdef __cplusplus
113 extern "C" {
114 #endif
115 
121 
128 void tivx_print_global(vx_enum zone, const char *format, ...);
129 
137 void tivx_print_object(vx_enum zone, vx_uint32 debug_zonemask, const char *format, ...);
138 
143 void tivx_set_debug_zone(vx_enum zone);
144 
149 void tivx_clr_debug_zone(vx_enum zone);
150 
156 
162 
168 
177 vx_status tivxSetGraphDebugZone(vx_graph graph, vx_uint32 debug_zone, vx_bool enable);
178 
187 vx_status tivxSetNodeDebugZone(vx_node node, vx_uint32 debug_zone, vx_bool enable);
188 
193 const char * tivxGetNodeName(vx_node node);
194 
199 const char * tivxGetGraphName(vx_graph graph);
200 
201 #ifdef __cplusplus
202 }
203 #endif
204 
205 #endif
206 
vx_bool
void tivx_print_object(vx_enum zone, vx_uint32 debug_zonemask, const char *format,...)
Internal printing function for a framework object with a set debug zone bitmask.
int32_t vx_enum
tivx_debug_zone_e
These are the bit flags for debugging.
char vx_char
vx_enum vx_status
vx_status tivxSetNodeDebugZone(vx_node node, vx_uint32 debug_zone, vx_bool enable)
Sets or clears a given debug zone for a node.
vx_char * tivx_find_zone_name(vx_enum zone)
Returns the name of an enumerated debug zone.
void tivx_set_debug_zone(vx_enum zone)
Sets a zone bit in the debug mask.
vx_uint32 tivxGetGraphDebugZonemask(vx_graph graph)
Returns the debug zonemask value of a graph.
const char * tivxGetGraphName(vx_graph graph)
Returns the name of a graph object.
vx_status tivxSetGraphDebugZone(vx_graph graph, vx_uint32 debug_zone, vx_bool enable)
Sets or clears a given debug zone for a graph.
uint32_t vx_uint32
void tivx_print_global(vx_enum zone, const char *format,...)
Internal printing function for the global debug zone bitmask.
void tivx_clr_debug_zone(vx_enum zone)
Clears the zone bit in the mask.
struct _vx_graph * vx_graph
struct _vx_node * vx_node
vx_bool tivx_is_zone_enabled(vx_enum zone)
Returns true or false if the zone bit is set or cleared.
const char * tivxGetNodeName(vx_node node)
Returns the name of a node object.
vx_uint32 tivxGetNodeDebugZonemask(vx_node node)
Returns the debug zonemask value of a node.