BLE

โมดูลนี้มี Abstraction ของแพลตฟอร์มสำหรับการสื่อสารกับโฮสต์ BLE

สรุป

แพลตฟอร์มต้องใช้บลูทูธ LE 4.2 ขึ้นไป

Typedef

otBleRadioPacket typedef
แสดงแพ็กเก็ต BLE

ฟังก์ชัน

otPlatBleDisable(otInstance *aInstance)
ปิดวิทยุบลูทูธพลังงานต่ำ
otPlatBleEnable(otInstance *aInstance)
เปิดวิทยุบลูทูธพลังงานต่ำ
otPlatBleGapAdvStart(otInstance *aInstance, uint16_t aInterval)
เริ่มขั้นตอนการโฆษณา BLE
otPlatBleGapAdvStop(otInstance *aInstance)
หยุดกระบวนการโฆษณา BLE
otPlatBleGapDisconnect(otInstance *aInstance)
ยกเลิกการเชื่อมต่อ BLE
otPlatBleGapOnConnected(otInstance *aInstance, uint16_t aConnectionId)
void
ไดรเวอร์ BLE เรียกใช้วิธีนี้เพื่อแจ้งให้ OpenThread ทราบว่ามีการเชื่อมต่ออุปกรณ์ BLE Central แล้ว
otPlatBleGapOnDisconnected(otInstance *aInstance, uint16_t aConnectionId)
void
ไดรเวอร์ BLE เรียกใช้เมธอดนี้เพื่อแจ้งให้ OpenThread ทราบว่าได้ยกเลิกการเชื่อมต่ออุปกรณ์ BLE Central แล้ว
otPlatBleGattMtuGet(otInstance *aInstance, uint16_t *aMtu)
การอ่านใช้ค่า ATT_MTU ในปัจจุบัน
otPlatBleGattOnMtuUpdate(otInstance *aInstance, uint16_t aMtu)
void
ไดรเวอร์ BLE เรียกใช้เมธอดนี้เพื่อแจ้งให้ OpenThread ทราบว่ามีการอัปเดต ATT_MTU
otPlatBleGattServerIndicate(otInstance *aInstance, uint16_t aHandle, const otBleRadioPacket *aPacket)
ส่งการระบุค่าแฮนเดิล ATT
otPlatBleGattServerOnWriteRequest(otInstance *aInstance, uint16_t aHandle, const otBleRadioPacket *aPacket)
void
ไดรเวอร์ BLE เรียกใช้เมธอดนี้เพื่อแจ้งให้ OpenThread ทราบว่าได้รับแพ็กเก็ตคำขอการเขียน ATT แล้ว

โครงสร้าง

otBleRadioPacket

แสดงแพ็กเก็ต BLE

Typedef

otBleRadioPacket

struct otBleRadioPacket otBleRadioPacket

แสดงแพ็กเก็ต BLE

ฟังก์ชัน

otPlatBleDisable

otError otPlatBleDisable(
  otInstance *aInstance
)

ปิดวิทยุบลูทูธพลังงานต่ำ

เมื่อปิดใช้ สแต็ก BLE จะล้างคิวเหตุการณ์และไม่สร้างเหตุการณ์ใหม่ อุปกรณ์ต่อพ่วง BLE ปิดอยู่หรืออยู่ในสถานะสลีปพลังงานต่ำ คุณควรปล่อยหน่วยความจำแบบไดนามิกที่สแต็กใช้แล้ว แต่หน่วยความจำคงที่อาจยังสงวนไว้อยู่

รายละเอียด
พารามิเตอร์
[in] aInstance
โครงสร้างอินสแตนซ์ OpenThread
แสดงผลค่า
OT_ERROR_NONE
เปลี่ยนเป็นปิดใช้เรียบร้อยแล้ว
OT_ERROR_FAILED
ปิดใช้วิทยุ BLE ไม่ได้

otPlatBleEnable

otError otPlatBleEnable(
  otInstance *aInstance
)

เปิดวิทยุบลูทูธพลังงานต่ำ

รายละเอียด
พารามิเตอร์
[in] aInstance
โครงสร้างอินสแตนซ์ OpenThread
แสดงผลค่า
OT_ERROR_NONE
เปิดใช้เรียบร้อยแล้ว
OT_ERROR_FAILED
ไม่สามารถเปิดใช้วิทยุ BLE

otPlatBleGapAdvStart

otError otPlatBleGapAdvStart(
  otInstance *aInstance,
  uint16_t aInterval
)

เริ่มขั้นตอนการโฆษณา BLE

