| input: FrameInformation (LocalFI), ReservationBoard (ReservationBoard), Received |
| FrameInformation(s) (ReceivedFIs), Local Node Identifier (NodeId) |
| output: Updated ReservationBoard and FrameInformation |
| () bool Collision False, Owned False; |
| () int Position −1; BCH Channel ; |
| () for to Length(LocalFI) do |
| () BCH Heard BasicChannel(LocalFI, ); |
| () foreach in receivedFIs do |
| () Position Shift(, ); |
| () Channel BasicChannel(, position); |
| () Collision False; |
| () Owned Owner(Channel); |
| () if Owned and NotSameId(Channel, Heard) then |
| () Collision True; |
| () break; |
| () end |
| () end |
| () if Collision then |
| () UpdateBoard(Reservationboard, , Free); |
| () UpdateFI(LocalFI, , Free); |
| () if = Id(Heard) then |
| () Collision(True); |
| () EnterContention(); |
| () end |
| () else |
| () if (AdditionalAndExpired(Channel)) then |
| () UpdateBoard(board, , Free); |
| () else |
| () UpdateBoard(board, , Reserved); |
| () end |
| () end |
| () end |