Files
MSE-SoftwEng/pico-sensor/McuLib/src/McuSWO.h
2025-05-06 13:07:01 +00:00

101 lines
2.7 KiB
C

/*
* Copyright (c) 2021-2023, Erich Styger
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef SWO_H_
#define SWO_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "McuSWOconfig.h"
#include "McuShell.h"
extern uint8_t McuSWO_DefaultShellBuffer[McuShell_DEFAULT_SHELL_BUFFER_SIZE]; /* default buffer which can be used by the application */
extern McuShell_ConstStdIOType McuSWO_stdio; /* default standard I/O */
/*!
* \brief Return the SWO stdio handle
* \return Standard I/O handle
*/
McuShell_ConstStdIOTypePtr McuSWO_GetStdio(void);
/*!
* \brief Sending a character to the SWO/ITM console
* \param ch Character to send
*/
void McuSWO_StdIOSendChar(uint8_t ch);
/*!
* \brief Reads a character from the standard input
* \param ch Pointer where to store the character, stores '\0' if no character was received
*/
void McuSWO_StdIOReadChar(uint8_t *ch);
/*!
* \brief Checks if there is input from SWO/ITM console
* \return true if there is input, false otherwise
*/
bool McuSWO_StdIOKeyPressed(void);
/*!
* \brief Parser for the SWO module shell commands
* \param cmd Pointer to the command string
* \param handled Set to true if command is known
* \param io Standard I/O channel to be used
* \return ERR_OK if everything is fine, error code otherwise.
*/
uint8_t McuSWO_ParseCommand(const uint8_t *cmd, bool *handled, McuShell_ConstStdIOType *io);
/*!
* \brief Reads a line from the SWO ITM channel, including the newline.
* Note that this function blocks until a '\n' is encountered.
* \param buf Buffer where to store the data
* \param bufSize Size of the buffer in bytes
*/
void McuSWO_ReadLineBlocking(unsigned char *buf, size_t bufSize);
/*!
* \brief Non-blocking version of reading a line. It appends characters to a buffer.
* \param buf Pointer to where to store the characters. Note that the buffer has to be initialized with a '\0' by the caller.
* \param bufSize Size of buffer in bytes
* \return ERR_OK if '\n' has added, ERR_BUSY otherwise.
*/
uint8_t McuSWO_ReadAppendLine(unsigned char *buf, size_t bufSize);
/*!
* \brief Send a string through SWO ITM Port 0 (0x1)
* \param str String to send
*/
void McuSWO_SendStr(const unsigned char *str);
/*!
* \brief Writing SWO output using printf style
* \param fmt Format string
*/
unsigned McuSWO_printf(const char *fmt, ...);
/*!
* \brief Test routine for various stdio redirection.
*/
void McuSWO_TestStdio(void);
/*! The TraceClock is used to configure the SWO speed. Use this method if the clock has been changed */
void McuSWO_ChangeTraceClock(uint32_t traceClock);
/*! used to change speed to the desired value */
void McuSWO_ChangeSpeed(uint32_t baud);
/*! called to initialize the module. */
void McuSWO_Init(void);
#ifdef __cplusplus
}
#endif
#endif /* SWO_H_ */