94 lines
1.3 KiB
C
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;
|
|
}
|
|
|
|
|
|
|
|
|
|
|