• 検索結果がありません。

Bluetooth Low Energy プロトコルスタック RenesasBLEアプリケーション対向RL78/G1Dソフトウェア

N/A
N/A
Protected

Academic year: 2021

シェア "Bluetooth Low Energy プロトコルスタック RenesasBLEアプリケーション対向RL78/G1Dソフトウェア"

Copied!
51
0
0

読み込み中.... (全文を見る)

全文

(1)

アプリケーションノート

Bluetooth

®

Low Energy プロトコルスタック

RenesasBLE アプリケーション対向 RL78/G1D ソフトウェア

要旨

このマニュアルは、Android/iOS 版 Bluetooth® Low Energy アプリケーション"RenesasBLE"と通信を行う

Bluetooth® Low Energy プロトコルスタック RenesasBLE 対向 RL78/G1D ソフトウェアのインストール、構成、

使用方法について記載しています。

関連資料

関連資料は暫定版の場合がありますが、この資料では「暫定」の表示はしておりません。あらかじめご了 承ください。 資料名 資料番号 和文 英文

Bluetooth Low Energy プロトコルスタック

ユーザーズマニュアル R01UW0095J R01UW0095E

API リファレンスマニュアル 基本編 R01UW0088J R01UW0088E API リファレンスマニュアル CSCP 編 R01UW0098J R01UW0098E API リファレンスマニュアル RSCP 編 R01UW0107J R01UW0107E

rBLE コマンド仕様書 R01AN1376J R01AN1376E

クイックスタート R01AN2767J R01AN2767E

RenesasBLE(Android 版)アプリケーション R01AN3015J R01AN3015E RenesasBLE(iOS 版)アプリケーション R01AN3016J R01AN3016E RenesasBLE アプリケーション対向 RL78/G1D ソフトウェア R01AN3017J (本書) R01AN3017E RL78 ファミリ EEPROM エミュレーション ライブラリ Pack02 ユーザーズマニュアル R01US0068J R01US0068E R01AN3017JJ0200 Rev.2.00 2017.2.3

(2)

略語/略称および用語の説明

略語/略称 フルスペル 備考

ANP Alert Notification Profile ANS Alert Notification Service

API Application Programming Interface ATT Attribute Protocol

BAS Battery Service

BB Base Band

BD_ADDR Bluetooth Device Address BLE Bluetooth low energy BLP Blood Pressure Profile BLS Blood Pressure Service CPP Cycling Power Profile CPS Cycling Power Service

CSCP Cycling Speed and Cadence Profile CSCS Cycling Speed and Cadence Service CSRK Connection Signature Resolving Key CTS Current Time Service

DIS Device Information Service EDIV Encrypted Diversifier FMP Find Me Profile

GAP Generic Access Profile GATT Generic Attribute Profile GLP Glucose Profile

GLS Glucose Service

HCI Host Controller Interface HID Human Interface Device

HIDS HID Service

HOGP HID over GATT Profile HRP Heart Rate Profile HRS Heart Rate Service

HTP Health Thermometer Profile HTS Health Thermometer Service IAS Immediate Alert Service IRK Identity Resolving Key

L2CAP Logical Link Control and Adaptation Protocol

LE Low Energy

LL Link Layer

LLS Link Loss Service

LNP Location and Navigation Profile LNS Location and Navigation Service

LTK Long Term Key

MCU Micro Controller Unit MITM Man-in-the-middle

MTU Maximum Transmission Unit

OOB Out of Band

OS Operating System

PASP Phone Alert Status Profile PASS Phone Alert Status Service PXP Proximity Profile

(3)

RSCP Running Speed and Cadence Profile RSCS Running Speed and Cadence Service RSSI Received Signal Strength Indication ScPP Scan Parameters Profile

ScPS Scan Parameters Service SM Security Manager

SMP Security Manager Protocol

STK Short Term Key

TK Temporary Key

TPS Tx Power Service

UART Universal Asynchronous Receiver Transmitter UUID Universal Unique Identifier

APP Application

CSI Clocked Serial Interface IIC Inter-Integrated Circuit

RSCIP Renesas Serial Communication Interface Protocol

VS Vendor Specific

用語 説明 備考

(4)

目次

1.

概要

... 6

2.

適用

... 6

3.

インストール及びビルド

... 6

3.1 内容物 ... 6 3.2 インストール手順 ... 6 3.2.1 Zip ファイルの展開 ... 6 3.2.2 ライブラリの入手 ... 7 3.2.3 ライブラリ及び関連ファイルのコピー ... 7 3.3 プロジェクトのビルド ... 9

4.

動作概要

... 10

5.

プログラムの構成

... 11

5.1 動作環境と開発環境 ... 11 5.2 モジュール構成 ... 12 5.3 状態遷移 ... 12 5.4 プログラムの動作 ... 13 5.4.1 Initialize ... 13 5.4.2 Advertising 及び Connected ... 14 5.4.3 Bonding ... 16 5.4.4 Ready ... 18 5.4.5 Notifying ... 20 5.5 入出力インタフェース ... 21 5.5.1 LED ... 21 5.5.2 プッシュスイッチ ... 21 5.5.3 ディップスイッチ ... 22

5.5.4 Data Flash への Pairing 情報の保存 ... 22

6.

API 概要 ... 23

6.1 ファイル構成 ... 23 6.2 モジュール一覧 ... 25 6.3 マクロ一覧 ... 25 6.4 デモアプリケーション ... 26 6.4.1 概要 ... 26 6.4.2 API 一覧 ... 26 6.4.3 API ... 27 6.5 Cycling カスタムプロファイル ... 36 6.5.1 概要 ... 36 6.5.2 API 一覧 ... 36 6.5.3 API ... 37 6.6 Running カスタムプロファイル ... 39 6.6.1 概要 ... 39 6.6.2 API 一覧 ... 39 6.6.3 API ... 40

(5)

7.

追加のカスタムプロファイルに対応させるには

... 42

7.1 サービスを定義する ... 42

7.2 プロファイルを実装する ... 45

7.3 プロファイルを有効化する ... 45

(6)

1. 概要

このマニュアルは、Bluetooth® Low Energy プロトコルスタック RenesasBLE アプリケーション対向

RL78/G1D ソフトウェアのインストール、構成、使用方法について記載しています。

2. 適用

このマニュアルの記載内容は、BLE プロトコルスタックが実装された RL78/G1D 評価ボード

(RTK0EN0001D01001BZ)と iOS/Android アプリケーションとの間で行われる Bluetooth Low Energy 通信に適用 します。

3. インストール及びビルド

プログラムは本アプリケーションノートにZIP ファイルで同梱されています。

3.1

内容物

「Bluetooth® Low Energy プロトコルスタック RenesasBLE アプリケーション対向 RL78/G1D ソフトウェア」

ZIP ファイルには、以下に示すものが含まれています。

ドキュメント

- Bluetooth® Low Energy プロトコルスタック RenesasBLE アプリケーション対向 RL78/G1D ソフトウェア

アプリケーションノート(本書) 実行ファイル作成用ファイル一式 - プログラムのソースファイル - CS+ for CA,CX 用プロジェクトファイル - CS+ for CC 用プロジェクトファイル - e2 studio 用プロジェクトファイル

- IAR Embedded Workbench V2 用プロジェクトファイル

3.2

インストール手順

3.2.1

Zip ファイルの展開

ZIP ファイルを任意のフォルダにコピーし、展開してください。展開されるファイル構成に関しては、「6.1 ファイル構成」を参照してください。 開発環境としてe2 studio をご使用になられる場合には、展開するフォルダ及びフォルダパスに対してマル チバイト文字(全角文字)及びブランクを含まないようにしてください。

(7)

3.2.2

ライブラリの入手

本サンプルプログラムは、ビルドをする前に下記のライブラリをルネサスWeb サイトからダウンロードす る必要があります。

 Bluetooth Low Energy Protocol Stack V1.20

https://www.renesas.com/software-tool/bluetooth-low-energy-protocol-stack-rl78-family  RL78 ファミリ EEPROM エミュレーションライブラリ Pack02 https://www.renesas.com/software-tool/data-flash-libraries  以下のパッケージをダウンロードしてください。  RL78 ファミリ EEPROM エミュレーションライブラリ Pack02 パッケージ Ver.2.00(CA78K0R/CC-RL コンパイラ用)

IAR 用のライブラリはインストーラを実行した際に「America/Europe/Middle East/Africa」を選 択してください。バージョンは「IAR compiler version 2.10」を選択してください。

3.2.3

ライブラリ及び関連ファイルのコピー

