Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

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 để thúc đẩy dữ liệu lên ngăn xếp thông qua các hàm giao diện nền tảng BleOverlay hoặc xuống ngăn xếp thông qua đối tượng WeaveConnection được liên kết với BLEEndPoint.

Tóm tắt

Có hai cách để liên kết WeaveConnection (được xác định bởi WeaveMessagelayer) với kết nối BLE:

Trước tiên, ứng dụng có thể nhận kết nối Bluetooth năng lượng thấp (BLE) kết nối và chuyển BLE_CONNECTION_OBJECT cụ thể cho nền tảng mà biên nhận này tạo ra BleOverlay thông qua hàm giao diện nền tảng tương ứng. Điều này khiến Blelayer bao bọc BLE_CONNECTION_OBJECT trong BLEEndPoint và thông báo cho WeaveMessageOverlay 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à đưa đối tượng này vào ứng dụng thông qua lệnh gọi lại OnConnectionConnectiond 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 đi, ví dụ như bằng cách kết nối với một thiết bị ngoại vi BLE. Sau đó, công cụ này sẽ tạo một WeaveConnection mới thông qua WeaveMessagelayer, chỉ định một loại xác thực cho kết nối này và liên kết loại này với BLE_CONNECTION_OBJECT cho kết nối BLE mới thông qua WeaveConnection::ConnectBle. Sau đó, hàm này thiết lập loại phiên bảo mật được xác định bởi biến thành viên loại xác thực WeaveConnection\39;.

Tính kế thừa

Các lớp con đã biết trực tiếp:
nl::Weave::DeviceOverlay::internal::BLEManagerImpl
nl::Weave::Devicelayer::DeviceOverlay::BLEManagerimpl
nl::Weave::Devicelayer::BLEManagerimpl

Hàm dựng và hàm phá hủy

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
[CHỈ CÓ THỂ ĐỌC] 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 chỉ báo GATT cũ được nhận xác nhận biên nhận tích cự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 hủy đă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 khi yêu cầu ghi GATT chưa xử lý nhận được xác nhận biên nhận tích cự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 chức năng giao diện nền tảng:
Shutdown(void)

Loại công khai

@14

 @14

BleConnectionConnectiondFunct

void(* BleConnectionReceivedFunct)(BLEEndPoint *newEndPoint)

Thuộc tính công khai

OnWeaveBleConnectReceived

BleConnectionReceivedFunct OnWeaveBleConnectReceived

mAppState

void * mAppState

bang

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

[CHỈ CÓ THỂ ĐỌC] Trạng thái hiện tại

Hàm công khai

Lớp phủ mong muốn

 BleLayer(
  void
)

Lỗi xử lý kết nối

void HandleConnectionError(
  BLE_CONNECTION_OBJECT connObj,
  BLE_ERROR err
)

Xác nhận xử lý

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

Gọi khi chỉ báo GATT cũ được nhận xác nhận biên nhận tích cực.

Đã nhận xử lý

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

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

Tay đọc đã nhận

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 có bất kỳ thao tác nào trước đó do BleOverlay thực hiện qua BleAdapter không thành công, chẳng hạn như yêu cầu ghi hoặc tính năng đăng ký đặc trưng 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 đường liên kết WeaveConnection và thông báo cho nền tảng đó rằng họ đã bỏ kết nối BLE cơ bản.

LƯU Ý: nếu ứng dụng đóng một cách rõ rà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ại với Weave, Tay điều khiển xử lý lỗi phải được gọi với err = BLE_ERROR_APP_CLOSED_CONNECTION để ngăn rò rỉ đối tượng WeaveConnection này và đối tượng điểm cuối.

Hoàn tất đăng ký

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 hủy đăng ký GATT trên bất kỳ ký tự dịch vụ Weave nào, nghĩa là khi gói đăng ký GATT hiện có trên một đặc điểm dịch vụ Weave bị hủy.

Xử lý đã nhận

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

Xử lý đã hủy đăng ký hoàn tất

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

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

Xử lý đã hủy đăng ký

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

Xác nhận xử lý ghi

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

Gọi khi yêu cầu ghi GATT chưa xử lý nhận được xác nhận biên nhận tích cực.

Ghi đã xử lý

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.

Số nguyên

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
)

Lịch làm việc

nl::Weave::System::Error ScheduleWork(
  nl::Weave::System::Layer::TimerCompleteFunct aComplete,
  void *aAppState
)

Các chức năng giao diện nền tảng:

Quy ước gọi: Weave nhận quyền sở hữu PacketBuffers đã nhận 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ó đảm bảo nào được cung cấp trong toàn bộ thời gian của các đối số UUID.

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

Nền tảng phải gọi chức năng này khi đăng ký GATT được thiết lập cho bất kỳ ký tự dịch vụ Weave nào.

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

Tắt

BLE_ERROR Shutdown(
  void
)