Files

94 lines
1.3 KiB
C

#include "if_rtt.h"
#include "stdint.h"
#include "stdio.h"
#include "SEGGER_RTT.h"
#include "string.h"
static int g_inited;
static int _open(void)
{
if(g_inited==0)
{
//SEGGER_RTT_Init();
SEGGER_RTT_ConfigUpBuffer(0, "log", NULL, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP);
//SEGGER_RTT_ConfigUpBuffer(1, "info", buff, 256, SEGGER_RTT_MODE_NO_BLOCK_SKIP);
// SEGGER_RTT_ConfigUpBuffer(1, "info", NULL, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP);
g_inited=1;
}
return 0;
}
static int _close(void)
{
return 0;
}
static int _putc(int c)
{
uint8_t d=c;
if(SEGGER_RTT_Write(0, &d, 1)==1)
return c;
else
return EOF;
}
static int _write(const uint8_t *ptr,int size)
{
// if(strncmp("info",(char *)ptr,4)==0)
// SEGGER_RTT_SetTerminal(1);
// else
// SEGGER_RTT_SetTerminal(0);
return SEGGER_RTT_Write(0, ptr, size);
}
static int _getc(void)
{
uint8_t d;
if(SEGGER_RTT_Read(0,&d,1)==1)
return d;
else
return EOF;
}
static int _read(uint8_t *ptr,int size)
{
int rb=0;
if(rb=SEGGER_RTT_Read(0,ptr,size),rb)
return rb;
else
return EOF;
}
static void *set_irqfun(void (*fun)(uint8_t d,void *context),void *context)
{
return 0;
}
static rtt_typedef rtt_def=
{
.init=_open,
.write=_write,
.read=_read,
.set_irqfun=set_irqfun,
};
rtt_typedef *rtt(void)
{
return &rtt_def;
}