11bd4fe43Sopenharmony_ci/** 21bd4fe43Sopenharmony_ci* @file hi_at.h 31bd4fe43Sopenharmony_ci* Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 41bd4fe43Sopenharmony_ci* Licensed under the Apache License, Version 2.0 (the "License"); 51bd4fe43Sopenharmony_ci* you may not use this file except in compliance with the License. 61bd4fe43Sopenharmony_ci* You may obtain a copy of the License at 71bd4fe43Sopenharmony_ci* 81bd4fe43Sopenharmony_ci* http://www.apache.org/licenses/LICENSE-2.0 91bd4fe43Sopenharmony_ci* 101bd4fe43Sopenharmony_ci* Unless required by applicable law or agreed to in writing, software 111bd4fe43Sopenharmony_ci* distributed under the License is distributed on an "AS IS" BASIS, 121bd4fe43Sopenharmony_ci* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131bd4fe43Sopenharmony_ci* See the License for the specific language governing permissions and 141bd4fe43Sopenharmony_ci* limitations under the License. 151bd4fe43Sopenharmony_ci*/ 161bd4fe43Sopenharmony_ci 171bd4fe43Sopenharmony_ci/** @defgroup iot_at AT Command 181bd4fe43Sopenharmony_ci * @ingroup dfx 191bd4fe43Sopenharmony_ci */ 201bd4fe43Sopenharmony_ci#ifndef __HI_AT_H__ 211bd4fe43Sopenharmony_ci#define __HI_AT_H__ 221bd4fe43Sopenharmony_ci#include <hi_types.h> 231bd4fe43Sopenharmony_ci 241bd4fe43Sopenharmony_citypedef hi_u32 (*at_call_back_func)(hi_s32 argc, const hi_char **argv); 251bd4fe43Sopenharmony_ci 261bd4fe43Sopenharmony_citypedef struct { 271bd4fe43Sopenharmony_ci hi_char *at_cmd_name; 281bd4fe43Sopenharmony_ci hi_s8 at_cmd_len; 291bd4fe43Sopenharmony_ci at_call_back_func at_test_cmd; 301bd4fe43Sopenharmony_ci at_call_back_func at_query_cmd; 311bd4fe43Sopenharmony_ci at_call_back_func at_setup_cmd; 321bd4fe43Sopenharmony_ci at_call_back_func at_exe_cmd; 331bd4fe43Sopenharmony_ci} at_cmd_func; 341bd4fe43Sopenharmony_ci 351bd4fe43Sopenharmony_citypedef enum { 361bd4fe43Sopenharmony_ci AT_IDLE, 371bd4fe43Sopenharmony_ci AT_CMD_PROCESS, 381bd4fe43Sopenharmony_ci AT_DATA_RECVING, 391bd4fe43Sopenharmony_ci AT_DATA_SENDING, 401bd4fe43Sopenharmony_ci AT_TRANSPARENT, 411bd4fe43Sopenharmony_ci} at_state_machine; 421bd4fe43Sopenharmony_ci 431bd4fe43Sopenharmony_citypedef struct { 441bd4fe43Sopenharmony_ci at_state_machine at_state; 451bd4fe43Sopenharmony_ci hi_u16 send_len; 461bd4fe43Sopenharmony_ci hi_u16 trans_len; 471bd4fe43Sopenharmony_ci hi_bool is_first_recv_data; 481bd4fe43Sopenharmony_ci hi_bool is_first_over_data; 491bd4fe43Sopenharmony_ci hi_u16 is_recv_end_char_flag; 501bd4fe43Sopenharmony_ci} at_cmd_ctrl; 511bd4fe43Sopenharmony_ci 521bd4fe43Sopenharmony_citypedef hi_s32 (*hi_at_input_func)(hi_u8 *data, hi_u32 data_len); 531bd4fe43Sopenharmony_citypedef hi_s32 (*hi_at_output_func)(const hi_u8 *data, hi_u32 data_len); 541bd4fe43Sopenharmony_ci 551bd4fe43Sopenharmony_ci/** 561bd4fe43Sopenharmony_ci* @ingroup iot_at 571bd4fe43Sopenharmony_ci* @brief Get at registered output function. 581bd4fe43Sopenharmony_ciCNcomment:获取AT注册的输出函数。CNend 591bd4fe43Sopenharmony_ci* 601bd4fe43Sopenharmony_ci* @par 描述: 611bd4fe43Sopenharmony_ci* Get at registered output function. 621bd4fe43Sopenharmony_ciCNcomment:获取AT注册的输出函数。CNend 631bd4fe43Sopenharmony_ci* 641bd4fe43Sopenharmony_ci* @attention None. 651bd4fe43Sopenharmony_ci* @param None. 661bd4fe43Sopenharmony_ci* 671bd4fe43Sopenharmony_ci* @retval #g_at_output_func At output function. 681bd4fe43Sopenharmony_ci* @par 依赖: 691bd4fe43Sopenharmony_ci* @li hi_at.h:Describes at command APIs. CNcomment:文件用于描述at指令相关接口。CNend 701bd4fe43Sopenharmony_ci* @see None 711bd4fe43Sopenharmony_ci*/ 721bd4fe43Sopenharmony_cihi_at_output_func hi_at_get_register_output_func(hi_void); 731bd4fe43Sopenharmony_ci 741bd4fe43Sopenharmony_ci/** 751bd4fe43Sopenharmony_ci* @ingroup iot_at 761bd4fe43Sopenharmony_ci* @brief Registration command processing function.CNcomment:注册命令处理函数。CNend 771bd4fe43Sopenharmony_ci* 781bd4fe43Sopenharmony_ci* @par 描述: 791bd4fe43Sopenharmony_ci* @li This command is invoked during initialization and cannot be invoked by multiple tasks. 801bd4fe43Sopenharmony_ciCNcomment:在初始化阶段调用, 不支持多任务调用。CNend 811bd4fe43Sopenharmony_ci* @li A maximum of 20 different command tables can be registered. 821bd4fe43Sopenharmony_ciCNcomment:最多能注册20个不同的命令表。CNend 831bd4fe43Sopenharmony_ci* 841bd4fe43Sopenharmony_ci* @attention None 851bd4fe43Sopenharmony_ci* @param cmd_tbl [IN] type #at_cmd_func*,Command table, which must be declared as a constant array and 861bd4fe43Sopenharmony_ci* transferred to this parameter.CNcomment:命令表, 871bd4fe43Sopenharmony_ci必须申明为常量数组传给该参数。CNend 881bd4fe43Sopenharmony_ci* @param cmd_num [IN] type #hi_u16,The number of commands. The value must be equal to the actual number of 891bd4fe43Sopenharmony_ci* commands in the command table. If it is less than the actual command number, only the number of 901bd4fe43Sopenharmony_ci* commands equal to this value is registered. If it is greater than the actual command number, 911bd4fe43Sopenharmony_ci* the command table will be accessed out of bounds. 921bd4fe43Sopenharmony_ciCNcomment:命令表中命令的个数,该值必须等于命令表中实际的命令个数,如果小于实际命令数,则只注册等于该值的命令个数, 931bd4fe43Sopenharmony_ci 大于实际命令个数将会导致越界访问命令表。CNend 941bd4fe43Sopenharmony_ci* 951bd4fe43Sopenharmony_ci* @retval #HI_ERR_SUCCESS Success. 961bd4fe43Sopenharmony_ci* @retval #Other Failure. For details, see hi_errno.h. 971bd4fe43Sopenharmony_ci* @par 依赖: 981bd4fe43Sopenharmony_ci* @li hi_at.h:Describes at command APIs. CNcomment:文件用于描述at指令相关接口。CNend 991bd4fe43Sopenharmony_ci* @see None 1001bd4fe43Sopenharmony_ci*/ 1011bd4fe43Sopenharmony_cihi_u32 hi_at_register_cmd(HI_CONST at_cmd_func *cmd_tbl, hi_u16 cmd_num); 1021bd4fe43Sopenharmony_ci 1031bd4fe43Sopenharmony_ci/** 1041bd4fe43Sopenharmony_ci* @ingroup iot_at 1051bd4fe43Sopenharmony_ci* @brief Register system AT command. CNcomment:注册系统AT命令。CNend 1061bd4fe43Sopenharmony_ci* 1071bd4fe43Sopenharmony_ci* @par 描述: 1081bd4fe43Sopenharmony_ci* Register system AT command. CNcomment:该函数用于注册系统AT命令。CNend 1091bd4fe43Sopenharmony_ci* @param None 1101bd4fe43Sopenharmony_ci* @retval None 1111bd4fe43Sopenharmony_ci* 1121bd4fe43Sopenharmony_ci* @par 依赖: 1131bd4fe43Sopenharmony_ci* @li hi_at.h:Describes at command APIs. CNcomment:文件用于描述at指令相关接口。CNend 1141bd4fe43Sopenharmony_ci* @see None 1151bd4fe43Sopenharmony_ci*/ 1161bd4fe43Sopenharmony_cihi_void hi_at_sys_cmd_register(hi_void); 1171bd4fe43Sopenharmony_ci 1181bd4fe43Sopenharmony_ci/** 1191bd4fe43Sopenharmony_ci* @ingroup iot_at 1201bd4fe43Sopenharmony_ci* @brief Formats the data and outputs it to AT command terminal. 1211bd4fe43Sopenharmony_ciCNcomment:将数据格式化输出到AT命令终端。CNend 1221bd4fe43Sopenharmony_ci* 1231bd4fe43Sopenharmony_ci* @par 描述: Formats the data and outputs it to AT command terminal. 1241bd4fe43Sopenharmony_ciCNcomment:将数据格式化输出到AT命令终端。CNend 1251bd4fe43Sopenharmony_ci* @attention None 1261bd4fe43Sopenharmony_ci* 1271bd4fe43Sopenharmony_ci* @param fmt [IN] type #const hi_char *。 Formatting control string.CNcomment:格式化控制字符串。CNend 1281bd4fe43Sopenharmony_ci* @param ... [IN] Optional parameter CNcomment:可选参数。CNend 1291bd4fe43Sopenharmony_ci* 1301bd4fe43Sopenharmony_ci* @retval #>=0 Return the number of bytes stored in terminal, not counting the terminating null character. 1311bd4fe43Sopenharmony_ciCNcomment:返回输出到终端的字节数,不包括结束符CNend 1321bd4fe43Sopenharmony_ci* @retval #-1 Failure 1331bd4fe43Sopenharmony_ci* 1341bd4fe43Sopenharmony_ci* @par 依赖: 1351bd4fe43Sopenharmony_ci* @li hi_at.h:Describes at command APIs. CNcomment:文件用于描述at指令相关接口。CNend 1361bd4fe43Sopenharmony_ci* @see None 1371bd4fe43Sopenharmony_ci*/ 1381bd4fe43Sopenharmony_cihi_s32 hi_at_printf(const hi_char *fmt, ...); 1391bd4fe43Sopenharmony_ci 1401bd4fe43Sopenharmony_ci/** 1411bd4fe43Sopenharmony_ci* @ingroup iot_at 1421bd4fe43Sopenharmony_ci* @brief Initializes the AT task. CNcomment:AT命令任务初始化。CNend 1431bd4fe43Sopenharmony_ci* 1441bd4fe43Sopenharmony_ci* @par 描述: 1451bd4fe43Sopenharmony_ci* Initializes the AT task. CNcomment:该函数用于初始化AT命令任务。CNend 1461bd4fe43Sopenharmony_ci* @param None 1471bd4fe43Sopenharmony_ci* @retval #HI_ERR_SUCCESS Success. 1481bd4fe43Sopenharmony_ci* @retval #Other Failure. For details, see hi_errno.h. 1491bd4fe43Sopenharmony_ci* 1501bd4fe43Sopenharmony_ci* @par 依赖: 1511bd4fe43Sopenharmony_ci* @li hi_at.h:Describes at command APIs. CNcomment:文件用于描述at指令相关接口。CNend 1521bd4fe43Sopenharmony_ci* @see None 1531bd4fe43Sopenharmony_ci*/ 1541bd4fe43Sopenharmony_cihi_u32 hi_at_init(hi_void); 1551bd4fe43Sopenharmony_ci 1561bd4fe43Sopenharmony_ci/** 1571bd4fe43Sopenharmony_ci* @ingroup iot_at 1581bd4fe43Sopenharmony_ci* @brief Set taks size of AT. CNcomment:设置AT相关任务栈大小。CNend 1591bd4fe43Sopenharmony_ci* 1601bd4fe43Sopenharmony_ci* @par 描述: 1611bd4fe43Sopenharmony_ci* Set taks size of AT. CNcomment:设置AT相关任务栈大小。CNend 1621bd4fe43Sopenharmony_ci* 1631bd4fe43Sopenharmony_ci* @attention AT task stack size needs to be set before AT initialization. 1641bd4fe43Sopenharmony_ciCNcomment:AT任务栈大小需要在AT初始化之前设置。CNend 1651bd4fe43Sopenharmony_ci* @param channel_task_size [IN] type #hi_u16 channel task size, task size should not smaller than 0x600. 1661bd4fe43Sopenharmony_ciCNcomment:通道任务栈大小, 任务栈大小不低于0x600。Nend 1671bd4fe43Sopenharmony_ci* @param process_task_size [IN] type #hi_u16 process task size, task size should not smaller than 0xc00. 1681bd4fe43Sopenharmony_ciCNcomment:处理任务栈大小, 任务栈大小不低于0xc00。CNend 1691bd4fe43Sopenharmony_ci* 1701bd4fe43Sopenharmony_ci* @retval None 1711bd4fe43Sopenharmony_ci* @par 依赖: 1721bd4fe43Sopenharmony_ci* @li hi_at.h:Describes at command APIs. CNcomment:文件用于描述at指令相关接口。CNend 1731bd4fe43Sopenharmony_ci* @see None 1741bd4fe43Sopenharmony_ci*/ 1751bd4fe43Sopenharmony_cihi_void hi_at_set_task_size(hi_u16 channel_task_size, hi_u16 process_task_size); 1761bd4fe43Sopenharmony_ci 1771bd4fe43Sopenharmony_ci/** 1781bd4fe43Sopenharmony_ci* @ingroup iot_at 1791bd4fe43Sopenharmony_ci* @brief Set whether to check the UART busy status when low power vote. 1801bd4fe43Sopenharmony_ciCNcomment:设置低功耗投票时是否检查UART busy状态。CNend 1811bd4fe43Sopenharmony_ci* 1821bd4fe43Sopenharmony_ci* @par 描述: 1831bd4fe43Sopenharmony_ci* Set whether to check the UART busy status when low power vote. 1841bd4fe43Sopenharmony_ciCNcomment:设置低功耗投票时是否检查UART busy状态。CNend 1851bd4fe43Sopenharmony_ci* 1861bd4fe43Sopenharmony_ci* @attention UART busy status is checked by default. 1871bd4fe43Sopenharmony_ciCNcomment:默认低功耗睡眠投票时检查UART busy状态。CNend 1881bd4fe43Sopenharmony_ci* @param enable [IN] type #hi_bool,enable status. CNcomment:设置是否检查UART busy状态。CNend 1891bd4fe43Sopenharmony_ci* 1901bd4fe43Sopenharmony_ci* @retval None 1911bd4fe43Sopenharmony_ci* @par 依赖: 1921bd4fe43Sopenharmony_ci* @li hi_at.h:Describes at command APIs. CNcomment:文件用于描述at指令相关接口。CNend 1931bd4fe43Sopenharmony_ci* @see None 1941bd4fe43Sopenharmony_ci*/ 1951bd4fe43Sopenharmony_cihi_void hi_at_set_check_uart_busy(hi_bool enable); 1961bd4fe43Sopenharmony_ci 1971bd4fe43Sopenharmony_ci/** 1981bd4fe43Sopenharmony_ci* @ingroup iot_at 1991bd4fe43Sopenharmony_ci* @brief Register at input function to replace uart input. 2001bd4fe43Sopenharmony_ciCNcomment:注册AT输入函数,代替默认从UART读取AT输入数据。CNend 2011bd4fe43Sopenharmony_ci* 2021bd4fe43Sopenharmony_ci* @par 描述: 2031bd4fe43Sopenharmony_ci* Register at input function to replace uart input. 2041bd4fe43Sopenharmony_ciCNcomment:注册AT输入函数,代替默认从UART读取AT输入数据。CNend 2051bd4fe43Sopenharmony_ci* 2061bd4fe43Sopenharmony_ci* @attention Should set suitable task size; input func should not continuous read data without break. otherwise, 2071bd4fe43Sopenharmony_cia watchdog may happen.not support register HI_NULL when at channel is already uart. 2081bd4fe43Sopenharmony_ciCNcomment:根据输入函数实现,设置合适的栈大小;输入函数不能持续 2091bd4fe43Sopenharmony_ci返回有效数据避免触发看门狗。当AT通道已经是UART时,不支持注 2101bd4fe43Sopenharmony_ci册AT 输入函数为HI_NULL。CNend 2111bd4fe43Sopenharmony_ci* @param at_input_func [IN] type #hi_at_input_func,at input funciton. 2121bd4fe43Sopenharmony_ciCNcomment:AT输入函数。CNend 2131bd4fe43Sopenharmony_ci* @retval #0 Success. 2141bd4fe43Sopenharmony_ci* @retval #Other Failure. For details, see hi_errno.h. 2151bd4fe43Sopenharmony_ci* @par 依赖: 2161bd4fe43Sopenharmony_ci* @li hi_at.h:Describes at command APIs. CNcomment:文件用于描述at指令相关接口。CNend 2171bd4fe43Sopenharmony_ci* @see None 2181bd4fe43Sopenharmony_ci*/ 2191bd4fe43Sopenharmony_cihi_u32 hi_at_register_input_func(hi_at_input_func at_input_func); 2201bd4fe43Sopenharmony_ci 2211bd4fe43Sopenharmony_ci/** 2221bd4fe43Sopenharmony_ci* @ingroup iot_at 2231bd4fe43Sopenharmony_ci* @brief Register at output function to replace uart output. 2241bd4fe43Sopenharmony_ciCNcomment:注册AT命令输出函数,代替默认从UART输出AT相关数据。CNend 2251bd4fe43Sopenharmony_ci* 2261bd4fe43Sopenharmony_ci* @par 描述: 2271bd4fe43Sopenharmony_ci* Register at output function to replace uart output. 2281bd4fe43Sopenharmony_ciCNcomment:注册AT命令输出函数,代替默认从UART输出AT相关数据。CNend 2291bd4fe43Sopenharmony_ci* 2301bd4fe43Sopenharmony_ci* @attention Should set suitable task size according to implementation of output func. 2311bd4fe43Sopenharmony_ciCNcomment:根据输出函数实现,设置合适的栈大小。CNend 2321bd4fe43Sopenharmony_ci* @param at_output_func [IN] type #hi_at_output_func,at output function. 2331bd4fe43Sopenharmony_ciCNcomment:AT输出函数。CNend 2341bd4fe43Sopenharmony_ci* @retval None 2351bd4fe43Sopenharmony_ci* @par 依赖: 2361bd4fe43Sopenharmony_ci* @li hi_at.h:Describes at command APIs. CNcomment:文件用于描述at指令相关接口。CNend 2371bd4fe43Sopenharmony_ci* @see None 2381bd4fe43Sopenharmony_ci*/ 2391bd4fe43Sopenharmony_cihi_void hi_at_register_output_func(hi_at_output_func at_output_func); 2401bd4fe43Sopenharmony_ci 2411bd4fe43Sopenharmony_ci#endif 242