クラス USBD_NCM -- USB NCM ネットワークインターフェース
このクラスは、NCM (Network Control Model) プロトコルを使って USB 経由のネットワークインターフェースを提供します。ホストのコンピュータはこのデバイスを USB イーサネットアダプタとして認識し、(MicroPython のデバイスが提供する) DHCP で IP アドレスを割り当てます。
注釈
network.USBD_NCM を使うには、TinyUSB と NCM をサポートするポートが必要です。これはビルド時に MICROPY_PY_NETWORK_USBD_NCM を定義して有効にします(デフォルトは無効)。
使用例:
import network
nic = network.USBD_NCM()
nic.active(True)
# USB ホストが NCM インターフェースを設定するのを待ちます
while not nic.isconnected():
pass
print(nic.ipconfig("addr4"))
コンストラクタ
- class network.USBD_NCM
USBD_NCM オブジェクトを作成して返します。NCM のネットワークインターフェースがまだ初期化されていなければ初期化します。インスタンスは1つしか存在しません(シングルトン)。
メソッド
- USBD_NCM.active([is_active])
ネットワークインターフェースを有効または無効にします。引数なしの場合は現在の状態を bool で返します。
このインターフェースは USB の列挙の前に自動的に立ち上がるので、起動時から
Trueを返します。
- USBD_NCM.isconnected()
USB のホストが NCM インターフェースを設定していれば
Trueを、そうでなければFalseを返します。USB が切断されると、これは
Falseを返し、ネットワークのトラフィックは止まります。インターフェースは lwIP に登録されたままで、ホストが再接続してデバイスを再列挙すれば再開できます。
- USBD_NCM.status()
リンクの状態を整数で返します。インターフェースが立ち上がっていれば
1、そうでなければ0です。
- USBD_NCM.ipconfig('param')
- USBD_NCM.ipconfig(param=value, ...)
AbstractNIC.ipconfigを参照。
- USBD_NCM.ifconfig([(ip, subnet, gateway, dns)])
AbstractNIC.ifconfigを参照。
注記
リンクローカル IP アドレス: デバイスの IP (169.254.x.1) は、デバイスの MAC アドレスから決定的に導出されます。RFC 3927 の ARP プローブ/アナウンス(衝突検出)は実装していないので、同じネットワークセグメント上の2つのデバイスがたまたま同じアドレスを導出した場合、その衝突は検出されません。
MAC アドレスの一意性: デバイス側とホスト側の MAC アドレスは、 mp_hal_get_mac() が返す値から導出されます。2枚のボードが同じハードウェア MAC を持つ場合(たとえばポートがハードウェアの UID を使っていない場合)、同じネットワークアドレスを提示することになり、ARP の衝突を引き起こします。