פיתוח BLE: מהו GATT ואיך הוא עובד?

תוכן העניינים

הרעיון של GATT

כדי לבצע פיתוח הקשור ל-BLE, עלינו להיות בעלי ידע בסיסי מסוים, כמובן, זה חייב להיות מאוד פשוט.

GATT תפקיד מכשיר:

הדבר הראשון שצריך להבין הוא שההבחנה בין שני התפקידים הללו היא ברמת החומרה, והם מושגים יחסיים המופיעים בזוגות:

"מכשיר מרכזי": חזק יחסית, משמש לסריקה וחיבור של מכשירים היקפיים, כגון טלפונים ניידים, טאבלטים וכו'.

"מכשיר היקפי": הפונקציה פשוטה יחסית, צריכת החשמל קטנה והמכשיר המרכזי מחובר לספק נתונים כמו צמידים, מדי חום חכמים וכו'.

למעשה, ברמה הבסיסית ביותר, זו צריכה להיות הבחנה בין תפקידים שונים בתהליך יצירת הקשר. אנו יודעים שאם מכשיר בלוטות' רוצה להודיע ​​לאחרים על קיומו, הוא צריך לשדר באופן רציף לעולם החיצון, בעוד שהצד השני צריך לסרוק ולהשיב לחבילת השידור, כדי שניתן יהיה ליצור את החיבור. בתהליך זה, האחראי על השידור הוא פריפריאלי, ומרכז אחראי על הסריקה.

הערה לגבי תהליך החיבור בין השניים:

המכשיר המרכזי יכול להתחבר למספר התקנים היקפיים בו-זמנית. ברגע שהמכשיר ההיקפי מחובר, הוא יפסיק לשדר מיד, וימשיך לשדר לאחר הניתוק. רק מכשיר אחד יכול לנסות להתחבר בכל עת, תוך תור חיבורים.

GATT פרוטוקול

טכנולוגיית BLE מתקשרת על בסיס GATT. GATT הוא פרוטוקול שידור תכונות. ניתן להתייחס אליו כאל פרוטוקול שכבת יישומים להעברת תכונות.

המבנה שלו מאוד פשוט:   

אתה יכול להבין את זה בתור xml:

כל GATT מורכב משירותים המבצעים פונקציות שונות;

כל שירות מורכב ממאפיינים שונים;

כל מאפיין מורכב מערך ומתאר אחד או יותר;

שירות ומאפיין מקבילים לתגיות (שירות שווה ערך לקטגוריה שלו, ומאפיין שווה לשמו), בעוד שערך מכיל למעשה נתונים, ו-Descriptor הוא הסבר ותיאור של ערך זה. כמובן, אנו יכולים לתאר ולתאר זאת מזוויות שונות. תיאור, כך שיכולים להיות מספר מתארים.

לדוגמה: ה-Xiaomi Mi Band הנפוץ הוא מכשיר BLE, (בהנחה) הוא מכיל שלושה שירותים, שהם השירות המספק מידע על המכשיר, השירות המספק שלבים והשירות המזהה דופק;

המאפיין הכלול בשירות מידע המכשיר כולל מידע יצרן, מידע חומרה, מידע גרסה וכו'; שירות הדופק כולל את מאפיין הדופק וכו', והערך במאפיין הדופק מכיל למעשה את נתוני הדופק, והמתאר הוא הערך. תיאור, כגון יחידת הערך, תיאור, הרשאה וכו'.

GATT C/S

עם הבנה ראשונית של GATT, אנו יודעים ש-GATT הוא מצב C/S טיפוסי. מכיוון שמדובר ב-C/S, יש לנו צורך להבחין בין שרת ללקוח.

"שרת GATT" לעומת "לקוח GATT". השלב בו מתקיימים שני התפקידים הללו הוא לאחר יצירת הקשר, והם מובחנים לפי מצב הדיאלוג. קל להבין שהצד שמחזיק את הנתונים נקרא שרת GATT, והצד שניגש לנתונים נקרא לקוח GATT.

זהו מושג ברמה שונה מתפקיד המכשיר שהזכרנו קודם, ויש צורך להבחין בו. בוא נשתמש בדוגמה פשוטה להמחשה:

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

שירות / מאפיין

כבר הייתה לנו הבנה תפיסתית שלהם למעלה, ואז יש לנו מידע מעשי:

  1. מאפיין הוא היחידה הלוגית הקטנה ביותר של נתונים.
  2. ניתוח הנתונים המאוחסנים בערך ובמתאר נקבע על ידי מהנדס השרת, אין מפרט.
  3. לשירות/מאפיין יש זיהוי UUID ייחודי, ל-UUID יש גם 16-bit וגם 128-bit, מה שאנחנו צריכים להבין הוא ש-16-bit UUID מאושר על ידי ארגון ה-Bluetooth וצריך לרכוש אותו, כמובן שיש כמה נפוצים אלה 16-bit UUID. לדוגמה, ה-UUID של שירות קצב הלב הוא 0X180D, שמתבטא כ-0X00001800-0000-1000-8000-00805f9b34fb בקוד, וביטים אחרים קבועים. ניתן להתאים אישית את ה-UUID של 128 סיביות.
  4. חיבורי GATT הם בלעדיים.

גלול למעלה