nl::Ble::BleLayer

#include <src/ble/BleLayer.h>

Lớp này cung cấp giao diện cho một luồng duy nhất để đưa dữ liệu lên ngăn xếp thông qua các hàm giao diện nền tảng BleLayer hoặc xuống ngăn xếp thông qua đối tượng WeaveConnection liên kết với BLEEndPoint.

Tóm tắt

Có hai cách để liên kết WeaveConnection (do WeaveMessageLayer xác định) với kết nối BLE:

Trước tiên, ứng dụng có thể nhận kết nối BLE đến một cách thụ động và chuyển BLE_CONNECTION_OBJECT dành riêng cho nền tảng mà biên nhận này tạo cho BleLayer thông qua chức năng giao diện nền tảng tương ứng. Điều này khiến BleLayer gói BLE_CONNECTION_OBJECT trong một BLEEndPoint và thông báo cho WeaveMessageLayer rằng đã nhận được một kết nối BLE mới. Sau đó, lớp thông báo sẽ bao bọc đối tượng BLEEndPoint mới trong một WeaveConnection và chuyển đối tượng này cho ứng dụng qua lệnh gọi lại OnConnectionReceived của lớp thông báo.

Thứ hai, ứng dụng có thể chủ động tạo một kết nối BLE, chẳng hạn như bằng cách kết nối với một thiết bị ngoại vi BLE. Sau đó, hàm này tạo một WeaveConnection mới thông qua WeaveMessageLayer, chỉ định loại xác thực cho kết nối này và liên kết với BLE_CONNECTION_OBJECT cho kết nối BLE mới qua WeaveConnection::ConnectBle. Sau đó, hàm này thiết lập loại phiên bảo mật do biến thành viên loại xác thực của WeaveConnection chỉ định.

Tính kế thừa

Lớp con đã biết trực tiếp:
  nl::Weave::DeviceLayer::Internal::BLEManagerImpl
  nl::Weave::DeviceLayer::Internal::BLEManagerImpl
  nl::Weave::DeviceLayer::Internal::BLEManagerImpl

Hàm khởi tạo và hàm phá

BleLayer(void)

Loại công khai

