nl::Ble::BleLayer

#include <src/ble/BleLayer.h>

이 클래스는 BleLayer 플랫폼 인터페이스 함수를 통해 스택 위로 또는 BLEEndPoint와 연결된 WeaveConnection 객체를 통해 스택 아래로 데이터를 구동하는 단일 스레드용 인터페이스를 제공합니다.

요약

WeaveMessageLayer에 의해 정의된 WeaveConnection을 BLE 연결과 연결하는 방법에는 두 가지가 있습니다.

첫째, 애플리케이션은 수신되는 BLE 연결을 수동으로 수신하고, 이 영수증에서 생성되는 플랫폼별 BLE_CONNECTION_OBJECT를 해당 플랫폼 인터페이스 함수를 통해 BleLayer에 전달할 수 있습니다. 이렇게 하면 BleLayer가 BLE_CONNECTION_OBJECT를 BLEEndPoint에 래핑하고 WeaveMessageLayer에 새 BLE 연결이 수신되었음을 알립니다. 그런 다음 메시지 레이어는 WeaveConnection에서 새로운 BLEEndPoint 객체를 래핑하고 메시지 레이어의 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 연결이 닫힌 경우 이 함수를 호출해야 합니다.

대부분의 경우, 이렇게 하면 Weave는 연결된 WeaveConnection을 닫고 플랫폼에 기본 BLE 연결을 포기했음을 알립니다.

참고: BLE 연결을 종료할 때 Weave에 대한 upcall이 생성되지 않도록 애플리케이션이 연결된 WeaveConnection을 사용한 BLE 연결을 명시적으로 닫는 경우, HandleConnectionError를 err = BLE_ERROR_APP_CLOSED_CONNECTION으로 호출하여 이 WeaveConnection과 엔드포인트 객체의 유출을 방지해야 합니다.

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에 전달할 수 있습니다.

플랫폼은 GATT 구독이 Weave 서비스 속성에 대해 설정된 경우 이 함수를 호출해야 합니다.

이 함수가 true를 반환하면 Weave가 BLE 연결을 수락하고 WeaveConnection 객체에 래핑한 것입니다. Weave가 BLE 연결을 수락하면 플랫폼은 구독이 취소되거나 기본 BLE 연결이 닫히면 Weave에 알려야 합니다(MUST). 그렇지 않으면 연결된 WeaveConnection이 종료되거나 해제되지 않습니다.

종료

BLE_ERROR Shutdown(
  void
)