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)
|
typedefvoid(*
|
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.