## 4 MAC Protocol for Scheduling Concurrent Transmissions
### The Location-Assisted MAC Protocol  
The operation of the proposed location-assisted MAC protocol is illustrated in Figure 4. First, an exposed node is identified by examining the PHY PLCP frame header, as described in Section 4.1. Once an exposed node is identified, it will try to validate its concurrent transmission, by executing the validation procedure shown in Table 1.  
If this test is passed, the exposed node will attempt its scheduled transmission as follows. First,  
\begin{table}
\begin{tabular}{l l} \hline  & **Procedure** & validate\_schdTx() \\ \hline
1: & Calculate \(P_{DATA_{1}}\), \(P_{DATA_{2}}\), \(P_{ACK_{1}}\) and \(P_{ACK_{2}}\); \\
2: & **IF** \{ (\(P_{DATA_{1}}>P_{th}\)) AND (\(P_{DATA_{2}}>P_{th}\)) AND (\(P_{ACK_{1}}>P_{th}\)) AND (\(P_{ACK_{2}}>P_{th}\)) \} \\
3: & Return 1; // The concurrent transmission is feasible \\
4: & **ELSE** \\
5: & Return 0; // The concurrent transmission is not feasible \\
6: & **ENDIF** \\ \hline \end{tabular}
\end{table}
Table 1: The validation procedure for feasibility of a concurrent transmission.  
Figure 4: A time-line illustration of the proposed location-assisted MAC protocol.  
\(schdTx\_margin\) is calculated:  
\[schdTx\_margin = \text{(free\_duration)}-\text{SIFS}-\text{CTSSIFS}-\text{(PLCP\_ reading\_time)}- \tag{12}\] \[\text{(schd\_data\_duration)}-\text{SIFS}-\text{ACK}-\text{(round- trip\_prop\_delay)}\]  
where \(free\_duration\) is the value in the _duration_ field of the preceding RTS frame. If \(p=chdTx\_margin\) is negative, the scheduled transmission will be canceled. That is, the concurrent DATA transmission cannot be aligned with the free DATA transmission. Otherwise, in order to avoid the case of multiple scheduled transmissions in a small neighborhood, a random delay \(t_{d}\) is introduced as:  
\[t_{d}=\left[(random\_integer)\:\%\:t_{d}^{max}\right]\times aSlotTime \tag{13}\]  
where \(t_{d}^{max}=\lceil(schdTx\_margin)/aSlotTime\rceil\).  
During the back-off period \(t_{d}\), the exposed node will keep on detecting if there is a single transmission (i.e., the free transmission) or multiple transmissions (e.g., a scheduled transmission from another exposed node with a smaller \(t_{d}\) value, in addition to the free transmission). Such events can be detected by a sudden increase in received power or bit error rate when decoding the free transmission. If the latter case is detected, the exposed node will not attempt the concurrent transmission; otherwise, it will start sending its DATA frame, which carries the information \(T_{info}\), defined as:  
\[T_{info}=t_{d}^{max}-\frac{t_{d}}{aSlotTime} \tag{14}\]  
When a scheduled transmission is received, the scheduled receiver will return an ACK after a delay of \(SIFS+T_{info}\times aSlotTime\), in order to align its ACK with the ACK from the free transmission.  
The proposed scheme assumes location information is available for neighboring nodes. Such location information can be distributed by defining a specific control message. When a node's location is changed, it broadcasts the newly defined control message to all neighbors to update its location information stored at these nodes. Alternatively, we can modify the RTS frame format to piggyback the locations of the sender and its target receiver. When a node overhears an RTS, it extracts the location information, and stores them in a _location table_. Nodes will also exchange their location table with neighbors so that the location of two-hop neighbors are all known after some initialization phase.