nl:: Ble:: BleLayer
#include <src/ble/BleLayer.h>
คลาสนี้มีอินเทอร์เฟซสำหรับชุดข้อความเดี่ยวเพื่อขับเคลื่อนข้อมูลลงในสแต็กผ่านฟังก์ชันอินเทอร์เฟซแพลตฟอร์ม BleLayer หรือลงไปในสแต็กผ่านออบเจ็กต์ WeaveConnection ที่เชื่อมโยงกับ BLEEndPoint
สรุป
การเชื่อมโยง WeaveConnection (กำหนดโดย WeaveMessageLayer) กับการเชื่อมต่อ BLE ทำได้ 2 วิธีดังนี้
ประการแรก แอปพลิเคชันสามารถรับการเชื่อมต่อ BLE ขาเข้าและส่ง BLE_CONNECTION_OBJECT เฉพาะแพลตฟอร์มที่ใบเสร็จสร้างขึ้นไปยัง BleLayer ผ่านฟังก์ชันอินเทอร์เฟซแพลตฟอร์มที่เกี่ยวข้อง ซึ่งจะทําให้ BleLayer รวม BLE_CONNECTION_OBJECT ใน BLEEndPoint และแจ้ง WeaveMessageLayer ว่าได้รับการกำหนดค่า BLE ใหม่ จากนั้นเลเยอร์ข้อความจะห่อหุ้มออบเจ็กต์ BLEEndPoint ใหม่ใน WeaveConnection และมอบออบเจ็กต์นี้ให้แก่แอปพลิเคชันผ่าน Callback OnConnectionReceived ของเลเยอร์ข้อความ
ประการที่ 2 แอปพลิเคชันสามารถสร้างการเชื่อมต่อ 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
|
enum |
BleConnectionReceivedFunct)(BLEEndPoint *newEndPoint)
|
Typedefvoid(*
|
แอตทริบิวต์สาธารณะ |
|
---|---|
OnWeaveBleConnectReceived
|
BleConnectionReceivedFunct
|
mAppState
|
void *
|
mState
|
enum nl::Ble::BleLayer::@14
[READ-ONLY] สถานะปัจจุบัน
|
ฟังก์ชันสาธารณะ |
|
---|---|
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
mAppState
void * mAppState
mState
enum nl::Ble::BleLayer::@14 mState
[READ-ONLY] สถานะปัจจุบัน
ฟังก์ชันสาธารณะ
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 )
โทรเมื่อสัญญาณแจ้ง GATT ที่รอดำเนินการได้รับการยืนยันว่าได้รับการตอบรับเป็นบวก
HandleIndicationReceived
bool HandleIndicationReceived( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf )
โทรเมื่อได้รับสัญญาณบอกสถานะ GATT
HandleReadReceived
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 ไม่สร้างการเรียกสูงสุดไปยัง Weave คุณจะต้องเรียก HandleConnectionError ด้วย err = BLE_ERROR_APP_CLOSED_CONNECTION เพื่อป้องกันการรั่วไหลของ WeaveConnection และออบเจ็กต์จุดสิ้นสุด
HandleSubscribeComplete
bool HandleSubscribeComplete( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId )
โทรเมื่อคำขอสมัครใช้บริการ GATT สำเร็จ
แพลตฟอร์มต้องเรียกใช้ฟังก์ชันนี้เมื่อมีการขอการยกเลิกการสมัคร GATT ในลักษณะอักขระของบริการ Weave ใดๆ กล่าวคือ เมื่อการสมัครใช้บริการ GATT ที่มีอยู่ซึ่งมีลักษณะของบริการ Weave ถูกยกเลิก
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 )
โทรเมื่อคำขอยกเลิกการสมัคร GATT สำเร็จ
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 )
โทรเมื่อคำขอเขียน GATT ที่ค้างอยู่ได้รับการยืนยันการรับเป็นบวก
HandleWriteReceived
bool HandleWriteReceived( BLE_CONNECTION_OBJECT connObj, const WeaveBleUUID *svcId, const WeaveBleUUID *charId, PacketBuffer *pBuf )
โทรเมื่อได้รับคำขอเขียน 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 )
ฟังก์ชันอินเทอร์เฟซของแพลตฟอร์ม:
แบบแผนในการเรียกใช้: Weave จะเป็นเจ้าของ PacketBuffers ที่ได้รับผ่านฟังก์ชันเหล่านี้ และจะทำให้ไฟล์ว่างหรือส่งต่อสิทธิ์ความเป็นเจ้าของสแต็ก
นอกเหนือจากการเรียกใช้แต่ละครั้ง จะไม่มีการรับประกันตลอดอายุของอาร์กิวเมนต์ UUID
"จริง" ผลลัพธ์หมายความว่ากลุ่ม Weave จัดการข้อความหรือตัวบ่งชี้สถานะที่สอดคล้องกันได้สำเร็จ "เท็จ" หมายความว่าสแต็ก Weave ล้มเหลวหรือเลือกที่จะไม่จัดการ ในกรณีที่เป็น "เท็จ" สแต็ก Weave จะไม่มีการเพิ่มพื้นที่ว่างหรือเข้าเป็นเจ้าของอาร์กิวเมนต์ PacketBuffer สัญญานี้ช่วยให้แพลตฟอร์มส่งเหตุการณ์ BLE ไปยัง Weave ได้โดยไม่ต้องทราบว่า Weave สนใจลักษณะเฉพาะใดบ้าง
แพลตฟอร์มต้องเรียกใช้ฟังก์ชันนี้เมื่อมีการสร้างการสมัครใช้บริการ GATT สำหรับลักษณะสัญลักษณ์ของบริการ Weave ใดๆ
หากฟังก์ชันนี้แสดงผลเป็น "จริง" Weave จะยอมรับการเชื่อมต่อ BLE และรวมไว้ในออบเจ็กต์ WeaveConnection แล้ว หาก Weave ยอมรับการเชื่อมต่อ BLE แพลตฟอร์มต้องแจ้งให้ Weave ทราบหากมีการยกเลิกการสมัครใช้บริการหรือการเชื่อมต่อ BLE ที่เกี่ยวข้องถูกปิด หรือจะไม่มีการปิดหรือปลด WeaveConnection ที่เกี่ยวข้องออก