[STIoT] [Bài 01 (Part 3)] Tổng quan về BLE protocol stack

Discussion in 'Communication' started by Ngô Văn Tuân, Apr 8, 2019.

  1. Ngô Văn Tuân

    Ngô Văn Tuân Thành Viên PIF

    4. Logical Link Control and Adaption Protocol (L2CAP):
    L2CAP có hai nhiệm vụ chính:
    • Chức năng như một multiplexer, có nhiệm vụ lấy dữ liệu từ các lớp trên (ATT và SMP), đóng giói thành chuẩn format của BLE packet và ngược lại.
    • Fragmentation (phân mảnh) và Recombination (Kết hợp): Dự liệu từ nhận về từ các lớp trên sẽ được phân mảnh (fragment) thành các giói nhỏ hơn để fit với maximum payload size (dữ liệu tối đa có thể gửi trong một lần gửi, ví dụ như 27 bytes trong BLE 4.x). Ở phía nhận, các packet nhận về sẽ được kết hợp (recombined) lại và gửi lên lớp trên.
    5. Attribute protocol (ATT):
    • ATT là một giao thức client/server đơn giản dựa trên các Attribute của thiết bị. Trong BLE, một thiết bị có thể là client, server hay cả hai, không liên quan gì đến việc thiết bị đó là master hay slave. Khi client request data từ server, server send data lại cho client. Nếu một request vẫn đang trong tình trạng pending (chờ server xác nhận đã nhận được request) thì request tiếp theo sẽ không được gửi.
    • Mỗi server chứa dữ liệu được tổ chức thành các attributes. Mỗi attribute bao gồm: 16-bit attribute handler, a universally unique identifier (UUID), tập các permission và value.
    • Khi client muốn đọc dữ liệu, client sẽ gửi request đọc dữ liệu cho server. Sever sẽ trả lại dữ liệu hoặc acknowledgement cho client. Client có thể đọc dữ liệu và hiểu nó dựa vào kiểu dữ liệu được xác định bởi UUID (là chuỗi hex mô tả dữ liệu).
    • Khi client muốn ghi dữ liệu, client sẽ gửi request ghi dữ liệu cho server. Kiểu dữ liệu được ghi phải khớp với kiểu dữ liệu của value hiện tại, nếu không server sẽ từ chối request.
    6. Security Manager (SM):
    SM vừa là giao thức vừa là một chuỗi các thuật toán cung cấp cho Bluetooth protocol stack khả năng tạo và trao đổi security keys. Điều này giúp các peer có thể giao tiếp với nhau thông qua một đường truyền được mã hóa, xác định đúng thiết bị cần giao tiếp và cuối cùng là dấu public Bluetooth Address để tránh việc bị theo dõi bởi một thiết bị khác:doubt:.
    7. Generic Access Profile (GAP):
    GAP là nơi Application định nghĩa các configuration cơ bản cho kết nối BLE. Các configuration đó bao gồm:
    • Roles
    • Modes
    • Procedures
    • Security
    • Additional GAP definition
    Mình chỉ trình bày về GAP role vì đây là khái niệm cơ bản, các khái niệm còn lại sẽ được trình bày vào những bài sau.
    Một thiết bị tham gia vào kết nối BLE chỉ có thể có một hoặc một số vai trò (Role) sau:
    • Broadcaster: Được tối ưu hóa cho ứng dụng mà thiết bị chỉ muốn truyền dữ liệu. Thiết bị đóng vai trò là Broadcaster sẽ gửi advertising packet với một chu kì nhất định. Ví dụ như cảm biến nhiệt độ, thiết bị này sẽ broadcast nhiệt độ mà nó đọc được, bất kỳ thiết bị nào quan tâm đến dữ liệu này có thể lấy được advertising packet. Broadcaster role sử dụng Link Layer advertiser role.
    • Observer: Được tối ưu hóa cho ứng dụng mà thiết bị chỉ muốn nhận dữ liệu từ các thiết bị là Broadcaster. Ví dụ như một màn hình hiển thị nhiệt độ, độ ẩm, màn hình này chỉ muốn nhận được thông tin từ các cảm biến đặt ở các vị trí khác nhau rồi hiển thị lên chứ không muốn gửi dữ liệu ra ngoài thông qua BLE. Observer sử dụng Link layer scanner role.
    • Central: Tương ứng với Link Layer Master Role. Thiết bị là central có thể khởi tạo kết nối với nhiều thiết bị và quản lý quá trình kết nối. BLE protocol là chuẩn giao tiếp không đối xứng. Tức là phần tính toán nhiều hơn sẽ nằm trên Link layer master, còn phần nhẹ nhàng hơn sẽ nằm trên Link Layer Slave.
    • Peripheral: Tương ứng với Link Layer Slave Role. Thiết bị là peripheral sẽ broadcast advertising packet, cho phép Central device thấy nó và khởi tạo kết nối với nó.
    Ở một thời điểm, mỗi thiết bị có thể đóng một hoặc một số vai troi trong các vai trò trên:misdoubt:.
    Không có sự liên quan nào giữa GATT client và server role với GAP roles. Bất kì thiết bị nào cũng có thể là GATT client, GATT server hay cả hai:whaaat:.
    Ví dụ: một fitness tracker pair với một smartphone. Fitness tracker đóng vai trò là GAP peripheral, smartphone đóng vai trò là GAP central. Trong khi đó, Fitness tracker lại đóng vai trò là GATT server, smartphone là GATT client khi smartphone request data từ fitness tracker. Fitness tracker cũng có thể là GATT client khi nó cần request thời gian hiện tại từ smartphone cho data timestamping. Thiết bị là GATT client hay GATT server phụ thuộc vào chiều của quá trình request và response trong khi GAP role không đổi: Fitness tracker là GAP peripheral và smartphone là GAP central:4cool_beauty:.
    Trong thực tế, khi code BLE, chúng ta thường sẽ quan tâm config các thông số của GAP được mô tả trong ở hình sau:
    [​IMG]
    GAP Structure
    Trong đó:
    • Device Name: là tên của thiết bị.
    • Peripheral Prefered Connection Parameters (ppcp): gồm Connection Interval (min và max), Slave latency và Connection Suppervison Timeout đã được trình bày trong phần Link Layer.
    • Các thông số còn lại ta chưa cần quan tâm --> sẽ được trình bày vào những bài sau:6cool_boss:.
    8. Generic attribute profile (GATT):
    [​IMG]
    GATT profile
    GATT được xây dựng dựa trên ATT và thêm vào cấu trúc cây (hierarchy) cùng mô hình trừu tượng hóa dữ liệu (data abstraction model):gach.
    GATT được coi là sương sống của BLE vì nó định nghĩa cách mà dữ liệu được tổ chức và trao đổi giữa các applications:3cool_adore:.
    Với GATT, dữ liệu được tổ chức thành các services, mỗi service bao gồm một hay nhiều characteristic. Mỗi characteristic lại gồm có dữ liệu và metadata của dữ liệu (cung cấp thông tin về tính chất của nội dung bên trong dữ liệu).
    GATT role:

    • GATT Client: GATT client gửi request và nhận respond hoặc nhận update từ GATT server. Khi mới khởi tạo kết nối GATT client phải thực hiện quá trình service discovery để biết được các service được cung cấp bởi GATT server. Sau discover service thành công, GATT client có thể ghi và đọc các attribute hoặc nhận update từ GATT server.
    • GATT Server: GATT server nhận request từ GATT client và trả lại respond cho GATT client. Nó cũng gửi update cho client nếu GATT client có yêu cầu với GATT server trước.
    Như đã lưu ý ở trên, GATT role không phụ thuộc vào GAP role. GAP central hay GAP pheripheral đều có thể là GATT client hoặc GATT server hoặc là cả hai.
    Các applications trao đổi dữ liệu bằng cách thay đổi value của characteristic trong GATT service.

    Tài liệu tham khảo:
    1. Getting Started with Bluetooth Low Energy - Kevin Townsend, Carles Cufí, Akiba, and Robert Davidson.
    2. Bluetooth Core Specification 4.1
    3. https://www.bluetooth.com/

    Kết thúc bài 01!!!

    :1cool_byebye:
     
    Last edited: Apr 23, 2019
    phamngocson likes this.
  2. tranhieungan

    tranhieungan Thành Viên PIF

    a ơi có thể thêm phần tài liệu tham khảo vào ở sau để em nghiên cứu thêm đk ko a
    :D:D:D:D
     
  3. Ngô Văn Tuân

    Ngô Văn Tuân Thành Viên PIF

    Đã thêm tài liệu tham khảo :gach.
     
Loading...

Share This Page