-
Notifications
You must be signed in to change notification settings - Fork 1
Protocol Between User Interface and Server
ここでは、ユーザが操作するインターフェース(タッチパネルベース)と、データを保持しているサーバとの間のプロトコルをまとめます。
プロトコルとしては、OSC を用いる事にします。
インターフェース側から接続し、以降互いにメッセージを送りあいます。 必要であれば、インターフェース側で利用するポートはルータの設定で外部から通信可能なように準備しておいて下さい。
Interface から Server に対して、自分の Port を通知します。 以下の順で引数を取ります。
-
Port
... 接続する Interface に OSC メッセージを返すときの Port 番号
上記の情報で渡された情報を元に、Server は Interface を管理します。 IP はサーバ側で取得します。 Interface からの hello を受けとった Server は、それに対して後述の /gianteyes/cameras を送り返してカメラ情報を渡します
Interface から Server に対して、udid で指定するカメラの方向を指定します。 以下の順で引数を取ります。
-
udid
... 動かしたいカメラの udid -
compass
... カメラを向ける方位(0〜360 (0 or 360が北。以下同様) ) -
angle
... カメラの仰角
Interface から viewport を受けとった Server は、Remote Client に対して同様の指示をリレーします。
Interface から Server に対して、udid で指定したカメラに撮影リクエストを送ります。 以下の順で引数を取ります。
-
udid
... 撮影したいカメラの udid
Interface から take を受けとった Server は Remote Client に対して撮影を指示し、そこから戻ってきたデータを HTTP で閲覧可能な領域に保存して、その URL を後述の photo メッセージで Interface に通知します
カメラの状態が変化した場合、Server から Interface に対して、現在のカメラの状態を通知します。 以下の順で引数を取ります
-
data
... 各カメラの情報を格納した JSON
上記 data パラメータで渡される JSON は下記のような構造として下さい。
{
"udid": "xxxx", // カメラのudid
"latitude": 35.663411, // 緯度情報
"longitude": 139.70502, // 経度情報
"compass": 0, // カメラの向いている方位
"angle": 45, // 仰角
"battery": 76, // バッテリ残量 (カメラが iPhone の場合のみ)
"operable": true, // カメラがiPhoneの場合はtrue、ライブカメラの場合はfalse
"living": false, // iPhoneカメラの接続状態
"photos": [
{
"url": "http://example.com/", // 撮影した画像の URL
"correction": 10.293, // 画角の補正値(%単位)
"latitude": 35.663411, // 撮影したカメラの緯度
"longitude": 139.70502, // 撮影したカメラの経度
"compass": 0, // カメラの向いている方位(0〜360)
"angle": 45 // カメラの仰角
},
// 以下、繰り返し
]
}
Server から Interface に対して、撮影した写真の情報を通知します。 以下の順で引数を取ります
-
data
... 写真の情報を格納した JSON
{
"udid": "xxxx", // カメラのudid
"url": "http://example.com/", // 緯度情報
"correction": 10.29, // 経度情報
"latitude": 35.663411, // カメラの向いている方位
"longitude": 139.70502, // 仰角
"compass": 76, // バッテリ残量 (カメラが iPhone の場合のみ)
"angle": 45
}
Server から photo を受けとった Interface は、url の画像を HTTP で取得し、合成できるよう出力します。
Server から Interface に対して、各カメラの情報を送ります 以下の順で引数を取ります
-
data
... 各カメラの情報を格納した JSON
上記 data パラメータで渡される JSON は下記のような構造として下さい。
{
"cameras": [
{
"udid": "xxxx", // カメラのudid
"latitude": 35.663411, // 緯度情報
"longitude": 139.70502, // 経度情報
"compass": 0, // カメラの向いている方位
"angle": 45, // 仰角
"battery": 76, // バッテリ残量 (カメラが iPhone の場合のみ)
"operable": true, // カメラがiPhoneの場合はtrue、ライブカメラの場合はfalse
"living": false, // iPhoneカメラの接続状態
"photos": [
{
"url": "http://example.com/", // 撮影した画像の URL
"correction": 10.293, // 画角の補正値(%単位)
"latitude": 35.663411, // 撮影したカメラの緯度
"longitude": 139.70502, // 撮影したカメラの経度
"compass": 0, // カメラの向いている方位(0〜360)
"angle": 45 // カメラの仰角
},
// 以下、繰り返し
]
},
{
//以下、繰り返し
}
]
}