バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-network-backnumber/
はじめに
lwIPをPC上で無理やり動作させる準備の話。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
lwIPを利用するコード

今回はlwIPを利用するためのコーディングの話だっけ?

そうだね。

大雑把に言うとどんな感じになるのかな?

今回の目的に合わせると
以下の流れになるね。
- lwIP自身の初期化
- ネットワークインターフェースの追加
- マルチキャストグループの参加
- ネットワークインターフェースの初期化
- リンクアップ
- UDP Socket生成
- IPアドレス、ポートへのBind
- UDP受信待ち
- EthnertFrameの疑似受信
一般的なSocketとの違い

結構あるなー。
てっきり
「Socket生成して受信待ちすればOK」
くらいかと思ってたよー。

まぁ一般的なSocketだと、
ネットワーク関連の初期化はOS側ですべて済んでることが前提になってるからねー。

あ、そうか!
組み込み用プロトコルスタックだから、
ネットワーク関連の初期化もしないとだめなのかー。

その通り。
本来はOSで自動でやってもらうことも
自分でやらないといけない組み込み系の宿命だねー。

確かに組み込み系をやってるとOSのありがたみってのは良く分かるよねぇ。
今後の方針

今後の方針としては、
フクさんの言う流れにそって説明って感じかな。

そうだね。
まぁソースコード自体はそんなに大きくはならないけど、
何やってるかは説明した方がよいかな。

1手順1関数ってイメージかな?

ほぼそうだね。
だから、lwIPのAPIの内、
今回やりたいことに必要なものに限定して説明していくような感じになると思うよ。
IPフラグメントは?

そういえば、IPフラグメントが出てきてないけど?

あー、IP層はデフォルトで組み込まれてるから特に気にせずに疑似受信させれば良いと思うよ。

つまり、
IPフラグメントはIP層の仕様として組み込まれてるから
今回のコード上では特に気にしなくて良いってことか。

そうそう。

次回からlwIPのAPIについて説明だね。
まとめ

まとめだよ。
- lwIPの制御手順概要を説明。
- 一般的なSocketと違ってネットワーク関連の初期化も必要。
- IPフラグメントはIP層の仕様に組み込まれているので利用側は特に何もしなくてOK。
バックナンバーはこちら。
コメント