Kịch bản truyền nhận cho Sleepy End Device

Get Started. It's Free
or sign up with your email address
Rocket clouds
Kịch bản truyền nhận cho Sleepy End Device by Mind Map: Kịch bản truyền nhận cho Sleepy End Device

1. Host

1.1. Có một bảng danh sách Sleep Device trong mạng.

1.1.1. Mỗi thiết bị Sleep được lưu trong bảng này có đi kèm Parent của nó.

1.1.2. Bảng này được lưu lại để tránh mất khi mất nguồn Host.

1.2. Nhận gói tin báo có thiết bị Sleep join hoặc leave mạng từ Router

1.2.1. Lưu hoặc xóa địa chỉ của thiết bị Sleep và Parent tương ứng vào bảng Sleep Device. Trước khi lưu có phần kiểm tra xem có trùng với thiết bị nào đã có hay không.

1.2.1.1. Cấu trúc gói tin: size + type + status + địa chỉ NodeID thiết bị Sleep + địa chỉ EUI64

1.2.1.1.1. type = 0x06

1.3. Trước khi gửi bất kỳ gói tin gì thì có phần kiểm tra thiết bị được gửi có nằm trong bảng Sleep Device không?

1.3.1. Nếu có thì thay vì gửi thẳng thì gói tin sẽ được gửi đến thiết bị Parent

1.3.1.1. Cấu trúc gói tin: size + type + địa chỉ NodeID thiết bị Sleep + data

1.3.1.1.1. type = 0x07

1.3.2. Nếu không thì gửi bình thường

2. Router

2.1. Khi có thiết bị Sleep join hoặc leave thì gửi gói tin thông báo cho Host.

2.1.1. Cấu trúc gói tin: size + type + status + địa chỉ NodeID thiết bị Sleep + địa chỉ EUI64

2.1.1.1. type = 0x06

2.2. Xử lý khi nhận được gói tin dành cho thiết bị Sleep

2.2.1. Cấu trúc gói tin: size + type + địa chỉ NodeID thiết bị Sleep + DATA

2.2.1.1. type = 0x07

2.2.1.2. Phần DATA là bao gồm: size + type + data (Của gói tin muốn router forward cho thiết bị Sleep

2.2.2. Phân tích gói tin lấy ra thành phần NodeID thiết bị sleep.

2.2.2.1. Kiểm tra địa chỉ NodeID trong gói tin có phải là địa chỉ của một trong những thiết bị Sleep của Router hay không

2.2.2.1.1. Nếu có. Kiểm tra xem trong buffer xem có gói tin nào dành cho thiết bị có NodeID như thế không

2.2.2.1.2. Nếu không thì thông báo Router không có thiết bị Sleep nào như vậy

2.2.3. Hàm callback sau khi gửi gói tin làm những việc như sau:

2.2.3.1. Kiểm tra gói tin callback về có NodeID của thiết bị Sleep của nó không

2.2.3.1.1. Kiểm tra profileID và ClusterID của gói tin

2.2.3.1.2. Nếu callback về là gói tin dành cho thiết bị khác thì bỏ qua

3. Thư viện có sẵn của Silabs

3.1. uint8_t emberAfPluginSleepyMessageQueueGetNumUnusedEntries()

3.2. EmberAfSleepyMessageId emberAfPluginSleepyMessageQueueStoreMessage(EmberAfSleepyMessage *pmsg, uint32_t timeoutSec)

3.3. EmberAfSleepyMessageId emberAfPluginSleepyMessageQueueGetPendingMessageId(EmberEUI64 dstEui64)

3.4. uint32_t emMessageMSecRemaining(EmberAfSleepyMessageId sleepyMsgId)

3.5. bool emberAfPluginSleepyMessageQueueGetPendingMessage(EmberAfSleepyMessageId sleepyMsgId, EmberAfSleepyMessage *pmsg)

3.6. uint8_t emberAfPluginSleepyMessageQueueGetNumMessages(EmberEUI64 dstEui64)

3.7. bool emberAfPluginSleepyMessageQueueRemoveMessage(EmberAfSleepyMessageId sleepyMsgId)

3.8. void emberAfPluginSleepyMessageQueueRemoveAllMessages(EmberEUI64 dstEui64)

3.9. uint32_t emMessageMSecRemaining(EmberAfSleepyMessageId sleepyMsgId)