76 lines
1.2 KiB
C
76 lines
1.2 KiB
C
/**
|
||
* @file shell_port.c
|
||
* @author Letter (NevermindZZT@gmail.com)
|
||
* @brief
|
||
* @version 0.1
|
||
* @date 2019-02-22
|
||
*
|
||
* @copyright (c) 2019 Letter
|
||
*
|
||
*/
|
||
|
||
#include "shell.h"
|
||
#include "bsp_uart.h"
|
||
#include "log.h"
|
||
#include "stdbool.h"
|
||
#include "shell_port.h"
|
||
|
||
|
||
Shell shell;
|
||
|
||
char shellBuffer[SHELL_BUF_LENGTH];
|
||
|
||
void Uart_Log_Write(char *buffer, short len);
|
||
|
||
|
||
// 定义log对象
|
||
Log uartLog = {
|
||
.write = Uart_Log_Write,
|
||
.active = LOG_ENABLE,
|
||
.level = LOG_ALL
|
||
};
|
||
|
||
|
||
/**
|
||
* @brief 用户shell写
|
||
*
|
||
* @param data 数据
|
||
* @param len 数据长度
|
||
*
|
||
* @return unsigned short 写入实际长度
|
||
*/
|
||
signed short userShellWrite(char *data, unsigned short len)
|
||
{
|
||
BSP_Uart1_Send_Data(data, len);
|
||
return len;
|
||
}
|
||
|
||
// 实现log写buffer函数
|
||
void Uart_Log_Write(char *buffer, short len)
|
||
{
|
||
if (uartLog.shell)
|
||
{
|
||
//
|
||
// log工具可以结合letter shell的尾行模式,实现log和shell共用一个终端,但不影响shell交互体验
|
||
shellWriteEndLine(uartLog.shell, buffer, len);
|
||
}
|
||
// UART1_SendString((uint8_t *)buffer, len);
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* @brief 用户shell初始化
|
||
*
|
||
*/
|
||
void SHELL_Init(void)
|
||
{
|
||
shell.write = userShellWrite;
|
||
|
||
shellInit(&shell, shellBuffer, SHELL_BUF_LENGTH);
|
||
|
||
logRegister(&uartLog, &shell);
|
||
}
|
||
|
||
|