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 để điều khiển 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 một đố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 theo cách thụ động rồi chuyển giao 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 hàm giao diện nền tảng tương ứng. Điều này khiến BleLayer gói BLE_CONNECTION_OBJECT trong BLEEndPoint và thông báo cho WeaveMessageLayer rằng đã nhận được một conneciotn BLE mới. Sau đó, lớp thông báo sẽ gói đối tượng BLEEndPoint mới trong một WeaveConnection và chuyển đối tượng này cho ứng dụng thô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 đi, 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 đó, phương thứ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 nó 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 được chỉ định bởi biến thành viên loại xác thực của WeaveConnection.
Tính kế thừa
Lớp học 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à phá huỷ |
|
---|---|
BleLayer(void)
|
Loại công khai |
|
---|---|
@14
|
enum |
BleConnectionReceivedFunct)(BLEEndPoint *newEndPoint)
|
typedefvoid(*
|
Các thuộc tính công khai |
|
---|---|
OnWeaveBleConnectReceived
|
BleConnectionReceivedFunct
|
mAppState
|
void *
|
mState
|
enum nl::Ble::BleLayer::@14
[CHỈ ĐỌ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òn tồn đọng nhận được xác nhận rằng đã nhận được kết quả 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 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 yêu cầu ghi GATT chưa xử lý nhận được xác nhận là đã nhận được yêu cầu 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
Hàm giao diện nền tảng:
|
Shutdown(void)
|
Loại công khai
@14
@14
BleConnectionReceivedFunct
void(* BleConnectionReceivedFunct)(BLEEndPoint *newEndPoint)
Các thuộc tính công khai
OnWeaveBleConnectReceived
BleConnectionReceivedFunct OnWeaveBleConnectReceived
mAppState
void * mAppState
mState
enum nl::Ble::BleLayer::@14 mState
[CHỈ ĐỌC] 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 chỉ báo GATT còn tồn đọng nhận được xác nhận rằng đã nhận được kết quả tích cự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 bất kỳ thao tác nào trước đó mà BleLayer thực hiện thông qua BleAdapter không thành công, chẳng hạn như một yêu cầu ghi đặc trưng hoặc nỗ lực đăng ký 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 này đã bỏ kết nối BLE cơ bản.
LƯU Ý: nếu ứng dụng đóng kết nối BLE với WeaveConnection một cách rõ ràng sao cho việc đóng kết nối BLE sẽ không tạo ra lệnh gọi lên Weave, thì phần này phải được gọi bằng err = BLE_ERROR_APP_CLOSED_CONNECTION để ngăn chặn sự cố rò rỉ của WeaveConnection này và đối tượng điểm cuối của nó.
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ỳ tuỳ chọn dịch vụ Weave nào, tức là khi một gói thuê bao GATT hiện có trên một đặc tính 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 yêu cầu ghi GATT chưa xử lý nhận được xác nhận là đã nhận được yêu cầu tích cự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.
Init
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 )
Hàm giao diện nền tảng:
Quy ước gọi: Weave nắm quyền sở hữu PacketBuffers nhận được 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.
Sau mỗi lệnh gọi, không có đảm bảo nào được đưa ra về thời gian tồn tại của đối số UUID.
A "true" trả về 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. "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 là 'false', ngăn xếp Weave sẽ không 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 này chuyển các sự kiện BLE cho 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 gói thuê bao GATT được thiết lập cho bất kỳ tuỳ chọn dịch vụ Weave nào.
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 đó trong 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. Nếu không, WeaveConnection đã liên kết sẽ không bao giờ bị đóng hoặc giải phóng.