

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

**Importante**  <a name="deprecation-message-library"></a>
Questa libreria è ospitata nel Amazon-FreeRTOS repository che è obsoleto. Ti consigliamo di [iniziare da qui](freertos-getting-started-modular.md) quando crei un nuovo progetto. Se hai già un progetto FreerTOS esistente basato sul repository ora obsoleto, Amazon-FreeRTOS consulta il. [Amazon-FreeRTOS Guida alla migrazione del repository Github](github-repo-migration.md)

## Panoramica di
<a name="freertos-wifi-overview"></a>

La libreria [Wi-Fi](https://docs.aws.amazon.com/freertos/latest/lib-ref/html2/wifi/index.html)FreerTOS riassume le implementazioni Wi-Fi specifiche delle porte in un'API comune che semplifica lo sviluppo e il porting delle applicazioni per tutte le schede con funzionalità. FreeRTOS-qualified Wi-Fi Utilizzando queste API comuni, le applicazioni possono comunicare con il loro stack wireless di livello inferiore attraverso un'interfaccia comune.

## Dipendenze e requisiti
<a name="freertos-wifi-dependencies"></a>

[La libreria Wi-Fi FreerTOS richiede il core FreeRTOS\+TCP.](https://freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/index.html)

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

La libreria include le seguenti funzionalità: Wi-Fi 
+ Support per l'autenticazione WEP, WPA, WPA2 e WPA3
+ Scansione del punto di accesso
+ Risparmio energetico
+ Profiling di rete

Per ulteriori informazioni sulle funzionalità della libreria, vedi sotto. Wi-Fi 

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

Wi-Fi i dispositivi possono essere in una delle tre modalità: Station, Access Point o P2P. È possibile ottenere la modalità corrente di un Wi-Fi dispositivo chiamando. `WIFI_GetMode` È possibile impostare la modalità Wi-Fi di un dispositivo chiamando `WIFI_SetMode`. Cambiando le modalità chiamando `WIFI_SetMode`, si disconnette il dispositivo, se connesso a una rete.

**Modalità Station**  
Imposta il dispositivo in modalità Station per collegare la scheda a un punto di accesso esistente.

**Modalità Access Point (AP)**  
Imposta il dispositivo in modalità AP per renderlo un punto di accesso a cui altri dispositivi possano connettersi. Quando il tuo dispositivo è in modalità AP, puoi connettere un altro dispositivo al tuo dispositivo FreerTOS e configurare le nuove credenziali. Wi-Fi Per configurare la modalità del punto di accesso, chiamare `WIFI_ConfigureAP`. Per inserire il dispositivo in modalità AP, chiama `WIFI_StartAP`. Per disattivare la modalità AP, chiama `WIFI_StopAP`.  
Le librerie FreerTOS non Wi-Fi forniscono il provisioning in modalità AP. È necessario fornire le funzionalità aggiuntive, incluse le funzionalità del server DHCP e HTTP, per ottenere il supporto completo della modalità AP.

**Modalità P2P**  
Imposta il dispositivo in modalità P2P per consentire a più dispositivi di connettersi l'un l'altro direttamente, senza un punto di accesso.

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

L' Wi-Fi API supporta i tipi di sicurezza WEP, WPA, WPA2 e WPA3. Se un dispositivo è in modalità Station, è necessario specificare il tipo di sicurezza di rete quando si chiama la funzione `WIFI_ConnectAP`. Se è in modalità AP, un dispositivo può essere configurato per l'utilizzo di qualsiasi tipo di sicurezza supportato:
+ `eWiFiSecurityOpen`
+ `eWiFiSecurityWEP`
+ `eWiFiSecurityWPA`
+ `eWiFiSecurityWPA2`
+ `eWiFiSecurityWPA3`

### Scansione e connessione
<a name="freertos-wifi-connection"></a>

Per eseguire la scansione di punti di accesso nelle vicinanze, imposta il dispositivo in modalità Station e chiama la funzione `WIFI_Scan`. Se la scansione trova la rete a cui intendi connetterti, puoi effettuare la connessione chiamando `WIFI_ConnectAP` e fornendo le credenziali di rete. È possibile disconnettere un Wi-Fi dispositivo dalla rete chiamando. `WIFI_Disconnect` Per ulteriori informazioni sulla scansione e la connessione, consulta [Esempio di utilizzo](#freertos-wifi-example) e [Guida di riferimento alle API](#freertos-wifi-api).

### Risparmio energetico
<a name="freertos-wifi-power-management"></a>

 Wi-Fi Dispositivi diversi hanno requisiti di alimentazione diversi, a seconda dell'applicazione e delle fonti di alimentazione disponibili. Un dispositivo può essere sempre acceso per ridurre la latenza oppure può essere collegato in modo intermittente e passare a una modalità a basso consumo quando Wi-Fi non è necessario. L'API dell'interfaccia supporta vari metodi di gestione dell'alimentazione, ad esempio sempre acceso, modalità a basso consumo e modalità normale. È possibile impostare la modalità di alimentazione per un dispositivo utilizzando la funzione `WIFI_SetPMMode`. È possibile conoscere la modalità di alimentazione attuale di un dispositivo chiamando la funzione `WIFI_GetPMMode`.

### Profili di rete
<a name="freertos-wifi-profiles"></a>

La Wi-Fi libreria consente di salvare i profili di rete nella memoria non volatile dei dispositivi. Ciò consente di salvare le impostazioni di rete in modo che possano essere recuperate quando un dispositivo si riconnette a una Wi-Fi rete, eliminando la necessità di effettuare nuovamente il provisioning dei dispositivi dopo che sono stati collegati a una rete. `WIFI_NetworkAdd`aggiunge un profilo di rete. `WIFI_NetworkGet`recupera un profilo di rete. `WIFI_NetworkDel`elimina un profilo di rete. Il numero di profili che è possibile salvare dipende dalla piattaforma.

## Configurazione
<a name="freertos-wifi-config"></a>

Per utilizzare la Wi-Fi libreria, è necessario definire diversi identificatori in un file di configurazione. Per ulteriori informazioni su questi identificatori, consulta la [Guida di riferimento alle API](#freertos-wifi-api).

**Nota**  
La libreria non include il file di configurazione necessario. Devi crearne uno. Quando crei il tuo file di configurazione, assicurati di includere qualsiasi identificatore di configurazione specificatamente richiesto dalla scheda.

## Inizializzazione
<a name="freertos-wifi-init"></a>

Prima di utilizzare la Wi-Fi libreria, è necessario inizializzare alcuni componenti specifici della scheda, oltre ai componenti FreerTOS. Utilizzando il file `vendors/{{vendor}}/boards/{{board}}/aws_demos/application_code/main.c` come modello per l'inizializzazione, procedi come segue:

1. Rimuovi la logica di Wi-Fi connessione di esempio `main.c` se l'applicazione gestisce le connessioni. Wi-Fi Sostituisci la seguente chiamata di funzione `DEMO_RUNNER_RunDemos()`:

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

   Con una chiamata alla tua applicazione:

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

1. Chiama `WIFI_On()` per inizializzare e accendere il Wi-Fi chip.
**Nota**  
Alcune schede potrebbero richiedere un'inizializzazione hardware aggiuntiva.

1. Passa una `WIFINetworkParams_t` struttura configurata `WIFI_ConnectAP()` per connettere la scheda a una Wi-Fi rete disponibile. Per ulteriori informazioni sulla struttura `WIFINetworkParams_t`, consulta [Esempio di utilizzo](#freertos-wifi-example) e [Guida di riferimento alle API](#freertos-wifi-api).

## Guida di riferimento alle API
<a name="freertos-wifi-api"></a>

Per un riferimento completo all'API, consulta [Wi-Fi API Reference](https://docs.aws.amazon.com/freertos/latest/lib-ref/html2/wifi/index.html).

## Esempio di utilizzo
<a name="freertos-wifi-example"></a>

### Connessione a un punto di accesso noto
<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
}
```

### Scansione di punti di accesso nelle vicinanze
<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);
}
```

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

L'implementazione `iot_wifi.c` deve introdurre le funzioni definite in `iot_wifi.h`. Come minimo, l'implementazione deve restituire `eWiFiNotSupported` per qualsiasi funzione non essenziale o non supportata.

Per ulteriori informazioni sul porting della Wi-Fi libreria, consulta [Porting the Wi-Fi Library nella](https://docs.aws.amazon.com/freertos/latest/portingguide/afr-porting-wifi.html) FreerTOS Porting Guide.