プリプロセッサー組み込みが見つかりません

こんにちは。よこです。

wifiドライバをプロジェクトにインクルードしたら、以下のエラーが発生しました。

改善方法についてご教授願えないでしょうか。

  • シェルティさん

    こんにちは。

    よこです。

    デバッグを行い、原因を調べてみたところ、Socket通信を閉じるときのATコマンドで通信状態からコマンドモードに変更するときが正しく動作できていないようです。

    プログラム上では、ATコマンドで"+++"をwifiモジュールに送っているようですが、wifiモジュールからの応答がなくてタイムアウトしています。

    応答を受け取るにはどうすればよいでしょうか。

    ご助言をいただければ幸いです。

  • よこ さん、こんにちは。NoMaYです。

    あいだが空いていますが、以下の話の直接の続きですよね。Failed to close connectionというログが表示される原因がそれだった、ということですが、一般論としては、オシロまたはロジアナで果たして何も返って来ていないのか確認するのがセオリー的な気がします。何かしら返ってきているけれども、信号がすごく踊っていた、とか、速攻でちゃんと返ってきていた、とか、本当にWiFiモジュールがダンマリになっている、とか、気になるのです。

    でも、その前に、ソフトウェア的に、まったく1バイトも受信されていない状態なのか、何かしら受信しているが受信バイト数が足りないのか、受信バイト数も足りているけれども期待値と違っていたことによってエラーになり結果さらに待ち続けてしまっているのか、そのあたり何か分かることは無いでしょうか、とかも、気になります。

    画面コピー上のコードを見る限り、ひとまず1バイトずつ受信バッファから取り出すようになっているようです。なので、ソースを一時的にちょっと加工して、タイムアウトした時に何バイト受信バッファから取り出していたかデバッグ出来るようなロジックを追加しておいて、タイムアウト時に確認してみる、とどうなりますでしょうか。(もっとも、そうしたところで、オシロまたはロジアナで確認するという作業をスキップ出来るわけでは無いですけれども。)

    ログありがとうございます。シェルティのログと比べてみたところ以下がクリティカルに異なりました。

    OTA AgentがMQTTの接続を切断する際に成功するのと失敗するのとで違いが出ていますね。

    ファームウェアアップデート動作とファームウェア署名検証とその後のAWSへのMQTTによる報告通信は成功しているので、よこさんの環境でもこのままシステムリセットすればただしくアップデートが完了となります。

    残るは何故よこさんの環境ではMQTTの接続を切断する際に失敗するか、ですね。この方向で掘り下げてみます。

    ■よこさんのログ

    5843 356334 [OTA Agent T] [WARN ][NET][356334] Failed to close connection.

    ■シェルティのログ

    5566 81111 [OTA Agent T] [INFO ][MQTT][81111] (MQTT connection 80f3b8) Network connection closed.

     

  • NoMaYさん

    こんにちは。

    ご返信ありがとうございます。

    よこです。

    NoMaYさんの仰る通りでそちらの内容の続きになります。

    説明不足で申し訳ありません。

    オシロスコープで通信状態は確認できておりません。ですが、WiFiモジュールからの応答が有無に関わらず、ATコマンドが通ったことにするようにコードを書き換えて試したところリブートができるようになりました。

    なので、一応、ATコマンドは送信されてモジュール側でコマンドを受け取っているようです。

    オシロスコープでも確認してみます。

  • よこ さん、こんにちは。NoMaYです。

    その後どうでしょうか?r_wifi_sx_ulpgn_atcmd.cのat_recv()内で、Socket通信を閉じる時のATコマンドの"+++"をwifiモジュールに送った後のwifiモジュールからの応答を受け取れなくてタイムアウトしていた、とのことでしたけれども、新たに分かったことなど進展は何かありましたでしょうか?

  • NoMaYさん

    こんにちは。

    よこです。

    ご連絡ありがとうございます。

    恐縮ですが、進展がなくいまだ調べきれていない状況です。