@14 enum
BleConnectionReceivedFunct)(BLEEndPoint *newEndPoint) typedef
void(*

Thuộc tính công khai

OnWeaveBleConnectReceived
BleConnectionReceivedFunct
mAppState
void *
mState
enum nl::Ble::BleLayer::@14
[READ-ONLY] Trạng thái hiện tại

Hàm công khai

HandleConnectionError(BLE_CONNECTION_OBJECT connObj, BLE_ERROR err)
void
HandleIndicationConfirmation(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
Gọi khi một chỉ báo GATT đáng ngờ nhận được thông báo xác nhận đã nhận được.
HandleIndicationReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf)
bool
Gọi khi nhận được chỉ báo GATT.
HandleReadReceived(BLE_CONNECTION_OBJECT connObj, BLE_READ_REQUEST_CONTEXT requestContext, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
Gọi khi nhận được yêu cầu đọc GATT.
HandleSubscribeComplete(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
Gọi khi yêu cầu đăng ký GATT thành công.
HandleSubscribeReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
HandleUnsubscribeComplete(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
Gọi khi yêu cầu huỷ đăng ký GATT thành công.
HandleUnsubscribeReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
HandleWriteConfirmation(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId)
bool
Gọi điện khi có một yêu cầu ghi GATT chưa xử lý nhận được thông báo xác nhận đã nhận được.
HandleWriteReceived(BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf)
bool
Gọi khi nhận được yêu cầu ghi 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
Các hàm giao diện nền tảng:
Shutdown(void)

Loại công khai

@14

 @14

BleConnectionReceivedFunct

void(* BleConnectionReceivedFunct)(BLEEndPoint *newEndPoint)

Thuộc tính công khai

OnWeaveBleConnectReceived

BleConnectionReceivedFunct OnWeaveBleConnectReceived

mAppState

void * mAppState

mState

enum nl::Ble::BleLayer::@14 mState

[READ-ONLY] Trạng thái hiện tại

Hàm công khai

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
)

Gọi khi một chỉ báo GATT đáng ngờ nhận được thông báo xác nhận đã nhận được.

HandleIndicationReceived

bool HandleIndicationReceived(
  BLE_CONNECTION_OBJECT connObj,
  const WeaveBleUUID *svcId,
  const WeaveBleUUID *charId,
  PacketBuffer *pBuf
)

Gọi khi nhận được chỉ báo GATT.

HandleReadReceived

bool HandleReadReceived(
  BLE_CONNECTION_OBJECT connObj,
  BLE_READ_REQUEST_CONTEXT requestContext,
  const WeaveBleUUID *svcId,
  const WeaveBleUUID *charId
)

Gọi khi nhận được yêu cầu đọc GATT.

Nền tảng phải gọi hàm này khi mọi thao tác trước đó do BleLayer thực hiện qua BleAdapter không thành công, chẳng hạn như yêu cầu ghi hoặc đăng ký đặc điểm hoặc khi kết nối BLE bị đóng.

Trong hầu hết các trường hợp, thao tác này sẽ nhắc Weave đóng WeaveConnection được liên kết và thông báo cho nền tảng đó rằng nền tảng đã bỏ kết nối BLE cơ bản.

LƯU Ý: nếu ứng dụng đóng kết nối BLE với một WeaveConnection được liên kết sao cho việc đóng kết nối BLE sẽ không tạo ra lệnh gọi lên Weave, thì handleConnectionError phải được gọi với err = BLE_ERROR_APP_CLOSED_CONNECTION để ngăn sự cố rò rỉ của WeaveConnection và đối tượng điểm cuối của WeaveConnection.

HandleSubscribeComplete

bool HandleSubscribeComplete(
  BLE_CONNECTION_OBJECT connObj,
  const WeaveBleUUID *svcId,
  const WeaveBleUUID *charId
)

Gọi khi yêu cầu đăng ký GATT thành công.

Nền tảng phải gọi hàm này khi có yêu cầu huỷ đăng ký GATT trên bất kỳ đặc điểm dịch vụ nào của Weave, tức là khi một gói thuê bao GATT hiện có trên một đặc tính của dịch vụ Weave bị huỷ.

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
)

Gọi khi yêu cầu huỷ đăng ký GATT thành công.

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
)

Gọi điện khi có một yêu cầu ghi GATT chưa xử lý nhận được thông báo xác nhận đã nhận được.

HandleWriteReceived

bool HandleWriteReceived(
  BLE_CONNECTION_OBJECT connObj,
  const WeaveBleUUID *svcId,
  const WeaveBleUUID *charId,
  PacketBuffer *pBuf
)

Gọi khi nhận được yêu cầu ghi GATT.

Bắt đầu

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
)

Các hàm giao diện nền tảng:

Quy ước gọi: Weave sở hữu các Gói đệm nhận được thông qua các hàm này và sẽ giải phóng chúng hoặc chuyển quyền sở hữu lên ngăn xếp.

Ngoài mỗi lệnh gọi, không có sự đảm bảo nào về thời gian tồn tại của đối số UUID.

Giá trị trả về "true" có nghĩa là Weave stack đã xử lý thành công thông báo hoặc chỉ báo trạng thái tương ứng. "false" có nghĩa là ngăn xếp Weave không thành công hoặc chọn không xử lý vấn đề này. Trong trường hợp giá trị là "false", ngăn xếp Weave sẽ không giải phóng hoặc sở hữu bất kỳ đối số PacketBuffer nào. Hợp đồng này cho phép nền tảng truyền các sự kiện BLE đến Weave mà không cần biết Weave quan tâm đến đặc điểm nào.

Nền tảng phải gọi hàm này khi một gói thuê bao GATT đã được thiết lập cho bất kỳ danh mục dịch vụ nào của Weave.

Nếu hàm này trả về giá trị true (đúng), thì Weave đã chấp nhận kết nối BLE và gói kết nối đó vào một đối tượng WeaveConnection. Nếu Weave chấp nhận kết nối BLE, thì nền tảng PHẢI thông báo cho Weave nếu gói thuê bao bị huỷ hoặc kết nối BLE cơ bản bị đóng, hoặc WeaveConnection liên quan sẽ không bao giờ đóng hoặc giải phóng.

Tắt

BLE_ERROR Shutdown(
  void
)