ご使用になる開発環境用のライブラリ及び関連ファイルを、下記のフォルダパスへコピーを行います。  CS+ for CC または e2 studio(CC-RL)をご使用される場合

 Bluetooth Low Energy Protocol Stack V1.20 (展開先フォルダ)¥workspace¥renesas¥lib - BLE_CONTROLLER_LIB_CCRL.lib - BLE_HOST_lib_CCRL.lib - BLE_PROFILE_CSP_LIB_CCRL.lib - BLE_PROFILE_RSP_LIB_CCRL.lib - BLE_PROFILES_COMMON_LIB_CCRL.lib - BLE_rBLE_lib_CCRL.lib  RL78 ファミリ EEPROM エミュレーションライブラリ Pack02 (展開先フォルダ)¥workspace¥renesas¥src¥driver¥dataflash¥cc_rl - eel.h - eel.lib - eel_types.h - fdl.h - fdl.lib - fdl_types.h

(8)

 CS+ for CA,CX をご使用される場合

 Bluetooth Low Energy Protocol Stack V1.20 (展開先フォルダ)¥workspace¥renesas¥lib - BLE_CONTROLLER_LIB.lib - BLE_HOST_lib.lib - BLE_PROFILE_CSP_LIB.lib - BLE_PROFILE_RSP_LIB.lib - BLE_PROFILES_COMMON_LIB.lib - BLE_rBLE_lib.lib  RL78 ファミリ EEPROM エミュレーションライブラリ Pack02 (展開先フォルダ)¥workspace¥renesas¥src¥driver¥dataflash¥cs - eel.h - eel.lib - eel_types.h - fdl.h - fdl.lib - fdl_types.h

 IAR Embedded Workbench V2 をご使用される場合  Bluetooth Low Energy Protocol Stack V1.20

(展開先フォルダ)¥workspace¥renesas¥lib - BLE_CONTROLLER_lib.a - BLE_HOST_lib.a - BLE_PROFILE_CSP_lib.a - BLE_PROFILE_RSP_lib.a - BLE_PROFILES_COMMON_lib.a - BLE_rBLE_lib.a  RL78 ファミリ EEPROM エミュレーションライブラリ Pack02 (展開先フォルダ)¥workspace¥renesas¥src¥driver¥dataflash¥iar_v2 - eel.h - eel.a - eel_types.h - fdl.h - fdl.a - fdl_types.h

(9)

3.3

プロジェクトのビルド

実行ファイル作成のためのプロジェクトビルド手順は以下の通りです。

1. CS+ for CC、CS+ for CA,CX、IAR Embedded Workbench V2 のいずれかを開発環境としてご使用される 場合は、表3-1 に示すプロジェクトファイルをダブルクリックすると開発環境が起動し、プロジェク トファイルが開かれます。e2 studio の場合は e2 studio を起動し、ワークスペースにプロジェクトファイ

ルをインポートすることで開くことができます。 (展開先フォルダ)¥workspace¥renesas¥tools¥project

3-1 開発環境とプロジェクトファイル

(※1)e2 studio のプロジェクトファイルは、e2 studio のワークスペースにインポートする必要があります。

2. CS+の場合は、[ビルド]メニューより[ビルドプロジェクト]を実行します。また、IAR Embedded Workbench の場合は、[Project]メニューより[Make]を実行します。また、e2 studio の場合は、[プロジェ

クト]メニューから[プロジェクトのビルド]を実行します。 3. ビルドが完了すると、表 3-1 の実行ファイル生成フォルダに実行ファイルが出力されます。 開発環境 プロジェクトファイル/ ワークスペースファイル 実行ファイル 生成フォルダ CS+ for

CC(CC-RL) workspace¥renesas¥tools¥project¥CS_CCRL¥BLE_Demo¥ BLE_Demo.mtpj BLE_Demo¥rBLE_Emb¥DefaultBuild CS+ for CA, CX

(CA78K0R) workspace¥renesas¥tools¥project¥CubeSuite¥BLE_Demo¥ BLE_Demo.mtpj BLE_Demo¥BLE_Emb¥DefaultBuild e2 studio(CC-RL) workspace¥renesas¥tools¥project¥e2studio¥BLE_Demo(※1) BLE_Demo¥rBLE_Emb¥DefaultBuild

IAR Embedded

Workbench V2 workspace¥renesas¥tools¥project¥iar_v2¥BLE_Demo¥ BLE_Demo.eww Debug 時 BLE_Demo¥BLE_Demo¥Debug Release 時

(10)

4. 動作概要

本プログラムは評価ボードをセンサとして、スマートフォン側でランニング・ウォーキングまたはサイク リングの状態を表示するデモアプリケーションです。 評価ボード電源投入前にDIP スイッチでプロファイル(RSCP/CSCP)選択(SW6-1)、暗号化有無(SW6-4)の設 定をします。 評価ボードはPeripheral として動作し、電源を入れると自動的に Advertising を開始します。スマートフォ ンはCentral として動作し、Advertising を行っている評価ボードを発見すると Connect することができます。 また初回接続時はペアリングを行います。 ペアリングが完了すると、評価ボードから測定値(歩数/車輪回転数)が 1 秒毎に送信され、スマートフォン 側に表示されます。ここで、測定値はSW2 を押下するたびに増加します。 スマートフォン側では各種測定値をグラフ表示します。このとき、グラフスケールは10 分/1 時間/1 日 で切り替えが可能です。 またスマートフォン側からカスタムプロファイルを用いて、歩幅及び車輪半径を設定することができます。 図4-1 動作概要

1)設定

2)ペアリング

ペアリング手順実施

プロファイル(SW6-1)、 暗号化有無(SW6-4)を設定

3)操作

SW2 を押下して 歩数/回転数を模擬 測定値をグラフ表示 歩幅/半径を設定

(11)

5. プログラムの構成

本プログラムの概要、構成、及び、使用方法を示します。 【注】 本アプリケーションノートに掲載されているプログラムはサンプル提供となります。量産でお使いに なる場合、お客様の責任で動作確認の上、ご使用ください。

5.1

動作環境と開発環境

本プログラムの開発環境、動作環境について説明します。 本プログラムは、次の環境で動作確認済です。  ハードウェア • RL78/G1D 評価ボード (RTK0EN0001D01001BZ)  対向スマートフォン • iOS  iPhone 5s (iOS 8.4)  iPad Air(iOS 8.4)  iPhone 6 (iOS 10.2)  iPad 第 3 世代(iOS 9.3.5) • Android  HUAWEI G620S (Android OS 4.4.4)  Google Nexus 5 (Android OS 4.4.4)  Google Nexus 6 (Android OS 6.0.1)  Google Nexus 7 2013 (Android OS 5.1.1)  ASUS MeMO Pad7(Android OS 4.4.2)  SAMSUNG GALAXY S5(Android OS 4.4.2)

ソフトウェア

• CS+ for CA,CX(V3.03.00) / RL78 コンパイラ CA78K0R(V1.72) • CS+ for CC(V4.01.00) / RL78 コンパイラ CC-RL(V1.03.00) • e2 studio(V4.3.1) / RL78 コンパイラ CC-RL(V1.03.00)

• IAR Embedded Workbench for Renesas RL78(V2.20.1) • Bluetooth Low Energy Protocol Stack(V1.20)

(12)

5.2

モジュール構成

本プログラムの内部構造を図5-1 に示します。

本プログラムの主なカスタマイズ対象となるのはDemoApp と記載しているアプリケーション部分です。そ の他の詳細に関しては、Bluetooth® Low Energy プロトコルスタック ユーザーズマニュアルを参照してくだ

さい。

rBLE_Core

プロファイル層

Hostスタック

GAP,GAT,SM,L2CAP

RF/BB

Controllerスタック

HCI,LL

RFドライバ

RWKE

OS担

当部)

RWKE API

rBLE API

DemoApp

5-1 プログラムの内部構造

5.3

状態遷移

アプリケーション(DemoApp)の状態遷移図を図 5-2 に示します。各状態における動作詳細を「5.4 プログラ ムの動作」で解説します。

Connected

Initialize

Advertising

Bonding

Notifying

Ready

暗号化有り

暗号化無し

Bonding終了

初期通信終了

Disconnect

Connect

5-2 DemoApp 状態遷移図

(13)

5.4

プログラムの動作

5.4.1

Initialize

本プログラムはarch_main_ent 関数から始まります。この関数ではヒープメモリ、グローバル変数の初期化 の後、OS の機能、ディップスイッチ・プッシュスイッチ・LED の初期化を行い、アプリケーション(DemoApp) の初期化を行います。その後、メインループ処理へ入ります。

アプリケーション(DemoApp)の初期化処理では、rBLE API の初期化を行います。その後、RBLE_GAP_Reset 後にData Flash より Pairing 情報の読み込みを行います。暗号化無しの場合は RBLE_GAP_Broadcast_Enable 関 数をコールします。

暗号化有りの場合にはセキュリティ設定を行います。RBLE_GAP_Set_Security_Request 関数へ RBLE_GAP_SEC1_NOAUTH_PAIR_ENC を渡して認証無しの暗号化ペアリングとし、

RBLE_GAP_Set_Bonding_Mode 関数へ RBLE_GAP_BONDABLE を渡して Bonding を有効とします。その後に RBLE_GAP_Broadcast_Enable 関数をコールして Advertising 状態へ遷移し、BLE Peripheral 動作を開始します。

