/******************************************************************************* * DISCLAIMER * This software is supplied by Renesas Electronics Corporation and is only * intended for use with Renesas products. No other uses are authorized. This * software is owned by Renesas Electronics Corporation and is protected under * all applicable laws, including copyright laws. * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * Renesas reserves the right, without notice, to make changes to this software * and to discontinue the availability of this software. By using this software, * you agree to the additional terms and conditions found by accessing the * following link: * http://www.renesas.com/disclaimer * Copyright 2021-2023 Renesas Electronics Corporation All rights reserved. *******************************************************************************/ /******************************************************************************* * DESCRIPTION : Log driver ******************************************************************************/ /****************************************************************************** * @file log.c * - Version : 0.03 * @brief Log driver. * . *****************************************************************************/ /****************************************************************************** * History : DD.MM.YYYY Version Description * : 28.07.2021 0.01 First Release * : 06.01.2022 0.02 Static analysis support * : 04,04,2023 0.03 Fixed to not use the standard input/output * library when LOG_LEVEL=0. *****************************************************************************/ #include #include #include #if LOG_LEVEL >= LOG_ERROR #include #define VSPRINTF_OK (0) void local_printf(const char *fmt, ...) { va_list ap; static char s_buffer[1024]; int32_t num; uint32_t loop; /* Convert all arguments to one string */ va_start(ap, fmt); num = vsprintf(s_buffer, fmt, ap); va_end(ap); /* String output */ if (VSPRINTF_OK <= num) { for (loop = 0U; loop < num; loop++) { (void)console_putc((uint8_t)s_buffer[loop]); /* If the outputted character is LF, output CR */ if (s_buffer[loop] == 0x0A) /* \n */ { (void)console_putc((uint8_t)'\r'); } } } else { while(1) { /* loop due to error detection. */ } } } /* End of function local_printf(const char *fmt, ...) */ #endif void panic_printf(const char *str) { const uint8_t *p = (const uint8_t *)str; /* Output one character at a time until the data in the argument is null-terminated string. */ while(*p != (uint8_t)'\0') { (void)console_putc(*p); p++; } /* output character is CR and LF */ (void)console_putc((uint8_t)'\r'); (void)console_putc((uint8_t)'\n'); } /* End of function panic_printf(const char *str) */