diff --git a/v200zr/liteos_m/at/at_wifi.c b/v200zr/liteos_m/at/at_wifi.c index a7ae28e707937aa172d594461236a0c55c33fe6a..235c32fa0d463c383e4293b0b691a89da54ef5e9 100644 --- a/v200zr/liteos_m/at/at_wifi.c +++ b/v200zr/liteos_m/at/at_wifi.c @@ -245,7 +245,9 @@ static int at_start_softap(cmd_tbl_t *cmd, int argc, char *argv[]) if (at_param_null_check(&argc, argv) == -1 || argc != 5) { return -1; } - + if (argc != 5) { + return -1; + } char* ap_ssid = argv[0]; char* ap_psk = argv[1]; int sec_type = atoi(argv[2]); @@ -261,35 +263,55 @@ static int at_start_softap(cmd_tbl_t *cmd, int argc, char *argv[]) static int at_stop_softap(cmd_tbl_t *cmd, int argc, char *argv[]) { - int ret = 0; - - if(DisableHotspot() != WIFI_SUCCESS) { - return -1; - } - printf("OK\r\n"); - return 0; + WifiErrorCode error = DisableHotspot(); + printf("Stop WiFi AP %s!\r\n", (error == WIFI_SUCCESS) ? "succeed" : "failed"); + return (error == WIFI_SUCCESS) ? 0 : -1; } static int at_start_wifista(cmd_tbl_t *cmd, int argc, char *argv[]) { - int ret = 0; - ret = EnableWifi(); - - printf("OK\r\n"); - return ret; + WifiErrorCode error = EnableWifi(); + printf("Start WiFi STA %s!\r\n", (error == WIFI_SUCCESS) ? "succeed" : "failed"); + return (error == WIFI_SUCCESS) ? 0 : -1; } static int at_stop_wifista(cmd_tbl_t *cmd, int argc, char *argv[]) { - if (IsWifiActive() == WIFI_STA_NOT_ACTIVE) { - printf("Wifi station is not actived.\n"); + WifiErrorCode error = DisableWifi(); + printf("WiFi disconnect %s!\r\n", (error == WIFI_SUCCESS) ? "succeed" : "failed"); + return (error == WIFI_SUCCESS) ? 0 : -1; +} +static int at_sta_connect(cmd_tbl_t *cmd, int argc, char *argv[]) +{ + if (at_param_null_check(&argc, argv) == -1) { return -1; } - if(DisableWifi() != WIFI_SUCCESS) { + if (argc != 3) { return -1; } - - printf("OK\r\n"); - return 0; + int result; + WifiErrorCode error; + WifiDeviceConfig select_ap_config = {0}; + char* ap_ssid = argv[0]; + char* ap_psk = argv[1]; + int sec_type = atoi(argv[2]); + strcpy(select_ap_config.ssid, ap_ssid); + strcpy(select_ap_config.preSharedKey, ap_psk); + select_ap_config.securityType = sec_type; + if (AddDeviceConfig(&select_ap_config, &result) != WIFI_SUCCESS) { + printf("AddDeviceConfig failed!\r\n"); + return -1; + } + printf("Connecting to %s...\r\n", ap_ssid); + error = ConnectTo(result); ///< block and retry + printf("WiFi connect %s!\r\n", (error == WIFI_SUCCESS) ? "succeed" : "failed"); + return (error == WIFI_SUCCESS) ? 0 : -1; +} + +static int at_sta_disconnect(cmd_tbl_t *cmd, int argc, char *argv[]) +{ + WifiErrorCode error = Disconnect(); + printf("WiFi disconnect %s!\r\n", (error == WIFI_SUCCESS) ? "succeed" : "failed"); + return (error == WIFI_SUCCESS) ? 0 : -1; } static int at_setup_dhcp(cmd_tbl_t *cmd, int argc, char *argv[]) @@ -374,11 +396,13 @@ static int at_setup_dhcps(cmd_tbl_t *cmd, int argc, char *argv[]) static void RegisterCustomATCmd() { cmd_tbl_t cmd_list[] = { - {"AT+IFCFG", 8, at_lwip_ifconfig, "AT+IFCFG - ifconfig\n"}, - {"AT+STARTAP", 7, at_start_softap, "AT+STARTAP - start wifi softap\n"}, + {"AT+IFCFG", 7, at_lwip_ifconfig, "AT+IFCFG - ifconfig\n"}, + {"AT+STARTAP", 6, at_start_softap, "AT+STARTAP - start wifi softap\n"}, {"AT+STOPAP", 1, at_stop_softap, "AT+STOPAP - stop wifi softap\n"}, {"AT+STARTSTA", 1, at_start_wifista, "AT+STARTSTA - start wifi sta\n"}, {"AT+STOPSTA", 1, at_stop_wifista, "AT+STOPSTA - stop wifi sta\n"}, + {"AT+CONN", 4, at_sta_connect, "AT+CONN - connect to softap\n"}, + {"AT+DISCONN", 1, at_sta_disconnect, "AT+DISCONN - disconnect to softap\n"}, {"AT+DHCP", 3, at_setup_dhcp, "AT+DHCP - dhcp\n"}, {"AT+DHCPS", 3, at_setup_dhcps, "AT+DHCPS - dhcps\n"}, };