SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
Port Bluedroid to RTOS
by スカイストリーム せきね
Bluedroid
• AndroidのBluetooth プロトコルスタック
• BroadcomとGoogleが開発
• AOSPでソースコード公開
• https://android.googlesource.com/
platform/external/bluetooth/bluedroid/
• Apache License 2
• Protocols
• ATT AVCTP AVDTP BNEP BTM L2CAP
MCAP OBEX RFCOMM SDP SMP
• Profiles
• A2DP AVRCP BIP BPP CTP DI DUN FTP
GAP GATT GOEP HCRP HDP HFP HIDP
HSP ICP LAP MAP OPP PAN PBAP SAP SPP
SYNCH VDP
• Bluedroidの開発は2015-03で停止したが
system/btとして開発が継続 (link)
GOOD
• Apachie License 2
• BT/BLE dual stack
• 対応しているプロトコル・Profileが多い
• 必要なプロトコル・プロファイルのみのコンフ
ィグできる
• 独自のメモリ管理機構があるのでmallocが無い
OSでも動作
BAD
• ドキュメント無し
• コミュニティ無し
• テストコード無し
• Bluetoohロゴ認証テストコード無し
SOURCE CODE
言語:だいたいC言語
規模:18万行ぐらい (clocで調査)
bta/ 抽象化レイヤ
btif/ 上位向けAPI
hci/ HCIドライバ
gki/ OS依存コード
stack/ プロトコル・プロファイル
TASK
GKI
Generic Kernel Interface
• タスク管理
• タスク間通信
• タイマ
• メモリ管理
PORTING
• Linuxで最小限のソースコードになるようにす
る
• btif->bta->stackの順でコンパイルエラーを取
る
• HCIとドライバを接続する
• GKIを移植する
• 動かしならがデバッグする。
PORTING RESULT
• ターゲット
• CPU ARM
• OS uITRON4.0互換OS
• コンパイラ ARM Realview
• BLEのみに変更
• ソースコード 9万行
• ROM 約100KB / RAM 約100KB
Bluetooth SIG
Qualification
• テストプランを入手し、どのテストを受験する
か決める
• テストのシーケンスを行うプログラムを開発
• PTSで自分でテストする
• テストラボで本番テストをする
認証はpassできた
sample code
btgatt_srvc_id_t servc_id1 = {
{
{0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0xFF, 0xEF, 0x00, 0x00},
0,
},
bt_uuid_t app_uuid1 = {{ 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0x19, 0x2a, 0x00, 0x00 }};
bt_uuid_t app_uuid1 = {{ 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0x19, 0x2b, 0x00, 0x00 }};
btIf = get_bluetooth_interface();
sGattIf->init(&sGattCallbacks);
btIf->enable();
sGattIf = btIf->get_profile_interface(BT_PROFILE_GATT_ID);
sGattIf->server->register_server(&app_uuid1);
sGattIf->server->add_service(4 , &servc_id1, 24);
sGattIf->server->add_characteristic(4, 40, &app_uuid2, 0x02+0x10, 0x01);
sGattIf->server->start_service(4, 40, 1);
sGattIf->client->set_adv_data(
5 /* client_if */,
0 /* set_scan_resp */,
1 /* include_name */,
0 /* include_txpower */,
0x20 /* min_interval */,
0x100 /* max_interval */,
0 /* appearance */,
0 /* manifactureer_len */,
NULL /* manifacturer_data */,
0 /* service_data_len */,
NULL /* service_data */,
0 /* service_uuid_len */,
NULL /* service_uuid */
);
sGattIf->client->listen(
5 /* server_if */,
1 /* start */
);
PR
スカイストリームでは、
• Bluedroid の各種OSへの移植
• Bluetooth認証のサポート
• 技術基準適合証明 / FCC / CE のサポート
• Wi-Fi認証のサポート
を行っています
お問い合わせ:http://www.skystream.co.jp/
人材も募集中です
おまけ
モバイルプラットフォームの
Bluetoothプロトコルスタッ
ク
• iOS : Bluemagic -> Apple?
• Android : BlueZ -> Bluedroid -> system/bt
• Windows Mobile : Microsoft?
• Firefox OS : BlueZ -> Bluedroid
• Tizen : BlueZ

Más contenido relacionado

Similar a Port Bluedroid to RTOS

WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sampleWebRTC SFU mediasoup sample
WebRTC SFU mediasoup samplemganeko
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywordsuupaa
 
runC概要と使い方
runC概要と使い方runC概要と使い方
runC概要と使い方Yuji Oshima
 
ストリーミングのげんざい
ストリーミングのげんざいストリーミングのげんざい
ストリーミングのげんざいTetsuya Morimoto
 
ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部openrtm
 
Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1edy555
 
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜Hideki Takase
 
Raspberry pi三分クッキング(さいたま開発勉強会 Vol 9)
Raspberry pi三分クッキング(さいたま開発勉強会 Vol 9)Raspberry pi三分クッキング(さいたま開発勉強会 Vol 9)
Raspberry pi三分クッキング(さいたま開発勉強会 Vol 9)integra66
 
TurtleBot3でROSを始めよう
TurtleBot3でROSを始めようTurtleBot3でROSを始めよう
TurtleBot3でROSを始めようROBOTIS Japan
 
ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?Kengo Nakajima
 
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様hagino 3000
 
IT エンジニアのための 流し読み Windows 10 - Windows のネットワーク最適化機能
IT エンジニアのための 流し読み Windows 10 - Windows のネットワーク最適化機能IT エンジニアのための 流し読み Windows 10 - Windows のネットワーク最適化機能
IT エンジニアのための 流し読み Windows 10 - Windows のネットワーク最適化機能TAKUYA OHTA
 
PIC RoR Heroku
PIC RoR HerokuPIC RoR Heroku
PIC RoR Herokumgwsuzuki
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜Hideki Takase
 
MRTGの導入と運用
MRTGの導入と運用MRTGの導入と運用
MRTGの導入と運用kohei Yamamoto
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMFAtomu Hidaka
 

Similar a Port Bluedroid to RTOS (20)

WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sampleWebRTC SFU mediasoup sample
WebRTC SFU mediasoup sample
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywords
 
runC概要と使い方
runC概要と使い方runC概要と使い方
runC概要と使い方
 
ストリーミングのげんざい
ストリーミングのげんざいストリーミングのげんざい
ストリーミングのげんざい
 
ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部
 
Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1
 
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
 
Raspberry pi三分クッキング(さいたま開発勉強会 Vol 9)
Raspberry pi三分クッキング(さいたま開発勉強会 Vol 9)Raspberry pi三分クッキング(さいたま開発勉強会 Vol 9)
Raspberry pi三分クッキング(さいたま開発勉強会 Vol 9)
 
TurtleBot3でROSを始めよう
TurtleBot3でROSを始めようTurtleBot3でROSを始めよう
TurtleBot3でROSを始めよう
 
ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?ゲームの通信をつくる仕事はどうなるのだろう?
ゲームの通信をつくる仕事はどうなるのだろう?
 
HTTP入門
HTTP入門HTTP入門
HTTP入門
 
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
 
IT エンジニアのための 流し読み Windows 10 - Windows のネットワーク最適化機能
IT エンジニアのための 流し読み Windows 10 - Windows のネットワーク最適化機能IT エンジニアのための 流し読み Windows 10 - Windows のネットワーク最適化機能
IT エンジニアのための 流し読み Windows 10 - Windows のネットワーク最適化機能
 
HCL Sametime V12 概要
HCL Sametime V12 概要HCL Sametime V12 概要
HCL Sametime V12 概要
 
HTTP/2.0と標準化
HTTP/2.0と標準化HTTP/2.0と標準化
HTTP/2.0と標準化
 
PIC RoR Heroku
PIC RoR HerokuPIC RoR Heroku
PIC RoR Heroku
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
MRTGの導入と運用
MRTGの導入と運用MRTGの導入と運用
MRTGの導入と運用
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF
 

Port Bluedroid to RTOS