1/**
2 * @file hi_shell.h
3 *
4 * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/** @defgroup iot_shell Shell
19 *  @ingroup dfx
20 */
21
22#ifndef __HI_SHELL_H__
23#define __HI_SHELL_H__
24
25#include <hi_types.h>
26#include <hi_uart.h>
27
28typedef  hi_s32 (*hi_shell_input_func)(hi_u8 *data, hi_u32 data_len);
29typedef  hi_s32 (*hi_shell_output_func)(const hi_u8 *data, hi_u32 data_len);
30typedef hi_u32 (*hi_shell_cmd_callback_func)(hi_u32 argc, hi_char **argv);
31/**
32* @ingroup  iot_shell
33* @brief  Shell initialization function.
34CNcomment:SHELL初始化函数。CNend
35*
36* @par 描述:
37*      Shell initialization function.
38CNcomment:SHELL初始化函数。CNend
39*
40* @attention None.
41* @param None.
42*
43* @retval #0                 Success.
44* @retval #Other             Failure. For details, see hi_errno.h.
45* @par 依赖:
46*           @li hi_shell.h:Describes SHELL APIs.
47CNcomment:文件用于描述SHELL相关接口。CNend
48*/
49hi_u32 hi_shell_init(hi_void);
50
51/**
52* @ingroup  iot_shell
53* @brief  Set taks size of SHELL. CNcomment:设置SHELL相关任务栈大小。CNend
54*
55* @par 描述:
56*         Set taks size of SHELL. CNcomment:设置SHELL相关任务栈大小。CNend
57*
58* @attention shell task stack size needs to be set before shell initialization.
59CNcomment:shell任务栈大小需要在shell初始化之前设置。CNend
60* @param  channel_task_size      [IN] type #hi_u16 channel task size,task size should not smaller than 0x600.
61CNcomment:通道任务栈大小,任务栈大小不低于0x600。CNend
62* @param  process_task_size      [IN] type #hi_u16 process task size,task size should not smaller than 0xc00.
63CNcomment:处理任务栈大小,任务栈大小不低于0xc00。CNend
64*
65* @retval None
66* @par 依赖:
67*           @li hi_shell.h:Describes SHELL APIs.
68CNcomment:文件用于描述SHELL相关接口。CNend
69*/
70hi_void hi_shell_set_task_size(hi_u16 channel_task_size, hi_u16 process_task_size);
71
72/**
73* @ingroup  iot_shell
74* @brief  Get shell registered output function.
75CNcomment:获取SHELL注册的输出函数。CNend
76*
77* @par 描述:
78*      Get shell registered output function.
79CNcomment:获取SHELL注册的输出函数。CNend
80*
81* @attention None.
82* @param  None.
83*
84* @retval #g_shell_output_func   Shell output function.
85* @par 依赖:
86*           @li hi_shell.h:Describes SHELL APIs.
87CNcomment:文件用于描述SHELL相关接口。CNend
88*/
89hi_shell_output_func hi_shell_get_register_output_func(hi_void);
90
91/**
92* @ingroup  iot_shell
93* @brief  Register shell input function to replace uart input.
94CNcomment:注册SHELL输入函数,代替默认从UART读取SHELL输入数据。CNend
95*
96* @par 描述:
97*      Register shell input function to replace uart input.
98CNcomment:注册SHELL输入函数,代替默认从UART读取SHELL输入数据。CNend
99*
100* @attention Should set suitable task size; input func should not continuous read data without break. otherwise,
101a watchdog may happen.not support register HI_NULL when shell channel is already uart.
102CNcomment:根据输入函数实现,设置合适的栈大小;输入函数不能持续
103返回有效数据避免触发看门狗。当SHELL 通道已经是UART时,不支持注
104册SHELL 输入函数为HI_NULL。CNend
105* @param  shell_input_func      [IN] type #hi_shell_input_func,shell input function.
106CNcomment:SHELL输入函数。CNend
107*
108* @retval #0                 Success.
109* @retval #Other             Failure. For details, see hi_errno.h.
110* @par 依赖:
111*           @li hi_shell.h:Describes SHELL APIs.
112CNcomment:文件用于描述SHELL相关接口。CNend
113*/
114hi_u32 hi_shell_register_input_func(hi_shell_input_func shell_input_func);
115
116/**
117* @ingroup  iot_shell
118* @brief  Register shell output function to replace uart output.
119CNcomment:注册SHELL输出函数,代替默认从UART输出SHELL相关数据。CNend
120*
121* @par 描述:
122*      Register shell output function to replace uart output.
123CNcomment:注册SHELL输出函数,代替默认从UART输出SHELL相关数据。CNend
124*
125* @attention Should set suitable task size according to implementation of output func.
126CNcomment:根据输出函数实现,设置合适的栈大小。CNend
127* @param  shell_output_func      [IN] type #hi_shell_output_func,shell output function.
128CNcomment:SHELL输出函数。CNend
129*
130* @retval None
131* @par 依赖:
132*           @li hi_shell.h:Describes SHELL APIs.
133CNcomment:文件用于描述SHELL相关接口。CNend
134*/
135hi_void hi_shell_register_output_func(hi_shell_output_func shell_output_func);
136
137/**
138* @ingroup  iot_shell
139* @brief  Set whether to check the UART busy status when low power vote.
140CNcomment:设置低功耗投票时是否检查UART busy状态。CNend
141*
142* @par 描述:
143*      Set whether to check the UART busy status when low power vote.
144CNcomment:设置低功耗投票时是否检查UART busy状态。CNend
145*
146* @attention UART busy status is not checked by default.
147CNcomment:默认低功耗睡眠投票时不检查UART busy状态。CNend
148* @param  enable         [IN] type #hi_bool,enable status. CNcomment:设置是否检查UART busy状态。CNend
149*
150* @retval None
151* @par 依赖:
152*           @li hi_diag.h:Describes SHELL APIs.
153CNcomment:文件用于描述SHELL相关接口。CNend
154*/
155hi_void hi_shell_set_check_uart_busy(hi_bool enable);
156
157/**
158* @ingroup  iot_shell
159* @brief  Registration shell command processing function.CNcomment:注册shell命令处理函数。CNend
160*
161* @par 描述:Registration shell command processing function.CNcomment:注册shell命令处理函数。CNend
162*
163* @attention:Only the first 32 command line arguments are recognized, and the remaining parts are not recognized.
164CNcomment:仅识别前32个shell命令行参数,32个之后的命令行参数将不被识别。CNend
165* @param  cmd_key       [IN] type #hi_char*,Register command name, the length must be less than 16 bytes.
166CNcomment:shell命令名称,命令长度不能大于16字节。CNend
167* @param  cmd_callback  [IN] type #hi_shell_cmd_callback_func,Shell command processing function.
168CNcomment:shell命令处理函数。CNend
169*
170* @retval #HI_ERR_SUCCESS         Success.
171* @retval #Other     Failure. For details, see hi_errno.h.
172* @par 依赖:
173*           @li hi_shell.h:Describes SHELL APIs. CNcomment:文件用于描述SHELL相关接口。CNend
174* @see  None
175*/
176hi_u32 hi_shell_cmd_register(hi_char *cmd_key, hi_shell_cmd_callback_func cmd_callback);
177
178#endif
179