140 lines
3.1 KiB
C
140 lines
3.1 KiB
C
|
|
||
|
#ifndef _shell_drv_h_
|
||
|
#define _shell_drv_h_
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#include <common/bk_typedef.h>
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
bFALSE = 0,
|
||
|
bTRUE = !bFALSE,
|
||
|
} bool_t;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
SHELL_IO_CTRL_GET_STATUS = 0,
|
||
|
SHELL_IO_CTRL_RX_RESET,
|
||
|
SHELL_IO_CTRL_TX_RESET,
|
||
|
SHELL_IO_CTRL_FLUSH,
|
||
|
SHELL_IO_CTRL_TX_SUSPEND,
|
||
|
SHELL_IO_CTRL_TX_RESUME,
|
||
|
SHELL_IO_CTRL_RX_SUSPEND,
|
||
|
SHELL_IO_CTRL_RX_RESUME,
|
||
|
SHELL_IO_CTRL_SET_UART_PORT,
|
||
|
SHELL_IO_CTRL_GET_UART_PORT,
|
||
|
SHELL_IO_CTRL_GET_RX_STATUS,
|
||
|
SHELL_IO_CTRL_SET_RX_ISR,
|
||
|
SHELL_IO_CTRL_SET_TX_CMPL_ISR,
|
||
|
} shell_ctrl_cmd_t;
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
SHELL_DEV_UART = 0,
|
||
|
SHELL_DEV_MAILBOX,
|
||
|
};
|
||
|
|
||
|
struct _shell_dev_drv;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
struct _shell_dev_drv *dev_drv;
|
||
|
u8 dev_type;
|
||
|
void * dev_ext;
|
||
|
} shell_dev_t;
|
||
|
|
||
|
typedef void (* tx_complete_t)(u8 *pbuf, u16 Tag);
|
||
|
typedef void (* rx_indicate_t)(void);
|
||
|
|
||
|
typedef struct _shell_dev_drv
|
||
|
{
|
||
|
bool_t (*init)(shell_dev_t * shell_dev);
|
||
|
bool_t (*open)(shell_dev_t * shell_dev, tx_complete_t tx_callback, rx_indicate_t rx_callback);
|
||
|
u16 (*write_async)(shell_dev_t * shell_dev, u8 * pBuf, u16 BufLen, u16 Tag);
|
||
|
u16 (*read)(shell_dev_t * shell_dev, u8 * pBuf, u16 BufLen);
|
||
|
u16 (*write_sync)(shell_dev_t * shell_dev, u8 * pBuf, u16 BufLen);
|
||
|
u16 (*write_echo)(shell_dev_t * shell_dev, u8 * pBuf, u16 BufLen);
|
||
|
bool_t (*io_ctrl)(shell_dev_t * shell_dev, u8 cmd, void * param);
|
||
|
bool_t (*close)(shell_dev_t * shell_dev);
|
||
|
} shell_dev_drv_t;
|
||
|
|
||
|
extern shell_dev_t shell_uart;
|
||
|
extern shell_dev_t shell_dev_mb;
|
||
|
extern shell_dev_t shell_uart1;
|
||
|
extern shell_dev_t shell_uart2;
|
||
|
|
||
|
|
||
|
#if (CONFIG_CPU_CNT > 1)
|
||
|
|
||
|
#include <driver/mailbox_channel.h>
|
||
|
|
||
|
struct _shell_ipc_drv;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
struct _shell_ipc_drv *dev_drv;
|
||
|
u8 dev_type;
|
||
|
void * dev_ext;
|
||
|
} shell_dev_ipc_t;
|
||
|
|
||
|
typedef int (* shell_ipc_rx_t)(u16 cmd, void *data_buf, u16 cpu_id);
|
||
|
typedef void (* shell_ipc_tx_complete_t)(u16 cmd);
|
||
|
|
||
|
typedef struct _shell_ipc_drv
|
||
|
{
|
||
|
bool_t (*init)(shell_dev_ipc_t * dev_ipc);
|
||
|
bool_t (*open)(shell_dev_ipc_t * dev_ipc, shell_ipc_rx_t rx_callback, shell_ipc_tx_complete_t tx_comptete);
|
||
|
u16 (*read)(shell_dev_ipc_t * dev_ipc, u8 * pBuf, u16 BufLen);
|
||
|
u16 (*write_cmd)(shell_dev_ipc_t * dev_ipc, mb_chnl_cmd_t * cmd_buf);
|
||
|
bool_t (*io_ctrl)(shell_dev_ipc_t * dev_ipc, u8 cmd, void * param);
|
||
|
bool_t (*close)(shell_dev_ipc_t * dev_ipc);
|
||
|
} shell_ipc_drv_t;
|
||
|
|
||
|
typedef union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
mb_chnl_hdr_t hdr;
|
||
|
u8 * buf;
|
||
|
u16 len;
|
||
|
u16 tag;
|
||
|
};
|
||
|
mb_chnl_cmd_t cmd_buf;
|
||
|
} log_cmd_t;
|
||
|
|
||
|
typedef union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
mb_chnl_hdr_t hdr;
|
||
|
u8 * buf;
|
||
|
u16 len;
|
||
|
};
|
||
|
mb_chnl_cmd_t cmd_buf;
|
||
|
} user_cmd_t;
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
MB_CMD_LOG_OUT = 1,
|
||
|
MB_CMD_LOG_OUT_OK,
|
||
|
MB_CMD_USER_INPUT,
|
||
|
MB_CMD_ASSERT_OUT,
|
||
|
MB_CMD_LOG_UNBLOCK,
|
||
|
} ;
|
||
|
|
||
|
#define ACK_STATE_BLOCK 0x10000 /* log alloc buffer fail, tansfer log to task, notify cpu1 to block log output. */
|
||
|
|
||
|
extern shell_dev_ipc_t shell_dev_ipc;
|
||
|
|
||
|
#endif /* (CONFIG_CPU_CNT > 1) */
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* _shell_drv_h_ */
|
||
|
|