Skip to main content

Network Management API

Network Management APIはネットワークリクエストの送信やネットワークイベントの通知の受信に使用されます。 このAPIを使用すると、ネットワークレイヤーのコードだけでなく、アプリケーションも、IPスタックの任意のレベルで定義されたネットワークルーチンを呼び出したり、関連するネットワークイベントの通知を受け取ったりすることができます。 プロシージャーリクエストは、対応するリクエストの登録ハンドラーを呼び出す1つのnet_mgmt()APIを介して実行されます。

APIを有効にする

アプリケーションでNetwork Management APIを有効にするには、以下のKconfigsを有効にします。

CONFIG_NET_MGMT=y
CONFIG_NET_MGMT_EVENT=y
CONFIG_NET_MGMT_EVENT_INFO=y
CONFIG_NET_MGMT_EVENT_STACK_SIZE=4096

さらに、以下のヘッダーファイルをインクルードする必要があります。

#include <zephyr/net/wifi.h>
#include <zephyr/net/wifi_mgmt.h>
#include <zephyr/net/net_mgmt.h>
  • wifi.h: Wi-Fi Management APIのヘッダーファイル
  • wifi_mgmt.h: Wi-Fi固有のNetwork Management APIのヘッダーファイル
  • net_mgmt.hNetwork Management APIのヘッダーファイル

このコースでは、nRF Connect SDKの実験的機能であるNetwork Connection Managerを使用して、ネットワークインターフェースとIPイベントをリッスンし、インテーフェースが接続されているかどうかを確認します。

KconfigのCONFIG_NET_CONNECTION_MANAGERは、アプリケーションにコネクションマネージャーを追加して起動し、L4イベントconnecteddisconnectedを発生させます。

CONFIG_NET_CONNECTION_MANAGER=y

Wi-Fiを有効にする

Network Management APIを使ってWi-Fiに接続するには、アプリケーションでWi-Fiを有効にする必要があります。

これは以下のKconfigsを有効にすることによって行われます。

CONFIG_WIFI=y
CONFIG_WIFI_NRF700X=y
CONFIG_WPA_SUPP=y
  • CONFIG_WIFI: 一般的なWi-Fiドライバーを有効にする
  • CONFIG_WIFI_NRF700X: NordicのWi-Fiドライバーを有効にする
  • CONFIG_WPA_SUPP: WPA(Wi-Fi Protected Access)のサプリカントサポートを有効にし、主にWPAの認証フェーズ、ネットワークスキャン、キー交換、ローミングサポートの実装を担当する

Wi-Fiパラメータの設定

Wi-Fiに接続する際、パラメータは構造体wifi_connect_req_paramsで渡され、以下のシグネイチャを持ちます。

  • SSID: Wi=FiネットワークのSSID
  • PSK: 通常はパスフレーズまたはパスワード
  • SAE password(sae_password): SAEパスワード(WPA3を使用する場合)
  • Band(band): 接続したいWi-Fiバンド
  • Channel(channel): 使用するWi-Fiチャンネル
  • Security: 使用するセキュリティタイプ(NONE, PSK, PSK_SHA256, SAW, WAPI, EAP, WEP, WPA_SPK)
  • MFP: 管理フレーム保護オプション
  • Timeout: 接続のタイムアウト秒

以下は、Wi-Fiパラメータの入力例です

static struct wifi_connect_req_params params = {
.ssid = CONFIG_SSID;
.ssid_length = strlen(params->ssid);
.psk = CONFIG_PASSWORD;
.psk_length = strlen(params->psk);
.channel = WIFI_CHANNEL_ANY;
.security = WIFI_SECURITY_TYPE_PSK;
.mfp = WIFI_MFP_OPTIONAL;
.timeout = SYS_FOREVER_MS;
}

Wi-FI接続リクエスト

Network Management APIはすべてnet_mgmt()を使って呼び出されます。