// SPDX-License-Identifier: GPL-2.0 /* * Copyright (c) 2014, STMicroelectronics International N.V. */ #include "adbg_int.h" #include #include /************************************************************************* * 2. Definition of external constants and variables ************************************************************************/ /************************************************************************* * 3. File scope types, constants and variables ************************************************************************/ /************************************************************************* * 4. Declaration of file local functions ************************************************************************/ /************************************************************************* * 5. Definition of external functions ************************************************************************/ /******************************************************************************/ /*! @fn void Do_ADBG_Log( void* This_p, char* Format, ...) * @brief * @param [in] This_p * @param [in] Format * @param [in] ... * @return void */ /******************************************************************************/ void Do_ADBG_Log(const char *const Format, ...) { va_list ap; va_start(ap, Format); vprintf(Format, ap); printf("\n"); va_end(ap); fflush(stdout); } void Do_ADBG_HexLog( const void *const Buf_p, const size_t Size, const size_t Cols ) { const uint8_t *Data_p = Buf_p; size_t n = 0; for (n = 0; n < Size; n += Cols) { char HexBuffer[ADBG_STRING_LENGTH_MAX]; char AsciiBuffer[ADBG_STRING_LENGTH_MAX / 3]; size_t m, NumCols; (void)SecUtil_BufferToHex(Data_p + n, MIN(Cols, Size - n), NULL, HexBuffer, sizeof(HexBuffer)); NumCols = MIN(MIN(Cols, Size - n), sizeof(AsciiBuffer) - 1); for (m = 0; m < NumCols; m++) { int ch = Data_p[n + m]; if (isprint(ch)) AsciiBuffer[m] = (char)ch; else AsciiBuffer[m] = '.'; } AsciiBuffer[m] = '\0'; Do_ADBG_Log(" %-*s %s", (int)Cols * 3, HexBuffer, AsciiBuffer); } } /************************************************************************* * 6. Definitions of internal functions ************************************************************************/