TREL – Nền tảng

Mô-đun này bao gồm nội dung tóm tắt nền tảng cho Liên kết đóng gói vô tuyến luồng (TREL) bằng DNS-SD và UDP/IPv6.

Tóm tắt

Typedef

otPlatTrelPeerInfo typedef
Đại diện cho thông tin ngang hàng TREL được phát hiện bằng cách duyệt qua DNS-SD trên tên dịch vụ "_trel._udp".

Hàm

otPlatTrelDisable(otInstance *aInstance)
void
Tắt lớp nền tảng TREL.
otPlatTrelEnable(otInstance *aInstance, uint16_t *aUdpPort)
void
Khởi tạo và bật lớp nền tảng TREL.
otPlatTrelHandleDiscoveredPeerInfo(otInstance *aInstance, const otPlatTrelPeerInfo *aInfo)
void
Đây là hàm callback từ lớp nền tảng để báo cáo thông tin ngang hàng TREL đã phát hiện.
otPlatTrelHandleReceived(otInstance *aInstance, uint8_t *aBuffer, uint16_t aLength)
void
Là lệnh gọi lại từ nền tảng để thông báo về gói TREL UDP đã nhận được.
otPlatTrelRegisterService(otInstance *aInstance, uint16_t aPort, const uint8_t *aTxtData, uint8_t aTxtLength)
void
Đăng ký một dịch vụ mới để quảng cáo bằng DNS-SD [RFC6763].
otPlatTrelSend(otInstance *aInstance, const uint8_t *aUdpPayload, uint16_t aUdpPayloadLen, const otSockAddr *aDestSockAddr)
void
Yêu cầu gửi gói TREL UDP tới một đích nhất định.

Cấu trúc

otPlatTrelPeerInfo

Đại diện cho thông tin ngang hàng TREL được phát hiện bằng cách duyệt qua DNS-SD trên tên dịch vụ "_trel._udp".

Typedef

otPlatTrelPeerInfo

struct otPlatTrelPeerInfo otPlatTrelPeerInfo

Đại diện cho thông tin ngang hàng TREL được phát hiện bằng cách duyệt qua DNS-SD trên tên dịch vụ "_trel._udp".

Hàm

otPlatTrelDisable

void otPlatTrelDisable(
  otInstance *aInstance
)

Tắt lớp nền tảng TREL.

Sau lệnh gọi này, lớp nền tảng PHẢI dừng duyệt DNS-SD trên tên dịch vụ "_trel._udp", ngừng quảng cáo dịch vụ TREL DNS-SD (từ otPlatTrelRegisterService()) và PHẢI đóng ổ cắm UDP được dùng để nhận thông báo TREL.

[in] aInstance Thực thể OpenThread.

otPlatTrelEnable

void otPlatTrelEnable(
  otInstance *aInstance,
  uint16_t *aUdpPort
)

Khởi tạo và bật lớp nền tảng TREL.

Trong lệnh gọi này, lớp nền tảng PHẢI thực hiện những việc sau:

1) Lớp nền tảng TREL PHẢI mở ổ cắm UDP để nghe và nhận thông báo TREL từ các ứng dụng ngang hàng. Ổ cắm được liên kết với một số cổng tạm thời do lớp nền tảng chọn. Số cổng PHẢI được trả về trong aUdpPort. Ổ cắm cũng được liên kết với(các) giao diện mạng mà TREL được hỗ trợ. Ổ cắm và cổng đã chọn sẽ vẫn hợp lệ khi TREL được bật.

2) Lớp nền tảng PHẢI bắt đầu duyệt DNS-SD đang diễn ra trên tên dịch vụ "_trel._udp" trong miền duyệt web cục bộ để khám phá các thiết bị khác hỗ trợ TREL. Quá trình duyệt đang diễn ra sẽ tạo ra hai loại sự kiện khác nhau: sự kiện "thêm" và sự kiện "xoá". Khi bắt đầu duyệt, quá trình duyệt web sẽ tạo một sự kiện "add" cho mọi ứng dụng ngang hàng TREL hiện có trên mạng. Mỗi khi một ứng dụng ngang hàng TREL không kết nối mạng, một sự kiện "remove" (xoá) sẽ được tạo. tuy nhiên, sự kiện "remove" ("xoá") không được đảm bảo. Khi phát hiện một thực thể dịch vụ TREL, một truy vấn DNS-SD mới đang diễn ra cho bản ghi AAAA phải được bắt đầu trên tên máy chủ đã chỉ định trong bản ghi SRV của thực thể đã phát hiện. Nếu phát hiện thấy nhiều địa chỉ IPv6 lưu trữ cho một mạng ngang hàng, thì địa chỉ có phạm vi cao nhất trong số tất cả các địa chỉ PHẢI được báo cáo (nếu có nhiều địa chỉ ở cùng một phạm vi, thì một địa chỉ phải được chọn ngẫu nhiên).

