ESP32 esp-idf Eclipse での開発環境ができたので、
WiFi Http Client のサンプルを、eclipse で試してみました。
プログラムは、git で入手した、esp-idf/examples 下に一杯あります。
取り敢えず、今回は、下記サンプルにしてみました。
esp-idf/examples/protocols/https_request (git hub のソース)
概要は、Wi-Fi クライアントで、ローカルのWi-Fi ルータに接続して、
インターネット上に公開せれているWebサーバーの HTML をダウンロードして、結果を、USB Serial で接続している、
PCのターミナルに表示する判りやすいサンプルプログラムです。
大雑把な手順は、
1. esp-idf/examples/protocols/https_request のディレクトリーを、自分の作業ディレクトリーへコピー
2. MSYS2 MinGW 32-bit ターミナルを起動して、上記の自分の作業ディレクトリーへ移動
$make menuconfig
-> serial flash coonfig --> Default serial poort = COMX に変更
exit
$make
3.Eclipse でプロジェクをインポート
取り敢えず、サンプルのソースをそのまま掲載します。
xxxxxx を自分の環境に合わせ設定すれば、そのまま動作します。
Wi-Fi Driver 、ESP HTTP Client の説明などと、見比べてソースを追えば、理解が深まるのでは、
https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/wifi.html
この、 wifi.html を参考にすると、Wi-Fi 接続が出来て、DHCPサーバーから、IPが
貰えると、event_handler() の case SYSTEM_EVENT_STA_GOT_IP:
へ処理が来るみたいです。
ここで、xEventGroupSetBits(wifi_event_group, CONNECTED_BIT);
を実行して、FreeRTOSの別タスクへの通知を行っているみたいです。
そうすると、
http_get_task() の中の、
xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT,false, true, portMAX_DELAY);
の所で Wait していた処理が抜けてそれ以降を実行する流れの様です。
ふむふむ。
https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/protocols/esp_http_client.html
後、
xTaskCreate(&http_get_task, "http_get_task", 4096, NULL, 5, NULL);
は、FreeRTOS が最初から導入されているので、http_get_task がタスクとして、登録されて、
起動されています。
FreeRTOSは、おんちゃんは、下記を参考にさせて貰いました。
http://www.picfun.com/RTOS/FreeRTOSframe.html
おんちゃんも、これから、 esp-idf の勉強です。