Initialize 状態におけるシーケンスを図 5-3 へ示します。 アプリケーションの初期化 プッシュスイッチ、ディップスイッチ、 DemoApp_Init LEDの初期化 センサタイプの判定 rBLE APIの初期化 RBLE_Init rwble_schedule rBLE初期化完了通知 DemoApp_CallBack RBLE_GAP_Reset rwble_schedule DemoApp_GAP_ResetResultCB RBLE_VS_Flash_Management rwble_schedule DemoApp_VS_FlashManagementCompCB RBLE_VS_Flash_Access rwble_schedule DemoApp_VS_FlashAccessCompCB RBLE_VS_Flash_Management rwble_schedule DemoApp_VS_FlashManagementCompCB RBLE_GAP_Set_Security_Request rwble_schedule DemoApp_GAP_SetSecReqCompCB RBLE_GAP_Set_Bonding_Mode rwble_schedule DemoApp_GAP_SetBondModeCompCB RBLE_GAP_Broadcast_Enable

arch_main_ent DemoApp rBLE API

SW6-4 ON(右側) [暗号化有り] [Pairing情報読み込み] SW6-4 ON(右側)/ OFF(左側) 共通 図5-3 Initialize シーケンス

(14)

5.4.2

Advertising 及び Connected

Advertising 状態へ遷移すると、アプリケーションは一定周期で Advertising を送信し、Central からの Connect を待ち受けます。Central からの Connect 要求を受信すると、rBLE API は Connect 処理を実施し、Connect に 成功するとDemoApp_GAP_ConnectCompCB 関数により Connect 完了を通知します。 Connect 完了後は評価ボードで設定されているセンサの種類に従ってプロファイルの有効化処理を行いま す。有効化処理が完了するとReady 状態へ遷移します。 Advertising 状態のシーケンスを図 5-4 に示します。 Advertisingの送信 Connect要求 Connect通知 DemoApp_GAP_ConnectCompCB センサーの有効化 RBLE_RSCP_Sensor_Enable DemoApp_RSCP_SensorEnableCompCB DemoApp_RunCustom_Enable RBLE_GATT_Enable DemoCustom_RunProfile_EndEnableComplete RBLE_CSCP_Sensor_Enable DemoApp_CSCP_SensorEnableCompCB DemoCustom_CyclProfile_Enable RBLE_GATT_Enable DemoCustom_CyclProfile_EndEnableComplete Peripheral rBLE API DemoApp Central SW6-1 ON(右側) [RSCP] [CSCP] SW6-1 OFF(左側)5-4 Advertising シーケンス

(15)

ここで省電力化のため、Advertising のパラメータは Advertising している時間により変化させます。これは 電池駆動で常時通電し動作しているセンサからのデータ収集などを想定し、その電力消費を抑える必要があ る機器の例を示しています。 Advertising の状態一覧と状態遷移を表 5-1 と図 5-5 に示します。 表5-1 Advertising 状態一覧 No. 状態 パラメータ 期間 1 通常Advertising AdvIntervalMin:30msec AdvIntervalMax:60msec AdvFiltPolicy:すべて許可 最大30 秒 2 省電力Advertising AdvIntervalMin:1000msec AdvIntervalMax:1200msec AdvFiltPolicy: すべて許可 No.1 の後に Connect ま で無制限

[1]

通常

Adv

Connected

[2]

省電力

Adv

30秒経過

Connect

Connect

Disconnect

電源投入

5-5 Advertising 状態遷移

(16)

5.4.3

Bonding

Central は Connect した直後にデータ通信を開始しようとしますが、これに対して本プログラムは Insufficient Authentication エラーを返します。これによりスマートフォンは Bonding シーケンスを開始します。

rBLE は Bonding 要求を受け取ると DemoApp_GAP_BondingReqIndCB 関数によりアプリケーションへ通知 します。アプリケーションはこれに対しRBLE_GAP_Bonding_Response 関数により Bonding 開始を rBLE へ通 知します。その後、DemoApp_SM_LtkReqIndCB 関数により LTK 要求を受け、LTK の生成処理を行い、 RBLE_SM_Ltk_Req_Resp 関数により応答します。

Bonding が完了すると、DemoApp_GAP_BondingCompCB 関数が呼び出され、Pairing 情報の保存を開始しま す。その後、Ready 状態へ遷移します。

Bonding 状態のシーケンスを図 5-6 に示します。

データ通信 Insufficient Authentication Error

Bonding要求 Bonding要求通知 DemoApp_GAP_BondingReqIndCB Bonding応答 RBLE_GAP_Bonding_Response Bonding応答 LTK要求通知 DemoApp_SM_LtkReqIndCB LTK応答 RBLE_SM_Ltk_Req_Resp LTK応答 キー通知 DemoApp_SM_KeyIndCB Bonding完了通知 DemoApp_GAP_BondingCompCB RBLE_VS_Flash_Management DemoApp_VS_FlashManagementCompCB RBLE_VS_Flash_Access DemoApp_VS_FlashAccessCompCB RBLE_VS_Flash_Management DemoApp_VS_FlashManagementCompCB Peripheral rBLE API DemoApp Central IRK処理 有効 [Pairing情報書き込み] SW6-4 ON(右側)5-6 Bonding シーケンス

(17)

(補足) Pairing 情報の読み込み/書き込みを行う際に Data Flash へアクセスを行いますが、その際に DF_ERR_POOL_FULL エラーが発生する場合があります。その場合は RBLE_VS_Flash_Operation 関数を使用 してData Flash のクリーンナップを実行し、再度 RBLE_VS_Flash_Access を実行して Pairing 情報の読み込み /書き込みを行います。 RBLE_VS_Flash_Management DemoApp_VS_FlashManagementCompCB RBLE_VS_Flash_Access DemoApp_VS_FlashAccessCompCB RBLE_VS_Flash_Operation DemoApp_VS_FlashOperationCompCB RBLE_VS_Flash_Access DemoApp_VS_FlashAccessCompCB RBLE_VS_Flash_Management DemoApp_VS_FlashManagementCompCB Peripheral rBLE API DemoApp [Pairing情報読み込み/書き込み] [DF_ERR_POOL_FULL発生時の 復旧処理]5-7 Data Flash アクセス時の復旧処理

(18)

5.4.4

Ready

Ready 状態では、Central からの初期通信を待ちます。一般に Central は Peripheral から必要な Service 情報、 及び、Characteristic 情報を取得し、適宜 Characteristic の Read/Write 処理を行います。

本プログラムではCSCP・RSCP の持つ特定の Characteristic の Notify 設定を有効とした場合に Notifying 状 態へ遷移します。Measurement の Notify 設定が有効化されると Measurement 有効化処理を開始します。ここ では初回のMeasurement 送信と周期タイマを開始します。 Ready 状態のシーケンスを図 5-8、図 5-9 に示します。

Service探索

Service探索応答

Characteristic探索

Characteristic探索応答

Characteristic Read要求

Characteristic Read応答

Characteristic Set Notify要求

Characteristic Set Notify応答

Notify設定変更通知

DemoApp_RSCP_SensorCfgNotifyIndCB

Notify設定変更通知

DemoApp_CSCP_SensorCfgNotifyIndCB

Peripheral

rBLE API

DemoApp

Central

SW6-1 ON(右側)

[RSCP]

[CSCP]

SW6-1 OFF(左側)5-8 Ready シーケンス

(19)

Measurement有効化処理 DemoApp_SendTimer 初回のMeasurement送信 RBLE_RSCP_Sensor_Send_Measurements Measurement送信 初回のMeasurement送信 RBLE_CSCP_Sensor_Send_Measurements Measurement送信 周期タイマ開始 ke_timer_set Peripheral rBLE API DemoApp Central SW6-1 ON(右側) [RSCP] [CSCP] SW6-1 OFF(左側)5-9 Ready シーケンス(続き)

(20)

5.4.5

Notifying

本プログラムはNotifying 状態では定期的に Measurement を送信します。 周期タイマが満了するとDemoApp_SendTimer 関数がコールされます。 Notifying 状態のシーケンスを図 5-10 に示します。 Measurement有効化処理 DemoApp_SendTimer 初回のMeasurement送信 RBLE_RSCP_Sensor_Send_Measurements Measurement送信 初回のMeasurement送信 RBLE_CSCP_Sensor_Send_Measurements Measurement送信 周期タイマ開始 ke_timer_set Peripheral rBLE API DemoApp Central SW6-1 ON(右側) [RSCP] [CSCP] SW6-1 OFF(左側)5-10 Notifying シーケンス

(21)

5.5

入出力インタフェース

5.5.1

LED

