我一次从应用程序层向静脉中的MAC_11p发送四条WSM消息。 WSM消息按照以下顺序在CCH信道上发送(优先级显示在括号中)。
wsm(3),wsm(3),wsm(1),wsm(2)
根据EDCA中的访问类别,3是最高优先级:
enum t_access_category
{
AC_BK = 0, // background
AC_BE = 1, // best effort
AC_VI = 2, // video
AC_VO = 3 // voice
};
我期望首先将优先级为3(语音)的WSM发送到PHY_11p,但显然MAC_11p层按以下顺序发送消息:
wsm(1),wsm(3),wsm(3),wsm(2)
我在这里错过了什么吗?
我正在检查ECDA类中的'initiateTransmit'方法,显然该方法从队列到语音迭代队列。选择后台队列中的WSM消息进行传输,剩余的WSM消息将获得内部争用!
这是一个错误吗?
答案 0 :(得分:2)
是的,这似乎是Veins 4.5中的一个错误。这种变化是在Veins 2.0-rc2和Veins 2.0之间引入的。
我已将提交https://github.com/sommer/veins/commit/d518253d推送到Veins的主分支。它首先使用优先级较高的队列来更改要解决的内部冲突的行为。