[Celestica/sonic_platform]: Fixed failed test cases in Haliburton platform testing (#8815)
* [device/celestica-e1031]: fix apis follow lastest spec * [device/celestica-e1031]: fix lgtm (#261)
This commit is contained in:
parent
34267393b3
commit
800de696db
@ -0,0 +1,224 @@
|
|||||||
|
{
|
||||||
|
"interfaces": {
|
||||||
|
"Ethernet0": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet1": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet2": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet3": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet4": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet5": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet6": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet7": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet8": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet9": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet10": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet11": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet12": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet13": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet14": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet15": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet16": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet17": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet18": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet19": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet20": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet21": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet22": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet23": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet24": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet25": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet26": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet27": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet28": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet29": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet30": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet31": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet32": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet33": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet34": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet35": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet36": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet37": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet38": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet39": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet40": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet41": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet42": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet43": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet44": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet45": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet46": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet47": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet48": {
|
||||||
|
"default_brkout_mode": "1x10G",
|
||||||
|
"port_type": "SFP+"
|
||||||
|
},
|
||||||
|
"Ethernet49": {
|
||||||
|
"default_brkout_mode": "1x10G",
|
||||||
|
"port_type": "SFP+"
|
||||||
|
},
|
||||||
|
"Ethernet50": {
|
||||||
|
"default_brkout_mode": "1x10G",
|
||||||
|
"port_type": "SFP+"
|
||||||
|
},
|
||||||
|
"Ethernet51": {
|
||||||
|
"default_brkout_mode": "1x10G",
|
||||||
|
"port_type": "SFP+"
|
||||||
|
},
|
||||||
|
"Ethernet52": {
|
||||||
|
"default_brkout_mode": "1x1G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet53": {
|
||||||
|
"default_brkout_mode": "1x21G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
},
|
||||||
|
"Ethernet54": {
|
||||||
|
"default_brkout_mode": "1x21G",
|
||||||
|
"port_type": "RJ45"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -91,9 +91,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"sfps": [
|
"sfps": [
|
||||||
{
|
|
||||||
"name": "Ethernet54"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Ethernet0"
|
"name": "Ethernet0"
|
||||||
},
|
},
|
||||||
@ -255,504 +252,11 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Ethernet53"
|
"name": "Ethernet53"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Ethernet54"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"interfaces": {
|
"interfaces": {}
|
||||||
"Ethernet0": {
|
|
||||||
"index": "1",
|
|
||||||
"lanes": "2",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp1"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet1": {
|
|
||||||
"index": "2",
|
|
||||||
"lanes": "1",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp2"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet2": {
|
|
||||||
"index": "3",
|
|
||||||
"lanes": "4",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp3"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet3": {
|
|
||||||
"index": "4",
|
|
||||||
"lanes": "3",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp4"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet4": {
|
|
||||||
"index": "5",
|
|
||||||
"lanes": "6",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp5"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet5": {
|
|
||||||
"index": "6",
|
|
||||||
"lanes": "5",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp6"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet6": {
|
|
||||||
"index": "7",
|
|
||||||
"lanes": "8",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp7"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet7": {
|
|
||||||
"index": "8",
|
|
||||||
"lanes": "7",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp8"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet8": {
|
|
||||||
"index": "9",
|
|
||||||
"lanes": "10",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp9"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet9": {
|
|
||||||
"index": "10",
|
|
||||||
"lanes": "9",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp10"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet10": {
|
|
||||||
"index": "11",
|
|
||||||
"lanes": "12",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp11"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet11": {
|
|
||||||
"index": "12",
|
|
||||||
"lanes": "11",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp12"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet12": {
|
|
||||||
"index": "13",
|
|
||||||
"lanes": "14",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp13"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet13": {
|
|
||||||
"index": "14",
|
|
||||||
"lanes": "13",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp14"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet14": {
|
|
||||||
"index": "15",
|
|
||||||
"lanes": "16",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp15"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet15": {
|
|
||||||
"index": "16",
|
|
||||||
"lanes": "15",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp16"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet16": {
|
|
||||||
"index": "17",
|
|
||||||
"lanes": "18",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp17"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet17": {
|
|
||||||
"index": "18",
|
|
||||||
"lanes": "17",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp18"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet18": {
|
|
||||||
"index": "19",
|
|
||||||
"lanes": "20",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp19"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet19": {
|
|
||||||
"index": "20",
|
|
||||||
"lanes": "19",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp20"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet20": {
|
|
||||||
"index": "21",
|
|
||||||
"lanes": "22",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp21"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet21": {
|
|
||||||
"index": "22",
|
|
||||||
"lanes": "21",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp22"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet22": {
|
|
||||||
"index": "23",
|
|
||||||
"lanes": "24",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp23"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet23": {
|
|
||||||
"index": "24",
|
|
||||||
"lanes": "23",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp24"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet24": {
|
|
||||||
"index": "25",
|
|
||||||
"lanes": "26",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp25"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet25": {
|
|
||||||
"index": "26",
|
|
||||||
"lanes": "25",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp26"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet26": {
|
|
||||||
"index": "27",
|
|
||||||
"lanes": "28",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp27"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet27": {
|
|
||||||
"index": "28",
|
|
||||||
"lanes": "27",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp28"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet28": {
|
|
||||||
"index": "29",
|
|
||||||
"lanes": "30",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp29"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet29": {
|
|
||||||
"index": "30",
|
|
||||||
"lanes": "29",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp30"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet30": {
|
|
||||||
"index": "31",
|
|
||||||
"lanes": "32",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp31"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet31": {
|
|
||||||
"index": "32",
|
|
||||||
"lanes": "31",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp32"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet32": {
|
|
||||||
"index": "33",
|
|
||||||
"lanes": "34",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp33"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet33": {
|
|
||||||
"index": "34",
|
|
||||||
"lanes": "33",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp34"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet34": {
|
|
||||||
"index": "35",
|
|
||||||
"lanes": "36",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp35"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet35": {
|
|
||||||
"index": "36",
|
|
||||||
"lanes": "35",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp36"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet36": {
|
|
||||||
"index": "37",
|
|
||||||
"lanes": "38",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp37"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet37": {
|
|
||||||
"index": "38",
|
|
||||||
"lanes": "37",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp38"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet38": {
|
|
||||||
"index": "39",
|
|
||||||
"lanes": "40",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp39"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet39": {
|
|
||||||
"index": "40",
|
|
||||||
"lanes": "39",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp40"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet40": {
|
|
||||||
"index": "41",
|
|
||||||
"lanes": "42",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp41"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet41": {
|
|
||||||
"index": "42",
|
|
||||||
"lanes": "41",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp42"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet42": {
|
|
||||||
"index": "43",
|
|
||||||
"lanes": "44",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp43"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet43": {
|
|
||||||
"index": "44",
|
|
||||||
"lanes": "43",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp44"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet44": {
|
|
||||||
"index": "45",
|
|
||||||
"lanes": "46",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp45"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet45": {
|
|
||||||
"index": "46",
|
|
||||||
"lanes": "45",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp46"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet46": {
|
|
||||||
"index": "47",
|
|
||||||
"lanes": "48",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp47"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet47": {
|
|
||||||
"index": "48",
|
|
||||||
"lanes": "47",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x1G": [
|
|
||||||
"etp48"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet48": {
|
|
||||||
"index": "49",
|
|
||||||
"lanes": "48",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x10G": [
|
|
||||||
"etp49"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet49": {
|
|
||||||
"index": "50",
|
|
||||||
"lanes": "53",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x10G": [
|
|
||||||
"etp50"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet50": {
|
|
||||||
"index": "51",
|
|
||||||
"lanes": "56",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x10G": [
|
|
||||||
"etp51"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet51": {
|
|
||||||
"index": "52",
|
|
||||||
"lanes": "55",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x10G": [
|
|
||||||
"etp52"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet52": {
|
|
||||||
"index": "53",
|
|
||||||
"lanes": "49",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x10G": [
|
|
||||||
"etp53"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet53": {
|
|
||||||
"index": "54,54,54,54",
|
|
||||||
"lanes": "57,58,59,60 ",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x10G": [
|
|
||||||
"etp54"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Ethernet54": {
|
|
||||||
"index": "55,55,55,55",
|
|
||||||
"lanes": "61,62,63,64",
|
|
||||||
"breakout_modes": {
|
|
||||||
"1x10G": [
|
|
||||||
"etp55"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -236,17 +236,10 @@ class Chassis(ChassisBase):
|
|||||||
Returns:
|
Returns:
|
||||||
An object dervied from SfpBase representing the specified sfp
|
An object dervied from SfpBase representing the specified sfp
|
||||||
"""
|
"""
|
||||||
sfp = None
|
|
||||||
if not self.sfp_module_initialized:
|
if not self.sfp_module_initialized:
|
||||||
self.__initialize_sfp()
|
self.__initialize_sfp()
|
||||||
|
|
||||||
try:
|
return super(Chassis, self).get_sfp(index - 1)
|
||||||
# The index will start from 1
|
|
||||||
sfp = self._sfp_list[index-1]
|
|
||||||
except IndexError:
|
|
||||||
print("SFP index {} out of range (1-{})\n".format(
|
|
||||||
index, len(self._sfp_list)))
|
|
||||||
return sfp
|
|
||||||
|
|
||||||
##############################################################
|
##############################################################
|
||||||
################## ThermalManager methods ####################
|
################## ThermalManager methods ####################
|
||||||
|
@ -145,7 +145,7 @@ class Fan(FanBase):
|
|||||||
0 : when PWM mode is use
|
0 : when PWM mode is use
|
||||||
pwm : when pwm mode is not use
|
pwm : when pwm mode is not use
|
||||||
"""
|
"""
|
||||||
target = NULL_VAL
|
target = 0
|
||||||
if not self.is_psu_fan:
|
if not self.is_psu_fan:
|
||||||
chip = self.emc2305_chip_mapping[self.fan_index]
|
chip = self.emc2305_chip_mapping[self.fan_index]
|
||||||
device = chip['device']
|
device = chip['device']
|
||||||
|
@ -14,6 +14,7 @@ except ImportError as e:
|
|||||||
raise ImportError(str(e) + "- required module not found")
|
raise ImportError(str(e) + "- required module not found")
|
||||||
|
|
||||||
NUM_FAN = 1
|
NUM_FAN = 1
|
||||||
|
MAX_FAN_WATT = 10.0
|
||||||
|
|
||||||
|
|
||||||
class FanDrawer(FanDrawerBase):
|
class FanDrawer(FanDrawerBase):
|
||||||
@ -47,6 +48,15 @@ class FanDrawer(FanDrawerBase):
|
|||||||
"""
|
"""
|
||||||
return self._fan_list[0].get_status_led()
|
return self._fan_list[0].get_status_led()
|
||||||
|
|
||||||
|
def get_maximum_consumed_power(self):
|
||||||
|
"""
|
||||||
|
Retrives the maximum power drawn by Fan Drawer
|
||||||
|
Returns:
|
||||||
|
A float, with value of the maximum consumable power of the
|
||||||
|
component.
|
||||||
|
"""
|
||||||
|
return MAX_FAN_WATT
|
||||||
|
|
||||||
##############################################################
|
##############################################################
|
||||||
###################### Device methods ########################
|
###################### Device methods ########################
|
||||||
##############################################################
|
##############################################################
|
||||||
|
@ -12,7 +12,6 @@ try:
|
|||||||
from sonic_platform_base.sfp_base import SfpBase
|
from sonic_platform_base.sfp_base import SfpBase
|
||||||
from sonic_platform_base.sonic_sfp.sff8472 import sff8472InterfaceId
|
from sonic_platform_base.sonic_sfp.sff8472 import sff8472InterfaceId
|
||||||
from sonic_platform_base.sonic_sfp.sff8472 import sff8472Dom
|
from sonic_platform_base.sonic_sfp.sff8472 import sff8472Dom
|
||||||
from sonic_platform_base.sonic_sfp.sff8472 import sffbase
|
|
||||||
from sonic_platform_base.sonic_sfp.sff8436 import sff8436InterfaceId
|
from sonic_platform_base.sonic_sfp.sff8436 import sff8436InterfaceId
|
||||||
from sonic_platform_base.sonic_sfp.sff8436 import sff8436Dom
|
from sonic_platform_base.sonic_sfp.sff8436 import sff8436Dom
|
||||||
from sonic_platform_base.sonic_sfp.inf8628 import inf8628InterfaceId
|
from sonic_platform_base.sonic_sfp.inf8628 import inf8628InterfaceId
|
||||||
@ -210,9 +209,9 @@ class Sfp(SfpBase):
|
|||||||
def __get_sfp_type(self):
|
def __get_sfp_type(self):
|
||||||
return SFP_TYPE if self.port_num in self._sfp_port else ETP_TYPE
|
return SFP_TYPE if self.port_num in self._sfp_port else ETP_TYPE
|
||||||
|
|
||||||
def __convert_string_to_num(self, value_str):
|
def _convert_string_to_num(self, value_str):
|
||||||
if "-inf" in value_str:
|
if "-inf" in value_str:
|
||||||
return 'N/A'
|
return float("-inf")
|
||||||
elif "Unknown" in value_str:
|
elif "Unknown" in value_str:
|
||||||
return 'N/A'
|
return 'N/A'
|
||||||
elif 'dBm' in value_str:
|
elif 'dBm' in value_str:
|
||||||
@ -230,7 +229,7 @@ class Sfp(SfpBase):
|
|||||||
else:
|
else:
|
||||||
return 'N/A'
|
return 'N/A'
|
||||||
|
|
||||||
def __read_eeprom_specific_bytes(self, offset, num_bytes):
|
def _read_eeprom_specific_bytes(self, offset, num_bytes):
|
||||||
sysfsfile_eeprom = None
|
sysfsfile_eeprom = None
|
||||||
eeprom_raw = []
|
eeprom_raw = []
|
||||||
for i in range(0, num_bytes):
|
for i in range(0, num_bytes):
|
||||||
@ -277,10 +276,10 @@ class Sfp(SfpBase):
|
|||||||
# TODO: in the future when decided to migrate to support SFF-8636 instead of SFF-8436,
|
# TODO: in the future when decided to migrate to support SFF-8636 instead of SFF-8436,
|
||||||
# need to add more code for determining the capability and version compliance
|
# need to add more code for determining the capability and version compliance
|
||||||
# in SFF-8636 dom capability definitions evolving with the versions.
|
# in SFF-8636 dom capability definitions evolving with the versions.
|
||||||
qsfp_dom_capability_raw = self.__read_eeprom_specific_bytes(
|
qsfp_dom_capability_raw = self._read_eeprom_specific_bytes(
|
||||||
(offset + XCVR_DOM_CAPABILITY_OFFSET), XCVR_DOM_CAPABILITY_WIDTH)
|
(offset + XCVR_DOM_CAPABILITY_OFFSET), XCVR_DOM_CAPABILITY_WIDTH)
|
||||||
if qsfp_dom_capability_raw is not None:
|
if qsfp_dom_capability_raw is not None:
|
||||||
qsfp_version_compliance_raw = self.__read_eeprom_specific_bytes(
|
qsfp_version_compliance_raw = self._read_eeprom_specific_bytes(
|
||||||
QSFP_VERSION_COMPLIANCE_OFFSET, QSFP_VERSION_COMPLIANCE_WIDTH)
|
QSFP_VERSION_COMPLIANCE_OFFSET, QSFP_VERSION_COMPLIANCE_WIDTH)
|
||||||
qsfp_version_compliance = int(
|
qsfp_version_compliance = int(
|
||||||
qsfp_version_compliance_raw[0], 16)
|
qsfp_version_compliance_raw[0], 16)
|
||||||
@ -302,7 +301,7 @@ class Sfp(SfpBase):
|
|||||||
sfpd_obj = sff8436Dom()
|
sfpd_obj = sff8436Dom()
|
||||||
if sfpd_obj is None:
|
if sfpd_obj is None:
|
||||||
return None
|
return None
|
||||||
qsfp_option_value_raw = self.__read_eeprom_specific_bytes(
|
qsfp_option_value_raw = self._read_eeprom_specific_bytes(
|
||||||
QSFP_OPTION_VALUE_OFFSET, QSFP_OPTION_VALUE_WIDTH)
|
QSFP_OPTION_VALUE_OFFSET, QSFP_OPTION_VALUE_WIDTH)
|
||||||
if qsfp_option_value_raw is not None:
|
if qsfp_option_value_raw is not None:
|
||||||
optional_capability = sfpd_obj.parse_option_params(
|
optional_capability = sfpd_obj.parse_option_params(
|
||||||
@ -325,7 +324,7 @@ class Sfp(SfpBase):
|
|||||||
sfpi_obj = sff8472InterfaceId()
|
sfpi_obj = sff8472InterfaceId()
|
||||||
if sfpi_obj is None:
|
if sfpi_obj is None:
|
||||||
return None
|
return None
|
||||||
sfp_dom_capability_raw = self.__read_eeprom_specific_bytes(
|
sfp_dom_capability_raw = self._read_eeprom_specific_bytes(
|
||||||
XCVR_DOM_CAPABILITY_OFFSET, XCVR_DOM_CAPABILITY_WIDTH)
|
XCVR_DOM_CAPABILITY_OFFSET, XCVR_DOM_CAPABILITY_WIDTH)
|
||||||
if sfp_dom_capability_raw is not None:
|
if sfp_dom_capability_raw is not None:
|
||||||
sfp_dom_capability = int(sfp_dom_capability_raw[0], 16)
|
sfp_dom_capability = int(sfp_dom_capability_raw[0], 16)
|
||||||
@ -382,6 +381,7 @@ class Sfp(SfpBase):
|
|||||||
"""
|
"""
|
||||||
compliance_code_dict = {}
|
compliance_code_dict = {}
|
||||||
transceiver_info_dict = dict.fromkeys(self.info_dict_keys, 'N/A')
|
transceiver_info_dict = dict.fromkeys(self.info_dict_keys, 'N/A')
|
||||||
|
transceiver_info_dict['specification_compliance'] = '{}'
|
||||||
if not self.get_presence():
|
if not self.get_presence():
|
||||||
return transceiver_info_dict
|
return transceiver_info_dict
|
||||||
|
|
||||||
@ -396,14 +396,14 @@ class Sfp(SfpBase):
|
|||||||
if sfpi_obj is None:
|
if sfpi_obj is None:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
sfp_type_raw = self.__read_eeprom_specific_bytes(
|
sfp_type_raw = self._read_eeprom_specific_bytes(
|
||||||
(offset + OSFP_TYPE_OFFSET), XCVR_TYPE_WIDTH)
|
(offset + OSFP_TYPE_OFFSET), XCVR_TYPE_WIDTH)
|
||||||
if sfp_type_raw is not None:
|
if sfp_type_raw is not None:
|
||||||
sfp_type_data = sfpi_obj.parse_sfp_type(sfp_type_raw, 0)
|
sfp_type_data = sfpi_obj.parse_sfp_type(sfp_type_raw, 0)
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
sfp_vendor_name_raw = self.__read_eeprom_specific_bytes(
|
sfp_vendor_name_raw = self._read_eeprom_specific_bytes(
|
||||||
(offset + OSFP_VENDOR_NAME_OFFSET), XCVR_VENDOR_NAME_WIDTH)
|
(offset + OSFP_VENDOR_NAME_OFFSET), XCVR_VENDOR_NAME_WIDTH)
|
||||||
if sfp_vendor_name_raw is not None:
|
if sfp_vendor_name_raw is not None:
|
||||||
sfp_vendor_name_data = sfpi_obj.parse_vendor_name(
|
sfp_vendor_name_data = sfpi_obj.parse_vendor_name(
|
||||||
@ -411,7 +411,7 @@ class Sfp(SfpBase):
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
sfp_vendor_pn_raw = self.__read_eeprom_specific_bytes(
|
sfp_vendor_pn_raw = self._read_eeprom_specific_bytes(
|
||||||
(offset + OSFP_VENDOR_PN_OFFSET), XCVR_VENDOR_PN_WIDTH)
|
(offset + OSFP_VENDOR_PN_OFFSET), XCVR_VENDOR_PN_WIDTH)
|
||||||
if sfp_vendor_pn_raw is not None:
|
if sfp_vendor_pn_raw is not None:
|
||||||
sfp_vendor_pn_data = sfpi_obj.parse_vendor_pn(
|
sfp_vendor_pn_data = sfpi_obj.parse_vendor_pn(
|
||||||
@ -419,7 +419,7 @@ class Sfp(SfpBase):
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
sfp_vendor_rev_raw = self.__read_eeprom_specific_bytes(
|
sfp_vendor_rev_raw = self._read_eeprom_specific_bytes(
|
||||||
(offset + OSFP_HW_REV_OFFSET), vendor_rev_width)
|
(offset + OSFP_HW_REV_OFFSET), vendor_rev_width)
|
||||||
if sfp_vendor_rev_raw is not None:
|
if sfp_vendor_rev_raw is not None:
|
||||||
sfp_vendor_rev_data = sfpi_obj.parse_vendor_rev(
|
sfp_vendor_rev_data = sfpi_obj.parse_vendor_rev(
|
||||||
@ -427,7 +427,7 @@ class Sfp(SfpBase):
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
sfp_vendor_sn_raw = self.__read_eeprom_specific_bytes(
|
sfp_vendor_sn_raw = self._read_eeprom_specific_bytes(
|
||||||
(offset + OSFP_VENDOR_SN_OFFSET), XCVR_VENDOR_SN_WIDTH)
|
(offset + OSFP_VENDOR_SN_OFFSET), XCVR_VENDOR_SN_WIDTH)
|
||||||
if sfp_vendor_sn_raw is not None:
|
if sfp_vendor_sn_raw is not None:
|
||||||
sfp_vendor_sn_data = sfpi_obj.parse_vendor_sn(
|
sfp_vendor_sn_data = sfpi_obj.parse_vendor_sn(
|
||||||
@ -473,7 +473,7 @@ class Sfp(SfpBase):
|
|||||||
if sfpi_obj is None:
|
if sfpi_obj is None:
|
||||||
print("Error: sfp_object open failed")
|
print("Error: sfp_object open failed")
|
||||||
return None
|
return None
|
||||||
sfp_interface_bulk_raw = self.__read_eeprom_specific_bytes(
|
sfp_interface_bulk_raw = self._read_eeprom_specific_bytes(
|
||||||
offset + XCVR_INTERFACE_DATA_START, XCVR_INTERFACE_DATA_SIZE)
|
offset + XCVR_INTERFACE_DATA_START, XCVR_INTERFACE_DATA_SIZE)
|
||||||
if sfp_interface_bulk_raw is None:
|
if sfp_interface_bulk_raw is None:
|
||||||
return None
|
return None
|
||||||
@ -598,7 +598,7 @@ class Sfp(SfpBase):
|
|||||||
if sfpd_obj is None:
|
if sfpd_obj is None:
|
||||||
return transceiver_dom_info_dict
|
return transceiver_dom_info_dict
|
||||||
|
|
||||||
dom_data_raw = self.__read_eeprom_specific_bytes(
|
dom_data_raw = self._read_eeprom_specific_bytes(
|
||||||
(offset + QSFP_DOM_BULK_DATA_START), QSFP_DOM_BULK_DATA_SIZE)
|
(offset + QSFP_DOM_BULK_DATA_START), QSFP_DOM_BULK_DATA_SIZE)
|
||||||
if dom_data_raw is None:
|
if dom_data_raw is None:
|
||||||
return transceiver_dom_info_dict
|
return transceiver_dom_info_dict
|
||||||
@ -608,7 +608,7 @@ class Sfp(SfpBase):
|
|||||||
end = start + QSFP_TEMPE_WIDTH
|
end = start + QSFP_TEMPE_WIDTH
|
||||||
dom_temperature_data = sfpd_obj.parse_temperature(
|
dom_temperature_data = sfpd_obj.parse_temperature(
|
||||||
dom_data_raw[start: end], 0)
|
dom_data_raw[start: end], 0)
|
||||||
temp = self.__convert_string_to_num(
|
temp = self._convert_string_to_num(
|
||||||
dom_temperature_data['data']['Temperature']['value'])
|
dom_temperature_data['data']['Temperature']['value'])
|
||||||
if temp is not None:
|
if temp is not None:
|
||||||
transceiver_dom_info_dict['temperature'] = temp
|
transceiver_dom_info_dict['temperature'] = temp
|
||||||
@ -618,7 +618,7 @@ class Sfp(SfpBase):
|
|||||||
end = start + QSFP_VOLT_WIDTH
|
end = start + QSFP_VOLT_WIDTH
|
||||||
dom_voltage_data = sfpd_obj.parse_voltage(
|
dom_voltage_data = sfpd_obj.parse_voltage(
|
||||||
dom_data_raw[start: end], 0)
|
dom_data_raw[start: end], 0)
|
||||||
volt = self.__convert_string_to_num(
|
volt = self._convert_string_to_num(
|
||||||
dom_voltage_data['data']['Vcc']['value'])
|
dom_voltage_data['data']['Vcc']['value'])
|
||||||
if volt is not None:
|
if volt is not None:
|
||||||
transceiver_dom_info_dict['voltage'] = volt
|
transceiver_dom_info_dict['voltage'] = volt
|
||||||
@ -629,32 +629,32 @@ class Sfp(SfpBase):
|
|||||||
dom_data_raw[start: end], 0)
|
dom_data_raw[start: end], 0)
|
||||||
|
|
||||||
if self.dom_tx_power_supported:
|
if self.dom_tx_power_supported:
|
||||||
transceiver_dom_info_dict['tx1power'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['tx1power'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['TX1Power']['value'])
|
dom_channel_monitor_data['data']['TX1Power']['value'])
|
||||||
transceiver_dom_info_dict['tx2power'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['tx2power'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['TX2Power']['value'])
|
dom_channel_monitor_data['data']['TX2Power']['value'])
|
||||||
transceiver_dom_info_dict['tx3power'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['tx3power'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['TX3Power']['value'])
|
dom_channel_monitor_data['data']['TX3Power']['value'])
|
||||||
transceiver_dom_info_dict['tx4power'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['tx4power'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['TX4Power']['value'])
|
dom_channel_monitor_data['data']['TX4Power']['value'])
|
||||||
|
|
||||||
if self.dom_rx_power_supported:
|
if self.dom_rx_power_supported:
|
||||||
transceiver_dom_info_dict['rx1power'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['rx1power'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['RX1Power']['value'])
|
dom_channel_monitor_data['data']['RX1Power']['value'])
|
||||||
transceiver_dom_info_dict['rx2power'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['rx2power'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['RX2Power']['value'])
|
dom_channel_monitor_data['data']['RX2Power']['value'])
|
||||||
transceiver_dom_info_dict['rx3power'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['rx3power'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['RX3Power']['value'])
|
dom_channel_monitor_data['data']['RX3Power']['value'])
|
||||||
transceiver_dom_info_dict['rx4power'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['rx4power'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['RX4Power']['value'])
|
dom_channel_monitor_data['data']['RX4Power']['value'])
|
||||||
|
|
||||||
transceiver_dom_info_dict['tx1bias'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['tx1bias'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['TX1Bias']['value'])
|
dom_channel_monitor_data['data']['TX1Bias']['value'])
|
||||||
transceiver_dom_info_dict['tx2bias'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['tx2bias'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['TX2Bias']['value'])
|
dom_channel_monitor_data['data']['TX2Bias']['value'])
|
||||||
transceiver_dom_info_dict['tx3bias'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['tx3bias'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['TX3Bias']['value'])
|
dom_channel_monitor_data['data']['TX3Bias']['value'])
|
||||||
transceiver_dom_info_dict['tx4bias'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['tx4bias'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['TX4Bias']['value'])
|
dom_channel_monitor_data['data']['TX4Bias']['value'])
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@ -667,7 +667,7 @@ class Sfp(SfpBase):
|
|||||||
return transceiver_dom_info_dict
|
return transceiver_dom_info_dict
|
||||||
sfpd_obj._calibration_type = self.calibration
|
sfpd_obj._calibration_type = self.calibration
|
||||||
|
|
||||||
dom_data_raw = self.__read_eeprom_specific_bytes(
|
dom_data_raw = self._read_eeprom_specific_bytes(
|
||||||
(offset + SFP_DOM_BULK_DATA_START), SFP_DOM_BULK_DATA_SIZE)
|
(offset + SFP_DOM_BULK_DATA_START), SFP_DOM_BULK_DATA_SIZE)
|
||||||
|
|
||||||
start = SFP_TEMPE_OFFSET - SFP_DOM_BULK_DATA_START
|
start = SFP_TEMPE_OFFSET - SFP_DOM_BULK_DATA_START
|
||||||
@ -685,15 +685,15 @@ class Sfp(SfpBase):
|
|||||||
dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params(
|
dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params(
|
||||||
dom_data_raw[start: end], 0)
|
dom_data_raw[start: end], 0)
|
||||||
|
|
||||||
transceiver_dom_info_dict['temperature'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['temperature'] = self._convert_string_to_num(
|
||||||
dom_temperature_data['data']['Temperature']['value'])
|
dom_temperature_data['data']['Temperature']['value'])
|
||||||
transceiver_dom_info_dict['voltage'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['voltage'] = self._convert_string_to_num(
|
||||||
dom_voltage_data['data']['Vcc']['value'])
|
dom_voltage_data['data']['Vcc']['value'])
|
||||||
transceiver_dom_info_dict['rx1power'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['rx1power'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['RXPower']['value'])
|
dom_channel_monitor_data['data']['RXPower']['value'])
|
||||||
transceiver_dom_info_dict['tx1bias'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['tx1bias'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['TXBias']['value'])
|
dom_channel_monitor_data['data']['TXBias']['value'])
|
||||||
transceiver_dom_info_dict['tx1power'] = self.__convert_string_to_num(
|
transceiver_dom_info_dict['tx1power'] = self._convert_string_to_num(
|
||||||
dom_channel_monitor_data['data']['TXPower']['value'])
|
dom_channel_monitor_data['data']['TXPower']['value'])
|
||||||
|
|
||||||
transceiver_dom_info_dict['rx_los'] = self.get_rx_los()
|
transceiver_dom_info_dict['rx_los'] = self.get_rx_los()
|
||||||
@ -750,7 +750,7 @@ class Sfp(SfpBase):
|
|||||||
if sfpd_obj is None:
|
if sfpd_obj is None:
|
||||||
return transceiver_dom_threshold_info_dict
|
return transceiver_dom_threshold_info_dict
|
||||||
|
|
||||||
dom_module_threshold_raw = self.__read_eeprom_specific_bytes(
|
dom_module_threshold_raw = self._read_eeprom_specific_bytes(
|
||||||
(offset + QSFP_MODULE_THRESHOLD_OFFSET), QSFP_MODULE_THRESHOLD_WIDTH)
|
(offset + QSFP_MODULE_THRESHOLD_OFFSET), QSFP_MODULE_THRESHOLD_WIDTH)
|
||||||
if dom_module_threshold_raw is None:
|
if dom_module_threshold_raw is None:
|
||||||
return transceiver_dom_threshold_info_dict
|
return transceiver_dom_threshold_info_dict
|
||||||
@ -758,8 +758,8 @@ class Sfp(SfpBase):
|
|||||||
dom_module_threshold_data = sfpd_obj.parse_module_threshold_values(
|
dom_module_threshold_data = sfpd_obj.parse_module_threshold_values(
|
||||||
dom_module_threshold_raw, 0)
|
dom_module_threshold_raw, 0)
|
||||||
|
|
||||||
dom_channel_threshold_raw = self.__read_eeprom_specific_bytes((offset + QSFP_CHANNL_THRESHOLD_OFFSET),
|
dom_channel_threshold_raw = self._read_eeprom_specific_bytes((offset + QSFP_CHANNL_THRESHOLD_OFFSET),
|
||||||
QSFP_CHANNL_THRESHOLD_WIDTH)
|
QSFP_CHANNL_THRESHOLD_WIDTH)
|
||||||
if dom_channel_threshold_raw is None:
|
if dom_channel_threshold_raw is None:
|
||||||
return transceiver_dom_threshold_info_dict
|
return transceiver_dom_threshold_info_dict
|
||||||
dom_channel_threshold_data = sfpd_obj.parse_channel_threshold_values(
|
dom_channel_threshold_data = sfpd_obj.parse_channel_threshold_values(
|
||||||
@ -797,8 +797,8 @@ class Sfp(SfpBase):
|
|||||||
if sfpd_obj is None:
|
if sfpd_obj is None:
|
||||||
return transceiver_dom_threshold_info_dict
|
return transceiver_dom_threshold_info_dict
|
||||||
|
|
||||||
dom_module_threshold_raw = self.__read_eeprom_specific_bytes((offset + SFP_MODULE_THRESHOLD_OFFSET),
|
dom_module_threshold_raw = self._read_eeprom_specific_bytes((offset + SFP_MODULE_THRESHOLD_OFFSET),
|
||||||
SFP_MODULE_THRESHOLD_WIDTH)
|
SFP_MODULE_THRESHOLD_WIDTH)
|
||||||
if dom_module_threshold_raw is not None:
|
if dom_module_threshold_raw is not None:
|
||||||
dom_module_threshold_data = sfpd_obj.parse_alarm_warning_threshold(
|
dom_module_threshold_data = sfpd_obj.parse_alarm_warning_threshold(
|
||||||
dom_module_threshold_raw, 0)
|
dom_module_threshold_raw, 0)
|
||||||
@ -829,7 +829,7 @@ class Sfp(SfpBase):
|
|||||||
transceiver_dom_threshold_info_dict['rxpowerlowwarning'] = dom_module_threshold_data['data']['RXPowerLowWarning']['value']
|
transceiver_dom_threshold_info_dict['rxpowerlowwarning'] = dom_module_threshold_data['data']['RXPowerLowWarning']['value']
|
||||||
|
|
||||||
for key in transceiver_dom_threshold_info_dict:
|
for key in transceiver_dom_threshold_info_dict:
|
||||||
transceiver_dom_threshold_info_dict[key] = self.__convert_string_to_num(
|
transceiver_dom_threshold_info_dict[key] = self._convert_string_to_num(
|
||||||
transceiver_dom_threshold_info_dict[key])
|
transceiver_dom_threshold_info_dict[key])
|
||||||
|
|
||||||
return transceiver_dom_threshold_info_dict
|
return transceiver_dom_threshold_info_dict
|
||||||
@ -845,35 +845,36 @@ class Sfp(SfpBase):
|
|||||||
|
|
||||||
def get_rx_los(self):
|
def get_rx_los(self):
|
||||||
"""
|
"""
|
||||||
Retrieves the RX LOS (lost-of-signal) status of SFP
|
Retrieves the RX LOS (loss-of-signal) status of SFP
|
||||||
Returns:
|
Returns:
|
||||||
A Boolean, True if SFP has RX LOS, False if not.
|
A list of boolean values, representing the RX LOS status
|
||||||
|
of each available channel, value is True if SFP channel
|
||||||
|
has RX LOS, False if not.
|
||||||
|
E.g., for a tranceiver with four channels: [False, False, True, False]
|
||||||
Note : RX LOS status is latched until a call to get_rx_los or a reset.
|
Note : RX LOS status is latched until a call to get_rx_los or a reset.
|
||||||
"""
|
"""
|
||||||
rx_los = False
|
rx_los_list = []
|
||||||
if self.sfp_type == OSFP_TYPE:
|
|
||||||
return False
|
|
||||||
|
|
||||||
elif self.sfp_type == QSFP_TYPE:
|
if self.sfp_type == QSFP_TYPE:
|
||||||
offset = 0
|
offset = 0
|
||||||
dom_channel_monitor_raw = self.__read_eeprom_specific_bytes(
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(
|
||||||
(offset + QSFP_CHANNL_RX_LOS_STATUS_OFFSET), QSFP_CHANNL_RX_LOS_STATUS_WIDTH)
|
(offset + QSFP_CHANNL_RX_LOS_STATUS_OFFSET), QSFP_CHANNL_RX_LOS_STATUS_WIDTH)
|
||||||
if dom_channel_monitor_raw is not None:
|
if dom_channel_monitor_raw is not None:
|
||||||
rx_los_data = int(dom_channel_monitor_raw[0], 16)
|
rx_los_data = int(dom_channel_monitor_raw[0], 16)
|
||||||
rx1_los = (rx_los_data & 0x01 != 0)
|
rx_los_list.append(rx_los_data & 0x01 != 0)
|
||||||
rx2_los = (rx_los_data & 0x02 != 0)
|
rx_los_list.append(rx_los_data & 0x02 != 0)
|
||||||
rx3_los = (rx_los_data & 0x04 != 0)
|
rx_los_list.append(rx_los_data & 0x04 != 0)
|
||||||
rx4_los = (rx_los_data & 0x08 != 0)
|
rx_los_list.append(rx_los_data & 0x08 != 0)
|
||||||
rx_los = (rx1_los and rx2_los and rx3_los and rx4_los)
|
|
||||||
else:
|
elif self.sfp_type == SFP_TYPE:
|
||||||
offset = 256
|
offset = 256
|
||||||
dom_channel_monitor_raw = self.__read_eeprom_specific_bytes(
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(
|
||||||
(offset + SFP_CHANNL_STATUS_OFFSET), SFP_CHANNL_STATUS_WIDTH)
|
(offset + SFP_CHANNL_STATUS_OFFSET), SFP_CHANNL_STATUS_WIDTH)
|
||||||
if dom_channel_monitor_raw is not None:
|
if dom_channel_monitor_raw is not None:
|
||||||
rx_los_data = int(dom_channel_monitor_raw[0], 16)
|
rx_los_data = int(dom_channel_monitor_raw[0], 16)
|
||||||
rx_los = (rx_los_data & 0x02 != 0)
|
rx_los_list.append(rx_los_data & 0x02 != 0)
|
||||||
|
|
||||||
return rx_los
|
return rx_los_list
|
||||||
|
|
||||||
def get_tx_fault(self):
|
def get_tx_fault(self):
|
||||||
"""
|
"""
|
||||||
@ -882,51 +883,66 @@ class Sfp(SfpBase):
|
|||||||
A Boolean, True if SFP has TX fault, False if not
|
A Boolean, True if SFP has TX fault, False if not
|
||||||
Note : TX fault status is lached until a call to get_tx_fault or a reset.
|
Note : TX fault status is lached until a call to get_tx_fault or a reset.
|
||||||
"""
|
"""
|
||||||
tx4_fault = False
|
tx_fault_list = []
|
||||||
|
if not self.dom_supported:
|
||||||
|
return tx_fault_list
|
||||||
|
|
||||||
if self.sfp_type == OSFP_TYPE or not self.dom_supported:
|
if self.sfp_type == QSFP_TYPE:
|
||||||
return False
|
|
||||||
|
|
||||||
elif self.sfp_type == QSFP_TYPE:
|
|
||||||
offset = 0
|
offset = 0
|
||||||
dom_channel_monitor_raw = self.__read_eeprom_specific_bytes(
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(
|
||||||
(offset + QSFP_CHANNL_TX_FAULT_STATUS_OFFSET), QSFP_CHANNL_TX_FAULT_STATUS_WIDTH)
|
(offset + QSFP_CHANNL_TX_FAULT_STATUS_OFFSET), QSFP_CHANNL_TX_FAULT_STATUS_WIDTH)
|
||||||
if dom_channel_monitor_raw is not None:
|
if dom_channel_monitor_raw is not None:
|
||||||
tx_fault_data = int(dom_channel_monitor_raw[0], 16)
|
tx_fault_data = int(dom_channel_monitor_raw[0], 16)
|
||||||
tx1_fault = (tx_fault_data & 0x01 != 0)
|
tx_fault_list.append(tx_fault_data & 0x01 != 0)
|
||||||
tx2_fault = (tx_fault_data & 0x02 != 0)
|
tx_fault_list.append(tx_fault_data & 0x02 != 0)
|
||||||
tx3_fault = (tx_fault_data & 0x04 != 0)
|
tx_fault_list.append(tx_fault_data & 0x04 != 0)
|
||||||
tx4_fault = (tx_fault_data & 0x08 != 0)
|
tx_fault_list.append(tx_fault_data & 0x08 != 0)
|
||||||
tx4_fault = (
|
|
||||||
tx1_fault and tx2_fault and tx3_fault and tx4_fault)
|
elif self.sfp_type == SFP_TYPE:
|
||||||
else:
|
|
||||||
offset = 256
|
offset = 256
|
||||||
dom_channel_monitor_raw = self.__read_eeprom_specific_bytes(
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(
|
||||||
(offset + SFP_CHANNL_STATUS_OFFSET), SFP_CHANNL_STATUS_WIDTH)
|
(offset + SFP_CHANNL_STATUS_OFFSET), SFP_CHANNL_STATUS_WIDTH)
|
||||||
if dom_channel_monitor_raw is not None:
|
if dom_channel_monitor_raw is not None:
|
||||||
tx_fault_data = int(dom_channel_monitor_raw[0], 16)
|
tx_fault_data = int(dom_channel_monitor_raw[0], 16)
|
||||||
tx4_fault = (tx_fault_data & 0x04 != 0)
|
tx_fault_list.append(tx_fault_data & 0x04 != 0)
|
||||||
|
|
||||||
return tx4_fault
|
return tx_fault_list
|
||||||
|
|
||||||
def get_tx_disable(self):
|
def get_tx_disable(self):
|
||||||
"""
|
"""
|
||||||
Retrieves the tx_disable status of this SFP
|
Retrieves the tx_disable status of this SFP
|
||||||
Returns:
|
Returns:
|
||||||
A Boolean, True if tx_disable is enabled, False if disabled
|
A list of boolean values, representing the TX disable status
|
||||||
|
of each available channel, value is True if SFP channel
|
||||||
|
is TX disabled, False if not.
|
||||||
|
E.g., for a tranceiver with four channels: [False, False, True, False]
|
||||||
"""
|
"""
|
||||||
tx_disable = False
|
|
||||||
status_control_raw = self.__read_eeprom_specific_bytes(
|
|
||||||
SFP_CHANNL_STATUS_OFFSET, SFP_CHANNL_STATUS_WIDTH)
|
|
||||||
if status_control_raw:
|
|
||||||
data = int(status_control_raw[0], 16)
|
|
||||||
tx_disable_hard = (sffbase().test_bit(
|
|
||||||
data, SFP_TX_DISABLE_HARD_BIT) != 0)
|
|
||||||
tx_disable_soft = (sffbase().test_bit(
|
|
||||||
data, SFP_TX_DISABLE_SOFT_BIT) != 0)
|
|
||||||
tx_disable = tx_disable_hard | tx_disable_soft
|
|
||||||
|
|
||||||
return tx_disable
|
tx_disable_list = []
|
||||||
|
if not self.dom_supported:
|
||||||
|
return tx_disable_list
|
||||||
|
|
||||||
|
if self.sfp_type == QSFP_TYPE:
|
||||||
|
offset = 0
|
||||||
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(
|
||||||
|
(offset + QSFP_CHANNL_DISABLE_STATUS_OFFSET), QSFP_CHANNL_DISABLE_STATUS_WIDTH)
|
||||||
|
if dom_channel_monitor_raw is not None:
|
||||||
|
tx_disable_data = int(dom_channel_monitor_raw[0], 16)
|
||||||
|
tx_disable_list.append(tx_disable_data & 0x01 != 0)
|
||||||
|
tx_disable_list.append(tx_disable_data & 0x02 != 0)
|
||||||
|
tx_disable_list.append(tx_disable_data & 0x04 != 0)
|
||||||
|
tx_disable_list.append(tx_disable_data & 0x08 != 0)
|
||||||
|
|
||||||
|
elif self.sfp_type == SFP_TYPE:
|
||||||
|
offset = 256
|
||||||
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(
|
||||||
|
(offset + SFP_CHANNL_STATUS_OFFSET), SFP_CHANNL_STATUS_WIDTH)
|
||||||
|
if dom_channel_monitor_raw is not None:
|
||||||
|
tx_disable_data = int(dom_channel_monitor_raw[0], 16)
|
||||||
|
tx_disable_list.append(tx_disable_data & 0xC0 != 0)
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
return tx_disable_list
|
||||||
|
|
||||||
def get_tx_disable_channel(self):
|
def get_tx_disable_channel(self):
|
||||||
"""
|
"""
|
||||||
@ -937,8 +953,14 @@ class Sfp(SfpBase):
|
|||||||
As an example, a returned value of 0x5 indicates that channel 0
|
As an example, a returned value of 0x5 indicates that channel 0
|
||||||
and channel 2 have been disabled.
|
and channel 2 have been disabled.
|
||||||
"""
|
"""
|
||||||
# SFP doesn't support this feature
|
tx_disable_list = self.get_tx_disable()
|
||||||
return 0
|
if tx_disable_list is None:
|
||||||
|
return 0
|
||||||
|
tx_disabled = 0
|
||||||
|
for i in range(len(tx_disable_list)):
|
||||||
|
if tx_disable_list[i]:
|
||||||
|
tx_disabled |= 1 << i
|
||||||
|
return tx_disabled
|
||||||
|
|
||||||
def get_lpmode(self):
|
def get_lpmode(self):
|
||||||
"""
|
"""
|
||||||
@ -965,7 +987,7 @@ class Sfp(SfpBase):
|
|||||||
An integer number of current temperature in Celsius
|
An integer number of current temperature in Celsius
|
||||||
"""
|
"""
|
||||||
transceiver_bulk_status = self.get_transceiver_bulk_status()
|
transceiver_bulk_status = self.get_transceiver_bulk_status()
|
||||||
return transceiver_bulk_status.get("temperature", "N/A")
|
return transceiver_bulk_status.get("temperature", 0.0)
|
||||||
|
|
||||||
def get_voltage(self):
|
def get_voltage(self):
|
||||||
"""
|
"""
|
||||||
@ -974,7 +996,7 @@ class Sfp(SfpBase):
|
|||||||
An integer number of supply voltage in mV
|
An integer number of supply voltage in mV
|
||||||
"""
|
"""
|
||||||
transceiver_bulk_status = self.get_transceiver_bulk_status()
|
transceiver_bulk_status = self.get_transceiver_bulk_status()
|
||||||
return transceiver_bulk_status.get("voltage", "N/A")
|
return transceiver_bulk_status.get("voltage", 0.0)
|
||||||
|
|
||||||
def get_tx_bias(self):
|
def get_tx_bias(self):
|
||||||
"""
|
"""
|
||||||
@ -984,9 +1006,49 @@ class Sfp(SfpBase):
|
|||||||
for channel 0 to channel 4.
|
for channel 0 to channel 4.
|
||||||
Ex. ['110.09', '111.12', '108.21', '112.09']
|
Ex. ['110.09', '111.12', '108.21', '112.09']
|
||||||
"""
|
"""
|
||||||
transceiver_dom_info_dict = self.get_transceiver_bulk_status()
|
tx_bias_list = []
|
||||||
tx1_bs = transceiver_dom_info_dict.get("tx1bias", "N/A")
|
if not self.dom_supported:
|
||||||
return [tx1_bs, "N/A", "N/A", "N/A"] if transceiver_dom_info_dict else []
|
return tx_bias_list
|
||||||
|
|
||||||
|
if self.sfp_type == QSFP_TYPE:
|
||||||
|
offset = 0
|
||||||
|
|
||||||
|
sfpd_obj = sff8436Dom()
|
||||||
|
if sfpd_obj is None:
|
||||||
|
return tx_bias_list
|
||||||
|
|
||||||
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(
|
||||||
|
(offset + QSFP_CHANNL_MON_OFFSET), QSFP_CHANNL_MON_WITH_TX_POWER_WIDTH)
|
||||||
|
if dom_channel_monitor_raw is not None:
|
||||||
|
dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params_with_tx_power(
|
||||||
|
dom_channel_monitor_raw, 0)
|
||||||
|
tx_bias_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['TX1Bias']['value']))
|
||||||
|
tx_bias_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['TX2Bias']['value']))
|
||||||
|
tx_bias_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['TX3Bias']['value']))
|
||||||
|
tx_bias_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['TX4Bias']['value']))
|
||||||
|
|
||||||
|
elif self.sfp_type == SFP_TYPE:
|
||||||
|
offset = 256
|
||||||
|
|
||||||
|
sfpd_obj = sff8472Dom()
|
||||||
|
if sfpd_obj is None:
|
||||||
|
return tx_bias_list
|
||||||
|
sfpd_obj._calibration_type = self.calibration
|
||||||
|
|
||||||
|
if self.dom_supported:
|
||||||
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(
|
||||||
|
(offset + SFP_CHANNL_MON_OFFSET), SFP_CHANNL_MON_WIDTH)
|
||||||
|
if dom_channel_monitor_raw is not None:
|
||||||
|
dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params(
|
||||||
|
dom_channel_monitor_raw, 0)
|
||||||
|
tx_bias_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['TXBias']['value']))
|
||||||
|
|
||||||
|
return tx_bias_list
|
||||||
|
|
||||||
def get_rx_power(self):
|
def get_rx_power(self):
|
||||||
"""
|
"""
|
||||||
@ -996,9 +1058,48 @@ class Sfp(SfpBase):
|
|||||||
power in mW for channel 0 to channel 4.
|
power in mW for channel 0 to channel 4.
|
||||||
Ex. ['1.77', '1.71', '1.68', '1.70']
|
Ex. ['1.77', '1.71', '1.68', '1.70']
|
||||||
"""
|
"""
|
||||||
transceiver_dom_info_dict = self.get_transceiver_bulk_status()
|
rx_power_list = []
|
||||||
rx1_pw = transceiver_dom_info_dict.get("rx1power", "N/A")
|
if self.sfp_type == QSFP_TYPE:
|
||||||
return [rx1_pw, "N/A", "N/A", "N/A"] if transceiver_dom_info_dict else []
|
offset = 0
|
||||||
|
|
||||||
|
sfpd_obj = sff8436Dom()
|
||||||
|
if sfpd_obj is None:
|
||||||
|
return rx_power_list
|
||||||
|
|
||||||
|
if self.dom_rx_power_supported:
|
||||||
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(
|
||||||
|
(offset + QSFP_CHANNL_MON_OFFSET), QSFP_CHANNL_MON_WITH_TX_POWER_WIDTH)
|
||||||
|
if dom_channel_monitor_raw is not None:
|
||||||
|
dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params_with_tx_power(
|
||||||
|
dom_channel_monitor_raw, 0)
|
||||||
|
rx_power_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['RX1Power']['value']))
|
||||||
|
rx_power_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['RX2Power']['value']))
|
||||||
|
rx_power_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['RX3Power']['value']))
|
||||||
|
rx_power_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['RX4Power']['value']))
|
||||||
|
|
||||||
|
elif self.sfp_type == SFP_TYPE:
|
||||||
|
offset = 256
|
||||||
|
|
||||||
|
sfpd_obj = sff8472Dom()
|
||||||
|
if sfpd_obj is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if self.dom_supported:
|
||||||
|
sfpd_obj._calibration_type = self.calibration
|
||||||
|
|
||||||
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(
|
||||||
|
(offset + SFP_CHANNL_MON_OFFSET), SFP_CHANNL_MON_WIDTH)
|
||||||
|
if dom_channel_monitor_raw is not None:
|
||||||
|
dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params(
|
||||||
|
dom_channel_monitor_raw, 0)
|
||||||
|
rx_power_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['RXPower']['value']))
|
||||||
|
|
||||||
|
return rx_power_list
|
||||||
|
|
||||||
def get_tx_power(self):
|
def get_tx_power(self):
|
||||||
"""
|
"""
|
||||||
@ -1008,9 +1109,48 @@ class Sfp(SfpBase):
|
|||||||
for channel 0 to channel 4.
|
for channel 0 to channel 4.
|
||||||
Ex. ['1.86', '1.86', '1.86', '1.86']
|
Ex. ['1.86', '1.86', '1.86', '1.86']
|
||||||
"""
|
"""
|
||||||
transceiver_dom_info_dict = self.get_transceiver_bulk_status()
|
tx_power_list = []
|
||||||
tx1_pw = transceiver_dom_info_dict.get("tx1power", "N/A")
|
if self.sfp_type == QSFP_TYPE:
|
||||||
return [tx1_pw, "N/A", "N/A", "N/A"] if transceiver_dom_info_dict else []
|
offset = 0
|
||||||
|
|
||||||
|
sfpd_obj = sff8436Dom()
|
||||||
|
if sfpd_obj is None:
|
||||||
|
return tx_power_list
|
||||||
|
|
||||||
|
if self.dom_tx_power_supported:
|
||||||
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(
|
||||||
|
(offset + QSFP_CHANNL_MON_OFFSET), QSFP_CHANNL_MON_WITH_TX_POWER_WIDTH)
|
||||||
|
if dom_channel_monitor_raw is not None:
|
||||||
|
dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params_with_tx_power(
|
||||||
|
dom_channel_monitor_raw, 0)
|
||||||
|
tx_power_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['TX1Power']['value']))
|
||||||
|
tx_power_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['TX2Power']['value']))
|
||||||
|
tx_power_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['TX3Power']['value']))
|
||||||
|
tx_power_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['TX4Power']['value']))
|
||||||
|
|
||||||
|
elif self.sfp_type == SFP_TYPE:
|
||||||
|
|
||||||
|
offset = 256
|
||||||
|
sfpd_obj = sff8472Dom()
|
||||||
|
if sfpd_obj is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if self.dom_supported:
|
||||||
|
sfpd_obj._calibration_type = self.calibration
|
||||||
|
|
||||||
|
dom_channel_monitor_raw = self._read_eeprom_specific_bytes(
|
||||||
|
(offset + SFP_CHANNL_MON_OFFSET), SFP_CHANNL_MON_WIDTH)
|
||||||
|
if dom_channel_monitor_raw is not None:
|
||||||
|
dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params(
|
||||||
|
dom_channel_monitor_raw, 0)
|
||||||
|
tx_power_list.append(self._convert_string_to_num(
|
||||||
|
dom_channel_monitor_data['data']['TXPower']['value']))
|
||||||
|
|
||||||
|
return tx_power_list
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
"""
|
"""
|
||||||
@ -1031,7 +1171,7 @@ class Sfp(SfpBase):
|
|||||||
A boolean, True if tx_disable is set successfully, False if not
|
A boolean, True if tx_disable is set successfully, False if not
|
||||||
"""
|
"""
|
||||||
sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom_mapping[self.port_num]
|
sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom_mapping[self.port_num]
|
||||||
status_control_raw = self.__read_eeprom_specific_bytes(
|
status_control_raw = self._read_eeprom_specific_bytes(
|
||||||
SFP_CHANNL_STATUS_OFFSET, SFP_CHANNL_STATUS_WIDTH)
|
SFP_CHANNL_STATUS_OFFSET, SFP_CHANNL_STATUS_WIDTH)
|
||||||
if status_control_raw is not None:
|
if status_control_raw is not None:
|
||||||
# Set bit 6 for Soft TX Disable Select
|
# Set bit 6 for Soft TX Disable Select
|
||||||
|
Reference in New Issue
Block a user