101 lines
2.7 KiB
C
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_ */
|