我正在使用omnet ++-5.4.1,vines-4.7.1和sumo-0.25.0来模拟车架传输。
关于WAVE的mac层中EDCA的行为,据我了解,可以通过以下计算获得发送的等待时间。
等待时间= AIFS [AC] +退避
AIFS [AC] = SIFS + AIFSN [AC] *时隙长度
但是,在Mac 1609_4.cc的startContent函数中,其编写方式如下
if (idleTime > possibleNextEvent) {
DBG_MAC << "Could have already send if we had it earlier" << std::endl;
//we could have already sent. round up to next boundary
simtime_t base = idleSince + DIFS;
possibleNextEvent = simTime() - simtime_t().setRaw((simTime() - base).raw() % SLOTLENGTH_11P.raw()) + SLOTLENGTH_11P;
}
即使在仿真期间,也无需等待刚发生传输请求之后计算出的时间即可执行传输。
如上所述,认为尚未执行原始EDCA(CSMA / CA)的操作,并且未检测到信道的繁忙状态。
我对该Mac层了解得还不够?如果我错过了一些信息,请告诉我。
谢谢。