BlueZにてBLEのアドバタイズ送信パラメータを調整する

# Overview
・BlueZにてBLEアドバタイズパケットを送信する際の周期を変更する
・アドバタイズタイプを指定する
・自アドレスのタイプを指定する
・ペアのアドレスタイプを指定する
・ペアのアドレスを指定する
・アドバタイズパケットのチャンネルを指定する
・アドバタイズフィルタのポリシーを設定する

# コマンド
`
$ sudo hcitool -i hci0 cmd 0x08 0x0006 Min Max AdvT OwnAdT PeerAdT PeerAd ChMap Policy`
※各データは16進数表記．1オクテットごとにスペース区切り．リトルエンディアン．
　リトルエンディアンとは：http://www.wdic.org/w/TECH/%E3%83%AA%E3%83%88%E3%83%AB%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3
## Min (Advertising_Interval_Min)
|値|初期値|説明|
|:--|:--|:--|
|N = 0xXXXX|0x0800|最小のアドバタイズパケット送信周期．<br>Range：N = 0x0020 to 0x4000<br>Time = N * 0.625msec|
## Max (Advertising_Interval_Max)
|値|初期値|説明|
|:--|:--|:--|
|N = 0xXXXX|0x0800|最大のアドバタイズパケット送信周期．<br>Range：N = 0x0020 to 0x4000<br>Time = N * 0.625msec|
## AdvT (Advertising_Type)
|値|説明|
|:--|:--|
|0x00|Connectable undirected advertising (ADV_IND) **初期値** |
|0x01|Connectable high duty cycle directed advertising(ADV_DIRECT_IND, high duty cycle)|
|0x02|Scannable undirected advertising (ADV_SCAN_IND)|
|0x03|Non connectable undirected advertising (ADV_NONCONN_IND)|
|0x04|Connectable low duty cycle directed advertising(ADV_DIRECT_IND, low duty cycle)|
|0x05-0xFF|未使用|
## OwnAdT (Own_Address_Type)
|値|説明|
|:--|:--|
|0x00|Public Device Address  **初期値** |
|0x01|Random Device Address|
|0x02|Controller generates Resolvable Private Address based on the local IRK from resolving list. <br>If resolving list contains no matching entry, use public address.|
|0x03|Controller generates Resolvable Private Address based on the local IRK from resolving list. <br>If resolving list contains no matching entry, use random address from LE_Set_Random_Address.|
|0x04-0xFF|未使用|
## PeerAdT (Peer_Address_Type)
|値|説明|
|:--|:--|
|0x00|Public Device Address (**初期値**) or Public Identity Address  |
|0x01|Random Device Address or Random (static) Identity Address|
|0x02-0xFF|未使用|
## PeerAd (Peer_Address)
|値|説明|
|:--|:--|
|0xXXXXXXXXXXXX|Public Device Address, Random Device Address, Public Identity Address, or Random (static) Identity Address of the device to be connected|
## ChMap (Advertising_Channel_Map)
|値|説明|
|:--|:--|
|00000000b|未使用|
|xxxxxxx1b|Channel 37 shall be used|
|xxxxxx1xb|Channel 38 shall be used|
|xxxxx1xxb|Channel 39 shall be used|
|xxxxx111b|all channels enabled **初期値**|
## Policy(Advertising_Filter_Policy)
|値|説明|
|:--|:--|
|0x00|Process scan and connection requests from all devices (i.e., the White List is not in use) **初期値** |
|0x01|Process connection requests from all devices and only scan requests from devices that are in the White List.|
|0x02|Process scan requests from all devices and only connection requests from devices that are in the White List..|
|0x03|Process scan and connection requests only from devices in the White List.|
|0x04-0xFF|未使用|
# 備考
* いろいろパラメータをいじった場合，`hciconfig hci0 leadv 3`にてアドバタイズを開始しないこと．  
（レートが自動的に1280msに変わる）  
`hcitool -i hci0 cmd 0x08 0x000a 01`にてアドバタイズを開始すること．
* Min，Max，PeerAdは特にリトルエンディアン記法に注意．



# 実行例
* アドバタイズパケット送信周期を200msから1000msにしたい．
* アドバタイズタイプはADV_SCAN_INDで．
* あとは特に指定なし

Min : 200 / 0.625  = 320 = 0x0140
Max : 1000 / 0.625 = 1600 = 0x0640
AdvT: ADV_SCAN_IND -> 0x02
```$ sudo hcitool -i hci0 cmd 0x08 0x0006 40 01 40 06 02 00 00 00 00 00 00 00 00 07 00
$ sudo hcitool -i hci0 cmd 0x08 0x000a 01```

# 参考
* http://stackoverflow.com/questions/21124993/is-there-a-way-to-increase-ble-advertisement-frequency-in-bluez
* https://www.bluetooth.org/en-us/specification/adopted-specifications  
(Core Version 4.2参照)