#はじめに
THETA V以降ではクライアントモードで接続が可能。
しかし、通常の方法で設定するとDHCPでIPアドレスが動的に決まってしまう。
そこでIPアドレスを静的に設定する方法を記録しておく。
#前提知識
[Theta V の Client Mode設定を間違えてしまってハマった話]
(https://qiita.com/watakandhi/items/5e287823e007b3e369dd)
[C#でUSB接続したTHETA Sを操作できるライブラリを作成してみた]
(https://qiita.com/soundkonchan/items/d392794d57dc849720f3)
[Github:WpdMtp]
(https://github.com/kon0524/WpdMtp)
先人に感謝。
#IPアドレス(v4)の設定方法
USB接続してWpdMtpを使用して解決した。
基本はAccessPointInfoで受信したbyteを参考にして送信用byteを作成すればOK。
[THETA公式:0x99A5 SetAccessPoint]
(https://developers.theta360.com/ja/docs/v2/usb_reference/operation/set_access_point.html)
上記を読んでも意味がわからなかったので、IPのbyte規約は総当たりで見つけた。
IPはsizeが4のUINT32と書いてあるが、有効なbyte配列と比較してもどう解釈するべきか不明のまま。
AccessPointInfoでIPを受けると下記のような配列になる。
byte配列:[4,0,0,0,0,0,0,0]
SetAccessPointで設定するIP部分は下記のように渡してやる。(ex 192.168.1.1)
先頭に"4"、下4つにIPv4を入れてやればOK。
byte配列:[4,0,0,0,192,168,1,1]
#疑問
クライアントモード接続中にOscApiでもIP設定を試してみたが、
"Command executed is currently disabled."とエラーが出て、変更はできなかった。
おそらく、動的設定されたIPアドレスを使っている最中だからだと思う。
しかし、IPアドレス使用中に変更APIが使えないなら、どのタイミングで使えるのだろうか?
(追記)→ダイレクトモードなら、OcsApiで登録ができた。
bit配列の先頭の4はIPv4の4であり、データ定義はIPv6にも備えているからこんな形になっている?