нл:: Бле:: БлеЛайер
#include <src/ble/BleLayer.h>
Этот класс предоставляет интерфейс для одного потока для передачи данных либо вверх по стеку через функции интерфейса платформы BleLayer , либо вниз по стеку через объект WeaveConnection, связанный с BLEEndPoint .
Краткое содержание
Существует два способа связать WeaveConnection (определенный WeaveMessageLayer) с соединением BLE:
Во-первых, приложение может пассивно получать входящее соединение BLE и передавать специфичный для платформы BLE_CONNECTION_OBJECT, который генерирует это подтверждение, в BleLayer через соответствующую функцию интерфейса платформы. Это заставляет BleLayer обернуть BLE_CONNECTION_OBJECT в BLEEndPoint и уведомить WeaveMessageLayer о получении нового соединения BLE. Затем уровень сообщений оборачивает новый объект BLEEndPoint в WeaveConnection и передает этот объект приложению через обратный вызов OnConnectionReceived уровня сообщений.
Во-вторых, приложение может активно формировать исходящее соединение BLE, например, путем подключения к периферийному устройству BLE. Затем он создает новое соединение WeaveConnection через WeaveMessageLayer, назначает тип аутентификации этому соединению и привязывает его к BLE_CONNECTION_OBJECT для нового соединения BLE через WeaveConnection::ConnectBle. Затем эта функция устанавливает тип безопасного сеанса, указанный переменной-членом типа аутентификации WeaveConnection.
Наследование
Прямые известные подклассы:nl::Weave::DeviceLayer::Internal::BLEManagerImpl
nl::Weave::DeviceLayer::Internal::BLEManagerImpl
nl::Weave::DeviceLayer::Internal::BLEManagerImpl
Конструкторы и деструкторы | |
---|---|
BleLayer (void) |
Публичные типы | |
---|---|
@14 | перечисление |
BleConnectionReceivedFunct )(BLEEndPoint *newEndPoint) | определение типа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
маппстате
void * mAppState
mState
enum nl::Ble::BleLayer::@14 mState
[ТОЛЬКО ДЛЯ ЧТЕНИЯ] Текущее состояние
Общественные функции
БлеЛайер
BleLayer( void )
HandleConnectionError
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.
Платформа должна вызывать эту функцию в случае сбоя какой-либо предыдущей операции, выполненной BleLayer через BleAdapter, например характерного запроса на запись или попытки подписки, или когда соединение BLE закрывается.
В большинстве случаев это побудит Weave закрыть связанное соединение WeaveConnection и уведомить эту платформу о том, что она разорвала базовое соединение BLE.
ПРИМЕЧАНИЕ. Если приложение явно закрывает соединение BLE со связанным WeaveConnection, так что закрытие соединения BLE не будет генерировать upcall к Weave, необходимо вызвать HandleConnectionError с err = BLE_ERROR_APP_CLOSED_CONNECTION, чтобы предотвратить утечку этого WeaveConnection и его объекта конечной точки.
РучкаПодписатьсяЗавершить
bool HandleSubscribeComplete( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
Вызов при успешном выполнении запроса на подписку GATT.
Платформа должна вызывать эту функцию, когда запрашивается отписка GATT для любой характеристики службы Weave, то есть когда существующая подписка GATT для характеристики службы Weave отменяется.
РучкаПодписатьсяПолучено
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.
Инициализировать
BLE_ERROR Init( BlePlatformDelegate *platformDelegate, BleApplicationDelegate *appDelegate, Weave::System::Layer *systemLayer )
НовыйBleEndPoint
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 берет на себя владение PacketBuffers, полученными через эти функции, и освобождает их или передает право владения вверх по стеку.
Помимо каждого вызова, не предоставляется никаких гарантий относительно времени жизни аргументов UUID.
Возвращаемое значение «истина» означает, что стек Weave успешно обработал соответствующее сообщение или индикацию состояния. «false» означает, что стек Weave либо потерпел неудачу, либо решил не обрабатывать эту проблему. В случае «false» стек Weave не освободит и не станет владельцем каких-либо аргументов PacketBuffer. Этот контракт позволяет платформе передавать события BLE в Weave без необходимости знать, какие характеристики важны для Weave.
Платформа должна вызвать эту функцию, когда установлена подписка GATT на любую характеристику службы Weave.
Если эта функция возвращает true, Weave принял соединение BLE и завернул его в объект WeaveConnection. Если Weave принимает соединение BLE, платформа ДОЛЖНА уведомить Weave, если подписка отменена или базовое соединение BLE закрыто, или связанное соединение WeaveConnection никогда не будет закрыто или освобождено.
Неисправность
BLE_ERROR Shutdown( void )