當SS收到packet時,若是其型態為DL MAP則就會呼叫到此function,以下將敘述此funciton的流程---
Step1. 當收到DL MAP後,SS則會先透過getPeerNode(frame->bsid)判斷是否為null,若是null則表示此BS是第一次接觸到,因此利用addPeerNode為此BS增加紀錄.
Step2. SS會先判斷Mac目前的state,若是為MAC802_16_WAIT_DL_SYNCH,則會進行一連串timer的設定,接著將Mac目前的state設為MAC802_16_WAIT_DL_SYNCH_DCD,並且判斷substate是否為HANDOVER或SCANNING,接著再判斷一次substate是否為SCANNING,若是會再判斷nbr是否為null,或是nbr list內有沒有目前送packet來的BS id,若是的話則會將此BS id存至nbr內(增加此BS為Peer node),接著再判斷若nbr是否為null,若是的話則利用此BS id新增成WimaxNeighborEntry並且將此BS新增為neighbor.否則會判斷此BS是否曾經發現過,是的話SS則會跳到下一個channel,並且執行lost_synch().
Step3. 在step2中第二次判斷是否為SCANNING時,若不是的話就不會進行後續增加nbr的動作. SS會取出DCD,接著判斷是否為null,若不是null則依序取得burst,並且判斷其IUC為何.若IUC為DIUC_END_OF_MAP,則將found設為false.
Step4. 若一開始判斷Mac目前的state,若不是MAC802_16_WAIT_DL_SYNCH,則會再判斷Mac State是否不為MAC802_16_WAIT_DL_SYNCH_DCD與MAC802_16_UL_PARAM,若能滿足這三個條件,將會重新設定reschedule的時間.
End~~
沒有留言:
張貼留言