ページへ戻る

− Links

 印刷 

ZEALコマンド のバックアップソース(No.3) :: Besttechnology

knowledge:ZEALコマンド のバックアップソース(No.3)

« Prev[4]  Next »[5]
只今編集中です。
**概要 [#sf3d2d4c]
ZEALに内蔵されたマイコンには予めBluetoothに関する様々な制御とユーザに開放されたパラメータを設定するコマンドモードのファームウェアが収められています。更に、コードレスアダプタについては設定されたパラメータに基づいて、電源ON時から自動的に待ち受け・接続を行うモードが追加されています。

本ページではエンターキー(キャリッジリターン:0x0D)を&size(5){&color(#333,#EEE){CR};};と表します。また&size(5){&color(#333,#EEE){LF};};
はラインフィード(0x0A)です。
**モード [#c2bb7bdb]
***起動モード [#c32790ad]
電源を入れた際の初期状態を、アダプタに装備されたディップスイッチで変更できます。ディップスイッチの状態変更後、リセットする事で設定した起動モードに遷移します。~
|起動モード|DIP1-1(MODE0)|DIP1-2(MODE1)|機能|
|通常モード|OFF(1)|OFF(1)|起動時、端末通信速度を9600bpsにしてコマンドモードとなる|
|設定モード|ON(0)|OFF(1)|起動時の端末通信速度はBTBコマンドに従う以外は、通常モードと同様にコマンドモードとなる|
|自動モード|OFF(1)|ON(0)|コマンドモードで設定されたパラメータを元に自動待ち受け・自動接続を実行する|
|書込モード|ON(0)|ON(0)|ファームウェアのアップデートに使用|

***動作モード [#b48afc5f]
コードレスアダプタのディップスイッチが通常モードもしくは設定モードで、各種コマンドにて遷移する内部の状態です。
| 動作モード | 機能 |
|コマンドモード|電源投入直後、リセット直後の状態。BTコマンドを投入することができる。|
|オンラインモード|Bluetoothで接続された相手とデータ通信可能な接続状態。BTコマンドを投入することはできず、端末から入力されたシリアルデータはそのまま接続相手へ届けられ、相手から送信されたデータは端末に送出される。|
|ホールドモード|一定時間データ転送が途切れるモード。&br;相手からの要求でホールドモードに移行した場合、HOLDと表示される。&br;自分からホールドモード突入を要求して成功した場合、実際のホールドスロット数が16進数で表示される (1スロットは0.625msec)。&br;設定された時間が経過してホールドモードが解除されると”TERM”リザルトを出力して、オンラインモードに移行する。|
|パークモード|接続は維持したままでデータ通信はできない低消費電力状態。このモードではコマンドの実行が可能だが、パラメータなしの“BTQ”コマンド以外は実行しないこと。&br;自分から(相手から)パークモードを解除した(された)場合は“TERM”リザルトを出力して、オンラインモードに移行する。ただしBTQMコマンドで文字列を表示しない設定になっている場合は、“TERM”リザルトは表示されない。|
|エスケープモード|相手機器との接続を維持したままコマンド入力可能にするモード。主にBluetoothの切断を行う際のBTコマンドを入力に使用される。&br;オンラインモードからエスケープモードへ移行するためには、ガードタイム(コマンドを一切入力しない時間)の後“@@@”を入力する。|
|スキャンエスケープモード|スキャン状態を維持したままコマンド入力可能にするモード。主にスキャンを終了する際に使用する。&br;スキャンモードからスキャンエスケープモードへ移行するためには、ガードタイム(コマンドを一切入力しない時間)の後”@@@”を入力する。|
|スキャンモード|相手からのデバイス検出や接続要求に応答する。&br;BTコマンドは受け付けず、相手から接続されるとオンラインモードに移行する。&br;コマンドモードに戻るには、エスケープモードへ移行した後に“BTD”コマンドを実行してスキャン状態を解除することで行う。&br;スキャンモードの時に相手から接続された場合は、相手から切断された後、再びスキャンモードに戻る。ただし、自分からBTDコマンドで切断した場合は、切断後、コマンドモードに移行する。|
|スタンバイモード|最も消費電力が少ないモードで、Bluetooth機能は停止する。&br;コマンドモードで“BTH”コマンドを実行すると本モードに移行する。このモードの最中に何か1バイト送信すると復帰して、“TERM”リザルトを出力しコマンドモードに戻る。なお復帰されるのに用いた1バイトは送信せず破棄される。|
BTコマンドは、コマンドモードまたはエスケープモードの状態にあるときに入力が可能です。頭文字2文字は必ず“BT”で、続けてコマンド文字とパラメータを入力し、終端は&size(5){&color(#333,#EEE){CR};};を入力します。&size(5){&color(#333,#EEE){CR};};はキャリッジリターン(0x0D)です。その際、コマンド及びほとんどのパラメータでアルファベットを使用する際は半角大文字、数値は半角数字を使用します。~
BTコマンドの入力に対してコードレスアダプタからはリザルトコードが返ります。リザルトコードはコマンドの結果を通知する文字列で、文字列の後&size(5){&color(#333,#EEE){CR};};&size(5){&color(#333,#EEE){LF};};が出力されます。&size(5){&color(#333,#EEE){LF};};はラインフィード(0x0A)です。~
~
動作モード遷移図
#ref(ZealCommand1.png,80%)
-[CONN]や[DISK],[TERM]はリザルトを表します。
-[???]はユーザ定義の文字列を表します。
-[インターバル]は省電力モードのインターバルが16進数で表示されます。
-相手から切断された場合や相手からパーク解除された場合には、前のモードに戻ります。
-省電力モードから抜けると前の状態に関わらず、オンラインモードに遷移します。

**コマンド等一覧 [#r5db32ab]
***コマンド [#q6576a88]
|コマンド|機能|パラメータ|
|A|自動着信に設定|なし、あるいはInquiryアクセスコード|
|B|ZEALとの間のビットレートの変更|要求するビットレート(100bps単位)|
|BM|ZEALとの通信モード(パリティなど)の変更|モードフラグの値|
|C|接続開始|なし、あるいはクロックオフセット|
|CN|接続先機器のユーザフレンドリ名取得|なし、あるいはクロックオフセット|
|CU|指定したUUIDのサービスへ接続開始|UUIDのみ、あるいはUUIDとクロックオフセット|
|D|接続切断、または自動着信の解除|-|
|DM|切断メッセージの設定|メッセージ文字列|
|E|接続・非接続・Park状態の確認|-|
|F|セキュリティ等の接続条件フラグを設定|各種条件フラグの値|
|G|ガードタイムの変更|ガードタイム(80ms単位10進数)10~255|
|H|スタンバイモードへ遷移|-|
|I|デバイス検出(Inquiry)を実行|検出する最大数(0で強制終了)0-255&br;またはアクセスコードと時間と最大数|
|K|内部に保持しているリンク・キーをクリア|-|
|L|内部設定値を取得する|取得する値を指定|
|M|自分のBluetooth Device Addressを取得|-|
|OC|デバイスクラスを設定|デバイスクラス|
|OM|自動モードの設定|自動待ち受けもしくは自動接続|
|P|自分のBluetooth Passkey(PIN)を変更|Bluetooth Passkey (PIN)|
|Q|パークモードへの遷移/解除|インターバル(パラメータなしで解除)|
|QM|パークモード遷移メッセージの設定|メッセージ文字列|
|QH|ホールドモードへの遷移|インターバル|
|R|エスケープモードからオンラインモードへ戻る|-|
|T|接続先情報の変更(電源を切っても有効)|Page Scan Mode, Bluetooth Device Address|
|TT|接続先情報の変更(電源を切ると無効)|Page Scan Mode, Bluetooth Device Address|
|V|各種パラメータ値の設定|各種パラメータ値|
|X|機器名の設定|機器名|

***リザルトコード [#v1ab4c2a]
|リザルトコード|意味|
|ACKN|コマンド受付|
|CONN|Bluetooth接続確立|
|DISC|切断|
|TERM|コマンドの実行終了(結果数が可変なものなど)|
|NG00|コマンドの実行失敗|
|NG01|未定義のコマンド|
|NG04|Baseband接続失敗(PageTimeout)|
|NG05|認証失敗|
|NG06|PINコードまたはキーの消失によるペアリング失敗|
|NG08|Baseband接続失敗(ConnectionTimeout)|
|NG0C|無許可のコマンド(実行不能なモードにある場合など)|
|NG10|Baseband接続失敗(ConnectionAcceptTimeout)|
|NG12|パラメータの値が不正|
|NG30|SDPのL2CAP接続失敗|
|NG31|SDPのL2CAP設定失敗|
|NG32|サーバーチャネル取得失敗|
|NG33|SDPのL2CAP切断失敗|
|NG40|RFCOMMのL2CAP接続失敗|
|NG41|RFCOMMのL2CAP設定失敗|
|NG42|RFCOMMの信号チャネル確立失敗|
|NG43|RFCOMMのデータチャネル確立失敗|
|NG44|RFCOMMに空いているDLCIが無い|
|NG45|RFCOMMのPNコマンド失敗|
|NG46|RFCOMMのMSCコマンド失敗|
デバイス検索(BTI)、内部設定値取得(BTL)、デバイスアドレスの取得(BTM)の結果はコマンド使用方法を参照してください。

***内部保持パラメータ [#t446db5a]
|パラメータ|設定するためのコマンド|
|接続先のBluetooth Device Address|T|
|Bluetooth Passkey (PIN)|P|
|ガードタイム|G|
|認証の有無|F|
|暗号化の有無|F|
|デバイス検出(Inquiry)への応答|F|
|Master/Slaveロールスイッチ要求を許可するか?|F|
|省電力機能(Park,Sniff,Hold)を利用するかどうか|F|
|接続タイムアウト|V|
|呼び出しタイムアウト|V|
|リンクタイムアウト|V|
|呼び出しスキャン時間|V|
|デバイス検出スキャン時間|V|
|フラッシュタイムアウト|V|
|ボーレート|B|
|シリアル通信モード|BM|
|切断時メッセージ|DM|
|機器名|X|
|デバイスクラス|OC|
|自動モード|OM|
|リンクキー|なし Kで消去|
|Park遷移メッセージ|QM|
|CENTER:BGCOLOR(red):|LEFT:BGCOLOR(#dcdcef):|c
|  :idea:|ZEALには出荷時検査等に使用する非公開コマンドが存在します。仕様書に明記されていないコマンドを入力した際の動作は保証できません。&br;内部設定値はフラッシュROMに保存しています。内部設定値の変更を行うコマンドを発行した時や、リンクキーが変更されるたびに書き換えが発生します。書き換え可能回数は32万回ですが、既に設定されている値と同じ場合は書き換えを行いません。接続先を頻繁に変更するような場合は、リンクキーの書き換えが発生しないようにセキュリティーなしに設定した上で、BTTコマンドではなくBTTTコマンドを使用すると良いでしょう。|
**用語解説 [#e08d08bc]
-''Bluetooth Device Address (BD_ADDR)''~
機器を識別するための48bitのアドレス。
-''デバイス検出 (Inquiry)''~
通信可能圏内にあるBluetooth機器を検索します。接続する相手のBluetooth Device Addressがわからない場合には、最初にデバイス検出を行い、相手のBluetooth Device Addressを取得します(接続に使うPage Scan Modeも取得します)。~
~
デバイス検出の説明図~
#ref(ZealCommand2.png,80%)
-''呼び出し (Page)''~
Bluetoothはベースバンド接続を行う際に、相手機器のデバイス・アクセス・コード(Bluetooth Device Addressの一部)を含むページ列と呼ばれる信号を送信します。待ち受け状態にある機器がこの信号を受信すると応答を返し、接続が始まります。~
~
呼び出しの説明図
#ref(ZealCommand3.png,80%)
-''呼び出しスキャン (Page Scan)''~
相手からの呼び出し(Page)を待ち受けること。自分のデバイス・アクセス・コードを含むページ列を検出すると応答を返します。スキャンを行う時間を呼び出しスキャン時間(Page Scan Window)で設定でき、この時間が長いほど接続しやすくなりますが、待ち受け時の消費電力は増加します。
-''呼び出しスキャンモード (Page Scan Mode)''~
呼び出しスキャンにはR0, R1, R2の3つのモードがあり、呼び出す側は相手に合わせて適切なモードを利用しなければ正しい呼び出しが行えません。利用すべきモードはデバイス検出(Inquiry)で得られます。ZEALを呼び出すときはR1を利用します。相手のモードがわからない場合には、R2を利用することで接続可能になりますが呼び出し時間が長くなります。
-''デバイス検出スキャン (Inquiry Scan)''~
相手からのデバイス検出(Inquiry)を待ち受けること。スキャンを行う時間をデバイス検出スキャン時間(Inquiry Scan Window)で設定でき、この時間が長いほど検出されやすくなりますが、待ち受け時の消費電力は増加します。接続相手が決まっているような用途では、デバイス検出スキャンを行わない設定にすることで待ち受け時の消費電力を低減できます(デバイス検出スキャンを行うかどうかはBTFコマンドで設定)。
-''限定検出モード(Limited Discoverable Mode)''~
デバイス検出を待ち受ける際に、通常利用するアクセスコードであるGIAC(Generic Inquiry Access Code)の他にLIAC(Limited Inquiry Access Code)を利用してデバイス検出スキャンを行います。このモードでデバイス検出スキャンを行っている機器を発見するためには、GIACを利用するか、またはLIACを利用してデバイス検出を行います。LIACを用いてデバイス検出を行った場合、同じLIACを使ってデバイス検出スキャンを行っている機器以外は発見されません。多くのBluetooth機器が周りにある場合に、特定の機器だけを見つけたいという場合の利用が考えられます。
-''Bluetooth Passkey (PIN)''~
機器の認証に用いる最大16バイトのパスワード。相手機器と同じBluetooth Passkeyを入力することで、認証をパスします。一度認証が行われるとリンク・キーが生成され、これをお互いが保持することで、次回からの接続ではBluetooth Passkeyの入力は行わずに認証が可能になります。セキュリティで保護されているため、他者に無線で盗み見られることはありません。
-''認証 (Authentication)''~
Bluetooth端末間のセキュリティはリンク・キーで管理されており、このリンク・キーは第三者に開示されてはならないことになっています。初めて接続する機器の場合は、Bluetooth Passkeyを入力することでリンク・キーを作成します。リンク・キーには2種類あり、以下の特長があります。
|単体キー|自身のリンク・キーを1つだけ保持し、全ての機器に対して同じリンク・キーを使用します。セキュリティレベルは低くなりますが、1つだけ保持すればよいのでメモリ使用量が少なくて済みます。|
|複合キー|接続する機器ごとに別のリンク・キーを使用します。単体キーよりセキュリティレベルは高くなりますが、接続相手ごとにリンク・キーを管理する必要があり、メモリ使用量が多くなります。|
ZEALでは複合キーを用い、最近接続した機器1つ分のリンク・キーのみを保持します。1度他の機器と認証を行うと以前のリンク・キーを失うので、以前の機器と認証する際には再びBluetooth Passkeyの交換を行います。
-''暗号化(Encryption)''~
Bluetoothには通信データを暗号化する機能があり、ZEALはセキュリティ・モード3(リンクレベル強制セキュリティ)をサポートしています。暗号化の利用には認証を通過していることが必須条件です。暗号化を利用する場合はBTFコマンドで暗号化とともに認証もONにしてください(セキュリティ・モード2サービスレベル強制セキュリティは未サポート)。
-''デバイスクラス(Class of Device)''~
デバイスが主にどのようなサービスを提供し、どのようなタイプの機器化を表す24bitの値です。主にPCやPDAなどのプロトコルスタックにて、検出した機器のアイコン表示に使用されます。~
Zealにおいては特に接続に必要な情報ではありません。
-''パークモード(Park Mode)''~
Bluetoothの仕様で定められた低消費電力モードの1つで、接続が維持できる一定間隔でマスター側がビーコンをスレーブに送信する以外にデータ通信はしません。これにより接続を維持しつつ消費電力が抑えます。~
ビーコンを送信するインターバルを長くすると消費電力は減りますが、復帰にかかる時間が長くなり、あまり長くしすぎると接続を維持できない場合もあります。Zealでは2秒のインターバルが最長です。
-''ホールドモード(Hold Mode)''~
データ通信を一定時間(ホールドインターバル)停止するモード。マスター側とスレーブ側でホールドインターバルを交渉して決定した時間だけACLリンクが途切れます。ZEALではホールドインターバルは2秒が最長です。

**コマンドモードからの簡単な利用法 [#y9763307]
ここで行う作業をした場合、出荷時の設定が変更されます。ご注意ください。
***クライアント(マスター)として利用 [#mea7736d]
【仮想条件】セキュリティ機能を利用せず、Bluetooth Device Address 00:09:7E:00:00:02に接続します。Page Scan ModeはR1とします。
+接続時にセキュリティ機能を利用しない設定にします。
~BTF04&size(5){&color(#333,#EEE){CR};};
+接続相手を設定します。
~BTT100097E000002&size(5){&color(#333,#EEE){CR};};
+接続を開始します。
~BTC&size(5){&color(#333,#EEE){CR};};
+切断します。
~(ガードタイムの間入力しない)~
@@@~
BTD&size(5){&color(#333,#EEE){CR};};
+再接続します。
セキュリティや接続相手の設定は電源を切っても保持されているので、次回の接続からは再設定は必要ありません。
~BTC&size(5){&color(#333,#EEE){CR};};

***サーバー(スレーブ)として利用 [#b3953b80]
【仮想条件】セキュリティ機能を利用せず、デバイス検出には応答します。
+接続時にセキュリティを利用せず、デバイス検出には応答する設定にします。
~BTF04&size(5){&color(#333,#EEE){CR};};
+待ち受け状態にします。
~BTA&size(5){&color(#333,#EEE){CR};};
+他のBluetooth機器から接続されると“CONN”が表示され、接続が確立します。

**BTコマンド詳細 [#n41d3c2d]
***Aコマンド [#k6859c87]
-''動作''~
待ち受け状態に設定します。スキャンが開始され、相手からのデバイス検出(Inquiry)や呼び出し(Page)に応答します。接続が途中でうまくいかなかったり切断されたりした場合、再びスキャン状態になります。待ち受け状態でデバイス検出に応答するかどうかは”BTF”コマンドで設定が可能です。~
スキャン中に送信したデータは、ガードタイム後の”@@@”以外は無視されます。~
パラメータを指定することで、限定検出モードでデバイス検出スキャンを行うことができます。ただしBTFコマンドでデバイス検出に応答する設定になっている場合にのみ有効です。~
Bluetooth仕様書の記述によると、限定検出モードではGIACでの通常Inquiryにも応答すべきとされています。パラメータを指定する場合は、2つのアクセスコードの一方にGIACを含めるようにしてください。
-''パラメータ''~
なし、またはデバイス検出で利用するアクセスコード(0x9E8B00-0x9E8B3F)の下位1バイトを1つか2つ。
パラメータを省略した場合、以前に設定したアクセスコードを利用します。起動後はGIACのみを利用する設定になっています。
-''例''~
BTA&size(5){&color(#333,#EEE){CR};}; : (以前に使ったアクセスコードでスキャン、起動時はGIACのみ)~
BTA3300&size(5){&color(#333,#EEE){CR};}; : (GIACとLIAC=0x9E8B00でスキャン)~
BTA33&size(5){&color(#333,#EEE){CR};}; : (GIACのみでスキャン)
-''結果''~
ACKN&size(5){&color(#333,#EEE){CR};};&size(5){&color(#333,#EEE){LF};}; : 設定完了~
CONN&size(5){&color(#333,#EEE){CR};};&size(5){&color(#333,#EEE){LF};}; : 相手からの接続を通知~
NGG00&size(5){&color(#333,#EEE){CR};};&size(5){&color(#333,#EEE){LF};};  : 待ち受け状態への移行に失敗

***Bコマンド [#s176dbfc]
-''動作''~
ZEALとの間のボーレートを設定します。設定値は電源を切っても保持されますが、起動モードが通常モードのときは内部設定値に関わらず必ず9600bpsで起動します。従って9600bps以外の値で通信する時は、このコマンドで毎回ボーレートを設定してください。~
リザルトコードを変更前のボーレートで送信した後、指定したボーレートに変更されます。~
ボーレートの上限は921600bps(BTB9216)です。下限は1200bps(BTB12)です。PCとエバボードなどを介して接続する場合はCOMポートやUSB-RS232C変換器のドライバなどがZealに設定しようとしているボーレートに対応していることを確認してください。
-''パラメータ''~
10進数100bps単位で指定します。コマンドの引数として設定ボーレートの十の位と一の位の0を省いた数字を2-4文字付加します。
-''制約''~
電源投入後、BTC、およびBTAを一度でも実行すると、その後は、ボーレート変更ができなくなります(NG0Cがかえる)。ボーレート変更は電源投入後、BTC、BTAする前に行ってください。~
自動モードでは一部のボーレートのみ利用可能です。~
~
自動モードで利用可能なボーレート一覧
|コマンド+パラメータ|ボーレート[bps]|内部保存値|
|BTB12&size(5){&color(#333,#EEE){CR};};|1200|13|
|BTB24&size(5){&color(#333,#EEE){CR};};|2400|0|
|BTB48&size(5){&color(#333,#EEE){CR};};|4800|1|
|BTB96&size(5){&color(#333,#EEE){CR};};|9600|3|
|BTB192&size(5){&color(#333,#EEE){CR};};|19200|4|
|BTB384&size(5){&color(#333,#EEE){CR};};|38400|5|
|BTB560&size(5){&color(#333,#EEE){CR};};|56000|11|
|BTB576&size(5){&color(#333,#EEE){CR};};|57600|6|
|BTB1152&size(5){&color(#333,#EEE){CR};};|115200|7|
|BTB1280&size(5){&color(#333,#EEE){CR};};|128000|12|
|BTB2304&size(5){&color(#333,#EEE){CR};};|230400|8|
|BTB2560&size(5){&color(#333,#EEE){CR};};|256000|10|
|BTB4608&size(5){&color(#333,#EEE){CR};};|460800|14|
|BTB9216&size(5){&color(#333,#EEE){CR};};|921600|15|
-''例''~
BTB96&size(5){&color(#333,#EEE){CR};}; : ボーレートを9600bpsに設定
-''結果''~
ACKN&size(5){&color(#333,#EEE){CR};};&size(5){&color(#333,#EEE){LF};}; : 設定完了
NG12&size(5){&color(#333,#EEE){CR};};&size(5){&color(#333,#EEE){LF};}; : パラメータが不正
NG0C&size(5){&color(#333,#EEE){CR};};&size(5){&color(#333,#EEE){LF};}; : BTA、BTCを実行したあとで、BTBした場合

***BMコマンド [#yff99d3f]


« Prev[4]  Next »[5]