CITY3032-wifi-mqtt

Committer:
reedas
Date:
Sat Nov 13 12:02:49 2021 +0000
Revision:
5:f62a9e4a499a
Parent:
4:7ebc3d28bcb2
trying to include mbed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
reedas 4:7ebc3d28bcb2 1 /*
reedas 4:7ebc3d28bcb2 2 * Copyright 2019-2021, Cypress Semiconductor Corporation (an Infineon company) or
reedas 4:7ebc3d28bcb2 3 * an affiliate of Cypress Semiconductor Corporation. All rights reserved.
reedas 4:7ebc3d28bcb2 4 *
reedas 4:7ebc3d28bcb2 5 * This software, including source code, documentation and related
reedas 4:7ebc3d28bcb2 6 * materials ("Software") is owned by Cypress Semiconductor Corporation
reedas 4:7ebc3d28bcb2 7 * or one of its affiliates ("Cypress") and is protected by and subject to
reedas 4:7ebc3d28bcb2 8 * worldwide patent protection (United States and foreign),
reedas 4:7ebc3d28bcb2 9 * United States copyright laws and international treaty provisions.
reedas 4:7ebc3d28bcb2 10 * Therefore, you may use this Software only as provided in the license
reedas 4:7ebc3d28bcb2 11 * agreement accompanying the software package from which you
reedas 4:7ebc3d28bcb2 12 * obtained this Software ("EULA").
reedas 4:7ebc3d28bcb2 13 * If no EULA applies, Cypress hereby grants you a personal, non-exclusive,
reedas 4:7ebc3d28bcb2 14 * non-transferable license to copy, modify, and compile the Software
reedas 4:7ebc3d28bcb2 15 * source code solely for use in connection with Cypress's
reedas 4:7ebc3d28bcb2 16 * integrated circuit products. Any reproduction, modification, translation,
reedas 4:7ebc3d28bcb2 17 * compilation, or representation of this Software except as specified
reedas 4:7ebc3d28bcb2 18 * above is prohibited without the express written permission of Cypress.
reedas 4:7ebc3d28bcb2 19 *
reedas 4:7ebc3d28bcb2 20 * Disclaimer: THIS SOFTWARE IS PROVIDED AS-IS, WITH NO WARRANTY OF ANY KIND,
reedas 4:7ebc3d28bcb2 21 * EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, NONINFRINGEMENT, IMPLIED
reedas 4:7ebc3d28bcb2 22 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress
reedas 4:7ebc3d28bcb2 23 * reserves the right to make changes to the Software without notice. Cypress
reedas 4:7ebc3d28bcb2 24 * does not assume any liability arising out of the application or use of the
reedas 4:7ebc3d28bcb2 25 * Software or any product or circuit described in the Software. Cypress does
reedas 4:7ebc3d28bcb2 26 * not authorize its products for use in any products where a malfunction or
reedas 4:7ebc3d28bcb2 27 * failure of the Cypress product may reasonably be expected to result in
reedas 4:7ebc3d28bcb2 28 * significant property damage, injury or death ("High Risk Product"). By
reedas 4:7ebc3d28bcb2 29 * including Cypress's product in a High Risk Product, the manufacturer
reedas 4:7ebc3d28bcb2 30 * of such system or application assumes all risk of such use and in doing
reedas 4:7ebc3d28bcb2 31 * so agrees to indemnify Cypress against all liability.
reedas 4:7ebc3d28bcb2 32 */
reedas 4:7ebc3d28bcb2 33
reedas 4:7ebc3d28bcb2 34 /**
reedas 4:7ebc3d28bcb2 35 * @file
reedas 4:7ebc3d28bcb2 36 * @addtogroup logging_utils
reedas 4:7ebc3d28bcb2 37 *
reedas 4:7ebc3d28bcb2 38 * A logging subsystem that allows run time control for the logging level.
reedas 4:7ebc3d28bcb2 39 * Log messages are passed back to the application for output.
reedas 4:7ebc3d28bcb2 40 * Log messages are given sequence numbers.
reedas 4:7ebc3d28bcb2 41 * A time callback can be provided by the application for the timestamp for each output line.
reedas 4:7ebc3d28bcb2 42 * Log messages are mutex protected across threads so that log messages do not interrupt each other.
reedas 4:7ebc3d28bcb2 43 */
reedas 4:7ebc3d28bcb2 44 /*
reedas 4:7ebc3d28bcb2 45 * in Main application file:
reedas 4:7ebc3d28bcb2 46 *
reedas 4:7ebc3d28bcb2 47 * Log output callback function - The App decides what and how logging is to be output
reedas 4:7ebc3d28bcb2 48 *
reedas 4:7ebc3d28bcb2 49 * int app_log_output_callback(CY_LOG_FACILITY_T facility, CY_LOG_LEVEL_T level, char *logmsg)
reedas 4:7ebc3d28bcb2 50 * {
reedas 4:7ebc3d28bcb2 51 * (void)facility; // Can be used to decide to reduce output or send output to remote logging
reedas 4:7ebc3d28bcb2 52 * (void)level; // Can be used to decide to reduce output, although the output has already been
reedas 4:7ebc3d28bcb2 53 * // limited by the log routines
reedas 4:7ebc3d28bcb2 54 *
reedas 4:7ebc3d28bcb2 55 * return printf( "%s\n", logmsg); // print directly to console
reedas 4:7ebc3d28bcb2 56 * }
reedas 4:7ebc3d28bcb2 57 *
reedas 4:7ebc3d28bcb2 58 *
reedas 4:7ebc3d28bcb2 59 * Log time callback - get the current time for the log message timestamp in millseconds
reedas 4:7ebc3d28bcb2 60 *
reedas 4:7ebc3d28bcb2 61 * cy_rslt_t app_log_time(uint32_t* time)
reedas 4:7ebc3d28bcb2 62 * {
reedas 4:7ebc3d28bcb2 63 * if (time != NULL)
reedas 4:7ebc3d28bcb2 64 * {
reedas 4:7ebc3d28bcb2 65 * *time = get_time_ms(); // get system time (in milliseconds)
reedas 4:7ebc3d28bcb2 66 * }
reedas 4:7ebc3d28bcb2 67 * return CY_RSLT_SUCCESS;
reedas 4:7ebc3d28bcb2 68 * }
reedas 4:7ebc3d28bcb2 69 *
reedas 4:7ebc3d28bcb2 70 *
reedas 4:7ebc3d28bcb2 71 * Log initialization - default os OFF, no output from any facility
reedas 4:7ebc3d28bcb2 72 *
reedas 4:7ebc3d28bcb2 73 * result = cy_log_init(CY_LOG_OFF, app_log_output_callback, app_log_time);
reedas 4:7ebc3d28bcb2 74 * if (result != CY_RSLT_SUCCESS)
reedas 4:7ebc3d28bcb2 75 * {
reedas 4:7ebc3d28bcb2 76 * printf("cy_log_init() FAILED %ld\n", result);
reedas 4:7ebc3d28bcb2 77 * }
reedas 4:7ebc3d28bcb2 78 *
reedas 4:7ebc3d28bcb2 79 *
reedas 4:7ebc3d28bcb2 80 * Example using TEST facility
reedas 4:7ebc3d28bcb2 81 *
reedas 4:7ebc3d28bcb2 82 * cy_log_set_facility_level(CYLF_TEST, CY_LOG_WARNING); // set log message level to WARNING
reedas 4:7ebc3d28bcb2 83 *
reedas 4:7ebc3d28bcb2 84 * cy_log_printf("TEST message: always print."); // Bypass facility/level check and always print message
reedas 4:7ebc3d28bcb2 85 * // calls app_log_output_callback(CYLF_DEF, CY_LOG_PRINTF, logmsg)
reedas 4:7ebc3d28bcb2 86 *
reedas 4:7ebc3d28bcb2 87 * cy_log_msg(CYLF_TEST, CY_LOG_ERR, "TEST message: ERR"); // Print if CYLF_TEST level is CY_LOG_ERR or higher
reedas 4:7ebc3d28bcb2 88 * cy_log_msg(CYLF_TEST, CY_LOG_WARNING, "TEST message: WARNING"); // Print if CYLF_TEST level is CY_LOG_WARNING or higher
reedas 4:7ebc3d28bcb2 89 * cy_log_msg(CYLF_TEST, CY_LOG_NOTICE, "TEST message: NOTICE"); // Print if CYLF_TEST level is CY_LOG_NOTICE or higher
reedas 4:7ebc3d28bcb2 90 *
reedas 4:7ebc3d28bcb2 91 * cy_log_msg(CYLF_DRIVER, CY_LOG_ERR, "DRIVER message: ERR"); // Print if CYLF_DRIVER level is CY_LOG_ERR or higher
reedas 4:7ebc3d28bcb2 92 *
reedas 4:7ebc3d28bcb2 93 * OUTPUT:
reedas 4:7ebc3d28bcb2 94 *
reedas 4:7ebc3d28bcb2 95 * TEST message: always print.
reedas 4:7ebc3d28bcb2 96 * TEST message: ERR
reedas 4:7ebc3d28bcb2 97 * TEST message: WARNING
reedas 4:7ebc3d28bcb2 98 *
reedas 4:7ebc3d28bcb2 99 * - No other CYLF_TEST output due to level set as CY_LOG_WARNING
reedas 4:7ebc3d28bcb2 100 * - No CYLF_DRIVER output due to level set as CY_LOG_OFF
reedas 4:7ebc3d28bcb2 101 */
reedas 4:7ebc3d28bcb2 102
reedas 4:7ebc3d28bcb2 103 #pragma once
reedas 4:7ebc3d28bcb2 104
reedas 4:7ebc3d28bcb2 105 #include <stdarg.h>
reedas 4:7ebc3d28bcb2 106 #include "cy_result.h"
reedas 4:7ebc3d28bcb2 107
reedas 4:7ebc3d28bcb2 108 #ifdef __cplusplus
reedas 4:7ebc3d28bcb2 109 extern "C" {
reedas 4:7ebc3d28bcb2 110 #endif
reedas 4:7ebc3d28bcb2 111
reedas 4:7ebc3d28bcb2 112 /******************************************************
reedas 4:7ebc3d28bcb2 113 * Macros
reedas 4:7ebc3d28bcb2 114 ******************************************************/
reedas 4:7ebc3d28bcb2 115
reedas 4:7ebc3d28bcb2 116 /******************************************************
reedas 4:7ebc3d28bcb2 117 * Constants
reedas 4:7ebc3d28bcb2 118 ******************************************************/
reedas 4:7ebc3d28bcb2 119
reedas 4:7ebc3d28bcb2 120 /******************************************************
reedas 4:7ebc3d28bcb2 121 * Enumerations
reedas 4:7ebc3d28bcb2 122 ******************************************************/
reedas 4:7ebc3d28bcb2 123
reedas 4:7ebc3d28bcb2 124 /******************************************************************************/
reedas 4:7ebc3d28bcb2 125 /** \addtogroup group_logging_enums
reedas 4:7ebc3d28bcb2 126 * Documentation of the enums provided by logging utility.
reedas 4:7ebc3d28bcb2 127 *//** \{ */
reedas 4:7ebc3d28bcb2 128 /******************************************************************************/
reedas 4:7ebc3d28bcb2 129
reedas 4:7ebc3d28bcb2 130 /** Logging levels. NOTE: Default value for all facilities is passed in to init call */
reedas 4:7ebc3d28bcb2 131 typedef enum
reedas 4:7ebc3d28bcb2 132 {
reedas 4:7ebc3d28bcb2 133 CY_LOG_OFF = 0, /**< Do not print log messages */
reedas 4:7ebc3d28bcb2 134 CY_LOG_ERR, /**< Print log message if run-time level is <= CY_LOG_ERR */
reedas 4:7ebc3d28bcb2 135 CY_LOG_WARNING, /**< Print log message if run-time level is <= CY_LOG_WARNING */
reedas 4:7ebc3d28bcb2 136 CY_LOG_NOTICE, /**< Print log message if run-time level is <= CY_LOG_NOTICE */
reedas 4:7ebc3d28bcb2 137 CY_LOG_INFO, /**< Print log message if run-time level is <= CY_LOG_INFO */
reedas 4:7ebc3d28bcb2 138 CY_LOG_DEBUG, /**< Print log message if run-time level is <= CY_LOG_DEBUG */
reedas 4:7ebc3d28bcb2 139 CY_LOG_DEBUG1, /**< Print log message if run-time level is <= CY_LOG_DEBUG1 */
reedas 4:7ebc3d28bcb2 140 CY_LOG_DEBUG2, /**< Print log message if run-time level is <= CY_LOG_DEBUG2 */
reedas 4:7ebc3d28bcb2 141 CY_LOG_DEBUG3, /**< Print log message if run-time level is <= CY_LOG_DEBUG3 */
reedas 4:7ebc3d28bcb2 142 CY_LOG_DEBUG4, /**< Print log message if run-time level is <= CY_LOG_DEBUG4 */
reedas 4:7ebc3d28bcb2 143
reedas 4:7ebc3d28bcb2 144 CY_LOG_PRINTF, /* Identifies log messages generated by cy_log_printf calls */
reedas 4:7ebc3d28bcb2 145
reedas 4:7ebc3d28bcb2 146 CY_LOG_MAX
reedas 4:7ebc3d28bcb2 147 } CY_LOG_LEVEL_T;
reedas 4:7ebc3d28bcb2 148
reedas 4:7ebc3d28bcb2 149 /** Log Facility type
reedas 4:7ebc3d28bcb2 150 * Log facilities allow for separate subsystems to have different run-time log levels for output.
reedas 4:7ebc3d28bcb2 151 * This allows for someone working in the Driver subsystem to turn on DEBUG level without turning DEBUG
reedas 4:7ebc3d28bcb2 152 * level for middleware - makes for less unwanted output during debugging / testing.
reedas 4:7ebc3d28bcb2 153 */
reedas 4:7ebc3d28bcb2 154 typedef enum
reedas 4:7ebc3d28bcb2 155 {
reedas 4:7ebc3d28bcb2 156 CYLF_DEF = 0, /**< General log message not associated with any specific Facility */
reedas 4:7ebc3d28bcb2 157 CYLF_TEST, /**< Test Facility */
reedas 4:7ebc3d28bcb2 158 CYLF_DRIVER, /**< Driver Facility */
reedas 4:7ebc3d28bcb2 159 CYLF_LP, /**< Low Power Facility */
reedas 4:7ebc3d28bcb2 160 CYLF_MIDDLEWARE, /**< Middleware Facility */
reedas 4:7ebc3d28bcb2 161 CYLF_AUDIO, /**< Audio Facility */
reedas 4:7ebc3d28bcb2 162
reedas 4:7ebc3d28bcb2 163 CYLF_MAX /**< Must be last, not an actual index */
reedas 4:7ebc3d28bcb2 164 } CY_LOG_FACILITY_T;
reedas 4:7ebc3d28bcb2 165
reedas 4:7ebc3d28bcb2 166 /** \} */
reedas 4:7ebc3d28bcb2 167
reedas 4:7ebc3d28bcb2 168 /******************************************************************************/
reedas 4:7ebc3d28bcb2 169 /** \addtogroup group_logging_structures
reedas 4:7ebc3d28bcb2 170 * Documentation of the typedefs defined by the logging utility.
reedas 4:7ebc3d28bcb2 171 *//** \{ */
reedas 4:7ebc3d28bcb2 172 /******************************************************************************/
reedas 4:7ebc3d28bcb2 173
reedas 4:7ebc3d28bcb2 174 /******************************************************
reedas 4:7ebc3d28bcb2 175 * Structures
reedas 4:7ebc3d28bcb2 176 ******************************************************/
reedas 4:7ebc3d28bcb2 177
reedas 4:7ebc3d28bcb2 178 /******************************************************
reedas 4:7ebc3d28bcb2 179 * Type Definitions
reedas 4:7ebc3d28bcb2 180 ******************************************************/
reedas 4:7ebc3d28bcb2 181
reedas 4:7ebc3d28bcb2 182 /** Prototype for application callback to use the logging message
reedas 4:7ebc3d28bcb2 183 */
reedas 4:7ebc3d28bcb2 184 typedef int (*log_output)(CY_LOG_FACILITY_T facility, CY_LOG_LEVEL_T level, char *logmsg);
reedas 4:7ebc3d28bcb2 185
reedas 4:7ebc3d28bcb2 186 /** Prototype for application callback to get current time in milliseconds
reedas 4:7ebc3d28bcb2 187 */
reedas 4:7ebc3d28bcb2 188 typedef cy_rslt_t (*platform_get_time)(uint32_t* time);
reedas 4:7ebc3d28bcb2 189
reedas 4:7ebc3d28bcb2 190 /** \} */
reedas 4:7ebc3d28bcb2 191
reedas 4:7ebc3d28bcb2 192 /*****************************************************************************/
reedas 4:7ebc3d28bcb2 193 /**
reedas 4:7ebc3d28bcb2 194 *
reedas 4:7ebc3d28bcb2 195 * @addtogroup group_logging_func
reedas 4:7ebc3d28bcb2 196 *
reedas 4:7ebc3d28bcb2 197 * A logging subsystem provides a set of helper functions to manage logging in the application.
reedas 4:7ebc3d28bcb2 198 *
reedas 4:7ebc3d28bcb2 199 * @{
reedas 4:7ebc3d28bcb2 200 */
reedas 4:7ebc3d28bcb2 201 /*****************************************************************************/
reedas 4:7ebc3d28bcb2 202 /******************************************************
reedas 4:7ebc3d28bcb2 203 * Function Declarations
reedas 4:7ebc3d28bcb2 204 ******************************************************/
reedas 4:7ebc3d28bcb2 205 /** Initialize the logging subsystem.
reedas 4:7ebc3d28bcb2 206 *
reedas 4:7ebc3d28bcb2 207 * @param[in] level : The initial logging level to use for all facilities.
reedas 4:7ebc3d28bcb2 208 * @param[in] platform_output : Pointer to the function invoked by the library to output the log messages.
reedas 4:7ebc3d28bcb2 209 * If this argument is passed as NULL, the library prints the log output on the standard output stream (stdio).
reedas 4:7ebc3d28bcb2 210 * @param[in] platform_time : Pointer to the function invoked by the library to get the time. If this argument is passed as NULL, the library calls
reedas 4:7ebc3d28bcb2 211 * [cy_rtos_get_time](https://cypresssemiconductorco.github.io/abstraction-rtos/html/group__group__abstraction__rtos__time.html)
reedas 4:7ebc3d28bcb2 212 * function to get the time required for logging.
reedas 4:7ebc3d28bcb2 213 *
reedas 4:7ebc3d28bcb2 214 * @return cy_rslt_t
reedas 4:7ebc3d28bcb2 215 */
reedas 4:7ebc3d28bcb2 216 cy_rslt_t cy_log_init(CY_LOG_LEVEL_T level, log_output platform_output, platform_get_time platform_time);
reedas 4:7ebc3d28bcb2 217
reedas 4:7ebc3d28bcb2 218 /** Shutdown the logging subsystem.
reedas 4:7ebc3d28bcb2 219 *
reedas 4:7ebc3d28bcb2 220 * @return cy_rslt_t
reedas 4:7ebc3d28bcb2 221 */
reedas 4:7ebc3d28bcb2 222 cy_rslt_t cy_log_shutdown(void);
reedas 4:7ebc3d28bcb2 223
reedas 4:7ebc3d28bcb2 224 /** Set the platform output routine for log messages.
reedas 4:7ebc3d28bcb2 225 *
reedas 4:7ebc3d28bcb2 226 * @note If platform_output is NULL, log messages will be discarded.
reedas 4:7ebc3d28bcb2 227 *
reedas 4:7ebc3d28bcb2 228 * @param[in] platform_output : Pointer to the platform output routine for log messages.
reedas 4:7ebc3d28bcb2 229 *
reedas 4:7ebc3d28bcb2 230 * @return cy_rslt_t
reedas 4:7ebc3d28bcb2 231 */
reedas 4:7ebc3d28bcb2 232 cy_rslt_t cy_log_set_platform_output(log_output platform_output);
reedas 4:7ebc3d28bcb2 233
reedas 4:7ebc3d28bcb2 234 /** Set the platform routine for getting time stamps for log messages.
reedas 4:7ebc3d28bcb2 235 *
reedas 4:7ebc3d28bcb2 236 * @note If platform_time is NULL, cy_time_get_time() is used for time stamps.
reedas 4:7ebc3d28bcb2 237 *
reedas 4:7ebc3d28bcb2 238 * @param[in] platform_time : Pointer to a platform time routine for log message time stamps.
reedas 4:7ebc3d28bcb2 239 *
reedas 4:7ebc3d28bcb2 240 * @return cy_rslt_t
reedas 4:7ebc3d28bcb2 241 */
reedas 4:7ebc3d28bcb2 242 cy_rslt_t cy_log_set_platform_time(platform_get_time platform_time);
reedas 4:7ebc3d28bcb2 243
reedas 4:7ebc3d28bcb2 244 /** Set the logging level for a facility.
reedas 4:7ebc3d28bcb2 245 *
reedas 4:7ebc3d28bcb2 246 * @param[in] facility : The facility for which to set the log level.
reedas 4:7ebc3d28bcb2 247 * @param[in] level : The new log level to use.
reedas 4:7ebc3d28bcb2 248 *
reedas 4:7ebc3d28bcb2 249 * @return cy_rslt_t
reedas 4:7ebc3d28bcb2 250 */
reedas 4:7ebc3d28bcb2 251 cy_rslt_t cy_log_set_facility_level(CY_LOG_FACILITY_T facility, CY_LOG_LEVEL_T level);
reedas 4:7ebc3d28bcb2 252
reedas 4:7ebc3d28bcb2 253 /** Set the logging level for all facilities.
reedas 4:7ebc3d28bcb2 254 *
reedas 4:7ebc3d28bcb2 255 * @param[in] level : The new log level to use.
reedas 4:7ebc3d28bcb2 256 *
reedas 4:7ebc3d28bcb2 257 * @return cy_rslt_t
reedas 4:7ebc3d28bcb2 258 */
reedas 4:7ebc3d28bcb2 259 cy_rslt_t cy_log_set_all_levels(CY_LOG_LEVEL_T level);
reedas 4:7ebc3d28bcb2 260
reedas 4:7ebc3d28bcb2 261 /** Get the logging level for a facility.
reedas 4:7ebc3d28bcb2 262 *
reedas 4:7ebc3d28bcb2 263 * @param[in] facility : The facility for which to return the log level.
reedas 4:7ebc3d28bcb2 264 *
reedas 4:7ebc3d28bcb2 265 * @return The current log level.
reedas 4:7ebc3d28bcb2 266 */
reedas 4:7ebc3d28bcb2 267 CY_LOG_LEVEL_T cy_log_get_facility_level(CY_LOG_FACILITY_T facility);
reedas 4:7ebc3d28bcb2 268
reedas 4:7ebc3d28bcb2 269 /** Write a log message.
reedas 4:7ebc3d28bcb2 270 *
reedas 4:7ebc3d28bcb2 271 * @note The format arguments are the same as for printf.
reedas 4:7ebc3d28bcb2 272 *
reedas 4:7ebc3d28bcb2 273 * @param[in] facility : The facility for the log message.
reedas 4:7ebc3d28bcb2 274 * @param[in] level : Log level of the message.
reedas 4:7ebc3d28bcb2 275 * @param[in] fmt : Format control string followed by any optional arguments.
reedas 4:7ebc3d28bcb2 276 *
reedas 4:7ebc3d28bcb2 277 * @return cy_rslt_t
reedas 4:7ebc3d28bcb2 278 */
reedas 4:7ebc3d28bcb2 279 cy_rslt_t cy_log_msg(CY_LOG_FACILITY_T facility, CY_LOG_LEVEL_T level, const char *fmt, ...);
reedas 4:7ebc3d28bcb2 280
reedas 4:7ebc3d28bcb2 281 /** Write a log message bypassing the log level check.
reedas 4:7ebc3d28bcb2 282 *
reedas 4:7ebc3d28bcb2 283 * @note The format arguments are the same as for printf.
reedas 4:7ebc3d28bcb2 284 *
reedas 4:7ebc3d28bcb2 285 * @param[in] fmt : Format control string followed by any optional arguments.
reedas 4:7ebc3d28bcb2 286 *
reedas 4:7ebc3d28bcb2 287 * @return cy_rslt_t
reedas 4:7ebc3d28bcb2 288 */
reedas 4:7ebc3d28bcb2 289 cy_rslt_t cy_log_printf(const char *fmt, ...);
reedas 4:7ebc3d28bcb2 290
reedas 4:7ebc3d28bcb2 291 /** Write a log message bypassing the log level check using va_list
reedas 4:7ebc3d28bcb2 292 *
reedas 4:7ebc3d28bcb2 293 * @note The format arguments are the same as for vprintf.
reedas 4:7ebc3d28bcb2 294 *
reedas 4:7ebc3d28bcb2 295 * @param[in] fmt : Format control string.
reedas 4:7ebc3d28bcb2 296 * @param[in] varg : va_list of arguments.
reedas 4:7ebc3d28bcb2 297 *
reedas 4:7ebc3d28bcb2 298 * @return cy_rslt_t
reedas 4:7ebc3d28bcb2 299 */
reedas 4:7ebc3d28bcb2 300 cy_rslt_t cy_log_vprintf(const char *fmt, va_list varg);
reedas 4:7ebc3d28bcb2 301
reedas 4:7ebc3d28bcb2 302 /** @} */
reedas 4:7ebc3d28bcb2 303
reedas 4:7ebc3d28bcb2 304 #ifdef __cplusplus
reedas 4:7ebc3d28bcb2 305 } /* extern "C" */
reedas 4:7ebc3d28bcb2 306 #endif