อุปกรณ์ BLE จะใช้การโฆษณาที่ไม่ได้กำหนดทิศทางโดยไม่มีการใช้ตัวกรอง โดยต้องส่งแพ็กเก็ตการโฆษณา BLE เดี่ยวไปยังช่องทางโฆษณาทั้งหมด (37, 38 และ 39)

รายละเอียด
พารามิเตอร์
[in] aInstance
โครงสร้างอินสแตนซ์ OpenThread
[in] aInterval
ช่วงเวลาระหว่างแพ็กเก็ตโฆษณาที่ตามมาในหน่วย OT_BLE_ADV_INTERVAL_UNIT จะอยู่ภายในช่วง OT_BLE_ADV_INTERVAL_MIN และ OT_BLE_ADV_INTERVAL_MAX หรือ OT_BLE_ADV_INTERVAL_DEFAULT สําหรับค่าเริ่มต้นที่ตั้งไว้ในเวลาคอมไพล์
แสดงผลค่า
OT_ERROR_NONE
เริ่มต้นกระบวนการโฆษณาแล้ว
OT_ERROR_INVALID_STATE
อุปกรณ์ BLE อยู่ในสถานะที่ไม่ถูกต้อง
OT_ERROR_INVALID_ARGS
ระบุค่าช่วงไม่ถูกต้อง

otPlatBleGapAdvStop

otError otPlatBleGapAdvStop(
  otInstance *aInstance
)

หยุดกระบวนการโฆษณา BLE

รายละเอียด
พารามิเตอร์
[in] aInstance
โครงสร้างอินสแตนซ์ OpenThread
แสดงผลค่า
OT_ERROR_NONE
หยุดกระบวนการโฆษณาแล้ว
OT_ERROR_INVALID_STATE
อุปกรณ์ BLE อยู่ในสถานะที่ไม่ถูกต้อง

otPlatBleGapDisconnect

otError otPlatBleGapDisconnect(
  otInstance *aInstance
)

ยกเลิกการเชื่อมต่อ BLE

อุปกรณ์ BLE จะใช้รหัสเหตุผลของการเชื่อมต่อสิ้นสุดการใช้งานโดยผู้ใช้ระยะไกล (0x13) เมื่อยกเลิกการเชื่อมต่อกับอุปกรณ์ peer BLE

รายละเอียด
พารามิเตอร์
[in] aInstance
โครงสร้างอินสแตนซ์ OpenThread
แสดงผลค่า
OT_ERROR_NONE
เริ่มขั้นตอนการยกเลิกการเชื่อมต่อแล้ว
OT_ERROR_INVALID_STATE
อุปกรณ์ BLE อยู่ในสถานะที่ไม่ถูกต้อง

otPlatBleGapOnConnected

void otPlatBleGapOnConnected(
  otInstance *aInstance,
  uint16_t aConnectionId
)

ไดรเวอร์ BLE เรียกใช้วิธีนี้เพื่อแจ้งให้ OpenThread ทราบว่ามีการเชื่อมต่ออุปกรณ์ BLE Central แล้ว

รายละเอียด
พารามิเตอร์
[in] aInstance
โครงสร้างอินสแตนซ์ OpenThread
[in] aConnectionId
ตัวระบุของการเชื่อมต่อแบบเปิด

otPlatBleGapOnDisconnected

void otPlatBleGapOnDisconnected(
  otInstance *aInstance,
  uint16_t aConnectionId
)

ไดรเวอร์ BLE เรียกใช้เมธอดนี้เพื่อแจ้งให้ OpenThread ทราบว่าได้ยกเลิกการเชื่อมต่ออุปกรณ์ BLE Central แล้ว

รายละเอียด
พารามิเตอร์
[in] aInstance
โครงสร้างอินสแตนซ์ OpenThread
[in] aConnectionId
ตัวระบุของการเชื่อมต่อแบบปิด

otPlatBleGattMtuGet

otError otPlatBleGattMtuGet(
  otInstance *aInstance,
  uint16_t *aMtu
)

การอ่านใช้ค่า ATT_MTU ในปัจจุบัน

รายละเอียด
พารามิเตอร์
[in] aInstance
โครงสร้างอินสแตนซ์ OpenThread
[out] aMtu
ตัวชี้สำหรับแสดงผลค่า ATT_MTU ปัจจุบัน
แสดงผลค่า
OT_ERROR_NONE
ใส่ค่า ATT_MTU ใน aMtu แล้ว
OT_ERROR_FAILED
อุปกรณ์ BLE ระบุ ATT_MTU ไม่ได้

