nl:: Ble:: BleLayer
#include <src/ble/BleLayer.h>
이 클래스는 단일 스레드가 BleLayer 플랫폼 함수를 통해 스택을 구동하거나 BLEEndPoint와 연결된 WeaveConnection 객체를 통해 스택을 구동하는 인터페이스를 제공합니다.
요약
WeaveConnection (WeaveMessageLayer에서 정의)을 BLE 연결과 연결하는 방법에는 두 가지가 있습니다.
먼저 애플리케이션은 수신되는 BLE 연결을 수동적으로 수신하고 이 영수증이 생성한 플랫폼별 BLE_CONNECTION_OBJECT를 상응하는 플랫폼 인터페이스 함수를 통해 BleLayer에 전달할 수 있습니다. 그러면 BleLayer가 BLEEndPoint에서 BLE_CONNECTION_OBJECT를 래핑하고 새 BLE 연결이 수신되었음을 WeaveMessageLayer에 알립니다. 그런 다음 메시지 레이어가 WeaveConnection에서 새 BLEEndPoint 객체를 래핑하고 메시지 레이어's 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( void )
핸들 연결 오류
void HandleConnectionError( BLE_CONNECTION_OBJECT connObj, BLE_ERROR err )
핸들 처리 확인
bool HandleIndicationConfirmation( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
수신 중인 GATT 표시가 양성 확인을 받으면 호출됩니다.
핸들 처리됨
bool HandleIndicationReceived( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf )
GATT 표시가 수신되면 호출합니다.
핸들 읽기 수신
bool HandleReadReceived( BLE_CONNECTION_OBJECT connObj, BLE_READ_REQUEST_CONTEXT requestContext, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
GATT 읽기 요청이 수신되면 호출됩니다.
BleAdapter를 통해 BleLayer가 수행한 이전 작업(예: 특성 쓰기 요청 또는 구독 시도)이 실패하거나 BLE 연결이 닫힌 경우 플랫폼에서 이 함수를 호출해야 합니다.
대부분의 경우 Weave에 연결된 WeaveConnection을 닫고, 기본 BLE 연결을 중단했음을 플랫폼에 알리라는 메시지가 표시됩니다.
참고: 애플리케이션이 WeaveConnection과 연결된 BLE 연결을 명시적으로 닫아 BLE 연결 종료가 Weave로 업콜을 생성하지 않는 경우 HandleConnectionError는 err = BLE_ERROR_APP_CLOSED_CONNECTION과 함께 호출되어 이 WeaConnectionConnection 및 엔드포인트 객체의 누수를 방지합니다.
구독 완료
bool HandleSubscribeComplete( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
GATT 구독 요청이 성공하면 호출합니다.
모든 Wetve 서비스 특성에 대해 GATT 구독 취소가 요청되면 즉, Weave 서비스 특성의 기존 GATT 구독이 취소된 경우 플랫폼에서 이 함수를 호출해야 합니다.
HandleSubscriptionReceived
bool HandleSubscribeReceived( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
수신 거부 처리
bool HandleUnsubscribeComplete( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
GATT 구독 취소 요청이 성공하면 호출합니다.
수신 거부 처리
bool HandleUnsubscribeReceived( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
핸들 쓰기 확인
bool HandleWriteConfirmation( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
수신 대기 중인 GATT 쓰기 요청에 대해 긍정적인 수신 확인이 확인되면 호출합니다.
핸들 쓰기 수신
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 )
뉴블렉포인트
BLE_ERROR NewBleEndPoint( BLEEndPoint **retEndPoint, BLE_CONNECTION_OBJECT connObj, BleRole role, bool autoClose )
작업 예약
nl::Weave::System::Error ScheduleWork( nl::Weave::System::Layer::TimerCompleteFunct aComplete, void *aAppState )
플랫폼 인터페이스 함수:
호출 규칙: Weave는 이러한 함수를 통해 수신된 PacketBuffer의 소유권을 가져와 스택에서 해제하거나 소유권을 스택에 전달합니다.
각 호출 외에도 UUID 인수의 전체 기간에 대한 보장은 제공되지 않습니다.
'true' 반환 값은 Weave 스택이 해당 메시지 또는 상태 표시를 성공적으로 처리했음을 의미합니다. 'false'는 Weave 스택이 실패했거나 처리 여부를 선택했음을 의미합니다. 'false,'의 경우, Weave 스택은 PacketBuffer 인수의 공간을 확보하거나 소유권을 보유하지 않습니다. 이 계약을 통해 플랫폼은 Weave가 중요하게 여기는 특성을 알 필요 없이 Weave에 BLE 이벤트를 전달할 수 있습니다.
GATT 구독이 모든 Weave 서비스 문자판에 설정된 경우 플랫폼에서 이 함수를 호출해야 합니다.
이 함수가 True를 반환하면 Weave가 BLE 연결을 수락하여 WeaveConnection 객체에 래핑했습니다. Weave가 BLE 연결을 허용하면 플랫폼에서 정기 결제가 취소되거나 기본 BLE 연결이 닫히거나 관련 WeaveConnection이 닫히거나 해제되지 않는 경우 플랫폼에서 Weave에 알려야 합니다(MUST).