From 02c1f0c62134b4b3e61e08df27c23b003b27fc79 Mon Sep 17 00:00:00 2001 From: chenyong <1521761801@qq.com> Date: Fri, 31 Aug 2018 17:24:26 +0800 Subject: [PATCH] [net][at] Add AT Client Error LOG for multiple clients --- components/net/at/include/at.h | 3 ++- components/net/at/src/at_client.c | 43 +++++++++++++++++++++++++------ 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/components/net/at/include/at.h b/components/net/at/include/at.h index 6f4836fa21..2601562019 100644 --- a/components/net/at/include/at.h +++ b/components/net/at/include/at.h @@ -31,7 +31,8 @@ #ifdef __cplusplus extern "C" { #endif -#define AT_SW_VERSION "1.0.0" + +#define AT_SW_VERSION "1.0.1" #define AT_SW_VERSION_NUM 0x10000 #define DBG_ENABLE diff --git a/components/net/at/src/at_client.c b/components/net/at/src/at_client.c index 9a515f4e8f..42a6f4b980 100644 --- a/components/net/at/src/at_client.c +++ b/components/net/at/src/at_client.c @@ -290,9 +290,14 @@ int at_obj_exec_cmd(at_client_t client, at_response_t resp, const char *cmd_expr rt_err_t result = RT_EOK; const char *cmd = RT_NULL; - RT_ASSERT(client); RT_ASSERT(cmd_expr); + if (client == RT_NULL) + { + LOG_E("input AT Client object is NULL, please create or get AT Client object!"); + return -RT_ERROR; + } + rt_mutex_take(client->lock, RT_WAITING_FOREVER); client->resp_status = AT_RESP_OK; @@ -348,8 +353,8 @@ int at_client_obj_wait_connect(at_client_t client, rt_uint32_t timeout) if (client == RT_NULL) { - LOG_E("Input AT Client is NULL, please create or get AT Client!"); - return RT_NULL; + LOG_E("input AT Client object is NULL, please create or get AT Client object!"); + return -RT_ERROR; } resp = at_create_resp(16, 0, rt_tick_from_millisecond(500)); @@ -400,13 +405,19 @@ int at_client_obj_wait_connect(at_client_t client, rt_uint32_t timeout) * @param buf send data buffer * @param size send fixed data size * - * @return send data size + * @return >0: send data size + * =0: send failed */ rt_size_t at_client_obj_send(at_client_t client, const char *buf, rt_size_t size) { - RT_ASSERT(client); RT_ASSERT(buf); + if (client == RT_NULL) + { + LOG_E("input AT Client object is NULL, please create or get AT Client object!"); + return 0; + } + #ifdef AT_PRINT_RAW_CMD at_print_raw_cmd("send", buf, size); #endif @@ -436,16 +447,22 @@ static char at_client_getchar(at_client_t client) * * @note this function can only be used in execution function of URC data * - * @return success receive data size + * @return >0: receive data size + * =0: receive failed */ rt_size_t at_client_obj_recv(at_client_t client, char *buf, rt_size_t size) { rt_size_t read_idx = 0; char ch; - RT_ASSERT(client); RT_ASSERT(buf); + if (client == RT_NULL) + { + LOG_E("input AT Client object is NULL, please create or get AT Client object!"); + return 0; + } + while (1) { if (read_idx < size) @@ -475,7 +492,11 @@ rt_size_t at_client_obj_recv(at_client_t client, char *buf, rt_size_t size) */ void at_obj_set_end_sign(at_client_t client, char ch) { - RT_ASSERT(client); + if (client == RT_NULL) + { + LOG_E("input AT Client object is NULL, please create or get AT Client object!"); + return; + } client->end_sign = ch; } @@ -491,6 +512,12 @@ void at_obj_set_urc_table(at_client_t client, const struct at_urc *urc_table, rt { rt_size_t idx; + if (client == RT_NULL) + { + LOG_E("input AT Client object is NULL, please create or get AT Client object!"); + return; + } + for (idx = 0; idx < table_sz; idx++) { RT_ASSERT(urc_table[idx].cmd_prefix); -- GitLab