11bd4fe43Sopenharmony_ci/* 21bd4fe43Sopenharmony_ci * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 31bd4fe43Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41bd4fe43Sopenharmony_ci * you may not use this file except in compliance with the License. 51bd4fe43Sopenharmony_ci * You may obtain a copy of the License at 61bd4fe43Sopenharmony_ci * 71bd4fe43Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81bd4fe43Sopenharmony_ci * 91bd4fe43Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101bd4fe43Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111bd4fe43Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121bd4fe43Sopenharmony_ci * See the License for the specific language governing permissions and 131bd4fe43Sopenharmony_ci * limitations under the License. 141bd4fe43Sopenharmony_ci */ 151bd4fe43Sopenharmony_ci 161bd4fe43Sopenharmony_ci#ifndef __AT_H__ 171bd4fe43Sopenharmony_ci#define __AT_H__ 181bd4fe43Sopenharmony_ci 191bd4fe43Sopenharmony_ci#include <hi_at.h> 201bd4fe43Sopenharmony_ci#include <hi_early_debug.h> 211bd4fe43Sopenharmony_ci#include <hi_mem.h> 221bd4fe43Sopenharmony_ci#include <hi_stdlib.h> 231bd4fe43Sopenharmony_ci#include <hi_types_base.h> 241bd4fe43Sopenharmony_ci 251bd4fe43Sopenharmony_ci#ifdef __cplusplus 261bd4fe43Sopenharmony_ci#if __cplusplus 271bd4fe43Sopenharmony_ciextern "C" { 281bd4fe43Sopenharmony_ci#endif 291bd4fe43Sopenharmony_ci#endif 301bd4fe43Sopenharmony_ci 311bd4fe43Sopenharmony_ci#define AT_CMD_MAX_PARAS 64 321bd4fe43Sopenharmony_ci#define AT_CMD_MAX_LEN 128 331bd4fe43Sopenharmony_ci#define AT_CMD_LIST_NUM 20 341bd4fe43Sopenharmony_ci 351bd4fe43Sopenharmony_ci#define AT_RESPONSE_OK do { \ 361bd4fe43Sopenharmony_ci hi_at_printf("OK\r\n"); \ 371bd4fe43Sopenharmony_ci } while (0) 381bd4fe43Sopenharmony_ci 391bd4fe43Sopenharmony_ci#define AT_RESPONSE_ERROR do { \ 401bd4fe43Sopenharmony_ci hi_at_printf("ERROR\r\n"); \ 411bd4fe43Sopenharmony_ci } while (0) 421bd4fe43Sopenharmony_ci 431bd4fe43Sopenharmony_ci#define AT_ENTER do { \ 441bd4fe43Sopenharmony_ci hi_at_printf("\r\n"); \ 451bd4fe43Sopenharmony_ci } while (0) 461bd4fe43Sopenharmony_ci 471bd4fe43Sopenharmony_ci#ifdef AT_CMD_DEBUG 481bd4fe43Sopenharmony_ci#define at_printf(fmt...) printf(fmt) 491bd4fe43Sopenharmony_ci#else 501bd4fe43Sopenharmony_ci#define at_printf(fmt...) 511bd4fe43Sopenharmony_ci#endif 521bd4fe43Sopenharmony_ci 531bd4fe43Sopenharmony_ci#define AT_MACSTR "%02x:%02x:%02x:%02x:%02x:%02x" 541bd4fe43Sopenharmony_ci#define at_mac2str(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5] 551bd4fe43Sopenharmony_ci 561bd4fe43Sopenharmony_ci 571bd4fe43Sopenharmony_citypedef enum { 581bd4fe43Sopenharmony_ci AT_CMD_TYPE_TEST = 1, 591bd4fe43Sopenharmony_ci AT_CMD_TYPE_QUERY = 2, 601bd4fe43Sopenharmony_ci AT_CMD_TYPE_SETUP = 3, 611bd4fe43Sopenharmony_ci AT_CMD_TYPE_EXE = 4, 621bd4fe43Sopenharmony_ci} at_cmd_type; 631bd4fe43Sopenharmony_ci 641bd4fe43Sopenharmony_citypedef struct { 651bd4fe43Sopenharmony_ci hi_s8 at_cmd_len; 661bd4fe43Sopenharmony_ci hi_char cmd_name[AT_CMD_MAX_LEN]; 671bd4fe43Sopenharmony_ci at_cmd_type at_cmd_type; 681bd4fe43Sopenharmony_ci hi_s32 at_param_cnt; /* command actual para num */ 691bd4fe43Sopenharmony_ci hi_u32 param_array[AT_CMD_MAX_PARAS]; 701bd4fe43Sopenharmony_ci} at_cmd_attr; 711bd4fe43Sopenharmony_ci 721bd4fe43Sopenharmony_citypedef struct { 731bd4fe43Sopenharmony_ci HI_CONST at_cmd_func *at_cmd_list[AT_CMD_LIST_NUM]; /* user input at cmd list */ 741bd4fe43Sopenharmony_ci hi_u16 at_cmd_num[AT_CMD_LIST_NUM]; /* command number */ 751bd4fe43Sopenharmony_ci} at_cmd_func_list; 761bd4fe43Sopenharmony_ci 771bd4fe43Sopenharmony_ciextern at_cmd_ctrl g_at_ctrl; 781bd4fe43Sopenharmony_ci 791bd4fe43Sopenharmony_cihi_u32 at_cmd_process(const hi_char *at_cmd_line); 801bd4fe43Sopenharmony_cihi_u32 at_param_null_check(hi_s32 argc, const hi_char **argv); 811bd4fe43Sopenharmony_cihi_u32 integer_check(const hi_char *val); 821bd4fe43Sopenharmony_cihi_u32 cmd_strtoaddr(const hi_char *param, hi_uchar *mac_addr, hi_u32 addr_len); 831bd4fe43Sopenharmony_cichar* at_parse_string(const char *value, size_t *len); 841bd4fe43Sopenharmony_ciconst char* at_ssid_txt(const hi_u8 *ssid, size_t ssid_len); 851bd4fe43Sopenharmony_civoid* at_malloc(size_t size); 861bd4fe43Sopenharmony_civoid at_free(char *ptr); 871bd4fe43Sopenharmony_ci 881bd4fe43Sopenharmony_ci#ifdef __cplusplus 891bd4fe43Sopenharmony_ci#if __cplusplus 901bd4fe43Sopenharmony_ci } 911bd4fe43Sopenharmony_ci#endif 921bd4fe43Sopenharmony_ci#endif 931bd4fe43Sopenharmony_ci 941bd4fe43Sopenharmony_ci#endif 95