本アプリケーションは評価ボード上のLED を以下のように点灯させ、スマートフォンとの接続ステータス や接続設定を示します。 表5-2 LED の点灯/消灯/点滅仕様 LED 番号 説明 LED1(P120) スマートフォンとの接続状況を示す。動作中は常に点滅または点灯していて消 灯しない。 点灯 スマートフォンと接続状態 点滅 Advertising の実行中 スマートフォンとの接続待ち状態 LED2(P147) スマートフォンとの接続が暗号化状態であるかを示す。 点灯 暗号化状態である 消灯 暗号化状態ではない LED3(P03) 暗号化の設定の有無を示す。DIPSW の SW6-4 と連動する。 点灯 暗号化あり 消灯 暗号化なし LED4(P60) 使用するプロファイルの設定を示す。DIPSW の SW6-1 と連動する。 点灯 RSCP を使用する 消灯 CSCP を使用する

5.5.2

プッシュスイッチ

評価ボードの入力にはHW 割り込みが検出できる SW2(INTP5)のみ使用しており、スマートフォンとの接 続後にSW2 を押下することで、擬似的にセンサデータを検出する模擬動作を行います。 以下に、プロファイルと送出する擬似センサデータの種別を示します。 表5-3 SW2 の仕様 プロファイル 擬似センサデータ種別 RSCP 歩数データ 1 回の押下で 1 歩として検出する CSCP 車輪回転数データ 1 回の押下で 1 回転として検出する

(22)

5.5.3

ディップスイッチ

評価ボード上のSW6 は、動作するプロファイルや暗号化の有無の選択に使用します。 以下にSW6 の状態と選択される設定を示します。 表5-4 SW6 の仕様 SW6 番号 設定 SW6-1(P10) プロファイルの選択 ON(右側) RSCP の動作 OFF(左側) CSCP の動作 SW6-2(―) 未使用 SW6-3(―) 未使用 SW6-4(P02) 暗号化の選択 ON(右側) 暗号化有り OFF(左側) 暗号化無し

5.5.4

Data Flash への Pairing 情報の保存

Pairing 情報は BLE スタックで利用している EEPROM エミュレーションライブラリ Pack02 を使用してデー タフラッシュに格納します。Pairing は Just Works で実行し、交換された LTK 情報をデータフラッシュに格納 します。 表 5-5 にデータフラッシュメモリに格納するデータの詳細を示します。 5-5 データフラッシュメモリへの格納データ データID データ サイズ 読み込み 書き込み 0x02(※1) Paring 情報 ・アプリケーション開始時にRAM の 変数にコピーする。 ・アプリケーション接続切断後に Pairing 情報が更新された場合は 新しいPairing 情報を書き込み 対向デバイスアドレス 6 byte 対向デバイスアドレスタイプ 1 byte セキュリティ状態 1 byte ローカル暗号化情報 30byte (※2) (※1)データ ID 0x01 は BLE スタックにて BD アドレスをデータフラッシュに保存する ID として使用されています。

(※2) USE_DEMO_IRK_EXEC マクロを有効にして IRK 処理を実施する場合は IRK キー情報 28byte を追加して 58byte となります。

データフラッシュへの書き込み方法はBLE スタックで使用しているデータフラッシュドライバを使用しま す。詳細に関しては、「RL78 ファミリ EEPROM エミュレーションライブラリ Pack02 ユーザーズマニュア ル」を参照してください。

(23)

6. API 概要

プロジェクトのファイル構成とプログラムを構成するAPI のうち主要なものについて説明します。 BLE ソフトウェアの API に関しては、Bluetooth® Low Energy プロトコルスタック API リファレンスマニュ

アル基本編、CSCP 編、RSCP 編を参照してください。

6.1

ファイル構成

プログラムのファイル構成を以下に記述します。 (※1)本アプリケーションで追加したもの bleip Bluetooth ディレクトリ └─src ソースディレクトリ ├─common Bluetooth 一般ディレクトリ │ co_bt.h Bluetooth 一般定義 │ └─rwble BLE ディレクトリ rwble.h BLE エントリポイント rwble_config.h BLE プロトコルスタック構成 rBLE rBLE ディレクトリ └─src rBLE ソースディレクトリ ├─demo_app デモアプリケーション(本プログラム)ディレクトリ(※1) │ demo_api_custom.h カスタムプロファイルAPI(※1) │ demo_app.c デモアプリケーション(※1) │ demo_app.h デモアプリケーション定義(※1) │ demo_console.c デモアプリケーションコンソール(※1) │ demo_console.h デモアプリケーションコンソール定義(※1) │ demo_custom_cycl_profile.c Cycling カスタムプロファイル実装(※1) │ demo_custom_run_profile.c Running カスタムプロファイル定義(※1) │ demo_led.c デモアプリケーションLED 制御(※1) │ demo_led.h デモアプリケーションLED 制御定義(※1) │ demo_parameter.c デモアプリケーションパラメータ(※1) │ demo_sw.c デモアプリケーションスイッチ制御(※1) │ demo_sw.h デモアプリケーションスイッチ制御定義(※1) │ ├─include rBLE ヘッダディレクトリ │ └─sample_app サンプルプログラムディレクトリ

(24)

(※2)本サンプルアプリケーションのリリースパッケージには BLE プロトコルスタックのライブラリを含みません。 別途BLE プロトコルスタックのリリースパッケージを別途入手いただき、同梱されるライブラリをコピーして ください。 (※3)本アプリケーションで修正したもの renesas ├─config リンク構成ディレクトリ │ ├─lib プロファイルライブラリディレクトリ(※2) ├─src ソースファイルディレクトリ │ │ types.h 型定義 │ ├─arch アーキテクチャ別実装 │ │ └─rl78 r178 ディレクトリ │ │ │ arch.h アーキテクチャ依存定義

│ │ arch_main.c BLE の main プログラム(※3)

│ │ config.h BLE スタック構成 │ │ db_handle.h プロファイル用DB ハンドル定義(※3) │ │ hw_config.h H/W 構成 │ │ ke_conf.c カーネルタスク管理 │ │ │ main.c main プログラム(エントリポイント) │ │ prf_config.c プロファイルパラメータ構成(※3) │ │ prf_config.h プロファイルパラメータ構成定義(※3) │ │ prf_config_host.c プロファイル用構成パラメータ設定 │ │ │ prf_sel.h プロファイル選択設定(※3) │ │ rble_core_config.c rBLE_Core 構成 │ │ rble_core_config.h rBLE_Core 構成ヘッダ │ │ │ rwble_mem.c BLE スタックメモリ管理 │ │ │ rwble_mem.h BLE スタックメモリ管理ヘッダ

│ │ rwke_api.h RWKE API とシステム関数定義

│ │ │ │ │ └─ll ビルトイン関数ディレクトリ │ │ ll.h ビルトイン関数宣言 │ ├─compiler コンパイラ関連ディレクトリ │ └─driver ドライバディレクトリ

└─dataflash Data Flash ドライバディレクトリ

eel_descriptor_t02.c EEL ディスクリプタ・ソースファイル(※3) eel_descriptor_t02.h EEL ディスクリプタ・ヘッダファイル(※3) └─tools ツールディレクトリ └─project プロジェクトディレクトリ └─XXXXXX 開発環境ディレクトリ └─BLE_Demo 本プログラムのプロジェクトディレクトリ └ BLE_Demo.mtpj プロジェクトファイル

(25)

6.2

モジュール一覧

プログラムの主要なモジュールを表6-1 に示します。 6-1 モジュール一覧 モジュール ソース 概要 デモ アプリケーション rBLE¥src¥demo_app¥demo_app.c デモアプリケーションの実 装。アプリケーション層のメ イン処理。 主にGATT や SM からのコー ルバックを処理する。 Cycling カスタム プロファイル rBLE¥src¥demo_app¥demo_custom_cycl_profile.c Cycling カスタムプロファイル の実装。 Running カスタム プロファイル rBLE¥src¥demo_app¥demo_custom_run_profile.c Running カスタムプロファイ ルの実装。

6.3

マクロ一覧

プログラムの設定可能なマクロを表6-2 に示します。 表6-2 マクロ一覧 マクロ 定義箇所 概要 DEMO_APP _DEBUG_PRINT rBLE¥src¥demo_app¥demo_console.h USB シリアルに対して文字列によるデ バッグ出力を行います。デフォルトは 「デバッグ出力無効」です。 定義:デバッグ出力有効。DEEP_SLEEP 無効。 未定義:デバッグ出力無効。 DEEP_SLEEP 有効。 CFG_DEMO_APP CA78K0R(ビルド・ツール)/ CC-RL(ビルド・ツール) / IAR C/C++ Compiler(ビルド・ツール)共通: コンパイル・オプション -定義マクロ デモアプリケーション処理部はこのマ クロで区切ってあります。ソースコード を確認する際に指標にしてください。デ フォルトは「DemoApp 動作有効」です。 定義:DemoApp 動作有効 未定義:DemoApp 動作無効 USE_DEMO _CUSTOM_PROFILE CA78K0R(ビルド・ツール)/ CC-RL(ビルド・ツール)共通/ IAR C/C++ Compiler(ビルド・ツール)共通: コンパイル・オプション -定義マクロ カスタムプロファイルの処理部はこの マクロで区切ってあります。ソースコー ドを確認する際に指標にしてください。 デフォルトは「カスタムプロファイル動 作有効」です。 定義:カスタムプロファイル動作有効 未定義:カスタムプロファイル動作無効 USE_DEMO_IRK_EXEC CA78K0R(ビルド・ツール)/ CC-RL(ビルド・ツール)共通/ IAR C/C++ Compiler(ビルド・ツール)共通: コンパイル・オプション -定義マクロ IRK を用いたアドレス解決処理部はこ のマクロで区切ってあります。デフォル トは「アドレス解決処理を実施しない」 です。 定義:アドレス解決処理を実施する 未定義:アドレス解決処理を実施しない

