プライベートサービスの作成と設定

解説

プライベートサービスの作成と設定についてまとめます。

作成するプライベートサービスの仕様

作成するプライベートサービスの仕様としては、以下としました。

UUIDの作成

作成するプライベートサービスのために1つ、作成するキャラクタリスティック2つ、都合3つのUUIDを作成します。
UUIDは、128ビットの値です(16進数表現で32桁)。

この値は自由に決めることができますが、他のサービスと競合しない値を設定します(たとえば、同じUUIDで、異なる仕様のサービスがあったとして(仮に仕様A、仕様Bとする)、送信側は仕様Aでデータを送り、受信側は仕様Bでデータを受け取ろうとすれば、正しい通信は行われません)

UUIDをウェブサイト「UUIDGenerator.net」で作成します。
https://www.uuidgenerator.net/
にアクセスします。


「Buld Version 1 UUID Generation」の「How Many?」欄に、作成するUUIDの個数である「3」を入力し、「Generate」ボタンをクリックします。

3つのUUIDが作成されます。

今回作成されたUUIDは、以下の3つ。
ff6b1160-8fe6-11e7-abc4-cec278b6b50a
ff6b1426-8fe6-11e7-abc4-cec278b6b50a
ff6b1548-8fe6-11e7-abc4-cec278b6b50a

関連コマンド解説

サーバサービス設定「SS」

「SS,<hex32>」※でサポートするサービスを設定します。

※<hex32>は、サーバとしてサポートするサービスを示すビットパターン(16進数表現で8桁)です。
詳細は、「RN4020 Bluetooth® Low Energy モジュール ユーザガイド」の「SS」コマンドの説明を参照。

プライベートサービス(0x00000001)だけをサポートするようにするには、
「SS,00000001」と入力します。

デバイス情報サービス(0x80000000)と、バッテリーサービス(0x40000000)と、プライベートサービス(0xC0000001)をサポートするようにするには、
「SS,C0000001」と入力します。
(0x80000000 + 0x40000000 + 0x00000001 = 0xC0000001)

プライベートサービスのクリア「PZ」

「PZ」でプライベートサービスとプライベート キャラクタリスティックの全設定をクリアします。

プライベートサービスのUUIDの設定「PS」

「PS,<UUID>」※でプライベートサービスのUUIDを設定します。
このコマンドは、「PC」コマンドを実行する前に実行する必要があります。

※<UUID>は、設定するプライベートサービスのUUID(128ビット。16進数表現で32桁)です。

「UUIDGenerator.net」で作成したUUIDの1つの目のUUIDを、プライベートサービスのUUIDとする設定は、
「PS,FF6B11608FE611E7ABC4CEC278B6B50A」と入力します。

プライベートキャラクタリスティックの設定「PC」

「PC,<UUID>,<プロパティ>,<データサイズ>」※でプライベートキャラクタリスティックを設定します。
このコマンドは、「PS」コマンドを実行した後に実行する必要があります。


<UUID>は、設定するプライベートキャラクタリスティックのUUID(128ビット。16進数表現で32桁)です。
<プロパティ>は、キャラクタリスティックプロパティビットパターン(8ビット。16進数表現で2桁)です。
 0b00010000 (0x10) : 通知が可能
 0b00001000 (0x08) : 書き込み
 0b00000010 (0x02) : 読み出し
<データサイズ>は、キャラクタリスティックが保持するデータサイズ(8ビット。16進数表現で2桁)です。

1つ目のキャラスタリスティックの設定は、
「PC,FF6B14268FE611E7ABC4CEC278B6B50A,12,02」と入力します。
2つ目のキャラスタリスティックの設定は、
「PC,FF6B15488FE611E7ABC4CEC278B6B50A,0A,08」と入力します。

ターミナルソフトからのコマンド送信の例

エコーを有効にします。
+」を入力し、エンターキーを押します。
コマンドが正しく実行されると、画面に「Echo On」と表示されます。

工場出荷時の規定値にリセットします。
SF,1」を入力し、エンターキーを押します。
コマンドが正しく実行されると、画面に「AOK」と表示されます。

サーバサービスを設定します。
SS,00000001」と入力し、エンターキーを押します。
コマンドが正しく実行されると、画面に「AOK」と表示されます。

サポート機能の設定をします。
SR,24002000」と入力し、エンターキーを押します。
コマンドが正しく実行されると、画面に「AOK」と表示されます。

プライベートサービスをクリアします。
PZ」と入力し、エンターキーを押します。
コマンドが正しく実行されると、画面に「AOK」と表示されます。

再起動します。
R,1」と入力し、エンターキーを押します。
コマンドが正しく実行されると、画面に「Reboot」「CMD」と表示されます。

(再起動によりエコーが無効に戻る)
エコーを有効にします。
+」を入力し、エンターキーを押します。
コマンドが正しく実行されると、画面に「Echo On」と表示されます。

サポートサービスを確認します。
LS」と入力し、エンターキーを押します。
RN4020がサポートするサーバサービスは何もないので、「END」とだけ表示されます。

プライベートサービスのUUIDを設定します。
PS,FF6B11608FE611E7ABC4CEC278B6B50A」と入力し、エンターキーを押します。
コマンドが正しく実行されると、画面に「AOK」と表示されます。

プライベートキャラクタリスティックを設定します。
PC,FF6B14268FE611E7ABC4CEC278B6B50A,12,02」と入力し、エンターキーを押します。
コマンドが正しく実行されると、画面に「AOK」と表示されます。
PC,FF6B15488FE611E7ABC4CEC278B6B50A,0A,08」と入力し、エンターキーを押します。
コマンドが正しく実行されると、画面に「AOK」と表示されます。

再起動します。
R,1」と入力し、エンターキーを押します。
コマンドが正しく実行されると、画面に「Reboot」「CMD」と表示されます。

(再起動によりエコーが無効に戻る)
エコーを有効にします。
+」を入力し、エンターキーを押します。
コマンドが正しく実行されると、画面に「Echo On」と表示されます。

サポートサービスを確認します。
LS」と入力し、エンターキーを押します。
コマンドが正しく実行されると、画面にRN4020がサポートするサーバサービスがリスト表示されます。

AndroidアプリでBLE通信

「BLE Scanner: Read,Write,Notify」を起動します。

スキャンが開始され、RN4020が検出されます。

「CONNECT」ボタンをタップし、検出されたRN4020と接続します。

RN4020がサポートするサービスのリストが表示されます。

作成したプライベートサービスが「CUSTOM SERVICE」として表示されます。
UUIDは、 「PS」コマンドで設定したUUID、「LS」コマンドで確認したUUIDとも一致しています。

CUSTOM SERVICE」をタップします。

カスタムサービスがサポートするキャラクタリスティック(≒サービスの特性値)が表示されます。
2つのキャラクタリスティックが表示されます。
1つは、プロパティが「Read」と「NOTIFY」。もう1つは、プロパティが「READ」と「WRITE」で、「PC」コマンドで設定した内容となっています。


以上で、プライベートサービスの作成と設定と確認ができました。

関連ページ

次項目:プライベートサービスのキャラクタリスティックの値の書き込み