Bluetooth コマンドリスト
SABERAグラスとBluetoothで通信するための公開コマンド仕様。
直接送信時の注意事項
Bluetoothコマンドの直接送信は、利用者自身の責任で行ってください。 直接送信によって生じたグラスの不具合・故障・データ損失等は、法令上認められる範囲で、 当社の保証・サポートの対象外とし、当社は責任を負いません。
通信先
| 用途 | Service UUID | Characteristic UUID |
|---|---|---|
| コマンド送信 | F48A23C0-F69A-11E8-8EB2-F2801F1B9FD1 |
F48A24C1-F69A-11E8-8EB2-F2801F1B9FD1 |
| コマンド受信 | F48A23C0-F69A-11E8-8EB2-F2801F1B9FD1 |
F48A25C2-F69A-11E8-8EB2-F2801F1B9FD1 |
| 音声受信 | E49A3001-F69A-11E8-8EB2-F2801F1B9FD1 |
E49A3003-F69A-11E8-8EB2-F2801F1B9FD1 |
通常パケットの形式
バイト列は16進数、長さはバイト数で表記する。 TLV は Type(種類)、Length(長さ)、Value(値)を並べたもの。
パケット全体
| ヘッダ | コマンドID | Type | Length | Value:ペイロード |
|---|---|---|---|---|
01 |
コマンドID | 80 |
ペイロード長(byte) | 内側TLV ① → 内側TLV ② → … |
| 1 byte | 1 byte | 1 byte | 2 byte | 可変長 |
ペイロード内のTLV
| Type | Length | Value |
|---|---|---|
| フィールドの種類 | 値の長さ(byte) | 値 |
| 1 byte | 2 byte | 可変長 |
Lengthは外側・内側ともにリトルエンディアン(下位バイトが先)。 文字列はUTF-8。通知の日時は8バイトのビッグエンディアン。
LE(n) は整数nを2 byteのリトルエンディアンで表した値。BE はビッグエンディアン。
LengthはValueのbyte数。外側Lengthは内側TLV全体のbyte数。
各コマンドページのNは本文または圧縮データのbyte数。
例:ホーム画面を開く
| ヘッダ | コマンドID | 外側Type | 外側Length | 内側Type | 内側Length | 内側Value |
|---|---|---|---|---|---|---|
01 |
05 |
80 |
05 00 |
01 |
02 00 |
32 00 |
| 固定値 | 画面遷移 | 固定値 | ペイロード5 byte | 画面ID | 値2 byte | ホーム 0x0032 |
sendCommand() にヘッダを含む10バイト全体を渡す。
01 05 80 05 00 01 02 00 32 00
テキストの分割
翻訳・テレプロンプター・汎用テキストなどの分割テキストでは、テキストTLVのValueの先頭に 次の2バイトを付ける。分割位置はUTF-8の文字境界に合わせる。
| マーカー | 意味 |
|---|---|
5A 6B |
1パケットで完結 |
5A 5A |
分割した先頭 |
7C 7C |
分割した途中 |
6B 6B |
分割した末尾 |
テキストを表示する例
コマンド送信用Characteristicに、次のパケットを順番に書き込む。
1つ目で汎用テキスト画面を開き、2つ目で Hello を表示する。
01 05 80 05 00 01 02 00 47 00
01 16 80 0A 00 01 07 00 5A 6B 48 65 6C 6C 6F
2つ目のパケットは、コマンド 16、外側の長さ10、テキストTLVのType 01、
Valueの長さ7、単一パケットのマーカー 5A 6B、UTF-8の Hello で構成される。
任意の文字列に置き換えるときは、UTF-8に変換したバイト数に合わせて両方の長さを更新する。
汎用テキストの本文は1パケット最大200バイト。超える場合は上記マーカーで分割し、
各パケットに通常ヘッダとテキストTLVを付けて順番に送る。
分割した一連のパケットを送信し終えてから、次のテキストを送る。
コマンド送信
コマンド受信
受信パケットも 01 → コマンドID → 80 → Length(2 byte、LE)→ 内側TLVの構成。
関連
- メソッドの追加履歴 — APIの追加時期と対応ファームウェア
- CommandManager — コマンドの生成と送信を行うAPI
- sendCommand — パケットを1つ送信
- sendCommandList — パケットを順番に送信
- ページごとの使い方 — 画面遷移からコンテンツ送信までの呼び出し方
Table of contents
- 0x01 時刻同期
- 0x03 通知
- 0x04 テレプロンプター
- 0x05 画面遷移
- 0x06 設定変更・同期要求
- 0x07 翻訳
- 0x09 マイク制御
- 0x0A システム状態要求
- 0x0B 天気同期
- 0x10 ナビゲーション
- 0x11 表示調整
- 0x12 AIチャット
- 0x13 汎用画像
- 0x14 ウェイクアップ傾き閾値
- 0x15 設定画面の表示制御
- 0x16 汎用テキスト
- 0x17 テレプロンプター・翻訳テキストのクリア
- 0x18 デバッグ用スマホ名
- 0x19 IMU送信制御
- 0x1A 分割レイアウト
- 0x1B キャンバス
- 0x80 汎用応答
- 0x82 キー・ジェスチャー
- 0x83 設定同期応答
- 0x87 システム状態応答
- 0x88 通知件数応答
- 0x89 IMUデータ