網絡管理主要功能:
- 是用來管理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,時間到沒有收到報文的話則進入睡眠狀態。