2016/07/12

[nrf52]ATT MTU長の変更 (1)

hiro99ma blog: [ble]ATT_MTU
hiro99ma blog: [ble]NotificationはATT_MTU-3まで

そう、nRF51822では、ATT MTUは23バイト固定だった。
そのため、認証がない場合のATT Protocol PDUはオペコード1バイトとATTパラメータ22バイトまで。

たとえばWrite Requestなんかだと、ATTパラメータのうち2バイトはハンドル値なので、書き込めるデータは20バイトまでになっていた。

image

これ以上やりたかったら、Long Writesせんといかん。

しかし最近、nRF52832のSoftDevice S132のv3.0.0-alpha2というものが出た。
なんと、MTUサイズの上限が512バイトまで拡張されたというではないか。

試してみたい。。。


しかし、だ。
気になるのは「4.2 feature」と書いてあるところだ。
ATT MTUのデフォルト値は23バイトだけれども、あれは規格でも固定だったのだろうか?

Interface誌の特集を読み返すと、PDUサイズが、

  • 4.1まで:2~39バイト
  • 4.2 : 2~257バイト

となっている(面倒だから、もう単位は「バイト」で書いている)。

数字がわかれば、検索しやすい。
257なんてのは、最適だ。
Core_v4.2の[Vol 6, Part B][2.1 Packet Format]に載っていた。

image

仕様書のつらいところは、以前からの変更が載っていないことだな。
ともあれ、257バイトまでだ。

ただ、これは無線上のパケットの話で、ATTはもっと上位層だ。
あくまで無線上のパケットに1回で載せられるデータ量が変わっただけで、その上位層とは別の話になる。

まあ、ここが大きくなるとパイプが太くなるのと同じで、大きいデータの転送効率はよくなるだろう。


だから、ATT MTUを大きくできるのは、v4.2とは関係ないんじゃないか・・・という気がしている。

SoftDeviceが新しくなることで、sd_ble_gatts_exchange_mtu_reply()という関数が追加された。
たぶん、MTUサイズの交換フェーズで、相手から聞かれたときに返すサイズを指定できるんじゃなかろうか。

 

MTUのサイズ交換したら、なんとなく小さい方にあわせられてしまいそうな気がする。
もしv4.2から対応するようなものだったら、そういうスマホを持っていないから動作確認できないな。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。