今さらですが、BLEの最大データサイズって (BLE4.2以降のデータ長拡張は別として) 何バイトでしょう? 27バイト? 23バイト? 22バイト? 20バイト?
資料によってまちまちで混乱しませんか? 中には「20バイト程度」とかボカして書かれてたり。これ、図解すると下図のようになります。
27バイトというのはLLのペイロードの最大サイズ、23バイトというのはL2CAPのペイロードの最大サイズ、22バイトや20バイトというのはATTのペイロードの最大サイズです。
BLEもEthernetとかと同様に何段にもプロトコルが積み重なってるので、上にいくほどヘッダが削ぎ落されてペイロードが小さくなっていきます。Ethernetだと元が1500バイト以上あるのでそこまで気になりませんが、BLEは元が小さいのですごく目減りする感じがします。
結論としてキャラクタリスティックの最大データサイズはReadでは22バイト、Write, Notify, Indicateでは20バイトとなります。が、Read専用の場合だけ22バイトというのもおなしな話なので一律最大20バイトと考えたほうが無難に思います。
しらんけど。