Exemplo n.º 1
0
Arquivo: esp.c Projeto: eerimoq/simba
static int esp_softap_get_ip_info(void *arg_p,
                                  struct inet_if_ip_info_t *info_p)
{
    return (esp_wifi_softap_get_ip_info(info_p));
}
Exemplo n.º 2
0
void esp_wifi_print(void *chout_p)
{
    ASSERTNRV(chout_p != NULL, EINVAL);

    int i;
    int number_of_infos;
    int number_of_connections;
    struct esp_wifi_softap_station_info_t info[4];
    struct inet_if_ip_info_t ip_info;
    char buf[16];
    char *op_mode_p;
    char *phy_mode_p;
    const char *connection_status_p;
    char *dhcp_status_p;

    /* Get the operating mode. */
    switch (esp_wifi_get_op_mode()) {

    case esp_wifi_op_mode_null_t:
        op_mode_p = "NULL";
        break;

    case esp_wifi_op_mode_station_t:
        op_mode_p = "STA";
        break;

    case esp_wifi_op_mode_softap_t:
        op_mode_p = "AP";
        break;

    case esp_wifi_op_mode_station_softap_t:
        op_mode_p = "STA-AP";
        break;

    default:
        op_mode_p = "INVALID";
        break;
    }

    /* Get the physical mode. */
    switch (esp_wifi_get_phy_mode()) {

    case esp_wifi_phy_mode_11b_t:
        phy_mode_p = "b";
        break;

    case esp_wifi_phy_mode_11g_t:
        phy_mode_p = "g";
        break;

    case esp_wifi_phy_mode_11n_t:
        phy_mode_p = "n";
        break;

    default:
        phy_mode_p = "invalid";
        break;
    }

    /* Get the DHCP server status. */
    switch (esp_wifi_softap_dhcp_server_status()) {

    case esp_wifi_dhcp_status_running_t:
        dhcp_status_p = "running";
        break;

    case esp_wifi_dhcp_status_stopped_t:
        dhcp_status_p = "stopped";
        break;

    default:
        dhcp_status_p = "invalid";
        break;
    }

    std_fprintf(chout_p,
                FSTR("General information:\r\n"
                     "  Operating mode: %s\r\n"
                     "  Physical mode: 11%s\r\n"
                     "\r\n"),
                op_mode_p,
                phy_mode_p);

    memset(&ip_info, 0, sizeof(ip_info));
    esp_wifi_softap_get_ip_info(&ip_info);
    number_of_connections = esp_wifi_softap_get_number_of_connected_stations();
    number_of_infos = esp_wifi_softap_get_station_info(info,
                                                       membersof(info));

    std_fprintf(chout_p,
                FSTR("SoftAP:\r\n"
                     "  DHCP server status: %s\r\n"
                     "  Address: %s\r\n"),
                dhcp_status_p,
                inet_ntoa(&ip_info.address, &buf[0]));

    std_fprintf(chout_p,
                FSTR("  Netmask: %s\r\n"),
                inet_ntoa(&ip_info.netmask, &buf[0]));

    std_fprintf(chout_p,
                FSTR("  Gateway: %s\r\n"
                     "  Number of connections: %d\r\n"),
                inet_ntoa(&ip_info.gateway, &buf[0]),
                number_of_connections);

    for (i = 0; i < number_of_infos; i++) {
        std_fprintf(chout_p,
                    FSTR("    [%d]: BSSID: %02x:%02x:%02x:%02x:%02x:%02x,"
                         " IP: %s\r\n"),
                    i,
                    (int)info[i].bssid[0],
                    (int)info[i].bssid[1],
                    (int)info[i].bssid[2],
                    (int)info[i].bssid[3],
                    (int)info[i].bssid[4],
                    (int)info[i].bssid[5],
                    inet_ntoa(&info[i].ip_address, &buf[0]));
    }

    /* Get the station connection status. */
    connection_status_p =
        esp_wifi_station_status_as_string(esp_wifi_station_get_status());

    /* Get the DHCP client status. */
    switch (esp_wifi_station_dhcp_client_status()) {

    case esp_wifi_dhcp_status_running_t:
        dhcp_status_p = "running";
        break;

    case esp_wifi_dhcp_status_stopped_t:
        dhcp_status_p = "stopped";
        break;

    default:
        dhcp_status_p = "invalid";
        break;
    }

    memset(&ip_info, 0, sizeof(ip_info));
    esp_wifi_station_get_ip_info(&ip_info);

    std_fprintf(chout_p,
                FSTR("\r\n"
                     "Station:\r\n"
                     "  DHCP client status: %s\r\n"
                     "  Conenction status: %s\r\n"
                     "  Address: %s\r\n"),
                dhcp_status_p,
                connection_status_p,
                inet_ntoa(&ip_info.address, &buf[0]));

    std_fprintf(chout_p,
                FSTR("  Netmask: %s\r\n"),
                inet_ntoa(&ip_info.netmask, &buf[0]));

    std_fprintf(chout_p,
                FSTR("  Gateway: %s\r\n"
                     "\r\n"),
                inet_ntoa(&ip_info.gateway, &buf[0]));
}