otPlatBleGattOnMtuUpdate

void otPlatBleGattOnMtuUpdate(
  otInstance *aInstance,
  uint16_t aMtu
)

ไดรเวอร์ BLE เรียกใช้เมธอดนี้เพื่อแจ้งให้ OpenThread ทราบว่ามีการอัปเดต ATT_MTU

รายละเอียด
พารามิเตอร์
[in] aInstance
โครงสร้างอินสแตนซ์ OpenThread
[in] aMtu
ค่า ATT_MTU ที่อัปเดต

otPlatBleGattServerIndicate

otError otPlatBleGattServerIndicate(
  otInstance *aInstance,
  uint16_t aHandle,
  const otBleRadioPacket *aPacket
)

ส่งการระบุค่าแฮนเดิล ATT

รายละเอียด
พารามิเตอร์
[in] aInstance
โครงสร้างอินสแตนซ์ OpenThread
[in] aHandle
แฮนเดิลของแอตทริบิวต์ที่จะระบุไว้
[in] aPacket
ตัวชี้ไปยังแพ็กเก็ตมีค่าที่จะระบุ
แสดงผลค่า
OT_ERROR_NONE
ส่งการระบุค่าแฮนเดิล ATT แล้ว
OT_ERROR_INVALID_STATE
อุปกรณ์ BLE อยู่ในสถานะที่ไม่ถูกต้อง
OT_ERROR_INVALID_ARGS
มีการระบุค่าแฮนเดิล ข้อมูล หรือความยาวของข้อมูลไม่ถูกต้อง
OT_ERROR_NO_BUFS
ไม่พบบัฟเฟอร์ภายในที่ใช้ได้

otPlatBleGattServerOnWriteRequest

void otPlatBleGattServerOnWriteRequest(
  otInstance *aInstance,
  uint16_t aHandle,
  const otBleRadioPacket *aPacket
)

ไดรเวอร์ BLE เรียกใช้เมธอดนี้เพื่อแจ้งให้ OpenThread ทราบว่าได้รับแพ็กเก็ตคำขอการเขียน ATT แล้ว

รายละเอียด
พารามิเตอร์
[in] aInstance
โครงสร้างอินสแตนซ์ OpenThread
[in] aHandle
แฮนเดิลของแอตทริบิวต์ที่จะเขียน
[in] aPacket
ตัวชี้ไปยังแพ็กเก็ตมีค่าที่จะเขียนไปยังแอตทริบิวต์

มาโคร

OT_BLE_ADV_INTERVAL_DEFAULT

 OT_BLE_ADV_INTERVAL_DEFAULT 100

ช่วงเวลาเริ่มต้นสำหรับแพ็กเก็ตโฆษณา (มิลลิวินาที)

OT_BLE_ADV_INTERVAL_MAX

 OT_BLE_ADV_INTERVAL_MAX 0x4000

ระยะเวลาสูงสุดสำหรับแพ็กเก็ตโฆษณาในหน่วย OT_BLE_ADV_INTERVAL_UNIT (10.24 วินาที)

OT_BLE_ADV_INTERVAL_MIN

 OT_BLE_ADV_INTERVAL_MIN 0x0020

ช่วงเวลาขั้นต่ำที่อนุญาตสำหรับแพ็กเก็ตการโฆษณาในหน่วย OT_BLE_ADV_INTERVAL_UNIT (20 มิลลิวินาที)

OT_BLE_ADV_INTERVAL_UNIT

 OT_BLE_ADV_INTERVAL_UNIT OT_BLE_TIMESLOT_UNIT

หน่วยที่ใช้คำนวณระยะเวลา (0.625 มิลลิวินาที)

OT_BLE_ATT_MTU_MAX

 OT_BLE_ATT_MTU_MAX 67

ขนาด MTU สูงสุดที่อนุญาต (ต้องเป็น >= 23)

OT_BLE_DEFAULT_POWER

 OT_BLE_DEFAULT_POWER 0

ค่าพลังงานเริ่มต้นสำหรับ BLE

OT_BLE_TIMESLOT_UNIT

 OT_BLE_TIMESLOT_UNIT 625

ระยะเวลาของเลเยอร์ PHY เป็นไมโครวินาที (0.625 มิลลิวินาที)

แหล่งข้อมูล

หัวข้ออ้างอิง API ของ OpenThread จะมาจากซอร์สโค้ดซึ่งพร้อมใช้งานใน GitHub ดูข้อมูลเพิ่มเติมหรือมีส่วนร่วมในเอกสารประกอบของเราได้ที่แหล่งข้อมูล