RL78 BLE Dongle 仮 想 UART 通 信 チュートリアルガイド Rev :1.0 TS-TUM03626 2015/12/04 1
目 次 1 概 要... 3 2 開 発 環 境... 4 3 動 作 環 境... 4 4 参 考 資 料... 4 5 デモンストレーション 説 明 書... 5 5.1 デモンストレーション 概 要... 5 5.2 ソフトウェア 構 成 図... 6 5.3 デモセット 部 品 一 覧... 7 5.4 セットアップ... 8 5.4.1 rble_uart_gui のセットアップ... 8 5.4.2 Android のセットアップ... 8 5.5 操 作 方 法... 9 5.5.1 Dongle と Android 間 での 仮 想 UART 通 信 を 行 う... 9 6 プロファイル 構 成... 14 6.1 プロファイル 一 覧... 14 6.1.1 Sample Custom Profile... 14 7 ソフトウェア 構 成... 15 7.1 ソフトウェア 概 要... 15 7.1.1 仕 様 概 要... 15 7.1.2 ソフトウェア 動 作... 16 7.1.3 仮 想 UART 通 信 動 作... 17 7.2 ソースコード 解 説... 18 7.2.1 Advertising 開 始... 18 7.2.2 接 続 / 仮 想 UART 通 信 同 作 用 プロファイルの 有 効 化... 19 7.2.3 文 字 列 の 送 信... 20 7.2.4 文 字 列 の 受 信... 21 7.3 Sample Custom Profile API... 22 7.3.1 Definitions... 22 7.3.2 Functions... 25 7.3.2.1 RBLE_SCP_Server_Enable... 25 7.3.2.2 RBLE_SCP_Server_Disable... 25 7.3.2.3 RBLE_SCP_Server_Send_String... 26 7.3.3 Events... 27 7.3.3.1 RBLE_SCP_EVENT_SERVER_ENABLE_COMP... 27 7.3.3.2 RBLE_SCP_EVENT_SERVER_DISABLE_COMP... 27 7.3.3.3 RBLE_SCP_EVENT_SERVER_SEND_NOTIFY_COMP... 27 7.3.3.4 RBLE_SCP_EVENT_SERVER_CHG_CHAR_IND... 27 2
1 概 要 テセラ テクノロジー 製 RL78 BLE Dongle と Android 端 末 を 用 いて RL78 BLE Dongle と Android 端 末 間 で Bluetooth Low Energy の 通 信 を 利 用 した 仮 想 UART 通 信 により 文 字 列 の 送 受 信 を 行 うデモンストレ ーションの 実 施 方 法 および 実 装 方 法 を 示 します A) 動 作 確 認 デバイス RL78 BLE Dongle(RL78/G1D) B) 略 語 および 略 称 の 説 明 略 語 / 略 称 フルスペル 備 考 BLE Bluetooth Low Energy SCP Sample Custom Profile 仮 想 UART 通 信 に 使 用 する 独 自 プロファイル GUI アプリ rble_uart_gui 仮 想 UART 通 信 に 使 用 する PC 上 で 動 作 する GUI アプリ ケーション Android アプリ G1D uart 仮 想 UART 通 信 に 仕 様 する Android 上 で 動 作 する GUI アプリケーション 表 1-1 略 語 および 略 書 の 説 明 Bluetooth は Bluetooth SIG, Inc., U.S.A.の 登 録 商 標 です Android は Google Inc.の 商 標 または 登 録 商 標 です Windows は 米 国 Micorosoft Corporation の 米 国 およびその 他 の 国 における 登 録 商 標 です 3
2 開 発 環 境 仮 想 UART 通 信 ソフトウェアの Windows 用 GUI アプリケーション rble_uart_gui の 開 発 環 境 を 以 下 に 示 します 項 目 説 明 統 合 開 発 環 境 Visual Studio 2013 Professional Update 5 Visual Studio Community 2013 with Update 5 でもビルド 可 言 語 Visual C++ 2013 (MFC 使 用 ) ライブラリ ルネサス エレクトロニクス 製 Bluetooth Low Energy プロトコルスタック V1.10 表 2-1 rble_uart_gui の 開 発 環 境 3 動 作 環 境 仮 想 UART 通 信 ソフトウェアの Windows 用 GUI アプリケーション rble_uart_gui の 動 作 環 境 を 以 下 に 示 します 項 目 説 明 OS Windows 7 Professional 日 本 語 64bit 版 ランタイム Visual Studio 2013 の Visual C++ 再 頒 布 可 能 パッケージ(32bit 版 ) 表 3-1 rble_uart_gui の 動 作 環 境 4 参 考 資 料 1. ネサス エレクトロニクス Bluetooth Low Energy プロトコルスタック ユーザーズマニュアル R01UW0095JJ0117 4
5 デモンストレーション 説 明 書 5.1 デモンストレーション 概 要 本 デモは RL78 BLE Dongle( 以 下 Dongle と 表 記 )および rble_uart_gui( 以 下 GUI と 表 記 )と Android 端 末 ( 以 下 Android と 表 記 )を 用 いて Dongle と Android 間 で Bluetooth Low Energy の 通 信 を 利 用 した 仮 想 UART 通 信 により 文 字 列 の 送 受 信 を 行 います Android は Master として 動 作 し Dongle および GUI は Slave として 動 作 します デモ 構 成 は 以 下 の 通 りです Dongle は PC の USB 端 子 に 接 続 し GUI から 文 字 列 の 送 受 信 を 行 います Android は Android アプリケー ション G1D uart を 使 用 して 文 字 列 の 送 受 信 を 行 います 仮 想 UART 通 信 とは Dongle および GUI と Android に 実 装 されている Bluetooth Low Energy の 独 自 プロ ファイルである Sample Custom Profile(SCP)を 使 用 し 両 者 間 Bluetooth Low Energy の 通 信 を 仮 想 的 に UART の 通 信 に 見 立 てた 通 信 のことです SCP についての 詳 細 は 7.3 Sample Custom Profile API を 参 照 してください G1D uart 図 5-1 システムブロック 図 5
5.2 ソフトウェア 構 成 図 RL78 BLE Dongle と rble_uart_gui は Modem 構 成 となっており APP_MCU と BLE_MCU の 2 つのチップで 動 作 します Dongle と GUI のソフトウェア 構 成 図 を 以 下 に 示 します 図 5-2 ソフトウェア 構 成 図 6
5.3 デモセット 部 品 一 覧 デモンストレーションを 実 施 するために 必 要 な 部 品 は 以 下 の 通 りです 部 品 名 数 量 参 考 情 報 RL78 BLE Dongle 1 テセラ テクノロジー 製 Windows7 以 降 を 搭 載 し たパソコン 1 rble_uart_gui 1 GUI サンプルアプリケーション BLE に 対 応 した Android (Ver4.4.2 以 降 ) (HUAWEI Ascend P7) 1 Visual Studio 2013 の Visual C++ 再 頒 布 可 能 パッケージ が インストールされた 状 態 4.4.2 以 降 には 対 応 しておりますが すべての 端 末 バージョンでの 動 作 は 保 証 していません G1D uart 1 Android アプリケーション 表 5-1 デモセット 部 品 一 覧 表 7
5.4 セットアップ 5.4.1 rble_uart_gui のセットアップ PC に 接 続 した Dongle の 制 御 に rble_uart_gui を 使 用 します rble_uart_gui は 製 品 に 添 付 されていた 文 書 記 載 の URL からダウンロードして 下 さい rble_uart_gui を 実 行 するには Visual Studio 2013 の Visual C++ 再 頒 布 可 能 パッケージ ( 以 下 : ランタイムと 表 記 )が 必 要 です ランタイムを https://www.microsoft.com/ja-jp/download/details.aspx?id=40784 より 入 手 してイン ストールします インストール 方 法 は 上 記 URL の インストール 方 法 を 参 照 してください 5.4.2 Android のセットアップ 1 Android の[ 設 定 ] - [セキュリティ] - 提 供 元 不 明 アプリのインストールを 許 可 にします 2 下 記 の QR コードを 読 み 取 って G1Duart_1.0.0.0.apk ファイルをダウンロードしてください QR コードが 読 み 取 れない 場 合 は 下 記 よりダウンロードしてください http://www.tessera.co.jp/download/android/g1duart_1.0.0.0.apk 3 ダウンロードした G1Duart_1.0.0.0.apk ファイルをタップすると[インストール]ボタンが 表 示 さ れるので タップしてください 4 アプリケーションのインストールが 終 わると[アプリケーションをインストールしました]と 表 示 されます 5 アプリケーションメニューに G1Duart のアイコンが 登 録 されるので アイコンをタップして G1Duart を 起 動 します QR コードは( 株 )デンソーウェーブの 登 録 商 標 です 8
5.5 操 作 方 法 Dongle および rble_uart_gui と Android 間 で 通 信 を 行 う 場 合 の 操 作 方 法 を 記 載 します 5.5.1 Dongle と Android 間 での 仮 想 UART 通 信 を 行 う 1 Dongle を PC の USB ポートに 差 し 込 み PC が Dongle を 認 識 したことをデバイスマネージャで 確 認 し ます 9
2 rble_uart_gui を 起 動 します 設 定 画 面 で Dongle が 接 続 されているポート 名 と Advertising 間 隔 および Complete Local Name を 設 定 して OK ボタンを 押 下 します 項 目 名 デフォルト 説 明 Com Port COM0 Dongle が 接 続 されている COM ポート 名 を 選 択 します Baud Rate 4800 Dongle と GUI の 通 信 速 度 を 設 定 します (4800bps 固 定 ) Interval Min (msec) 30 Advertising 間 隔 の 最 小 値 を 設 定 します ( 範 囲 :20~10240) Interval Max (msec) 60 Advertising 間 隔 の 最 大 値 を 設 定 します ( 範 囲 :20~10240) Complete Local Name Relesas-BLE デバイス 名 を 設 定 します ( 最 大 26 バイト) 表 5-2 設 定 画 面 での 設 定 項 目 10
3 rble_uart_guiのメイン 画 面 が 表 示 され Status が Advertising 状 態 になっていることを 確 認 します 11
4 Android アプリケーション G1D uart を 起 動 し DEVICE ボタンをタップします 先 程 起 動 した Slave が 発 見 され Complete Local Name が 表 示 されるので タップして 接 続 を 行 います 12
rble_uart_gui のステータスが Connected になることを 確 認 します 5 Slave の rble_uart_gui に 任 意 の 文 字 列 を 入 力 し Send ボタンを 押 します G1D uart に 文 字 列 が 表 示 されることを 確 認 します G1D uart に 任 意 の 文 字 列 を 入 力 し Send ボタンをタップします Slave の rble_uart_gui に 文 字 列 が 表 示 されることを 確 認 します Dongle と Android 間 で 文 字 列 の 送 受 信 が 行 え ることを 確 認 してください Master (Android) 送 信 した 文 字 列 が 青 色 文 字 で 受 信 した 文 字 列 が 赤 色 文 字 で 表 示 されます Slave (Dongle) 送 信 した 文 字 列 が Send:として 受 信 した 文 字 列 が Recv:として 表 示 されます 13
6 プロファイル 構 成 6.1 プロファイル 一 覧 本 デモを 実 現 するにあたり BLE の 独 自 プロファイルを 実 装 し 使 用 しています BLE のプロファイルには Client と Server の 2 つの 役 割 がありますが 本 デモでは Master を Client Slave を Server として 動 作 させます 各 動 作 とそれに 使 用 されているプロファイルを 表 6-1 に 示 します 動 作 プロファイル 名 備 考 Sample Custom Profile Android は Master 動 作 のみ 対 応 仮 想 UART 通 信 動 作 (SCP) Dongle は Slave 動 作 のみ 対 応 表 6-1 各 動 作 とプロファイル 本 デモに 使 用 しているプロファイルの 仕 様 を 以 下 に 示 します 6.1.1 Sample Custom Profile Service 名 Sample Custom Service UUID 0x80000000 00000000 00000000 00000001 表 6-2 Srvice 名 Characteristic 名 Notify Characteristic Properties Notify UUID 0x80000000 00000000 00000000 00000002 Member Uint8_t data[] Client から Server への 送 信 文 字 列 (1~20byte) 表 6-3 Notify Characteristic Characteristic 名 Write Characteristic Properties Write UUID 0x80000000 00000000 00000000 00000003 Member Uint8_t data[] Client から Server への 送 信 文 字 列 (1~20byte) Response RBLE_ATT_ERR_NO_ERROR(0x00) or RBLE_ATT_ERR_APP_ERROR(0x80) 表 6-4 Write Characteristic 14
7 ソフトウェア 構 成 7.1 ソフトウェア 概 要 Dongle の 動 作 は rble_uart_gui から 起 動 することにより Server 動 作 を 行 います Dongle と rble_uart_gui の 構 成 は 5.2 ソフトウェア 構 成 図 を 参 照 してください 7.1.1 仕 様 概 要 Dongle および rble_uart_gui を 動 作 させると Advertising が 行 われます 接 続 が 確 立 されると 仮 想 UART 通 信 動 作 に 移 行 します 仮 想 UART 通 信 動 作 の 内 容 を 以 下 に 示 します 仮 想 UART 通 信 動 作 Advertising を 行 い Master との 接 続 を 待 ちます Master と 接 続 確 立 後 仮 想 UART 通 信 動 作 に 移 行 します rble_uart_gui から USB Serial 経 由 で 受 信 したデータを BLE により Master へ 送 信 します Master から BLE により 受 信 したデータを rble_uart_gui へ USB Serial 経 由 で 送 信 します 15
7.1.2 ソフトウェア 動 作 Modem 構 成 で 動 作 するソフトウェアについて 説 明 します 1 GUI 起 動 直 後 設 定 画 面 の Setting ダイアログを 表 示 します 2 Setting ダイアログで OK ボタンを 押 下 するとメイン 画 面 キャンセルボタンを 押 下 すると 終 了 します 3 メイン 画 面 が 表 示 されると COM ポートをオープンして BLE の 初 期 化 を 行 い Advertising を 開 始 し て Android からの 接 続 を 待 ちます 4 Android と 接 続 確 立 後 仮 想 UART 通 信 動 作 を 行 います 5 Android との 接 続 が 切 断 されると Advertising を 再 開 します Modem 構 成 で 動 作 するソフトウェアのフローチャートを 図 7-1 に 示 します GUI 起 動 設 定 画 面 表 示 OK ボタン 押 下 キャンセルボタン 押 下 COM ポートオープン 終 了 BLE 初 期 化 Advertising 開 始 Android 接 続 仮 想 UART 動 作 Android 切 断 図 7-1 Modem 構 成 で 動 作 するソフトウェアのフローチャート 16
7.1.3 仮 想 UART 通 信 動 作 仮 想 UART 通 信 動 作 について 説 明 します 仮 想 UART 通 信 動 作 では Master と Slave 間 で 仮 想 UART 通 信 を 行 います Dongle は PC と 接 続 されていて rble_uart_gui から 文 字 列 を 入 力 し Send ボタンを 押 下 することで Android にその 文 字 列 を 表 示 させます 1 度 に 送 信 できる 文 字 列 は 最 大 で 20 文 字 です 送 信 動 作 1 rble_uart_gui から 送 信 する 文 字 列 を 入 力 します 2 入 力 した 文 字 列 を BLE により 送 信 します 受 信 動 作 1 BLE により 受 信 した 文 字 列 を rble_uart_gui へ 出 力 します 仮 想 UART 通 信 動 作 のフローチャートを 図 7-2 図 7-3 に 示 します 仮 想 UART 通 信 送 信 文 字 列 入 力 1 送 信 文 字 列 入 力 Master へ 文 字 列 送 信 2BLE による 文 字 列 送 信 Send: 文 字 列 として 表 示 図 7-2 仮 想 UART 通 信 動 作 フローチャート( 送 信 動 作 ) BLE による 文 字 列 受 信 Recv: 文 字 列 として 表 示 1BLE による 文 字 列 受 信 表 示 図 7-3 仮 想 UART 通 信 動 作 フローチャート( 受 信 動 作 ) 17
7.2 ソースコード 解 説 本 デモのソースコードについて 解 説 します 本 デモに 関 連 する MCU APP のファイルについて その 動 作 内 容 を 表 7-1 に 示 します 次 節 より ソースコードを 示 しながら 動 作 を 説 明 します ファイル rble_core.c SettingsDlg.cpp rble_uart_guidlg.cpp scps.c 動 作 内 容 BLE ソフトウェア 用 API の C++ラッパー 関 数 設 定 ダイアログ 仮 想 UART 通 信 動 作 APP Sample Custom Profile Server 用 API 表 7-1 MCU APP ファイルの 動 作 内 容 7.2.1 Advertising 開 始 初 期 化 後 設 定 ダイアログの 設 定 内 容 に 従 って Advertising を 開 始 します 行 数 838 839 840 841 842 843 844 845 846 847 848 849 850 rble_uart_guidlg.cpp // コネクションハンドルのクリア m_uiconnectionhandle = ILLEGAL_CONNECTION_HANDLE; // 設 定 情 報 のパラメータを 取 得 CrBLE_Params::GetBroadCastEnableParam( &prm, theapp.m_psettinginfo->m_settinginfo.uiadvmin, theapp.m_psettinginfo->m_settinginfo.uiadvmax, theapp.m_psettinginfo->m_settinginfo.szcomplocalname, strlen(theapp.m_psettinginfo->m_settinginfo.szcomplocalname)); // ブロードキャスト 開 始 WP_RBLE_GAP_Broadcast_Enable(prm.disc_mode, prm.conn_mode, &prm.adv_info); 18
7.2.2 接 続 / 仮 想 UART 通 信 同 作 用 プロファイルの 有 効 化 接 続 が 確 立 されたら 仮 想 UART 通 信 動 作 用 プロファイル(Server)の 有 効 化 を 行 います 行 数 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 rble_uart_guidlg.cpp // コネクションハンドルを 保 持 Con_Info_p = &event->param.conn_comp.connect_info; m_uiconnectionhandle = Con_Info_p->conhdl; // SCPサーバーの 有 効 化 /* Valid Connection Handle? */ if (ILLEGAL_CONNECTION_HANDLE!= m_uiconnectionhandle) { ::SendMessage(CrBLE_UART_GUIDlg::m_hWnd, WM_APPEND_LOG_FILE, NULL, (LPARAM)&log); log.log.empty(); ::SendMessage(m_hWnd, WM_CLEAR_DATA_LOG, NULL, NULL); /* API Call */ /* SCPサーバー 有 効 化 */ ret_api = WP_RBLE_SCP_Server_Enable(m_uiConnectionHandle, RBLE_APP_SCPS_CallBack); ::SendMessage(m_hWnd, WM_UPDATE_STATUS, NULL, (LPARAM)EStatus::STATUS_CONNECT); log.log.appendformat(_t("wp_rble_scp_server_enable(conhdl=%d)=0x%04x"), m_uiconnectionhandle, ret_api); } 19
7.2.3 文 字 列 の 送 信 Sample Custom Profile を 有 効 化 したら 文 字 列 の 送 信 を 行 います ソースコードを 以 下 に 示 します 任 意 の 文 字 を 入 力 し Send ボタンを 押 下 することで 入 力 した 文 字 列 を 対 応 デバイスに 送 信 します 行 数 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 rble_uart_guidlg.cpp UpdateData(TRUE); uint8_t data[max_send_data_len]; uint8_t len = m_ctrlvalsenddata.getlength(); if (ILLEGAL_CONNECTION_HANDLE!= m_uiconnectionhandle) { for (int i = 0; i < m_ctrlvalsenddata.getlength(); i++) { data[i] = (uint8_t)m_ctrlvalsenddata[i]; } // データ 送 信 WP_RBLE_SCP_Server_Send_String(m_uiConnectionHandle, data, len); // Logデータ 生 成 datalog.direction = CLogList::EDataDirection::Send; datalog.log = m_ctrlvalsenddata.getbuffer(); SendMessage(WM_APPEND_DATA_LOG, NULL, (LPARAM)&datalog); log.category = ELogCategory::BleApi; log.log.appendformat(_t(" WP_RBLE_SCP_Server_Send_String(conhdl=%d, data='%s', len=%d)"), m_uiconnectionhandle, m_ctrlvalsenddata, m_ctrlvalsenddata.getlength()); ::SendMessage(CrBLE_UART_GUIDlg::m_hWnd, WM_APPEND_LOG_FILE, NULL, (LPARAM)&log); m_ctrlvalsenddata.releasebuffer(); m_ctrlvalsenddata.empty(); UpdateData(FALSE); } 20
7.2.4 文 字 列 の 受 信 対 向 デバイスから 文 字 列 の 受 信 を 行 います 文 字 列 受 信 部 分 のソースコードを 以 下 に 示 します 行 数 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 rble_sample_app.c /* クライアントからデータを 受 信 */ case RBLE_SCP_EVENT_SERVER_CHG_CHAR_IND: log.log.append(_t(" RBLE_SCP_EVENT_SERVER_CHG_CHAR_IND")); PRINTF("RBLE_SCP_EVENT_SERVER_CHG_CHAR_IND\n"); datalog.direction = CLogList::EDataDirection::Recv; for (int loop_cnt = 0; loop_cnt < event->param.write_char.data_len; loop_cnt++) { buff.appendchar((char_t)event->param.write_char.data[loop_cnt]); } datalog.log = buff.getbuffer(); ::SendMessage(m_hWnd, WM_APPEND_DATA_LOG, NULL, (LPARAM)&datalog); log.log.appendformat(_t(", '%s'"), buff); buff.releasebuffer(); break; 21
7.3 Sample Custom Profile API Sample Custom Profile (SCP)の API について 記 載 します Sample Custom Profile を 使 用 することで 仮 想 UART 通 信 を 行 うことができます 7.3.1 Definitions Sample Custom Profile の API で 使 用 される 定 義 について 記 載 します SCP イベントタイプ 列 挙 型 宣 言 enum RBLE_SCP_EVENT_TYPE_enum { RBLE_SCP_EVENT_SERVER_ENABLE_COMP = 0x01, // Server 有 効 設 定 完 了 イベント RBLE_SCP_EVENT_SERVER_DISABLE_COMP = 0x02, // Server 無 効 設 定 完 了 イベント RB LE_SCP_EVENT_SERVER_SEND_NOTIFY_COMP = 0x03, // Server 文 字 列 送 信 完 了 イベント RBLE_SCP_EVENT_SERVER_CHG_CHAR_IND = 0x04, // Server 文 字 列 受 信 イベント RBLE_SCP_EVENT_CLIENT_ENABLE_COMP = 0x81, // Client 有 効 設 定 完 了 イベント RBLE_SCP_EVENT_CLIENT_DISABLE_COMP = 0x82, // Client 無 効 設 定 完 了 イベント RBLE_SCP_EVENT_CLIENT_NOTIFY = 0x83, // Client 文 字 列 受 信 イベント RBLE_SCP_EVENT_CLIENT_WRITE_CHAR_RESPONSE = 0x84 // Client 文 字 列 送 信 応 答 イベント }; SCP イベントタイプ 型 宣 言 typedef uint8_t RBLE_SCP_EVENT_TYPE; SCP イベントタイプ 型 宣 言 typedef uint8_t RBLE_SCP_EVENT_TYPE; SCP Server イベントコールバック 関 数 型 宣 言 typedef void ( *RBLE_SCPS_EVENT_HANDLER )( RBLE_SCPS_EVENT *event ); SCP Client イベントコールバック 関 数 型 宣 言 typedef void ( *RBLE_SCPC_EVENT_HANDLER )( RBLE_SCPC_EVENT *event ); 仮 想 UART 通 信 サービス 内 容 構 造 体 typedef struct RBLE_SCS_CONTENT_t { uint16_t shdl; // 仮 想 UART 通 信 開 始 ハンドル uint16_t ehdl; // 仮 想 UART 通 信 終 了 ハンドル uint16_t notify_char_hdl; // Server 文 字 列 特 性 ハンドル uint16_t notify_val_hdl; // Server 文 字 列 特 性 値 ハンドル uint8_t notify_prop; // Server 文 字 列 特 性 プロパティ uint8_t reserved1; // 予 約 uint16_t write_char_hdl; // Client 文 字 列 特 性 ハンドル uint16_t write_val_hdl; // Client 文 字 列 特 性 値 ハンドル uint8_t write_prop; // Client 文 字 列 特 性 プロパティ uint8_t reserved2; // 予 約 }RBLE_SCS_CONTENT; 仮 想 UART 通 信 サービス 定 義 #define RBLE_SCP_WRITE_CHAR_MAX (0x14) // 最 大 送 信 文 字 数 22
SCP Server イベントパラメータ 構 造 体 typedef struct RBLE_SCPS_EVENT_t { RBLE_SCP_EVENT_TYPE type; // SCP イベントタイプ uint8_t reserved; // 予 約 union Event_Scps_Parameter_u { RBLE_STATUS status; // ステータス // Server 有 効 設 定 完 了 イベント struct RBLE_SCP_Server_Enable_t{ uint16_t conhdl; // コネクションハンドル RBLE_STATUS status; // ステータス uint8_t reserved; // 予 約 }server_enable; // Server 無 効 設 定 完 了 イベント struct RBLE_SCP_Server_Disable_t { uint16_t conhdl; // コネクションハンドル RBLE_STATUS status; // ステータス uint8_t reserved; // 予 約 }server_disable; // Server 文 字 列 送 信 完 了 イベント struct RBLE_SCP_Server_Send_Notify_t { uint16_t conhdl; // コネクションハンドル RBLE_STATUS status; // ステータス uint8_t reserved; // 予 約 }send_notify; // Server 文 字 列 受 信 イベント struct RBLE_SCP_Server_Write_Chara_Ind_t{ uint16_t conhdl; // コネクションハンドル uint8_t data_len; // 文 字 数 uint8_t reserved; // 予 約 uint8_t data[rble_scp_write_char_max]; // 文 字 列 }write_char; }param; }RBLE_SCPS_EVENT; 23
SCP Client イベントパラメータ 構 造 体 typedef struct RBLE_SCPC_EVENT_t { RBLE_SCP_EVENT_TYPE type; // SCP イベントタイプ uint8_t reserved; // 予 約 union Event_Scpc_Parameter_u { RBLE_STATUS status; // ステータス // Client 有 効 設 定 完 了 イベント struct RBLE_SCP_Client_Enable_t{ uint16_t conhdl; // コネクションハンドル RBLE_STATUS status; // ステータス uint8_t reserved; // 予 約 RBLE_SCS_CONTENT scs; // 仮 想 UART 通 信 サービス 情 報 }client_enable; // Client 無 効 設 定 完 了 イベント struct RBLE_SCP_Client_Disable_t { uint16_t conhdl; // コネクションハンドル RBLE_STATUS status; // ステータス uint8_t reserved; // 予 約 }client_disable; // Client 文 字 列 受 信 イベント struct RBLE_SCP_Client_Notify_Ind_t { uint16_t conhdl; // コネクションハンドル uint8_t data_len; // 文 字 数 uint8_t reserved; // 予 約 uint8_t data[rble_scp_write_char_max]; // 文 字 列 }notify; // Client 文 字 列 送 信 応 答 イベント struct RBLE_SCP_Client_Write_Char_Response_t { uint16_t conhdl; // コネクションハンドル uint8_t att_code; // ステータス uint8_t reserved; // 予 約 }wr_char_resp; }param; }RBLE_SCPC_EVENT; 24
7.3.2 Functions 以 下 に SCP 機 能 で 定 義 されている API 関 数 を 表 7-2 にまとめ その API 関 数 の 詳 細 について 説 明 しま す API 名 RBLE_SCP_Server_Enable RBLE_SCP_Server_Disable RBLE_SCP_Server_Send_String 概 要 Server Role を 有 効 にする Server Role を 無 効 にする 文 字 列 を 送 信 する 表 7-2 SCP 機 能 API 関 数 一 覧 7.3.2.1 RBLE_SCP_Server_Enable RBLE_STATUS RBLE_SCP_Server_Enable( uint16_t conhdl, RBLE_SCPS_EVENT_HANDLER call_back ) このファンクションは SCP 機 能 の Server Role を 有 効 にします 結 果 は Server Role 有 効 設 定 完 了 イベント RBLE_SCP_EVENT_SERVER_ENABLE_COMP で 通 知 されます Parameters: Return: conhdl call_back RBLE_OK RBLE_PARAM_ERR RBLE_STATUS_ERROR コネクションハンドル SCP のイベントを 通 知 するコールバックファンクションを 指 定 正 常 終 了 パラメータ 異 常 状 態 エラー 7.3.2.2 RBLE_SCP_Server_Disable RBLE_STATUS RBLE_SCP_Server_Disable( uint16_t conhdl ) このファンクションは SCP 機 能 の Server Role を 無 効 にします 結 果 は Server Role 無 効 設 定 完 了 イベント RBLE_SCP_EVENT_SERVER_DISABLE_COMP で 通 知 されます Parameters: Return: conhdl RBLE_OK RBLE_PARAM_ERR RBLE_STATUS_ERROR コネクションハンドル 正 常 終 了 パラメータ 異 常 状 態 エラー 25
7.3.2.3 RBLE_SCP_Server_Send_String RBLE_STATUS RBLE_SCP_Server_Send_String( uint16_t conhdl, uint8_t *write_value, uint8_t write_length ) このファンクションは Client に 対 して 文 字 列 を 送 信 します 最 大 送 信 可 能 文 字 数 は 20 です 結 果 は 文 字 列 送 信 完 了 イベント RBLE_SCP_EVENT_SERVER_SEND_NOTIFY_COMP で 通 知 されます Parameters: Return: conhdl write_value write_length RBLE_OK RBLE_PARAM_ERR RBLE_STATUS_ERROR コネクションハンドル 文 字 列 文 字 数 正 常 終 了 パラメータ 異 常 状 態 エラー 26
7.3.3 Events 以 下 に SCP 機 能 で 定 義 されているイベントを 表 7-3 にまとめ イベントの 詳 細 について 説 明 します API 名 概 要 RBLE_SCP_EVENT_SERVER_ENABLE_COMP Server 有 効 設 定 完 了 イベント RBLE_SCP_EVENT_SERVER_DISABLE_COMP Server 無 効 設 定 完 了 イベント RBLE_SCP_EVENT_SERVER_SEND_NOTIFY_COMP Server 文 字 列 送 信 完 了 イベント RBLE_SCP_EVENT_SERVER_CHG_CHAR_IND Server 文 字 列 受 信 イベント 表 7-3 SCP 機 能 イベント 一 覧 7.3.3.1 RBLE_SCP_EVENT_SERVER_ENABLE_COMP RBLE_SCP_EVENT_SERVER_ENABLE_COMP このイベントは Server Role の 有 効 設 定 (RBLE_SCP_Server_Enable) 結 果 を 通 知 します Parameters: status conhdl RBLE_OK コネクションハンドル 7.3.3.2 RBLE_SCP_EVENT_SERVER_DISABLE_COMP RBLE_SCP_EVENT_SERVER_DISABLE_COMP このイベントは Server Role の 無 効 設 定 (RBLE_SCP_Server_Disable) 結 果 を 通 知 します Parameters: status conhdl RBLE_OK コネクションハンドル 7.3.3.3 RBLE_SCP_EVENT_SERVER_SEND_NOTIFY_COMP RBLE_SCP_EVENT_SERVER_SEND_NOTIFY_COMP このイベントは 文 字 列 の 送 信 (RBLE_SCP_Server_Send_String) 完 了 を 通 知 します Parameters: status conhdl RBLE_OK コネクションハンドル 7.3.3.4 RBLE_SCP_EVENT_SERVER_CHG_CHAR_IND RBLE_SCP_EVENT_SERVER_CHG_CHAR_IND このイベントは 文 字 列 の 受 信 を 通 知 します Parameters: data_len data[] conhdl 受 信 文 字 数 受 信 文 字 列 コネクションハンドル 27