1 Star 0 Fork 0

xingchigang/WiFi-MATLAB-Simulator

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
retransmitTry.m 2.12 KB
一键复制 编辑 原始数据 按行查看 历史
EthanShiloh 提交于 2020-05-06 23:40 . merged changes from master
function [devState, newSimEvents] = retransmitTry(devState, curTime)
%handled a retransmit try in case of an ACK timeout
% disp('ACK TO occurred!');
newSimEvents=createEvent(simEventType.SET_TIMER, 0, 0); % init!!!
newSimEvents(1) = [];
%disp(int2str(devState.SSRC));
if(devState.curRet > 0)
% we have to increase CW only after unsuccessful REtransmission!
devState.curCWND = increaseCWND(devState.curCWND, devState.CWmax, devState.backoffTech);
end
devState.isWaitingForACK = 0; % the device is not waiting anymore
devState.isACKToExp = 0;
if(devState.curRet < devState.numRet)
% we still have some retries
devState.curRet = devState.curRet + 1;
devState.SSRC = devState.SSRC + 1;
if(devState.medCtr == 0)
% medium is free from our point of view, but we must excecute a
% new backoff procedure because it was an unsuccessful transmission
devState = changeDevState(devState, devStateType.WAIT_DIFS);
% create a 'SET_TIMER' event after DIFS time
opts = createOpts(devState.curPkt, timerType.DIFS);
newSimEvents(1) = createEvent(simEventType.SET_TIMER, curTime + devState.DIFS, devState.dev, opts);
else
% medium is busy!
devState = changeDevState(devState, devStateType.WAIT_FOR_IDLE);
end
else
% no more retries!
devState.lostBytes = devState.lostBytes + devState.curPkt.length; % save info about the lost packet
devState.curPkt = emptyPacket(); % then delete it, we do not want to send it again...
devState.curRet = 0;
[devState, newSimEvent, isNew] = handleNextPkt(devState, curTime, 1); % maybe we have more packets to send, so we handle it, backoff is mandatory
if(isNew == 1)
newSimEvents(1) = newSimEvent; % insert the new event to the array
end
if(devState.SSRC == devState.numRet)
% in this case we have to decrease curCWND
devState.curCWND = decreaseCWND(devState.curCWND, devState.CWmin, devState.backoffTech);
end
end
end
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/xingchigang/WiFi-MATLAB-Simulator.git
git@gitee.com:xingchigang/WiFi-MATLAB-Simulator.git
xingchigang
WiFi-MATLAB-Simulator
WiFi-MATLAB-Simulator
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385