can 網路管理
阿新 • • 發佈:2018-11-10
網路管理主要功能:
- 是用來管理ECU是否在網路裡面,不在的話請求加入,也就是ALIVE報文,
- 要判斷是否掉線,以及睡眠狀態的轉換機制,以及跛行狀態判,也即是RING報文。
主要的實現邏輯流程:
從rtos佇列裡面取出資料,儲存在自定義的結構體裡面 |
不論在何種狀態只要接收到報文都需要靜進入normal狀態,等於初始化一次 |
提取資訊,報文的主要資訊有三部分,報文ID,目的地址,以及訊息型別 |
如果是alive報文,進行環的更新,如果是ring報文進行狀態轉換機制判斷。 |
ring報文的判斷的目的有兩個,一個是進行狀態的轉換,二是為了將ring報文繼續傳遞下去。 |
當ring報文是節點在請求睡眠的時候,睡眠ind為true,然後在環裡迴圈,如果有一個節點為false,則請求失敗,返回原來的狀態,都為true,則自己傳送一個為ind 和ack都為true, 則進入等待睡眠狀態。
在接收到報文之後,如果是目的地址是自己的的話,則進行判斷然後啟動Ttype定時器,時間到了傳送後繼的ring報文。如果不是傳送給自己的,則啟動Tmax定時器,如果在定時器時間到的時候沒有收到下一條ring報文表示,我出故障了,進入跛足狀態。在跛足狀態的時候,定時器Terror時間到就發一個跛足報文,Tlimphome時間到的時候則進入準備睡眠狀態。
接收到睡眠報文應答的時候,進入等待睡眠狀態,讓後啟動定時器Twait,時間到沒有收到報文的話則進入睡眠狀態。