How to detect collisions in the receiver in OMNeT ++ and INET Framework

I am trying to understand the behavior of Radio.cc (inet / physicallayer / common / packetlevel /).

In particular, I want to know how it can detect collisions.

I would expect something like:

if(radio==IDLE and newFrame arrives){
    radio = RECEIVING;
    startReception();
}
else
   if(radio==RECEIVING and newFrame arrives)
      impossible to receive --> COLLISION! --> stop()

But for what I saw, if two receivers simultaneously arrive at the receiver, the first reception is “Reception started: ignored”, and the second is sent to the MAC layer, which says: “contains a bit of error or collision, discarding it (IdealMac).

My question is: should the receiver block both frames (because it cannot receive two at the same time) or pass both of them to the upper MAC layer, which then reads them as erroneous frames?

+4
source share

Source: https://habr.com/ru/post/1671149/


All Articles