(26)

6.4

デモアプリケーション

6.4.1

概要

アプリケーション層として、各種初期化処理を行い、システムやrBLE API からのコールバックのハンドリ ングを行います。

6.4.2

API 一覧

デモアプリケーション(demo_app.c)の主要 API の一覧を表 6-3 に示します。 6-3 デモアプリケーション API 一覧 関数名 概要 DemoApp_Init デモアプリケーションの初期化 DemoApp_GAP_Reset DemoApp_GAP_ResetResultCB GAP 初期化処理 DemoApp_GAP_CallBack GAP コールバック DemoApp_SM_CallBack SM コールバック DemoApp_GAP_SetSecurityRequest DemoApp_GAP_SetSecReqCompCB セキュリティ要求 DemoApp_GAP_SetBondingMode DemoApp_GAP_SetBondModeCompCB Bonding 設定 DemoApp_GAP_Broadcast_Enable Advertising 開始 DemoApp_GAP_ConnectCompCB Connect 通知 DemoApp_GAP_StartSensor センサ開始 DemoApp_GAP_BondingReqIndCB Bonding 要求通知 DemoApp_GAP_BondingResp Bonding 応答 DemoApp_SM_LtkReqIndCB キー交換フェーズのLTK 要求通知 DemoApp_SM_LtkReqResp キー交換フェーズのLTK 応答 DemoApp_SM_LtkReqForEncIndCB ペアリング済みでのLTK 要求通知 DemoApp_SM_LtkReqForEncResp ペアリング済みでのLTK 応答 DemoApp_SM_KeyIndCB キー通知 DemoApp_GAP_BondingCompCB Bonding 完了通知 DemoApp_GAP_DisconnectCompCB Disconnect 通知 DemoApp_CSCP_SensorEnable DemoApp_CSCP_SensorEnableCompCB CSCP センサ有効化 DemoApp_CyclCustom_CallBack Cycling カスタムコールバック DemoApp_CyclCustom_Enable Cycling カスタム有効化 DemoApp_CyclCustom_ChgCharIndCB Cycling カスタム変更通知 DemoApp_RSCP_SensorEnable DemoApp_RSCP_SensorEnableCompCB RSCP センサ有効化 DemoApp_RunCustom_CallBack Running カスタムコールバック DemoApp_RunCustom_Enable Running カスタム有効化 DemoApp_RunCustom_ChgCharIndCB Running カスタム変更通知 DemoApp_SendTimer Measurement 周期処理 DemoApp_RSCP_SendMeasurements RSCPMeasurement 送信 DemoApp_CSCP_SendMeasurements CSCPMeasurement 送信 DemoApp_VS_CallBack VS コールバック

DemoApp_VS_FlashManagementCompCB Data Flash アクセス管理実行結果通知 DemoApp_VS_FlashAccessCompCB Data Flash アクセスコマンド実行結果通知 DemoApp_VS_FlashOperationCompCB Data Flash ブロック操作実行結果通知

(27)

6.4.3

API

デモアプリケーション(demo_app.c)の主要 API の概要を以下に示します。 void DemoApp_Init( void )

概要 デモアプリケーションの初期化

説明

・アプリケーション層の初期化をします。

・スイッチやLED などの周辺機能の初期化を行います。

・最後にDemoApp_CallBack を指定して rBLE API の初期化を行います。初期化が完 了するとDemoApp_CallBack がコールされ、その中で DemoApp_GAP_Reset をコー ルします。

引数 なし

戻り値 なし

static void DemoApp_GAP_Reset( void ) 概要 GAP 初期化処理 説明 ・DemoApp_GAP_CallBack と DemoApp_SM_CallBack のコールバック関数を指定し て RBLE_GAP_Reset 関 数 を コ ー ル し ま す 。 GAP の 初 期 化 が 完 了 す る と DemoApp_GAP_CallBack を経由して DemoApp_GAP_ResetResultCB がコールされ ます。 ・デモアプリケーションの状態変数を初期化します。 引数 なし 戻り値 なし

static void DemoApp_GAP_ResetResultCB( RBLE_GAP_EVENT *event ) 概要 GAP 初期化処理完了通知

説明

・RBLE_GAP_Reset が完了したことの通知を受け取ります。

・RBLE_VS_FlashManagement 関数をコールして Data Flash から Pairing 情報の Read を行います。

引数 RBLE_GAP_EVENT *event イベント情報

戻り値 なし

static void DemoApp_GAP_CallBack( RBLE_GAP_EVENT *event ) 概要 GAP コールバック 説明 ・GAP からの各種通知を受け取ります。 ・デモアプリケーションはevent の type を検証して、デモアプリケーションが実装す る適切なコールバック関数をコールします。 引数 RBLE_GAP_EVENT *event イベント情報 戻り値 なし

(28)

static void DemoApp_SM_CallBack( RBLE_SM_EVENT *event ) 概要 SM コールバック 説明 ・SM(セキュリティマネージャー)からの各種通知を受け取ります。 ・デモアプリケーションはevent の type を検証して、デモアプリケーションが実装す る適切なコールバック関数をコールします。 引数 RBLE_SM_EVENT *event イベント情報 戻り値 なし

static void DemoApp_GAP_SetSecurityRequest( void )

概要 セキュリティ要求 説明 ・SM へセキュリティ設定を行います。 ・RBLE_GAP_SEC1_NOAUTH_PAIR_ENC を指定して RBLE_GAP_Set_Security_Request 関数をコールします。処理が完了すると DemoApp_SM_CallBack を経由して DemoApp_GAP_SetSecReqCompCB がコール されます。 引数 なし 戻り値 なし

static void DemoApp_GAP_SetSecReqCompCB( RBLE_GAP_EVENT *event )

概要 セキュリティ要求完了通知

説明 ・RBLE_GAP_Set_Security_Request が完了したことの通知を受け取ります。 ・DemoApp_GAP_SetBondingMode 関数をコールして Bonding 設定を行います。 引数 RBLE_GAP_EVENT *event イベント情報

戻り値 なし

static void DemoApp_GAP_SetBondingMode( void ) 概要 Bonding 設定 説明 ・RBLE_GAP_BONDABLE を指定して RBLE_GAP_Set_Bonding_Mode 関数をコー ルし、Bonding を有効にします。処理が完了すると DemoApp_GAP_CallBack を経由 してDemoApp_GAP_SetBondModeCompCB がコールされます。 引数 なし 戻り値 なし

(29)

static void DemoApp_GAP_SetBondModeCompCB( RBLE_GAP_EVENT *event ) 概要 Bonding 設定完了通知 説明 ・RBLE_GAP_Set_Bonding_Mode が完了したことの通知を受け取ります。 ・DemoApp_GAP_Broadcast_Enable 関数をコールして Advertising 状態へ遷移しま す。 引数 RBLE_GAP_EVENT *event イベント情報 戻り値 なし

static void DemoApp_GAP_Broadcast_Enable( uint8_t advState ) 概要 Advertising 開始

説明 ・RBLE_GAP_Broadcast_Enable 関数をコールして Advertising を開始します。 ・タイマを開始し、30 秒経過後に Advertising の周期を変更します。

引数 uint8_t advState Advertising のモード指定

戻り値 なし

static void DemoApp_GAP_ConnectCompCB( RBLE_GAP_EVENT *event ) 概要 Connect 通知

説明 ・Central と Connect したことの通知を受け取ります。

・DemoApp_GAP_StartSensor をコールして Ready 状態へ遷移します。 引数 RBLE_GAP_EVENT *event イベント情報

戻り値 なし

static void DemoApp_GAP_StartSensor( void )

概要 センサ開始 説明 ・評価ボードのプロファイル設定に従い、RSCP の場合は DemoApp_RSCP_SensorEnable 関数、CSCP の場合は DemoApp_CSCP_SensorEnable 関数をコールしてセンサを開始します。 引数 なし 戻り値 なし

(30)

static void DemoApp_GAP_BondingReqIndCB( RBLE_GAP_EVENT *event ) 概要 Bonding 要求通知 説明 ・Central から Bonding 要求を受信したことの通知を受けます。 ・DemoApp_GAP_BondingResp をコールして Bonding 応答を行います。 引数 RBLE_GAP_EVENT *event イベント情報 戻り値 なし

