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) typedef
void(*

パブリック属性

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 が閉じたり解放されたりすることはありません。

シャットダウン

BLE_ERROR Shutdown(
  void
)