2017-03-16 29 views
3

我一次從應用層向靜脈中的MAC_11p發送四條WSM消息。 WSM消息按照以下順序在CCH信道上發送(優先級顯示在括號中)。在Veins的MAC層中實現的ECDA中的WSM優先級

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消息將得到內部爭用!

這是一個錯誤?

回答

1

是的,這似乎是靜脈4.5中的一個錯誤。 Veins 2.0-rc2和Veins 2.0之間引入了這一變化。

我已經將提交https://github.com/sommer/veins/commit/d518253d推送到靜脈主分支。它改變了內部衝突的行爲,首先使用更高優先級的隊列來解決。