Vision Apps User Guide
app_log.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2018 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 #ifndef APP_LOG_H_
64 #define APP_LOG_H_
65 
66 #ifdef __cplusplus
67 extern "C" {
68 #endif
69 
70 #include <stdint.h>
71 
84 #define APP_LOG_MAX_CPUS (16u)
85 
87 #define APP_LOG_MAX_CPU_NAME (16u)
88 
90 #define APP_LOG_PER_CPU_MEM_SIZE (16*1024u - 32u)
91 
93 #define APP_LOG_AREA_VALID_FLAG (0x1357231u)
94 
96 typedef void (*app_log_device_send_string_f)(char *string, uint32_t max_size);
97 
102 typedef struct {
103 
104  volatile uint32_t log_rd_idx;
106  volatile uint32_t log_wr_idx;
108  volatile uint32_t log_area_is_valid;
113  volatile uint32_t log_cpu_sync_state;
115  volatile uint8_t log_cpu_name[APP_LOG_MAX_CPU_NAME];
119  volatile uint8_t log_mem[APP_LOG_PER_CPU_MEM_SIZE];
121 
127 typedef struct {
130 
134 typedef struct {
136  uint32_t self_cpu_index;
137  char self_cpu_name[APP_LOG_MAX_CPU_NAME];
138  uint32_t log_rd_task_pri;
140  uint32_t log_rd_max_cpus;
141  uint32_t log_rd_cpu_enable[APP_LOG_MAX_CPUS];
144 
154 
161 int32_t appLogRdInit(app_log_init_prm_t *prms);
162 
169 int32_t appLogWrInit(app_log_init_prm_t *prms);
170 
175 int32_t appLogRdDeInit();
176 
181 int32_t appLogWrDeInit();
182 
189 void appLogPrintf(const char *format, ...);
190 
195 int32_t appLogCioInit(void);
196 
200 void appLogCioDeInit(void);
201 
205 void appLogCpuSyncInit(uint32_t master_cpu_id, uint32_t self_cpu_id,
206  uint32_t sync_cpu_id_list[], uint32_t num_cpus);
207 
208 
209 /* @} */
210 
211 #ifdef __cplusplus
212 }
213 #endif
214 
215 #endif
216 
uint32_t self_cpu_index
Definition: app_log.h:136
int32_t appLogCioInit(void)
Redirect printf to appLogPrintf.
int32_t appLogRdInit(app_log_init_prm_t *prms)
Init Log reader and log writer,.
uint32_t log_rd_task_pri
Definition: app_log.h:138
volatile uint32_t log_area_is_valid
Definition: app_log.h:108
int32_t appLogWrInit(app_log_init_prm_t *prms)
Init Log reader and log writer,.
volatile uint32_t log_wr_idx
Definition: app_log.h:106
#define APP_LOG_MAX_CPU_NAME
CPU name to use as prefix while logging.
Definition: app_log.h:87
volatile uint32_t log_rd_idx
Definition: app_log.h:104
volatile uint32_t log_cpu_sync_state
Definition: app_log.h:113
app_log_shared_mem_t * shared_mem
Definition: app_log.h:135
app_log_device_send_string_f device_write
Definition: app_log.h:142
int32_t appLogWrDeInit()
De-init log reader and log writer.
#define APP_LOG_MAX_CPUS
Max CPUs that are participating in the logging.
Definition: app_log.h:84
Init parameters to use for appLogInit()
Definition: app_log.h:134
void appLogCioDeInit(void)
De-init Redirect printf to appLogPrintf.
uint32_t log_rd_max_cpus
Definition: app_log.h:140
void(* app_log_device_send_string_f)(char *string, uint32_t max_size)
Callback to write string to console device.
Definition: app_log.h:96
void appLogInitPrmSetDefault(app_log_init_prm_t *prms)
Initialize app_log_init_prm_t with default parameters always call this function before calling appLog...
uint32_t log_rd_poll_interval_in_msecs
Definition: app_log.h:139
#define APP_LOG_PER_CPU_MEM_SIZE
Size of memory used for logging by one CPU.
Definition: app_log.h:90
Shared memory structure used for logging by a specific CPU.
Definition: app_log.h:102
Definition: app_log.h:127
int32_t appLogRdDeInit()
De-init log reader and log writer.
void appLogCpuSyncInit(uint32_t master_cpu_id, uint32_t self_cpu_id, uint32_t sync_cpu_id_list[], uint32_t num_cpus)
Sync provided list of CPUs.
void appLogPrintf(const char *format,...)
Write a string to shared memory.