Hi All,
I am working on a project where I want to provide limited channel access to wifi ad-hoc STA much like TDMA .
Here is my complete simulator scenario-
1. I have 10 wifi adhoc nodes.I have created four UDP traffic between nodes.But I want all the nodes will not follow the exactly csma MAC rules.I want to define some time slot for each node to transmit.
2. For doing this I have changed following in wifi csma/ca MAC
a. Disable RTS/CTS
b. Set slot time to zero to stop carrier sensing
c. Disable immediate ACK for data packet
d. Set NAV to zero for unnecessary back off by other node.
3. Now if a node have a packet to send it will send immediately and collide with other node's packet.
4. Now to introduce slotting for each node I add following code within DcfManager::RequestAccess()
int cur_node=(current).to_int(); // let cur_node is the id of the node who want to send packet
int cur_time=Simulator::Now ().GetMicroSeconds (); // cur_time is the current simulation time
if( (cur_time/ns3::Microseconds(1000))%num_node==cur_node) // num_node is the total number of STA
{
Simulator::Schedule (ns3::MilliSeconds(1), &DcfManager::Acces_to_Cur,this);
}
void
DcfManager::Acces_to_Cur()
{
DoGrantAccess ();
DoRestartAccessTimeoutIfNeeded ();
}
Here I am trying to give 1ms slot time to each node.I understand that only having these changes will not work because slotting time and all other DCF function are so closely tight that I have to consider lot more other things.But I am stuck here.Please help me.I will be very happy to here from you.