關(guān)于協(xié)議設(shè)計(jì)的一點(diǎn)想法:

1. 協(xié)議的設(shè)計(jì)分成兩個(gè)主要部分:鏈路的管理以及數(shù)據(jù)的收發(fā)。

2. 鏈路管理就是鏈路的配置,建立,斷開。

3.重要的一點(diǎn),兩個(gè)設(shè)備之間的鏈路建立是順序的,一條鏈路沒有建好是不能建立下一條鏈路的。

4.一個(gè)設(shè)備在接收其他設(shè)備的鏈接時(shí),可以同時(shí)處理,不會(huì)因?yàn)橐粭l鏈路阻塞而阻塞另外一條。

5. 每條鏈路都有一個(gè)狀態(tài)機(jī)

6.兩個(gè)設(shè)備之間鏈路建立好了之后,可以建立多個(gè)通道。

7.設(shè)備之間的通道的建立必須是順序的,一個(gè)通道建立不成功是不允許建立下一條通道的。

8.這樣當(dāng)建立多個(gè)通道時(shí),再建立新通道時(shí),首先要判斷先前的通道是否已經(jīng)建立好,只有建立好了才能建立新的。

9. Tx和Rx的設(shè)計(jì),協(xié)議棧采用統(tǒng)一的一塊內(nèi)存來管理分配和釋放。

10.協(xié)議是有流程的,必須按照流程來走,如果發(fā)送的request沒有response,那么會(huì)有超時(shí)處理的,可以重連或者斷開連接。

11. 協(xié)議是異步的,不存在一個(gè)函數(shù)直接建立連接并成功,只會(huì)等待連接建立好的response,來表示連接建立成功。

12. 數(shù)據(jù)的TX也是異步的。