0

CSR1010 Dev Kit 用のファームウェアを作成する前に、ANCS がどのように機能するかを理解するために ANCS をいじっています。

中央として機能し、ANCS サービスに問い合わせるコマンド ライン アプリケーションを Objective C で作成しています。通知ソースを問題なく受信し、必要な属性を取得するための正しい詳細をコントロール ポイントに書き戻すことができます。

私が今抱えている問題は、Data Source 特性がいつ送信を完了したのか分からないということです。私が持っている MTU サイズは 20 バイトなので、戻ってくるデータは必要なパケットにつなぎ合わされ、問題なく送信されます。送信が終了したときに頭が回らなくなりました。私が見ることができることから、メッセージタグの末尾や嘘、またはすべてのデータが到着したことを確認する方法がないため、すべてを再びつなぎ合わせることができます.

ANCS に関する Appleのドキュメントには次のように書かれています。

Get App Attributes コマンドへの応答が、ネゴシエートされた GATT 最大転送単位 (MTU) より大きい場合、NP によって複数のフラグメントに分割されます。NC は、各フラグメントをスプライシングして応答を再構成する必要があります。要求された各属性の完全なタプルが受信されると、応答が完了します。

「要求された各属性の完全なタプルがいつ受信されたか」をどのように知ることができますか?

Thx//56k

4

1 に答える 1

0

ANCS 仕様 ( https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/AppleNotificationCenterServiceSpecification/Specification/Specification.html#//apple_ref/doc/uid/TP40013460-CH1-SW7 ) には次のように記載されています。

応答がネゴシエートされた GATT 最大伝送単位 (MTU) よりも大きい場合、応答は NP によって複数のフラグメントに分割されます。NC は、各フラグメントをスプライシングして応答を再構成する必要があります。要求された各属性の完全なタプルが受信されると、応答が完了します。

GetNotificationAttributes リクエストを送信するときは、リクエストしている属性のリスト (または少なくともリクエストした数) を保存する必要があります。次に、応答を解析するときに、要求したすべての属性を受け取るまで、さらに分割されたデータ パケットを待ち続ける必要があります。これは基本的に、ANCS が常に完全に応答することを信頼することを意味します。ただし、安全のために、コードにタイムアウトを追加します。こうすれば、ANCS が何らかの形で動かなくなった場合でも、その混乱に追随することはありません =)

マッテオ

于 2014-10-20T17:34:14.193 に答える