nl:: Ble:: BleLayer
#include <src/ble/BleLayer.h>
이 클래스는 단일 스레드가 데이터를 BleLayer 플랫폼 인터페이스 함수를 통해 스택 위로 이동하거나 BLEEndPoint와 연결된 WeaveConnection 객체를 통해 스택 아래로 이동할 수 있는 인터페이스를 제공합니다.
요약
WeaveConnection (WeaveMessageLayer에 의해 정의됨)을 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의 인증 유형 멤버 변수로 지정된 보안 세션 유형을 설정합니다.
상속
직접 알려진 서브클래스: <ph type="x-smartling-placeholder"></ph> nl::Weave::DeviceLayer::Internal::BLEManagerImpl <ph type="x-smartling-placeholder">
</ph> nl::Weave::DeviceLayer::Internal::BLEManagerImpl <ph type="x-smartling-placeholder">
</ph> 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 연결이 닫힌 경우 플랫폼에서 이 함수를 호출해야 합니다.
대부분의 경우, 이 경우 Weave에 연결된 WeaveConnection을 닫고 플랫폼에 기본 BLE 연결을 포기했음을 알리라는 메시지를 표시합니다.
참고: 애플리케이션이 연결된 WeaveConnection으로 BLE 연결을 명시적으로 종료하여 BLE 연결 종료가 Weave에 대한 업콜을 생성하지 않는 경우, WeaveConnection 및 엔드포인트 객체의 유출을 막기 위해 HandleConnectionError를 err = BLE_ERROR_APP_CLOSED_CONNECTION과 함께 호출해야 합니다.
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는 이러한 함수를 통해 수신된 PacketBuffer의 소유권을 가져와 해제하거나 소유권을 스택 위로 전달합니다.
각 호출 외에는 UUID 인수의 전체 기간에 관한 보장이 제공되지 않습니다.
'true' 반환 값은 Weave 스택이 해당 메시지 또는 상태 표시를 성공적으로 처리했음을 의미합니다. 'false'[거짓] Weave 스택이 실패했거나 이를 처리하지 않기로 선택했음을 의미합니다. 'false'인 경우 Weave 스택은 어떠한 PacketBuffer 인자도 해제하거나 소유권을 가져오지 않습니다. 이 계약을 통해 플랫폼은 Weave가 어떤 특성에 관심이 있는지 몰라도 BLE 이벤트를 Weave로 전달할 수 있습니다.
Weave 서비스 특성에 대해 GATT 구독이 설정된 경우 플랫폼은 이 함수를 호출해야 합니다.
이 함수가 true를 반환하면 Weave가 BLE 연결을 수락하고 WeaveConnection 객체에 래핑한 것입니다. Weave가 BLE 연결을 수락하면 플랫폼은 구독이 취소되었거나, 기본 BLE 연결이 닫히거나, 연결된 WeaveConnection이 닫히거나 해제되지 않는 경우 이를 Weave에 알려야 합니다(MUST).