Nền tảng TREL PHẢI báo hiệu trở lại thông tin ngang hàng đã phát hiện bằng lệnh gọi lại otPlatTrelHandleDiscoveredPeerInfo(). Lệnh gọi lại này PHẢI được gọi khi phát hiện một ứng dụng ngang hàng mới, khi có thay đổi trong mục nhập hiện có (ví dụ: bản ghi TXT mới, số cổng mới hoặc địa chỉ IPv6 mới) hoặc khi ứng dụng ngang hàng bị xoá.

Thông tin chi tiết
Các tham số
[in] aInstance
Thực thể OpenThread.
[out] aUdpPort
Con trỏ để trả về số cổng đã chọn theo lớp nền tảng.

otPlatTrelHandleDiscoveredPeerInfo

void otPlatTrelHandleDiscoveredPeerInfo(
  otInstance *aInstance,
  const otPlatTrelPeerInfo *aInfo
)

Đây là hàm callback từ lớp nền tảng để báo cáo thông tin ngang hàng TREL đã phát hiện.

Thông tin chi tiết
Các tham số
[in] aInstance
Thực thể OpenThread.
[in] aInfo
Con trỏ tới thông tin ngang hàng TREL.

otPlatTrelHandleReceived

void otPlatTrelHandleReceived(
  otInstance *aInstance,
  uint8_t *aBuffer,
  uint16_t aLength
)

Là lệnh gọi lại từ nền tảng để thông báo về gói TREL UDP đã nhận được.

Thông tin chi tiết
Các tham số
[in] aInstance
Cấu trúc thực thể OpenThread.
[in] aBuffer
Vùng đệm chứa tải trọng UDP đã nhận.
[in] aLength
Chiều dài tải trọng UDP (số byte).

otPlatTrelRegisterService

void otPlatTrelRegisterService(
  otInstance *aInstance,
  uint16_t aPort,
  const uint8_t *aTxtData,
  uint8_t aTxtLength
)

Đăng ký một dịch vụ mới để quảng cáo bằng DNS-SD [RFC6763].

Tên dịch vụ là "_trel._udp". Nền tảng này phải sử dụng tên máy chủ riêng. Khi được kết hợp với tên dịch vụ và tên miền DNS-SD cục bộ, hệ thống sẽ tạo ra tên phiên bản dịch vụ đầy đủ, chẳng hạn như "example-host._trel._udp.local.".

Miền mà tên phiên bản dịch vụ xuất hiện sẽ là "local" đối với mDNS và sẽ là miền được dùng để đăng ký dịch vụ trong trường hợp dịch vụ DNS-SD cục bộ không phải là mDNS.

Lệnh gọi tiếp theo đến hàm này sẽ cập nhật dịch vụ trước đó. Tệp này dùng để cập nhật dữ liệu bản ghi TXT và/hoặc số cổng.

Vùng đệm aTxtData không tồn tại sau khi hàm này trả về. Lớp nền tảng KHÔNG ĐƯỢC giữ con trỏ mà thay vào đó phải sao chép nội dung nếu cần.

Thông tin chi tiết
Các tham số
[in] aInstance
Thực thể OpenThread.
[in] aPort
Số cổng cần đưa vào bản ghi SRV của dịch vụ được quảng cáo.
[in] aTxtData
Con trỏ dẫn đến dữ liệu bản ghi TXT (được mã hoá) để đưa vào dịch vụ được quảng cáo.
[in] aTxtLength
Độ dài của aTxtData (số byte).

otPlatTrelSend

void otPlatTrelSend(
  otInstance *aInstance,
  const uint8_t *aUdpPayload,
  uint16_t aUdpPayloadLen,
  const otSockAddr *aDestSockAddr
)

Yêu cầu gửi gói TREL UDP tới một đích nhất định.

Thông tin chi tiết
Các tham số
[in] aInstance
Cấu trúc thực thể OpenThread.
[in] aUdpPayload
Con trỏ đến tải trọng UDP.
[in] aUdpPayloadLen
Chiều dài tải trọng (số byte).
[in] aDestSockAddr
Địa chỉ ổ cắm đích.

Tài nguyên

Các chủ đề tham khảo API OpenThread bắt nguồn từ mã nguồn, có trên GitHub. Để biết thêm thông tin hoặc để đóng góp cho tài liệu của chúng tôi, hãy tham khảo Tài nguyên.