nl:: Ble:: BleLayer
#include <src/ble/BleLayer.h>
Ta klasa udostępnia interfejs pojedynczego wątku do kierowania danych w górę stosu za pomocą funkcji interfejsu platformy BleLayer lub w dół stosu za pomocą obiektu WeaveConnection powiązanego z BLEEndPoint.
Podsumowanie
Istnieją 2 sposoby powiązania WeaveConnection (zdefiniowane za pomocą WeaveMessageLayer) z połączeniem BLE:
Pierwsza aplikacja może pasywnie odebrać przychodzące połączenie BLE i przekazać powiązany z platformą BLE_CONNECTION_OBJECT, który ten rachunek generuje ten rachunek, do BleLayer przez odpowiednią funkcję interfejsu platformy. Powoduje to, że obiekt BleLayer pakuje obiekt BLE_CONNECTION_OBJECT w obiekt BLEEndPoint i wysyła powiadomienie WeaveMessageLayer o odebraniu nowego połączenia BLE. Warstwa wiadomości opakowuje nowy obiekt BLEEndPoint w elemencie WeaveConnection i przekazuje ten obiekt aplikacji za pomocą wywołania zwrotnego OnConnectionReceived w warstwie wiadomości.
Poza tym aplikacja może aktywnie tworzyć wychodzące połączenia BLE, np. przez połączenie z urządzeniem peryferyjnym BLE. Następnie tworzy nowe połączenie WeaveConnection za pomocą WeaveMessageLayer, przypisuje do tego połączenia typ uwierzytelniania i przypisuje je do BLE_CONNECTION_OBJECT dla nowego połączenia BLE przez WeaveConnection::ConnectBle. Ta funkcja określa typ bezpiecznej sesji określony przez zmienną typu uwierzytelniania WeaveConnection.
Dziedziczenie
Bezpośrednie znane podklasy:nl::Weave::DeviceLayer::Internal::BLEManagerImpl
nl::Weave::DeviceLayer::Internal::BLEManagerImpl
nl::Weave::DeviceLayer::Internal::BLEManagerImpl
Konstruktorzy i niszczyciele |
|
---|---|
BleLayer(void)
|
Typy publiczne |
|
---|---|
@14
|
enum | typ wyliczeniowy |
BleConnectionReceivedFunct)(BLEEndPoint *newEndPoint)
|
typedefvoid(*
|
Atrybuty publiczne |
|
---|---|
OnWeaveBleConnectReceived
|
BleConnectionReceivedFunct
|
mAppState
|
void *
|
mState
|
enum nl::Ble::BleLayer::@14
[TYLKO DO ODCZYTU] Bieżący stan
|
Funkcje publiczne |
|
---|---|
HandleConnectionError(BLE_CONNECTION_OBJECT connObj, BLE_ERROR err)
|
void
|
HandleIndicationConfirmation(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
|
bool
Zadzwoń, gdy pojawi się komunikat GATT, który potwierdzi potwierdzenie odbioru.
|
HandleIndicationReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf)
|
bool
Zadzwoń po otrzymaniu wskaźnika GATT.
|
HandleReadReceived(BLE_CONNECTION_OBJECT connObj, BLE_READ_REQUEST_CONTEXT requestContext, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
|
bool
Wywołuje po otrzymaniu żądania odczytu GATT.
|
HandleSubscribeComplete(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
|
bool
Wywołuje, gdy prośba o subskrypcję w GATT zostanie zrealizowana.
|
HandleSubscribeReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
|
bool
|
HandleUnsubscribeComplete(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
|
bool
Wywołuje po zrealizowaniu prośby o anulowanie subskrypcji 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
Zadzwoń, gdy oczekująca prośba o wypisanie GATT otrzyma potwierdzenie odbioru.
|
HandleWriteReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf)
|
bool
Wywołuje po otrzymaniu żądania zapisu 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
Funkcje interfejsu platformy:
|
Shutdown(void)
|
Typy publiczne
@14
@14
BleConnectionReceivedFunct
void(* BleConnectionReceivedFunct)(BLEEndPoint *newEndPoint)
Atrybuty publiczne
OnWeaveBleConnectReceived
BleConnectionReceivedFunct OnWeaveBleConnectReceived
mAppState
void * mAppState
mState
enum nl::Ble::BleLayer::@14 mState
[TYLKO DO ODCZYTU] Bieżący stan
Funkcje publiczne
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 )
Zadzwoń, gdy pojawi się komunikat GATT, który potwierdzi potwierdzenie odbioru.
HandleIndicationReceived
bool HandleIndicationReceived( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf )
Zadzwoń po otrzymaniu wskaźnika GATT.
HandleReadReceived
bool HandleReadReceived( BLE_CONNECTION_OBJECT connObj, BLE_READ_REQUEST_CONTEXT requestContext, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
Wywołuje po otrzymaniu żądania odczytu GATT.
Platforma musi wywoływać tę funkcję, gdy jakakolwiek wcześniejsza operacja wykonana przez BleLayer za pomocą BleAdaptera zawiedzie, na przykład w wyniku żądania charakterystycznego zapisu, próby subskrypcji lub gdy połączenie BLE zostanie zamknięte.
W większości przypadków spowoduje to zamknięcie powiązanej z nią platformy WeaveConnection i powiadomienie platformy, że porzuciła połączenie BLE.
UWAGA: jeśli aplikacja wyraźnie zamyka połączenie BLE z powiązanym kanałem WeaveConnection w taki sposób, że zamknięcie połączenia BLE nie spowoduje wywołania wywołania Weave, metoda HandleConnectionError musi być wywoływana z błędem = BLE_ERROR_APP_CLOSED_CONNECTION, aby zapobiec wyciekowi tego połączenia WeaveConnection i jego obiektu punktu końcowego.
HandleSubscribeComplete
bool HandleSubscribeComplete( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
Wywołuje, gdy prośba o subskrypcję w GATT zostanie zrealizowana.
Platforma musi wywoływać tę funkcję, gdy zostanie wysłane żądanie anulowania subskrypcji GATT w przypadku dowolnej cechy usługi Weave, czyli w przypadku anulowania dotychczasowej subskrypcji GATT w obrębie cechy usługi Weave.
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 )
Wywołuje po zrealizowaniu prośby o anulowanie subskrypcji 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 )
Zadzwoń, gdy oczekująca prośba o wypisanie GATT otrzyma potwierdzenie odbioru.
HandleWriteReceived
bool HandleWriteReceived( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf )
Wywołuje po otrzymaniu żądania zapisu GATT.
Zainicjuj
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 )
Funkcje interfejsu platformy:
Konwencje wywoływania: Weave przejmuje własność buforów pakietów otrzymanych za pomocą tych funkcji i uwalnia je lub przekazuje prawo własności do stosu.
Oprócz każdego wywołania nie ma gwarancji co do okresu ważności argumentów UUID.
Zwracana wartość „true” oznacza, że stos Weave prawidłowo obsługiwał odpowiedni komunikat lub informację o stanie. Wartość „false” (fałsz) oznacza, że stos Weave zakończył się niepowodzeniem lub nie został przeprowadzony. W przypadku wartości „false” (fałsz) stos Weave nie zwolni żadnego argumentu PacketBuffer ani nie przejmie prawa własności do niego. Dzięki niej platforma może przekazywać zdarzenia BLE do Weave bez konieczności wiedzy o tym, na jakich cechach Weave zależy.
Platforma musi wywołać tę funkcję po ustanowieniu subskrypcji GATT na potrzeby dowolnej cechy usługi Weave.
Jeśli ta funkcja zwraca wartość „true” (prawda), aplikacja Weave zaakceptowała połączenie BLE i umieściła je w obiekcie WeaveConnection. Jeśli Weave akceptuje połączenie BLE, platforma MUSI powiadomić Weave o anulowaniu subskrypcji lub zamknięciu bazowego połączenia BLE. Dodatkowo powiązane połączenie WeaveConnection nigdy nie zostanie zamknięte ani uwolnione.