73 lines
1.2 KiB
C
73 lines
1.2 KiB
C
#include "stdint.h"
|
|
#include "stdarg.h"
|
|
#include "string.h"
|
|
#include "uart.h"
|
|
|
|
uint8_t console = UART_ID_0;
|
|
extern void uart_write_block(uint8_t uart_id, uint8_t *data, uint32_t length);
|
|
|
|
int putchar(int c)
|
|
{
|
|
uart_write_block(console, (uint8_t *)c, 1);
|
|
|
|
return c;
|
|
}
|
|
|
|
int puts(const char *c)
|
|
{
|
|
int len;
|
|
|
|
len = strlen(c);
|
|
|
|
uart_write_block(console, (uint8_t *)c, len);
|
|
|
|
return len;
|
|
}
|
|
|
|
int putstring(const char *c)
|
|
{
|
|
int len;
|
|
|
|
if (c == NULL) {
|
|
return 0;
|
|
}
|
|
|
|
len = strlen(c);
|
|
|
|
uart_write_block(console, (uint8_t *)c, len);
|
|
|
|
return len;
|
|
}
|
|
|
|
#if defined(CONFIG_VSNPRINTF_NANO) && CONFIG_VSNPRINTF_NANO
|
|
int printf(const char *fmt, ...)
|
|
{
|
|
char print_buf[512];
|
|
int len;
|
|
va_list ap;
|
|
|
|
va_start(ap, fmt);
|
|
len = vsnprintf(print_buf, sizeof(print_buf), fmt, ap);
|
|
va_end(ap);
|
|
|
|
len = (len > sizeof(print_buf)) ? sizeof(print_buf) : len;
|
|
|
|
uart_write_block(console, (uint8_t *)print_buf, len);
|
|
|
|
return len;
|
|
}
|
|
#else
|
|
extern int console_vsnprintf(const char *fmt, va_list args);
|
|
int printf(const char *fmt, ...)
|
|
{
|
|
int len;
|
|
va_list ap;
|
|
|
|
va_start(ap, fmt);
|
|
len = console_vsnprintf(fmt, ap);
|
|
va_end(ap);
|
|
|
|
return len;
|
|
}
|
|
#endif
|