static void DemoApp_GAP_BondingResp( void ) 概要 Bonding 応答

説明 ・RBLE_GAP_Bonding_Response 関数をコールして Bonding シーケンスを開始しま す。

引数 なし

戻り値 なし

static void DemoApp_SM_LtkReqIndCB( RBLE_SM_EVENT *event ) 概要 キー交換フェーズのLTK 要求通知

説明 ・キー交換フェーズのLTK 要求の通知を受けます。

・DemoApp_SM_LtkReqResp をコールして LTK 応答を行います。 引数 RBLE_SM_EVENT *event イベント情報

戻り値 なし

static void DemoApp_SM_LtkReqResp( void ) 概要 キー交換フェーズのLTK 応答

説明 ・LTK の生成処理を行い、RBLE_SM_Ltk_Req_Resp 関数をコールして LTK 応答を 行います。

引数 なし

戻り値 なし

static void DemoApp_SM_LtkReqForEncIndCB( RBLE_SM_EVENT *event ) 概要 ペアリング済みでのLTK 要求通知

説明 ・LTK 要求の通知を受けます。

・DemoApp_SM_LtkReqForEncResp をコールして LTK 応答を行います。 引数 RBLE_SM_EVENT *event イベント情報

(31)

static void DemoApp_SM_LtkReqForEncResp(RBLE_SM_EVENT *event ) 概要 ペアリング済みでのLTK 応答 説明 ・RBLE_SM_Ltk_Req_Resp 関数をコールして、DemoApp_VS_FlashAccessCompCB 関数で変数に読み出したLTK 情報をセットして LTK 応答を行います。LTK 応答の際 に 変 数 に 保 持 し て い る LTK 情 報 と 、 RBLE_SM_EVENT イ ベ ン ト 情 報 中 の RBLE_EVT_SM_Key_t 構造体の ediv と nb の値を比較して一致することを確認し、 要求相手がキーを交換した相手か確認します。相手が異なる場合はエラーレスポンス を返却します。 引数 RBLE_SM_EVENT *event イベント情報 戻り値 なし

static void DemoApp_SM_KeyIndCB( RBLE_SM_EVENT *event )

概要 キー通知 説明 ・キー通知を受けます。 ・デモアプリケーションで管理するキー情報を更新します。 ・本関数は USE_DEMO_IRK_EXEC マクロにより、通常はプリプロセスで無効とな ります。 引数 RBLE_SM_EVENT *event イベント情報 戻り値 なし

static void DemoApp_GAP_BondingCompCB( RBLE_GAP_EVENT *event ) 概要 Bonding 完了通知

説明

Bonding シーケンスが完了したことの通知を受けます。

・RBLE_VS_Flash_Management をコールして、Pairing 情報を Data Flash に保存す る処理を開始します。

引数 RBLE_GAP_EVENT *event イベント情報

戻り値 なし

static void DemoApp_GAP_DisconnectCompCB( RBLE_GAP_EVENT *event ) 概要 Disconnect 通知 説明 ・送信タイマを停止します。 ・ペアリングを実施してLTK がある場合、データフラッシュへ Pairing 情報を保存し ます。 ・DemoApp_GAP_Broadcast_Enable 関数をコールして Advertising 状態へ遷移し Advertise を開始します。 引数 RBLE_GAP_EVENT *event イベント情報 戻り値 なし

(32)

static void DemoApp_CSCP_SensorEnable( void ) 概要 CSCP センサ有効化 説明 ・RBLE_CSCP_Sensor_Enable 関数をコールして CSCP センサを有効化します。 有効化が完了するとDemoApp_CSCP_CallBack 関数経由で DemoApp_CSCP_SensorEnableCompCB 関数がコールされます。 ・DemoApp_CyclCustom_Enable 関数をコールして Cycling カスタムプロファイルの 有効化を行います。 引数 なし 戻り値 なし static

void DemoApp_CSCP_SensorEnableCompCB( RBLE_CSCPS_EVENT *event ) 概要 CSCP センサ有効化完了通知 説明 ・RBLE_CSCP_Sensor_Enable 関数をコールして CSCP センサを有効化します。 有効化が完了するとDemoApp_CSCP_CallBack 関数経由で DemoApp_CSCP_SensorEnableCompCB 関数がコールされます。 引数 RBLE_CSCPS_EVENT *event イベント情報 戻り値 なし

static void DemoApp_CyclCustom_CallBack(

DEMO_CUSTOM_CYCL_PROFILE_EVENT *event ) 概要 Cycling カスタムコールバック 説明 ・Cycling カスタムプロファイルからの各種通知を受け取ります。 ・デモアプリケーションはevent の type を検証して、デモアプリケーションが実装す る適切なコールバック関数をコールします。 引数 DEMO_CUSTOM_CYCL_PROFILE_EVENT *event イベント情報 戻り値 なし

static void DemoApp_CyclCustom_Enable( void ) 概要 CSCP カスタムプロファイル有効化 説明 ・DemoCustom_CyclProfile_Enable 関数をコールして CSCP カスタムプロファイル を有効化します。有効化が完了すると DemoApp_CyclCustom_CallBack 関数経由で DemoApp_CyclCustom_EnableCompCB 関数がコールされます。 引数 なし 戻り値 なし

(33)

static void DemoApp_CyclCustom_ChgCharIndCB( DEMO_CUSTOM_CYCL_PROFILE_EVENT *event ) 概要 Cycling カスタム変更通知 説明 ・Cycling カスタムの値が変更された際に通知されます。 引数 DEMO_CUSTOM_CYCL_PROFILE_EVENT *event イベント情報 戻り値 なし

static void DemoApp_RSCP_SensorEnable( void ) 概要 RSCP センサ有効化 説明 ・RBLE_RSCP_Sensor_Enable 関数をコールして RSCP センサを有効化します。 有効化が完了するとDemoApp_RSCP_CallBack 関数経由で DemoApp_RSCP_SensorEnableCompCB 関数がコールされます。 ・DemoApp_RunCustom_Enable 関数をコールして Running カスタムプロファイル の有効化を行います。 引数 なし 戻り値 なし

static void DemoApp_RSCP_SensorEnableCompCB( RBLE_RSCPS_EVENT *event ) 概要 RSCP センサ有効化完了通知 説明 ・RBLE_RSCP_Sensor_Enable 関数をコールして RSCP センサを有効化します。 有効化が完了するとDemoApp_RSCP_CallBack 関数経由で DemoApp_RSCP_SensorEnableCompCB 関数がコールされます。 引数 RBLE_RSCPS_EVENT *event イベント情報 戻り値 なし

static void DemoApp_RunCustom_CallBack(

DEMO_CUSTOM_RUN_PROFILE_EVENT *event ) 概要 Running カスタムコールバック 説明 ・Running カスタムプロファイルからの各種通知を受け取ります。 ・デモアプリケーションはevent の type を検証して、デモアプリケーションが実装す る適切なコールバック関数をコールします。 引数 DEMO_CUSTOM_RUN_PROFILE_EVENT *event イベント情報 戻り値 なし

(34)

static void DemoApp_RunCustom_Enable( void ) 概要 RSCP カスタムプロファイル有効化 説明 ・DemoCustom_RunProfile_Enable 関数をコールして RSCP カスタムプロファイル を有効化します。有効化が完了すると DemoApp_RunCustom_CallBack 関数経由で DemoApp_RunCustom_EnableCompCB 関数がコールされます。 引数 なし 戻り値 なし

static void DemoApp_RunCustom_ChgCharIndCB( DEMO_CUSTOM_RUN_PROFILE_EVENT *event ) 概要 Running カスタム変更通知

説明 ・Running カスタムの値が変更された際に通知されます。

引数 DEMO_CUSTOM_RUN_PROFILE_EVENT *event イベント情報

戻り値 なし

static void DemoApp_SendTimer( void )

概要 送信タイマ満了通知

説明 ・送信タイマが満了した際に通知されます。

引数 なし

戻り値 なし

static void DemoApp_CSCP_SendMeasurements( void ) 概要 CSC 測定値送信

説明 ・CSC 測定値を計算して送信します。

引数 なし

戻り値 なし

static void DemoApp_RSCP_SendMeasurements( void ) 概要 RSC 測定値送信

説明 ・RSC 測定値を計算して送信します。

引数 なし

(35)

static void DemoApp_VS_CallBack(RBLE_VS_EVENT *event ) 概要 VS コールバック 説明 ・VS からの各種通知を受け取ります。 ・デモアプリケーションはevent の type を検証して、デモアプリケーションが実装す る適切なコールバック関数をコールします。 引数 RBLE_VS_EVENT *event イベント情報 戻り値 なし

static void DemoApp_VS_FlashManagementCompCB(RBLE_VS_EVENT *event ) 概要 Data Flash アクセス管理機能の実行完了通知

