

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Wi-Fi biblioteca
<a name="freertos-wifi"></a>

**Importante**  <a name="deprecation-message-library"></a>
Essa biblioteca está hospedada no Amazon-FreeRTOS repositório que está obsoleto. Recomendamos [começar aqui](freertos-getting-started-modular.md) ao criar um novo projeto. Se você já tem um projeto FreeRTOS existente com base no repositório agora Amazon-FreeRTOS obsoleto, consulte o. [Amazon-FreeRTOS Guia de migração do repositório Github](github-repo-migration.md)

## Visão geral do
<a name="freertos-wifi-overview"></a>

A biblioteca [Wi-Fi](https://docs.aws.amazon.com/freertos/latest/lib-ref/html2/wifi/index.html)FreeRTOS abstrai implementações Wi-Fi específicas de portas em uma API comum que simplifica o desenvolvimento e a portabilidade de aplicativos para todas as placas com recursos. FreeRTOS-qualified Wi-Fi Usando essa API comum, as aplicações podem se comunicar com a pilha sem fio de nível inferior por meio de uma interface comum.

## Dependências e requisitos
<a name="freertos-wifi-dependencies"></a>

[A biblioteca FreeRTOS requer o Wi-Fi núcleo FreeRTOS\+TCP.](https://freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/index.html)

## Recursos
<a name="freertos-wifi-features"></a>

A Wi-Fi biblioteca inclui os seguintes recursos:
+ Suporte para autenticação WEP, WPA, WPA2 e WPA3
+ Verificação do ponto de acesso
+ Gerenciamento de energia
+ Criação de perfis na rede

Para obter mais informações sobre os recursos da Wi-Fi biblioteca, veja abaixo.

### Wi-Fi modos
<a name="freertos-wifi-setup"></a>

Wi-Fi os dispositivos podem estar em um dos três modos: estação, ponto de acesso ou P2P. Você pode obter o modo atual de um Wi-Fi dispositivo ligando`WIFI_GetMode`. Defina o modo wi-fi de um dispositivo chamando `WIFI_SetMode`. Alternar modos chamando `WIFI_SetMode` desconecta o dispositivo, se já estiver conectado a uma rede.

**Modo Estação**  
Defina o dispositivo para o modo Estação a fim de conectar a placa a um ponto de acesso existente.

**Modo Ponto de acesso (AP)**  
Defina o dispositivo para o modo AP para tornar o dispositivo um ponto de acesso para outros dispositivos se conectarem. Quando seu dispositivo está no modo AP, você pode conectar outro dispositivo ao seu dispositivo FreeRTOS e configurar as novas credenciais. Wi-Fi Para configurar o modo de AP, chame `WIFI_ConfigureAP`. Para colocar o dispositivo no modo AP, chame `WIFI_StartAP`. Para desativar o modo AP, chame `WIFI_StopAP`.  
As bibliotecas do FreeRTOS não Wi-Fi fornecem provisionamento no modo AP. Você deve fornecer a funcionalidade adicional, incluindo recursos de servidor DHCP e HTTP, para obter suporte total do modo AP.

**Modo P2P**  
Defina o dispositivo para o modo P2P a fim de permitir que vários dispositivos se conectem uns aos outros diretamente, sem um ponto de acesso.

### Segurança
<a name="freertos-wifi-security"></a>

A Wi-Fi API oferece suporte aos tipos de segurança WEP, WPA, WPA2 e WPA3. Quando um dispositivo está no modo Estação, é necessário especificar o tipo de segurança de rede ao chamar a função `WIFI_ConnectAP`. Quando um dispositivo está no modo AP, ele pode ser configurado para usar qualquer um dos tipos de segurança compatíveis:
+ `eWiFiSecurityOpen`
+ `eWiFiSecurityWEP`
+ `eWiFiSecurityWPA`
+ `eWiFiSecurityWPA2`
+ `eWiFiSecurityWPA3`

### Verificação e conexão
<a name="freertos-wifi-connection"></a>

Para procurar pontos de acesso próximos, defina o dispositivo para o modo Estação e chame a função `WIFI_Scan`. Se você encontrar uma rede desejada durante a verificação, poderá se conectar à rede chamando `WIFI_ConnectAP` e fornecendo as credenciais da rede. Você pode desconectar um Wi-Fi dispositivo da rede `WIFI_Disconnect` ligando. Para obter mais informações sobre a verificação e a conexão, consulte [Exemplo de uso](#freertos-wifi-example) e [Referência de API](#freertos-wifi-api).

### Gerenciamento de energia
<a name="freertos-wifi-power-management"></a>

 Wi-Fi Dispositivos diferentes têm requisitos de energia diferentes, dependendo da aplicação e das fontes de energia disponíveis. Um dispositivo pode estar sempre ligado para reduzir a latência ou pode ser conectado intermitentemente e alternar para o modo de baixo consumo quando Wi-Fi não for necessário. A API de interface é compatível com vários modos de gerenciamento de energia, como sempre ligado, baixo consumo de energia e modo normal. Você define o modo de energia para um dispositivo usando a função `WIFI_SetPMMode`. Você pode obter o modo de energia atual de um dispositivo chamando a função `WIFI_GetPMMode`.

### Perfis de rede
<a name="freertos-wifi-profiles"></a>

A Wi-Fi biblioteca permite que você salve perfis de rede na memória não volátil de seus dispositivos. Isso permite que você salve as configurações de rede para que elas possam ser recuperadas quando um dispositivo se reconectar a uma Wi-Fi rede, eliminando a necessidade de provisionar dispositivos novamente após eles terem sido conectados a uma rede. `WIFI_NetworkAdd`adiciona um perfil de rede. `WIFI_NetworkGet`recupera um perfil de rede. `WIFI_NetworkDel`exclui um perfil de rede. O número de perfis que você pode salvar depende da plataforma.

## Configuração
<a name="freertos-wifi-config"></a>

Para usar a Wi-Fi biblioteca, você precisa definir vários identificadores em um arquivo de configuração. Para obter informações sobre esses identificadores, consulte a [Referência de API](#freertos-wifi-api).

**nota**  
A biblioteca não inclui o arquivo de configuração necessário. Você deve criar um. Ao criar o arquivo de configuração, lembre-se de incluir os identificadores de configuração específicos exigidos pela placa.

## Inicialização
<a name="freertos-wifi-init"></a>

Antes de usar a Wi-Fi biblioteca, você precisa inicializar alguns componentes específicos da placa, além dos componentes do FreeRTOS. Ao usar o arquivo `vendors/{{vendor}}/boards/{{board}}/aws_demos/application_code/main.c` como um modelo para a inicialização, faça o seguinte:

1. Remova o exemplo de lógica de Wi-Fi conexão `main.c` se seu aplicativo manipula Wi-Fi conexões. Substitua a seguinte chamada da função `DEMO_RUNNER_RunDemos()`:

   ```
   if( SYSTEM_Init() == pdPASS )
       {
       ...
           DEMO_RUNNER_RunDemos();
       ...
           }
   ```

   Por uma chamada a sua própria aplicação:

   ```
   if( SYSTEM_Init() == pdPASS )
       {
       ...
           // This function should create any tasks
           // that your application requires to run.
           YOUR_APP_FUNCTION();
       ...
           }
   ```

1. Ligue `WIFI_On()` para inicializar e ligar seu Wi-Fi chip.
**nota**  
Algumas placas podem exigir a inicialização de hardware adicional.

1. Passe uma `WIFINetworkParams_t` estrutura configurada `WIFI_ConnectAP()` para conectar sua placa a uma Wi-Fi rede disponível. Para obter mais informações sobre a estrutura `WIFINetworkParams_t`, consulte [Exemplo de uso](#freertos-wifi-example) e [Referência de API](#freertos-wifi-api).

## Referência de API
<a name="freertos-wifi-api"></a>

Para obter uma referência completa da API, consulte [Referência Wi-Fi da API](https://docs.aws.amazon.com/freertos/latest/lib-ref/html2/wifi/index.html).

## Exemplo de uso
<a name="freertos-wifi-example"></a>

### Conexão a um AP conhecido
<a name="w2aac31b9c13c53c21b3"></a>

```
#define clientcredentialWIFI_SSID    "MyNetwork"
#define clientcredentialWIFI_PASSWORD   "hunter2"

WIFINetworkParams_t xNetworkParams;
WIFIReturnCode_t xWifiStatus;

xWifiStatus = WIFI_On(); // Turn on Wi-Fi module

// Check that Wi-Fi initialization was successful
if( xWifiStatus == eWiFiSuccess )
{
    configPRINT( ( "WiFi library initialized.\n") );
}
else
{
    configPRINT( ( "WiFi library failed to initialize.\n" ) );
    // Handle module init failure
}

/* Setup parameters. */
xNetworkParams.pcSSID = clientcredentialWIFI_SSID;
xNetworkParams.ucSSIDLength = sizeof( clientcredentialWIFI_SSID );
xNetworkParams.pcPassword = clientcredentialWIFI_PASSWORD;
xNetworkParams.ucPasswordLength = sizeof( clientcredentialWIFI_PASSWORD );
xNetworkParams.xSecurity = eWiFiSecurityWPA2;

// Connect!
xWifiStatus = WIFI_ConnectAP( &( xNetworkParams ) );

if( xWifiStatus == eWiFiSuccess )
{
    configPRINT( ( "WiFi Connected to AP.\n" ) );
    // IP Stack will receive a network-up event on success
}
else
{
    configPRINT( ( "WiFi failed to connect to AP.\n" ) );
    // Handle connection failure
}
```

### Busca de APs próximos
<a name="w2aac31b9c13c53c21b5"></a>

```
WIFINetworkParams_t xNetworkParams;
WIFIReturnCode_t xWifiStatus;

configPRINT( ("Turning on wifi...\n") );
xWifiStatus = WIFI_On();

configPRINT( ("Checking status...\n") );
if( xWifiStatus == eWiFiSuccess )
{
    configPRINT( ("WiFi module initialized.\n") );
}
else
{
    configPRINTF( ("WiFi module failed to initialize.\n" ) );
    // Handle module init failure
}

WIFI_SetMode(eWiFiModeStation);

/* Some boards might require additional initialization steps to use the Wi-Fi library. */

while (1)
{
    configPRINT( ("Starting scan\n") );
    const uint8_t ucNumNetworks = 12; //Get 12 scan results
    WIFIScanResult_t xScanResults[ ucNumNetworks ];
    xWifiStatus = WIFI_Scan( xScanResults, ucNumNetworks ); // Initiate scan

    configPRINT( ("Scan started\n") );

    // For each scan result, print out the SSID and RSSI
    if ( xWifiStatus == eWiFiSuccess )
    {
        configPRINT( ("Scan success\n") );
        for ( uint8_t i=0; i<ucNumNetworks; i++ ) 
        {
            configPRINTF( ("%s : %d \n", xScanResults[i].cSSID, xScanResults[i].cRSSI) );
        }
    } else {
        configPRINTF( ("Scan failed, status code: %d\n", (int)xWifiStatus) );
    }
    
    vTaskDelay(200);
}
```

## Portabilidade
<a name="freertos-wifi-porting"></a>

A implementação de `iot_wifi.c` precisa implementar as funções definidas em `iot_wifi.h`. No mínimo, a implementação precisa retornar `eWiFiNotSupported` para qualquer função não essencial ou incompatível.

Para obter mais informações sobre a portabilidade da Wi-Fi biblioteca, consulte [Portando a Wi-Fi biblioteca no Guia de portabilidade](https://docs.aws.amazon.com/freertos/latest/portingguide/afr-porting-wifi.html) do FreeRTOS.