diff --git a/examples/at_client/BL602 AT TEST.docx b/examples/at_client/BL602 AT TEST.docx new file mode 100644 index 00000000..13ae3910 Binary files /dev/null and b/examples/at_client/BL602 AT TEST.docx differ diff --git a/examples/at_client/at.c b/examples/at_client/at.c new file mode 100644 index 00000000..4debdd02 --- /dev/null +++ b/examples/at_client/at.c @@ -0,0 +1,204 @@ +#include "bflb_platform.h" +#include "hal_uart.h" +#include "at.h" +#include "ring_buffer.h" + +#define UART_SEND_BUF_SZIE 1024 +char send_buf[UART_SEND_BUF_SZIE] = { 0 }; + +#define UART_RX_RINGBUFFER_SIZE (1 * 1024) + +uint8_t uart_rx_mem[UART_RX_RINGBUFFER_SIZE]; + +struct device *uart1; +Ring_Buffer_Type uart1_rx_rb; + +static void uart1_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state) +{ + Ring_Buffer_Write(&uart1_rx_rb, (uint8_t *)args, size); +} + +uint32_t at_vprintfln(const char *format, va_list args) +{ + uint32_t len; + + len = vsnprintf(send_buf, sizeof(send_buf) - 2, format, args); + if (len > sizeof(send_buf) - 2) + len = sizeof(send_buf) - 2; + memcpy(send_buf + len, "\r\n", 2); + + len = len + 2; + MSG("%s\r\n", send_buf); + device_control(uart1, DEVICE_CTRL_CLR_INT, (void *)(UART_RX_FIFO_IT | UART_RTO_IT)); + uart1->oflag &= ~DEVICE_OFLAG_INT_RX; + return device_write(uart1, 0, (uint8_t *)send_buf, len); +} + +int at_read_line(struct at_client *client) +{ + uint32_t read_len = 0; + uint32_t start_time = 0; + char ch = 0, last_ch = 0; + + memset(client->recv_line_buf, 0, client->recv_bufsz); + client->recv_line_len = 0; + + start_time = bflb_platform_get_time_ms(); + while (1) { + while (device_read(uart1, 0, &ch, 1) == 0) { + if ((bflb_platform_get_time_ms() - start_time) > client->timeout) { + client->resp_status = AT_RESP_TIMEOUT; + return AT_RESP_TIMEOUT; + } + } + + if (read_len < client->recv_bufsz) { + client->recv_line_buf[read_len++] = ch; + client->recv_line_len = read_len; + } else { + MSG("buf full\r\n"); + client->resp_status = AT_RESP_BUFF_FULL; + return AT_RESP_BUFF_FULL; + } + + if (ch == '\n' && last_ch == '\r') { + if (strstr((const char *)client->recv_line_buf, (const char *)client->resp_succ)) { + client->resp_status = AT_RESP_OK; + goto match_out; + } else if (client->resp_err && strstr((const char *)client->recv_line_buf, (const char *)client->resp_err)) { + client->resp_status = AT_RESP_ERROR; + goto match_out; + } + } + last_ch = ch; + } + +match_out: + MSG("%s", client->recv_line_buf); + return read_len; +} + +int at_exe_cmd(struct at_client *client, char *cmd_expr, ...) +{ + va_list ap; + + va_start(ap, cmd_expr); + at_vprintfln(cmd_expr, ap); + va_end(ap); + + return at_read_line(client); +} + +int at_write_recv(uint8_t *send_buffer, uint32_t send_len, uint8_t *recv_buffer, uint32_t *recv_len, uint32_t timeout) +{ + int ret = 0; + uint8_t found = 0; + uint32_t read_len = 0; + uint32_t start_time = 0; + uint8_t ch = 0, last_ch = 0; + uint8_t tmp_buf[32] = { 0 }; + const char *found_string = "+IPD:0,"; + uint8_t found_index = 0; + + struct at_client static_client; + + static_client.recv_line_buf = tmp_buf; + static_client.recv_bufsz = 32; + static_client.resp_succ = ">"; + static_client.resp_err = "FAIL"; + static_client.timeout = 1000; + ret = at_exe_cmd(&static_client, "AT+CIPSEND=0,%d", 114); + if (ret < 0) { + return -1; + } + + Ring_Buffer_Reset(&uart1_rx_rb); + device_control(uart1, DEVICE_CTRL_SET_INT, (void *)(UART_RX_FIFO_IT | UART_RTO_IT)); + device_write(uart1, 0, (uint8_t *)send_buffer, send_len); + + if (recv_buffer == NULL) { + return 0; + } + + uint8_t *p = recv_buffer; + start_time = bflb_platform_get_time_ms(); + while (1) { + while (Ring_Buffer_Read_Byte(&uart1_rx_rb, &ch) == 0) { + if ((bflb_platform_get_time_ms() - start_time) > timeout) { + return AT_RESP_TIMEOUT; + } + } + + if (found == 0) { + tmp_buf[found_index++] = ch; + if (strstr((const char *)tmp_buf, found_string)) { + found = 1; + found_index = 0; + } + } else if (found == 1) { + tmp_buf[found_index++] = ch; + if (ch == '\n' && last_ch == '\r') { + if (found_index == 3) { + read_len = (tmp_buf[0] - '0'); + } else if (found_index == 4) { + read_len = (tmp_buf[0] - '0') * 10 + (tmp_buf[1] - '0'); + } else if (found_index == 5) { + read_len = (tmp_buf[0] - '0') * 100 + (tmp_buf[1] - '0') * 10 + (tmp_buf[2] - '0'); + } + *recv_len = read_len; + found = 2; + } + last_ch = ch; + } else { + *p++ = ch; + read_len--; + if (read_len == 0) { + return 0; + } + } + } + return 0; +} + +#define __is_print(ch) ((unsigned int)((ch) - ' ') < 127u - ' ') +void at_dump_hex(const void *ptr, uint32_t buflen) +{ + unsigned char *buf = (unsigned char *)ptr; + int i, j; + + for (i = 0; i < buflen; i += 16) { + MSG("%08X:", i); + + for (j = 0; j < 16; j++) + if (i + j < buflen) { + if ((j % 8) == 0) { + MSG(" "); + } + + MSG("%02X ", buf[i + j]); + } else + MSG(" "); + MSG(" "); + + for (j = 0; j < 16; j++) + if (i + j < buflen) + MSG("%c", __is_print(buf[i + j]) ? buf[i + j] : '.'); + MSG("\n"); + } +} + +void at_client_init() +{ + Ring_Buffer_Init(&uart1_rx_rb, uart_rx_mem, UART_RX_RINGBUFFER_SIZE, cpu_global_irq_disable, cpu_global_irq_enable); + + uart_register(UART1_INDEX, "uart1"); + uart1 = device_find("uart1"); + + if (uart1) { + UART_DEV(uart1)->baudrate = 115200; + device_open(uart1, DEVICE_OFLAG_STREAM_TX | DEVICE_OFLAG_INT_RX); + device_set_callback(uart1, uart1_irq_callback); + device_control(uart1, DEVICE_CTRL_SET_INT, (void *)(UART_RX_FIFO_IT | UART_RTO_IT)); + Ring_Buffer_Reset(&uart1_rx_rb); + } +} \ No newline at end of file diff --git a/examples/at_client/at.h b/examples/at_client/at.h new file mode 100644 index 00000000..c02ea560 --- /dev/null +++ b/examples/at_client/at.h @@ -0,0 +1,29 @@ +#ifndef __AT_H_ +#define __AT_H_ + +enum at_resp_status { + AT_RESP_OK = 0, /* AT response end is OK */ + AT_RESP_ERROR = -1, /* AT response end is ERROR */ + AT_RESP_TIMEOUT = -2, /* AT response is timeout */ + AT_RESP_BUFF_FULL = -3, /* AT response buffer is full */ +}; + +struct at_client { + /* the current received one line data buffer */ + uint8_t *recv_line_buf; + /* The length of the currently received one line data */ + uint32_t recv_line_len; + /* The maximum supported receive data length */ + uint32_t recv_bufsz; + + uint32_t timeout; + const char *resp_succ; + const char *resp_err; + enum at_resp_status resp_status; +}; + +int at_exe_cmd(struct at_client *client, char *cmd_expr, ...); +int at_write_recv(uint8_t *send_buffer, uint32_t send_len, uint8_t *recv_buffer, uint32_t *recv_len, uint32_t timeout); +void at_dump_hex(const void *ptr, uint32_t buflen); +void at_client_init(void); +#endif \ No newline at end of file diff --git a/examples/at_client/at_client_httpget/CMakeLists.txt b/examples/at_client/at_client_httpget/CMakeLists.txt new file mode 100644 index 00000000..46166dc7 --- /dev/null +++ b/examples/at_client/at_client_httpget/CMakeLists.txt @@ -0,0 +1,5 @@ +set(TARGET_REQUIRED_SRCS ${CMAKE_CURRENT_LIST_DIR}/../at.c) +set(TARGET_REQUIRED_PRIVATE_INCLUDE ${CMAKE_CURRENT_LIST_DIR}/..) +set(mains main.c) +generate_bin() + diff --git a/examples/at_client/at_client_httpget/cdk/at_client_httpget.cdkproj b/examples/at_client/at_client_httpget/cdk/at_client_httpget.cdkproj new file mode 100644 index 00000000..d3669d84 --- /dev/null +++ b/examples/at_client/at_client_httpget/cdk/at_client_httpget.cdkproj @@ -0,0 +1,744 @@ + + + CPU: RV32IMAFC +Chip: bl70x +Board: bl70x_iot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 154 + 104 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + ;;; + ;;MHZ; + + glb + uart + + 1 + 1 + + 100:8;100:8;100:8;100:8; + + + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + yes + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --interface=openocd --firmware="$(ProjectPath)/Obj/$(ProjectName).bin" + + + + ARCH_RISCV;BFLB_USE_HAL_DRIVER;BFLB_USE_ROM_DRIVER;bl706_iot + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl702;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc;$(ProjectPath)../../../../examples/at_client + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -Wignored-qualifiers -Wunused -Wundef -msmall-data-limit=4 -std=c99 + no + no + no + no + no + no + yes + no + yes + no + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl702;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c + + --specs=nano.specs + no + + + + yes + ICE + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-hifive + no + 4444 + no + 6666 + -f ../../../../tools/openocd/if_rv_dbg_plus.cfg -f ../../../../tools/openocd/tgt_702.cfg + 5000 + + + + + Erase Sectors + bl702_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + + + + no + 0x23000000 + 0x100000 + + + no + 0x22014000 + 0x4000 + + + no + 0x42018000 + 0x8000 + + + no + + + + + no + + + + + + + yes + 0x42020000 + 0xc000 + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + no + + + yes + + + rv32imafc + yes + little + no + no + no + no + + + $(ProjectName) + Executable + no + yes + no + yes + no + yes + + + + no + + + + no + + + + no + $(ProjectPath)../../../../tools/bflb_flash_tool/bflb_mcu_tool.exe --chipname=bl702 --interface=openocd --firmware="$(ProjectPath)/Obj/$(ProjectName).bin" + + + + ARCH_RISCV;BFLB_USE_HAL_DRIVER;BFLB_USE_ROM_DRIVER;bl706_iot + + Optimize more (-O2) + Default (-g) + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl702;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc + -fshort-enums -fno-common -fms-extensions -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wall -Wshift-negative-value -Wchar-subscripts -Wformat -Wuninitialized -Winit-self -Wignored-qualifiers -Wunused -Wundef -msmall-data-limit=4 -std=c99 + no + no + no + no + no + no + yes + no + yes + no + no + + + + + $(ProjectPath);$(ProjectPath)../;$(ProjectPath)../../../../components/fatfs;$(ProjectPath)../../../../components/freertos/Source/include;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../components/usb_stack/class/audio;$(ProjectPath)../../../../components/usb_stack/class/cdc;$(ProjectPath)../../../../components/usb_stack/class/hid;$(ProjectPath)../../../../components/usb_stack/class/msc;$(ProjectPath)../../../../components/usb_stack/class/video;$(ProjectPath)../../../../components/usb_stack/class/webusb;$(ProjectPath)../../../../components/usb_stack/class/winusb;$(ProjectPath)../../../../components/usb_stack/common;$(ProjectPath)../../../../components/usb_stack/core;$(ProjectPath)../../../../bsp/board/bl702;$(ProjectPath)../../../../bsp/bsp_common/platform;$(ProjectPath)../../../../common/device;$(ProjectPath)../../../../common/list;$(ProjectPath)../../../../common/memheap;$(ProjectPath)../../../../common/misc;$(ProjectPath)../../../../common/ring_buffer;$(ProjectPath)../../../../common/soft_crc;$(ProjectPath)../../../../components/shell;$(ProjectPath)../../../../drivers/bl702_driver;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl702_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl702_driver/regs;$(ProjectPath)../../../../drivers/bl702_driver/startup;$(ProjectPath)../../../../drivers/bl702_driver/std_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/risc-v/Core/Include;$(ProjectPath)../../../../drivers/bl602_driver/startup;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/inc;$(ProjectPath)../../../../drivers/bl602_driver/hal_drv/default_config;$(ProjectPath)../../../../drivers/bl602_driver/regs;$(ProjectPath)../../../../drivers/bl602_driver/std_drv/inc + + gdwarf2 + + + yes + yes + $(ProjectPath)../../../../drivers/bl702_driver/bl702_flash.ld + c + + --specs=nano.specs + no + + + + yes + OpenOCD + yes + main + + $(ProjectPath)/../../../../tools/openocd/bl70x_gdb.init + yes + Hard Reset + 23000000 + no + + no + $(ProjectPath)/$(ProjectName).cdkcore + + localhost + 1025 + 0 + 2000 + 10 + 50 + yes + no + no + Normal + Hard Reset + 21000000 + Bare Metal + yes + yes + + Local + -arch riscv + + + + + yes + no + no + + + openocd-hifive + no + 4444 + no + 6666 + -f ../../../../tools/openocd/if_rv_dbg_plus.cfg -f ../../../../tools/openocd/tgt_702.cfg + 5000 + + + + + Erase Sectors + bl70x_flasher.elf + yes + yes + no + Hard Reset + + no + + + + + + diff --git a/examples/at_client/at_client_httpget/main.c b/examples/at_client/at_client_httpget/main.c new file mode 100644 index 00000000..84b4244d --- /dev/null +++ b/examples/at_client/at_client_httpget/main.c @@ -0,0 +1,86 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + */ +#include "bflb_platform.h" +#include "at.h" + +#define UART_RECV_BUF_SZIE 64 +uint8_t recv_buf[UART_RECV_BUF_SZIE]; + +struct at_client static_client; + +static const char *http_get = "GET https://api.seniverse.com/v3/weather/now.json?key=SCeYO8heOo9MPuTxY&location=beijing&language=zh-Hans&unit=c\r\n"; + + +int main(void) +{ + int ret = 0; + uint32_t recv_len = 0; + uint8_t recv_buffer[1024] = { 0 }; + + bflb_platform_init(0); + + at_client_init(); + + memset(&static_client, 0, sizeof(struct at_client)); + + static_client.recv_line_buf = recv_buf; + static_client.recv_bufsz = UART_RECV_BUF_SZIE; + + static_client.resp_succ = "OK"; + static_client.resp_err = NULL; + static_client.timeout = 200; + + ret = at_exe_cmd(&static_client, "AT"); + + //static_client.timeout = 1000; + //ret = at_exe_cmd(&static_client, "AT+RST"); + ret = at_exe_cmd(&static_client, "AT+CWMODE=1"); + ret = at_exe_cmd(&static_client, "AT+CIPRECVCFG=1"); + + static_client.resp_succ = "wifi connected"; + static_client.resp_err = NULL; + static_client.timeout = 5000; + + while (at_exe_cmd(&static_client, "AT+CWJAP=\"%s\",\"%s\"", "OPPO Reno4 5G", "12345678") < 0) { + } + + MSG("wifi connected success\r\n"); + bflb_platform_delay_ms(1000); + + static_client.resp_succ = "CONNECTED"; + static_client.resp_err = "ERROR: Connect fail"; + static_client.timeout = 5000; + + while (at_exe_cmd(&static_client, "AT+CIPSTART=0,\"TCP\",\"%s\",%d", "116.62.81.138", 80) < 0) { + } + + MSG("tcp connected\r\n"); + bflb_platform_delay_ms(1000); + + at_write_recv((uint8_t *)http_get, 114, recv_buffer, &recv_len, 5000); + at_dump_hex(recv_buffer, recv_len); + + while (1) { + bflb_platform_delay_ms(1000); + } +} \ No newline at end of file diff --git a/examples/at_client/at_client_httpget/readme.md b/examples/at_client/at_client_httpget/readme.md new file mode 100644 index 00000000..cb59a3ee --- /dev/null +++ b/examples/at_client/at_client_httpget/readme.md @@ -0,0 +1,10 @@ +**board/bl706_iot/pinmux_config.h** 中 **CONFIG_GPIO18_FUNC** 选择 **GPIO_FUN_UART1_TX**, **CONFIG_GPIO19_FUNC** 选择 **GPIO_FUN_UART1_RX** + +- UART1_TX 连接 BL602 GPIO3 (UART RX) +- UART1_RX 连接 BL602 GPIO4 (UART TX) + +```bash + +$ make APP=at_client BOARD=bl706_iot + +``` \ No newline at end of file diff --git a/examples/at_client/bl602_AT_whole_v1.1.bin b/examples/at_client/bl602_AT_whole_v1.1.bin new file mode 100644 index 00000000..aa71a0e2 Binary files /dev/null and b/examples/at_client/bl602_AT_whole_v1.1.bin differ