説明

・RBLE_VS_Flash_Management が完了したことの通知を受け取ります。 ・実行コマンドがRBLE_VS_FLASH_CMD_START だった場合には

RBLE_VS_Flash_Access 関数をコールして Data Flash へ Read/Write を行います。 ・実行コマンドがRBLE_VS_FLASH_CMD_STOP だった場合、暗号化が有効の場合 にはDemoApp_GAP_SetSecurityRequest 関数をコールしてセキュリティ設定を行い ます。暗号化が無効の場合、DemoApp_GAP_Broadcast_Enable 関数をコールして Advertising 状態へ遷移します。 引数 RBLE_VS_EVENT *event イベント情報 戻り値 なし

static void DemoApp_VS_FlashAccessCompCB(RBLE_VS_EVENT *event ) 概要 Data Flash の Read/Write 完了通知

説明

・RBLE_VS_Flash_Access が完了したことの通知を受け取ります。

・Read だった場合には、Pairing 情報を内部変数に格納し、Advertising を開始します。 ・Write だった場合には、Ready 状態へ遷移します。

・実行結果がエラーだった場合、Data Flash のクリーンナップが必要なため、 RBLE_VS_Flash_Operation 関数を実行してデータ配置整理を行います。 引数 RBLE_VS_EVENT *event イベント情報

戻り値 なし

static void DemoApp_VS_FlashOperationCompCB (RBLE_VS_EVENT *event ) 概要 Data Flash のブロック操作の実行完了通知 説明 ・RBLE_VS_Flash_Operation が完了したことの通知を受け取ります。 ・実行したコマンドがRBLE_VS_FLASH_CMD_CLEANUP だった場合、データ配置 整理が完了したため、RBLE_VS_Flash_Access 関数によって実行できなかった Pairing 情報の Read/Write を再度実行します。 引数 RBLE_VS_EVENT *event イベント情報 戻り値 なし

(36)

6.5

Cycling カスタムプロファイル

6.5.1

概要

Cycling カスタムプロファイルの処理を実装します。Cycling カスタムプロファイルではセンサとして動作 しているRL78/G1D 側に対し車輪半径の設定を行います(注)。なお、このカスタムプロファイルはCSCP 利用 時に必須の機能ではありません。 【注】 車輪半径の設定数値を RL78/G1D は Cycling カスタムプロファイルを通じて受信することができます が、RL78/G1D 上で動作するデモアプリケーションではその設定数値を利用していません。 Cycling カスタムプロファイルの仕様を表 6-4 に示します。 表6-4 Cycling カスタムプロファイルの仕様 アトリビュートハンドル アトリビュートタイプとその値 DEMO_CUSTOM_CYCL_PROFILE_HDL_SVC

0x0037 (※) Type: Primary Service Declaration UUID:

0xF2B2C260-5780-11E5-A518-0002A5D5C51B DEMO_CUSTOM_CYCL_PROFILE_HDL_RADIUS_CHAR

0x0038 (※) Type: Characteristic Declaration UUID:

0x15DB6B80-5780-11E5-B8EC-0002A5D5C51B Property: Read/Write

DEMO_CUSTOM_CYCL_PROFILE_HDL_RADIUS_VAL

0x0039 (※) Type: Characteristic Value Characteristic に Write を送信することで、車 輪半径の設定を行うことができます。初期値は 60(cm)です。

DEMO_CUSTOM_CYCL_PROFILE_HDL_RADIUS_DESC

0x003A (※) Type: Characteristic User Description

(※) アトリビュートハンドルの 16 進値は、ファームウェア内に組み込むプロファイルによって変わります。

6.5.2

API 一覧

Cycling カスタムプロファイル(demo_custom_cycl_profile.c)の主要 API の一覧を表 6-5 に示します。

6-5 Cycling カスタムプロファイル API 一覧

関数名 概要

DemoCustom_CyclProfile_Enable

DemoCustom_CyclProfile_EndEnableComplete

Cycling カスタムプロファイル有効化

DemoCustom_CyclProfile_GattCallback Cycling カスタム GATT コールバック

DemoCustom_CyclProfile_Response Cycling カスタム応答

DemoCustom_CyclProfile_SendChgChar Cycling カスタム更新通知送信

(37)

6.5.3

API

Cycling カスタムプロファイル(demo_custom_cycl_profile.c)の主要 API の概要を以下に示します。 RBLE_STATUS DemoCustom_CyclProfile_Enable( uint16_t conhdl,

DEMO_CUSTOM_CYCL_PROFILE_EVENT_HANDLER call_back ) 概要 Cycling カスタムプロファイル有効化 説明 ・RBLE_GATT_Enable をコールしてカスタムプロファイルを有効化します。 ・処理が完了すると DemoCustom_CyclProfile_EndEnableComplete 関数をコールし ます。 引数 uint16_t conhdl コネクションハンドル DMEO_CUSTOM_CYCL_PROFILE_EVENT_HANDLER call_back カスタムプロファイル のコールバック 戻り値 RBLE_STATUS 処理結果

static void DemoCustom_CyclProfile_EndEnableComplete(RBLE_STATUS status) 概要 Cycling カスタムプロファイル有効化完了通知

説明 ・指定されたコールバック関数をコールします。

引数 RBLE_STATUS status 処理結果

戻り値 なし

static void DemoCustom_CyclProfile_GattCallback( RBLE_GATT_EVENT *event ) 概要 Cycling カスタム GATT コールバック 説明 ・カスタムプロファイルに対するGATT のイベントを受け取ります。対応するコール バック関数をコールします。 引数 RBLE_GATT_EVENT *event イベント情報 戻り値 なし static

void DemoCustom_CyclProfile_Response(uint16_t att_hdl, RBLE_STATUS result) 概要 Cycling カスタム応答

説明 ・Write 応答を送信します。

引数 uint16_t att_hdl 属性ハンドル

RBLE_STATUS result 書き込み結果

(38)

static

void DemoCustom_CyclProfile_SendChgChar( uint8_t char_code, uint8_t *value, uint16_t val_len) 概要 Cycling カスタム更新通知送信

説明 ・デモアプリケーションに対して値が更新されたことを通知します。

引数

uint8_t char_code Characteristic コード uint8_t *value Characteristic の値 uint16_t val_len value の長さ

戻り値 なし

static

RBLE_STATUS DemoCustom_CyclProfile_SetData( uint16_t val_hdl, uint8_t *data, uint16_t data_len) 概要 Cycling カスタム更新

説明 ・RBLE_GATT_Set_Data 関数をコールして GATT の持つ Cycling カスタムの値を更 新します。

引数

uint16_t val_hdl 値のハンドル uint8_t *data Characteristic の値 uint16_t data_len data の長さ

(39)

6.6

Running カスタムプロファイル

6.6.1

概要

Running カスタムプロファイルの処理を実装します。Running カスタムプロファイルではセンサとして動作 しているRL78/G1D 側で使用する歩幅の設定を行います。なお、このカスタムプロファイルは RSCP 利用時 の必須機能ではありません。 Running カスタムプロファイルの仕様を表 6-6 に示します。 表6-6 Running カスタムプロファイルの仕様 アトリビュートハンドル アトリビュートタイプとその値 DEMO_CUSTOM_RUN_PROFILE_HDL_SVC

0x0033 (※) Type: Primary Service Declaration UUID:

0x0A8BCD00-5781-11E5-9E51-0002A5D5C51B DEMO_CUSTOM_RUN_PROFILE_HDL_STRIDE_CHAR

0x0034 (※) Type: Characteristic Declaration UUID:

0x045EFD80-5781-11E5-AC83-0002A5D5C51B Property: Read/Write

DEMO_CUSTOM_RUN_PROFILE_HDL_STRIDE_VAL

0x0035 (※) Type: Characteristic Value Characteristic に Write を送信することで、歩幅 の設定を行うことができます。初期値は80(cm) です。

DEMO_CUSTOM_RUN_PROFILE_HDL_STRIDE_DESC

0x0036 (※) Type: Characteristic User Description

(※) アトリビュートハンドルの 16 進値は、ファームウェア内に組み込むプロファイルによって変わります。

6.6.2

API 一覧

Running カスタムプロファイル(demo_custom_run_profile.c)の主要 API の一覧を表 6-7 に示します。

6-7 Running カスタムプロファイル API 一覧

関数名 概要

DemoCustom_RunProfile_Enable

DemoCustom_RunProfile_EndEnableComplete

Running カスタムプロファイル有効化

DemoCustom_RunProfile_GattCallback Running カスタム GATT コールバック

DemoCustom_RunProfile_Response Running カスタム応答

DemoCustom_RunProfile_SendChgChar Running カスタム更新通知送信

(40)

6.6.3

API

