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 และส่งออบเจ็กต์นี้ไปยังแอปพลิเคชันผ่านโค้ดเรียกกลับ 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) typedef
void(*

แอตทริบิวต์สาธารณะ

OnWeaveBleConnectReceived
BleConnectionReceivedFunct
mAppState
void *
mState
enum nl::Ble::BleLayer::@14
[อ่านเท่านั้น] สถานะปัจจุบัน

ฟังก์ชันสาธารณะ

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

[อ่านเท่านั้น] สถานะปัจจุบัน

ฟังก์ชันสาธารณะ

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

เริ่มต้น

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 จัดการข้อความหรือตัวบ่งชี้สถานะที่เกี่ยวข้องสำเร็จแล้ว "false" หมายถึงสแต็ก Weave ล้มเหลวหรือเลือกที่จะไม่จัดการเรื่องนี้ ในกรณีที่เป็น "เท็จ" สแต็ก Weave จะไม่ปล่อยว่างหรือเป็นเจ้าของอาร์กิวเมนต์ PacketBuffer สัญญานี้ช่วยให้แพลตฟอร์มส่งต่อเหตุการณ์ BLE ไปยัง Weave ได้โดยไม่ต้องทราบว่า Weave สนใจลักษณะเฉพาะใด

แพลตฟอร์มต้องเรียกใช้ฟังก์ชันนี้เมื่อมีการสมัครใช้บริการ GATT สำหรับอักขระบริการ Weave ใดก็ตาม

หากฟังก์ชันนี้แสดงผลเป็น "จริง" แสดงว่า Weave ยอมรับการเชื่อมต่อ BLE และรวมไว้ในออบเจ็กต์ WeaveConnection แล้ว หาก Weave ยอมรับการเชื่อมต่อ BLE แพลตฟอร์มต้องแจ้งให้ Weave ทราบหากมีการยกเลิกการสมัครใช้บริการหรือมีการเชื่อมต่อ BLE ที่สำคัญปิดอยู่ มิฉะนั้น WeaveConnection ที่เกี่ยวข้องจะไม่ปิดหรือปล่อยว่างโดยเด็ดขาด

ปิดการทำงาน

BLE_ERROR Shutdown(
  void
)