nl:: Ble:: BleLayer
#include <src/ble/BleLayer.h>
このクラスは、BleLayer プラットフォーム インターフェース関数を介してスタックを上位にするか、BLEEndPoint に関連付けられた WeaveConnection オブジェクトを介してスタックを下方に誘導するシングル スレッドのインターフェースを提供します。
概要
WeaveConnection(WeaveMessageLayer で定義)を BLE 接続に関連付けるには、次の 2 つの方法があります。
まず、アプリは受信 BLE 接続を受動的に受信し、この領収書で生成したプラットフォーム固有の BLE_CONNECTION_OBJECT を、対応するプラットフォーム インターフェース関数を介して BleLayer に渡します。これにより、BleLayer は BLE_CONNECTION_OBJECT を BLEEndPoint でラップし、新しい BLE 接続を受信したことを WeaveMessageLayer に通知します。メッセージ レイヤは新しい BLEEndPoint オブジェクトを WeaveConnection でラップし、メッセージ レイヤの OnConnectionReceived コールバックを介してこのオブジェクトをアプリに渡します。
次に、アプリは BLE 周辺機器に接続するなどして、送信 BLE 接続をアクティブに形成できます。次に、WeaveMessageLayer を介して新しい WeaveConnection を作成し、この接続に認証タイプを割り当て、WeaveConnection::ConnectBle を介して新しい BLE 接続の BLE_CONNECTION_OBJECT にバインドします。この関数は、WeaveConnection の認証タイプ メンバー変数で指定されたセキュアなセッション タイプを確立します。
継承
直系の既知のサブクラス:nl::Weave::DeviceLayer::Internal::BLEManagerImpl
nl::Weave::DeviceLayer::Internal::BLEManagerImpl
nl::Weave::DeviceLayer::Internal::BLEManagerImpl
コンストラクタとデストラクタ |
|
---|---|
BleLayer(void)
|
公開タイプ |
|
---|---|
@14
|
enum |
BleConnectionReceivedFunct)(BLEEndPoint *newEndPoint)
|
typedefvoid(*
|
パブリック属性 |
|
---|---|
OnWeaveBleConnectReceived
|
BleConnectionReceivedFunct
|
mAppState
|
void *
|
mState
|
enum nl::Ble::BleLayer::@14
[読み取り専用] 現在の状態
|
パブリック関数 |
|
---|---|
HandleConnectionError(BLE_CONNECTION_OBJECT connObj, BLE_ERROR err)
|
void
|
HandleIndicationConfirmation(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
|
bool
未解決の GATT 通知で肯定的な受領確認を受け取ったときに呼び出します。
|
HandleIndicationReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf)
|
bool
GATT インジケーションを受信したときに呼び出します。
|
HandleReadReceived(BLE_CONNECTION_OBJECT connObj, BLE_READ_REQUEST_CONTEXT requestContext, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
|
bool
GATT 読み取りリクエストを受信したときに呼び出されます。
|
HandleSubscribeComplete(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
|
bool
GATT サブスクライブ リクエストが成功したときに呼び出します。
|
HandleSubscribeReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
|
bool
|
HandleUnsubscribeComplete(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
|
bool
GATT 登録解除リクエストが成功したときに呼び出します。
|
HandleUnsubscribeReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
|
bool
|
HandleWriteConfirmation(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
|
bool
未処理の GATT 書き込みリクエストが、肯定的な受領確認を受け取ったときに呼び出されます。
|
HandleWriteReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf)
|
bool
GATT 書き込みリクエストを受信したときに呼び出します。
|
Init(BlePlatformDelegate *platformDelegate, BleApplicationDelegate *appDelegate, Weave::System::Layer *systemLayer)
|
|
NewBleEndPoint(BLEEndPoint **retEndPoint, BLE_CONNECTION_OBJECT connObj, BleRole role, bool autoClose)
|
|
ScheduleWork(nl::Weave::System::Layer::TimerCompleteFunct aComplete, void *aAppState)
|
nl::Weave::System::Error
プラットフォーム インターフェース関数:
|
Shutdown(void)
|
公開タイプ
@14
@14
BleConnectionReceivedFunct
void(* BleConnectionReceivedFunct)(BLEEndPoint *newEndPoint)
パブリック属性
OnWeaveBleConnectReceived
BleConnectionReceivedFunct OnWeaveBleConnectReceived
mAppState
void * mAppState
mState
enum nl::Ble::BleLayer::@14 mState
[読み取り専用] 現在の状態
パブリック関数
BleLayer
BleLayer( void )
HandleConnectionError
void HandleConnectionError( BLE_CONNECTION_OBJECT connObj, BLE_ERROR err )
HandleIndicationConfirmation
bool HandleIndicationConfirmation( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
未解決の GATT 通知で肯定的な受領確認を受け取ったときに呼び出します。
HandleIndicationReceived
bool HandleIndicationReceived( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf )
GATT インジケーションを受信したときに呼び出します。
HandleReadReceived
bool HandleReadReceived( BLE_CONNECTION_OBJECT connObj, BLE_READ_REQUEST_CONTEXT requestContext, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
GATT 読み取りリクエストを受信したときに呼び出されます。
プラットフォームは、BleAdapter を介して BleLayer によって行われた以前の処理が失敗した場合(特徴的な書き込みリクエストやサブスクライブの試行など)、または BLE 接続が閉じられたときに、この関数を呼び出す必要があります。
これにより、ほとんどの場合、関連付けられている WeaveConnection が終了し、基盤となる BLE 接続を放棄したことがプラットフォームに通知されるようになります。
注: BLE 接続を閉じても Weave へのアップコールを生成しないように、アプリケーションが関連付けられている WeaveConnection を使用して BLE 接続を明示的に閉じる場合は、この WeaveConnection とそのエンドポイント オブジェクトのリークを防ぐため、err = BLE_ERROR_APP_CLOSED_CONNECTION を指定して HandleConnectionError を呼び出す必要があります。
HandleSubscribeComplete
bool HandleSubscribeComplete( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
GATT サブスクライブ リクエストが成功したときに呼び出します。
プラットフォームは、Weave サービス特性で GATT の登録解除がリクエストされたとき、つまり Weave サービス特性の既存の GATT サブスクリプションが解約されたときに、この関数を呼び出す必要があります。
HandleSubscribeReceived
bool HandleSubscribeReceived( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
HandleUnsubscribeComplete
bool HandleUnsubscribeComplete( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
GATT 登録解除リクエストが成功したときに呼び出します。
HandleUnsubscribeReceived
bool HandleUnsubscribeReceived( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
HandleWriteConfirmation
bool HandleWriteConfirmation( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
未処理の GATT 書き込みリクエストが、肯定的な受領確認を受け取ったときに呼び出されます。
HandleWriteReceived
bool HandleWriteReceived( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf )
GATT 書き込みリクエストを受信したときに呼び出します。
init
BLE_ERROR Init( BlePlatformDelegate *platformDelegate, BleApplicationDelegate *appDelegate, Weave::System::Layer *systemLayer )
NewBleEndPoint
BLE_ERROR NewBleEndPoint( BLEEndPoint **retEndPoint, BLE_CONNECTION_OBJECT connObj, BleRole role, bool autoClose )
ScheduleWork
nl::Weave::System::Error ScheduleWork( nl::Weave::System::Layer::TimerCompleteFunct aComplete, void *aAppState )
プラットフォーム インターフェース関数:
呼び出し規則: Weave は、これらの関数を通じて受け取った PacketBuffers の所有権を取得し、解放するか、所有権をスタックに渡します。
各呼び出しの後は、UUID 引数の存続期間に関する保証はありません。
「true」戻り値は、Weave スタックが対応するメッセージまたは状態表示を正常に処理したことを意味します。「false」は、Weave スタックが失敗したか、これを処理しなかったことを意味します。「false」の場合Weave スタックは、PacketBuffer 引数を解放したり、所有権を取得したりしません。このコントラクトにより、プラットフォームは Weave が重視する特性を把握していなくても、BLE イベントを Weave に渡すことができます。
プラットフォームは、Weave サービス特性に対して GATT サブスクリプションが確立されたときに、この関数を呼び出す必要があります。
この関数が true を返した場合、Weave は BLE 接続を受け入れ、WeaveConnection オブジェクトにラップしています。Weave が BLE 接続を受け入れた場合、プラットフォームはサブスクリプションが解約されたか、基盤となる BLE 接続が閉じられたときに Weave に通知しなければなりません。そうしないと、関連する WeaveConnection が閉じたり解放されたりすることはありません。