nl::Ble::BleLayer

#include <src/ble/BleLayer.h>

הסיווג הזה מספק ממשק ל-thread יחיד לניהול נתונים במעלה הסטאק באמצעות פונקציות הממשק של הפלטפורמה BleLayer, או במורד המקבץ באמצעות אובייקט WeaveConnection שמשויך ל-BLEEndPoint.

סיכום

יש שתי דרכים לשייך WeaveConnection (מוגדר על ידי WeaveMessageLayer) לחיבור BLE:

קודם כול, האפליקציה יכולה לקבל באופן פסיבי חיבור BLE נכנס ולהעביר את ה-BLE_CONNECTION_OBJECT הספציפי לפלטפורמה, שהקבלה הזו יוצרת ל-BleLayer דרך פונקציית הממשק המתאימה בפלטפורמה. הפעולה הזו גורמת ל-BleLayer לכווץ את ה-BLE_CONNECTION_OBJECT ב-BLEEndPoint, ולהודיע ל-WeaveMessageLayer שהתקבלה קבוצת BLE חדשה. לאחר מכן, שכבת ההודעות כוללת את אובייקט BLEEndPoint החדש ב-WeaveConnection, ומגישה את האובייקט הזה לאפליקציה באמצעות הקריאה החוזרת (callback) של OnConnectionReceived בשכבת ההודעות.

שנית, האפליקציה יכולה ליצור באופן פעיל חיבור BLE יוצא, למשל, על ידי חיבור לציוד היקפי מסוג BLE. לאחר מכן הוא יוצר סוג חיבור חדש של WeaveConnection דרך WeaveMessageLayer, לאחר מכן הפונקציה הזו יוצרת את סוג הסשן המאובטח שנקבע על ידי משתנה החבר של סוג האימות של 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.

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.

ערך 'TRUE' הערך המוחזר מציין שהמחסנית Weave טיפלה בהצלחה באינדיקטור המתאים של ההודעה או המצב. 'false' המשמעות היא שהמחסנית של Weave נכשלה או בחרה לא לטפל בבעיה. במקרה של 'false', סטאק Weave לא ישחרר ארגומנטים של PacketBuffer ולא יקבל בעלות עליהם. החוזה הזה מאפשר לפלטפורמה להעביר אירועי BLE ל-Weave בלי שהיא תצטרך לדעת אילו מאפיינים חשובים ל-Weave.

הפלטפורמה חייבת להפעיל את הפונקציה הזו כשנוצר מינוי ל-GATT לכל מאפיין של שירות Weave.

אם הפונקציה הזו מחזירה True, Weave קיבלה את חיבור BLE ועוטפה אותו באובייקט WeaveConnection. אם Weave מקבלת חיבור BLE, הפלטפורמה חייבת להודיע ל-Weave אם המינוי בוטל או אם חיבור ה-BLE הבסיסי סגור, או ש-WeaveConnection שמשויך אליו אף פעם לא ייסגר או ישוחרר.

כיבוי

BLE_ERROR Shutdown(
  void
)