From d0c6d6f4a48b67fde477c743bec1a68198e882f3 Mon Sep 17 00:00:00 2001 From: JasonCang <40387862+JasonCang@users.noreply.github.com> Date: Sat, 10 Jun 2023 11:40:37 +0800 Subject: [at] optimize at_vprintfln MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为什么提交这份PR (why to submit this PR) 现在的at指令发送接口,底层会自动添加"\r\n",某些场景需要发送空指令。如ESP32的蓝牙发送数据指令,收到">"后 发数据,等待接收OK。 详细讨论可见: https://club.rt-thread.org/ask/question/185810c0aed98558.html 你的解决方案是什么 (what is your solution) 判断at指令长度,长度为0,则直接返回 --- components/net/at/src/at_utils.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/components/net/at/src/at_utils.c b/components/net/at/src/at_utils.c index 9ffaab199c..3c0527d88f 100644 --- a/components/net/at/src/at_utils.c +++ b/components/net/at/src/at_utils.c @@ -6,6 +6,7 @@ * Change Logs: * Date Author Notes * 2018-04-14 chenyong first version + * 2023-06-09 CX optimize at_vprintfln interface */ #include @@ -91,8 +92,16 @@ rt_size_t at_vprintfln(rt_device_t device, const char *format, va_list args) rt_size_t len; last_cmd_len = vsnprintf(send_buf, sizeof(send_buf) - 2, format, args); + + if(last_cmd_len == 0) + { + return 0; + } + if(last_cmd_len > sizeof(send_buf) - 2) + { last_cmd_len = sizeof(send_buf) - 2; + } rt_memcpy(send_buf + last_cmd_len, "\r\n", 2); len = last_cmd_len + 2; -- cgit v1.3.1