Running カスタムプロファイル(demo_custom_run_profile.c)の主要 API の概要を以下に示します。 RBLE_STATUS DemoCustom_RunProfile_Enable( uint16_t conhdl,

DEMO_CUSTOM_RUN_PROFILE_EVENT_HANDLER call_back ) 概要 Running カスタムプロファイル有効化 説明 ・RBLE_GATT_Enable をコールしてカスタムプロファイルを有効化します。 ・処理が完了すると DemoCustom_RunProfile_EndEnableComplete 関数をコールし ます。 引数 uint16_t conhdl コネクションハンドル DMEO_CUSTOM_RUN_PROFILE_EVENT_HANDLER call_back カスタムプロファイル のコールバック 戻り値 RBLE_STATUS 処理結果

static void DemoCustom_RunProfile_EndEnableComplete(RBLE_STATUS status) 概要 Running カスタムプロファイル有効化完了通知

説明 ・指定されたコールバック関数をコールします。

引数 RBLE_STATUS status 処理結果

戻り値 なし

static void DemoCustom_RunProfile_GattCallback( RBLE_GATT_EVENT *event ) 概要 Running カスタム GATT コールバック 説明 ・カスタムプロファイルに対するGATT のイベントを受け取ります。対応するコール バック関数をコールします。 引数 RBLE_GATT_EVENT *event イベント情報 戻り値 なし static

void DemoCustom_RunProfile_Response(uint16_t att_hdl, RBLE_STATUS result) 概要 Running カスタム応答

説明 ・Write 応答を送信します。

引数 uint16_t att_hdl 属性ハンドル

RBLE_STATUS result 書き込み結果

(41)

static

void DemoCustom_RunProfile_SendChgChar( uint8_t char_code, uint8_t *value, uint16_t val_len) 概要 Running カスタム更新通知送信

説明 ・デモアプリケーションに対して値が更新されたことを通知します。

引数

uint8_t char_code Characteristic コード uint8_t *value Characteristic の値 uint16_t val_len value の長さ

戻り値 なし

static

RBLE_STATUS DemoCustom_RunProfile_SetData( uint16_t val_hdl, uint8_t *data, uint16_t data_len) 概要 Running カスタム更新

説明 ・RBLE_GATT_Set_Data 関数をコールして GATT の持つ Cycling カスタムの値を更 新します。

引数

uint16_t val_hdl 値のハンドル uint8_t *data Characteristic の値 uint16_t data_len data の長さ

(42)

7. 追加のカスタムプロファイルに対応させるには

プログラムに新規カスタムプロファイルを追加する手順を以下に示します。この章ではProfile として TestProfile、Service として TestProfile Service、Characteristic として TestCharacteristic を追加する前提で例を示 します。

1. サービスを定義する 2. プロファイルを実装する 3. プロファイルを有効化する

詳細については、Bluetooth® Low Energy プロトコルスタック ユーザーズマニュアルの「7.4.2 ユーザプロ

ファイル作成方法」及びAPI リファレンスマニュアルの「2.2.5 イベント通知用コールバック関数の登録」を 参照してください。

7.1

サービスを定義する

GATT データベースへ Service と Characteristic の定義を追加します。

1. Service と Characteristic に対応するデータベースハンドルを追加します。

renesas¥src¥arch¥rl78¥db_handle.h に Attribute database handles として定義されている列挙体の末尾にあ るDB_HDL_MAX の直前に、任意の名称で Service と Characteristic とその値に対応する定義を必要な 数だけ追加します。

ここでは Service を TEST_PROFILE_HDL_SVC、Characteristic を

TEST_PROFILE_HDL_CHARA1_CHARA、その値を TEST_PROFILE_HDL_CHARA1_VAL として 定義を追加しています。

2. Service と Characteristic に対応するデータベースインデックスを追加します。

renesas¥src¥arch¥rl78¥prf_config.h に Attribute database index として定義されている列挙体の末尾に、任 意の名称でService と Characteristic とその値に対応する定義を必要な数だけ追加します。

/** Attribute database handles */

enum

{

/* Generic Access Profile Service*/

GAP_HDL_PRIM_SVC = 0x0001, GAP_HDL_CHAR_DEVNAME,

//~~~省略~~~

TEST_PROFILE_HDL_SVC, //Service

TEST_PROFILE_HDL_CHARA1_CHARA, //Characteristic: Chara1

TEST_PROFILE_HDL_CHARA1_VAL, //for Value of Characteristic: Chara1

DB_HDL_MAX };

(43)

※ ここでは Service を TEST_PROFILE_IDX_SVC、Characteristic を

TEST_PROFILE_IDX_CHARA1_CHARA、その値を TEST_PROFILE_IDX_CHARA1_VAL として定 義を追加しています。

3. Service と Characteristic の UUID を保持する変数を定義します。

※ renesas¥src¥arch¥rl78¥prf_config.c から参照できるようにします。

4. Profile の持つ Characteristic を表現する struct atts_char128_desc 変数と、その Characteristic に対応する実 変数(必要であれば)を必要な数だけ定義します。

①メンバprop でその Characteristic の読み書き、認証の要否、Notification や Indication を定義できます。 ②メンバattr_hdl は慣例に従い Database Handle を使用して例の通りに記載します。

※ renesas¥src¥arch¥rl78¥prf_config.c から参照できるようにします。

/** Attribute database index */

enum { /* Invalid index*/ ATT_INVALID_IDX = 0x0000, //~~~省略~~~ TEST_PROFILE_IDX_SVC, //Service

TEST_PROFILE_IDX_CHARA1_CHARA, //Characteristic: Chara1

TEST_PROFILE_IDX_CHARA1_VAL, //for Value of Characteristic: Chara1

};

/* Service */

const uint8_t test_profile_svc[RBLE_GATT_128BIT_UUID_OCTET] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,

0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };

/* Characteristic */

const struct atts_char128_desc test_profile_chara1 = { RBLE_GATT_CHAR_PROP_WR | RBLE_GATT_CHAR_PROP_RD, {

(uint8_t)(TEST_PROFILE_HDL_CHARA1_VAL & 0xff),

(uint8_t)((TEST_PROFILE_HDL_CHARA1_VAL >> 8) & 0xff)

}, { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xff } }; uint16_t test_profile_chara1_value = 100; ① ②

(44)

5. renesas¥src¥arch¥rl78¥prf_config.c に定義されている struct atts_desc 型の配列 atts_desc_list_prf(Attribute Database)へ新規プロファイルの Service、Characteristic とその実変数を追加します。

③メンバtaskid は慣例に従い Database Index を使用して例の通りに記載します。 ④メンバperm で各ディスクリプタへのアクセス許可を指定します。

/** Attribute Database */

const struct atts_desc atts_desc_list_prf[] = { //~~~省略~~~ //* Service */ { RBLE_DECL_PRIMARY_SERVICE, sizeof(test_profile_svc), sizeof(test_profile_svc), TASK_ATTID(TASK_RBLE, TEST_PROFILE_IDX_SVC), ③ RBLE_GATT_PERM_RD, ④ (void *)&test_profile_svc }, /* Characteristic: Chara1 */ { RBLE_DECL_CHARACTERISTIC, sizeof(test_profile_chara1), sizeof(test_profile_chara1), TASK_ATTID(TASK_RBLE, TEST_PROFILE_IDX_CHARA1_CHARA), ③ RBLE_GATT_PERM_RD, ④ (void *)&test_profile_chara1 },

/* Demo Cycling Custom Radius Value */

{ DB_TYPE_128BIT_UUID, sizeof(test_profile_chara1_value), sizeof(test_profile_chara1_value), TASK_ATTID(TASK_RBLE, TEST_PROFILE_IDX_CHARA1_VAL), ③ (RBLE_GATT_PERM_RD|RBLE_GATT_PERM_WR), ④ (void *)&test_profile_chara1_value }, };

表 3-1  開発環境とプロジェクトファイル
表 6-5  Cycling カスタムプロファイル API 一覧
表 6-7  Running カスタムプロファイル API 一覧
図 5-3 に Pairing 情報読み出しタイミングを追加。

参照

関連したドキュメント

HW松本の外国 人専門官と社会 保険労務士のA Dが、外国人の 雇用管理の適正 性を確認するた め、事業所を同

When higher power daughter cards (listed below) are attached to the baseboard, external supply either using the power shield or direct is required.. Higher Power

条例第108条 知事は、放射性物質を除く元素及び化合物(以下「化学

K4-B1 K4-B10 K4-B9 K4-B8 K4-B7 K4-B6 K4-B5 K4-B4 K4-B3

The RSL10 SIP serves as the processing hub of the camera, and Bluetooth ® Low Energy (Bluetooth LE) connectivity enabling remote control and transfer of captured image and sensor

変更条文 変更概要 関連する法令/上流文書 等 説明事項抽出結果

○残留熱除去冷却系( RHRC )の調圧タンク( A )に接続される燃料プール補給水系( FPMUW )供給ラインのうち、両系の境界弁より

ドリル 5 9/上 本社 情報フローFIX 版で、 ERC に対し必要事項を 確実に説明できることを確認する習熟訓練 総合訓練 9/中