2008年4月6日 星期日

BS的Scheduler5---process_ranging_req (Packet *p)

當BS收到packet其型態為MAC_RNG_REQ,則BS就會呼叫此member function.以下將敘述此member function流程---

Step1. 判斷packet的header.cid是否為INITIAL_RANGING_CID,若是的話BS則會取出peer node (以SS的address作為參數),接著判斷peer node是否為null, 若是的話則利用CONN_BASIC與CONN_PRIMARY 建立出basic, upbasic, primary以及upprimary connection.

Step2. 增加connection CID後,開始增加Peer node的information. 先利用SS的address新增一個peer node,再來分別使用connection basic, primary設定peer node的Basic connection與Primary connection,設定好後再為connection設定peer node.最後利用SS的address新增的peer node,再mac上實際新增一個peer node,並且把basic與primary加到down_con_list_中, upbasic與upprimary 加到up_con_list_中.

Step3. 取得一個新的Packet,並且替他分配n byte data buffer. 將packet的data存至一ranging request frame中,並且設定此frame的type為MAC_RNG_RSP, ranging status為RNG_SUCCESS,frame的SS address為傳入此packet的address, 並將basic_cid, primary_cid...等等其他的參數一併封裝至frame中.來就是取得一burst,並且利用此burst為frame設定txtime,最後再將frame enqueue.

Step4. 若在step1.中peer不為null,則分別利用delay-intolerant message/delay-tolerant message取得basic/primary conneciton.後續就與step3.相同.

End~~

沒有留言: