Waze ModWaze Mod
ESP32Tính năngẢnh thực tếTải xuốngCài đặtChangelogLưu ýFAQỦng hộ
Download

Waze Mod

Dành cho tài xế Việt Nam.

© 2026 Waze Mod. Waze Mod Extended không liên kết chính thức với Waze hoặc Google.

Hướng dẫn cài đặtFAQAdmin
Duy trì kết nốiĐổi trang ↓
Tổng quanESP32 BLEClassic SPPVí dụ BLEVí dụ SPPHLP/1 protocolCấu hình thiết bịDuy trì kết nốiPhía AndroidPhần cứngXử lý lỗiKiểm thử

Pin map / tài liệu

Bắt đầu

Tổng quan

Kết nối

ESP32 BLEClassic SPP

Code mẫu

Ví dụ BLEVí dụ SPP

Giao thức

HLP/1 protocolCấu hình thiết bịDuy trì kết nối

Tham chiếu

Phía AndroidPhần cứngXử lý lỗiKiểm thử
ESP32HLP/1KEEP_ALIVE.md

Cơ chế duy trì & tự động kết nối lại

Ping/pong 5 giây để quan sát liên kết hai chiều, timeout GATT, loại bỏ callback trùng và tự động kết nối lại.

Tải trang Markdown.MDTải bộ tài liệu cho AIDOCS + SOURCE

Tài liệu này mô tả implementation BLE Android hiện tại. Framing HLP/1 dùng chung cho bản thường, DUAL và No-AA; xử lý write lỗi và lịch kết nối lại không gắn với một nhãn phát hành cụ thể.

Kiểm tra kết nối sống

Android gửi một HLP ping mỗi năm giây:

HLP / source
{"v":1,"t":"ping","ts":1046540208}

HUD cần nhanh chóng gửi dòng sau qua characteristic RX notification:

HLP / source
{"v":1,"t":"pong"}

Cả hai frame đều phải có LF ở cuối. Hãy gửi pong trước khi render màn hình, ghi storage hoặc thực hiện tác vụ chậm khác. Phản hồi này chứng minh cả hai chiều GATT đều hoạt động và được hiển thị trong trạng thái/log kết nối. HUD cũng có thể gửi ping; Android sẽ trả pong.

pong hiện dùng để chẩn đoán, không phải lease: Android ghi nhận hoạt động của peer nhưng không đóng một kết nối GATT vẫn write được chỉ vì thiếu phản hồi. Tự động kết nối lại được kích hoạt bởi GATT disconnect hoặc write lỗi/timeout.

State không đổi vẫn được phát ít nhất mỗi giây. Nhịp state và ping năm giây có vai trò khác nhau: state giữ HUD luôn mới, còn ping/pong xác minh đường truyền hai chiều.

Write lỗi và kết nối lại

  • Android yêu cầu ATT MTU 247 nhưng vẫn hoạt động với MTU 23.
  • TX dùng write with response. Android chỉ gửi một GATT operation tại một thời điểm và chờ callback trước khi gửi chunk tiếp theo.
  • Mỗi chunk có timeout ba giây.
  • GATT disconnect thật hoặc write lỗi/timeout sẽ đóng session hiện tại.
  • Callback disconnect hoặc write-failure bị lặp trong cùng một lần kết nối được gộp lại, nên chỉ có một lịch retry được tạo.
  • Retry dùng exponential backoff với jitter ±20%: xấp xỉ 1,5; 3; 6; 12; 24 và 48 giây, sau đó giữ quanh 48 giây (dưới 60 giây).
  • Backoff được reset sau khi kết nối ổn định 30 giây.
  • Khi Bluetooth được bật lại, hệ thống tạo một lần kết nối mới.
Đang tạo sơ đồ Mermaid...

Yêu cầu đối với ESP32

  1. Copy byte nhận từ TX vào queue/ring buffer giới hạn và thoát nhanh khỏi callback GATT.
  2. Ghép byte tới LF; không giả định một write tương ứng một JSON frame.
  3. Trả lời ping trước khi parse hoặc render state tốn thời gian.
  4. Khởi động lại advertising sau BLE_GAP_EVENT_DISCONNECT.
  5. Hỗ trợ cả ATT MTU 23 và 247.
  6. Dùng RX notification với CCCD 0x2902 và gửi dev ngay sau khi Android subscribe.

Các Android log tag hữu ích là WazeHudLink, WazeHudLink-BLE và WazeHlp.

TrướcCấu hình thiết bịTiếp Phía Android

Trên trang này

Kiểm tra kết nối sốngWrite lỗi và kết nối lạiYêu cầu đối với ESP32