Merge "[PTP] Update cgu parser for Logan Beach NIC"

This commit is contained in:
Zuul 2022-11-18 14:24:32 +00:00 committed by Gerrit Code Review
commit 885056107a
4 changed files with 90 additions and 20 deletions

View File

@ -95,9 +95,17 @@ class CguHandler:
'Phase offset': ''
}
}
# Get the input state table start and end lines
# Can vary in length depending on NIC types
for index, line in enumerate(cgu_output):
if "input (idx)" in line:
table_start = index + 2
if "EEC DPLL:" in line:
dpll_start = index
table_end = index - 1
for line in cgu_output[7:14]:
# Build a dict out of the 7 line table
for line in cgu_output[table_start:table_end]:
# Build a dict out of the table
dict_to_insert = {
re.split(' +', line)[1]: {
'state': re.split(' +', line)[4],
@ -110,13 +118,20 @@ class CguHandler:
cgu_dict['input'].update(dict_to_insert)
# Add the DPLL data below the table
# Set the line offsets for each item we want
eec_current_ref = dpll_start + 1
eec_status = dpll_start + 2
pps_current_ref = dpll_start + 5
pps_status = dpll_start + 6
pps_phase_offset = dpll_start + 7
cgu_dict['EEC DPLL']['Current reference'] = \
re.split('[ \t]+', cgu_output[16])[3]
cgu_dict['EEC DPLL']['Status'] = re.split('[ \t]+', cgu_output[17])[2]
re.split('[ \t]+', cgu_output[eec_current_ref])[-1]
cgu_dict['EEC DPLL']['Status'] = re.split('[ \t]+', cgu_output[eec_status])[-1]
cgu_dict['PPS DPLL']['Current reference'] = \
re.split('[ \t]+', cgu_output[20])[3]
cgu_dict['PPS DPLL']['Status'] = re.split('[ \t]+', cgu_output[21])[2]
re.split('[ \t]+', cgu_output[pps_current_ref])[-1]
cgu_dict['PPS DPLL']['Status'] = re.split('[ \t]+', cgu_output[pps_status])[-1]
cgu_dict['PPS DPLL']['Phase offset'] = \
re.split('[ \t]+', cgu_output[22])[3]
re.split('[ \t]+', cgu_output[pps_phase_offset])[-1]
self.cgu_output_parsed = cgu_dict

View File

@ -57,21 +57,51 @@ class CguHandlerTests(unittest.TestCase):
with self.assertRaises(FileNotFoundError):
self.testCguHandler.get_cgu_path_from_pci_addr()
def test_cgu_output_to_dict(self):
def test_cgu_output_to_dict_logan_beach(self):
reference_dict = {
'input':
{'CVL-SDP22': {'state': 'invalid', 'priority': {'EEC': '8', 'PPS': '8'}},
'CVL-SDP20': {'state': 'invalid', 'priority': {'EEC': '15', 'PPS': '3'}},
'C827_0-RCLKA': {'state': 'invalid', 'priority': {'EEC': '4', 'PPS': '4'}},
'C827_0-RCLKB': {'state': 'invalid', 'priority': {'EEC': '5', 'PPS': '5'}},
'SMA1': {'state': 'invalid', 'priority': {'EEC': '1', 'PPS': '1'}},
'SMA2/U.FL2': {'state': 'invalid', 'priority': {'EEC': '2', 'PPS': '2'}},
'GNSS-1PPS': {'state': 'valid', 'priority': {'EEC': '0', 'PPS': '0'}}},
'EEC DPLL': {'Current reference': 'GNSS-1PPS', 'Status': 'locked_ho_ack'},
'PPS DPLL': {'Current reference': 'GNSS-1PPS', 'Status': 'locked_ho_ack',
'Phase offset': '295'}}
"input": {
"CVL-SDP22": {"state": "invalid", "priority": {"EEC": "8", "PPS": "8"}},
"CVL-SDP20": {"state": "invalid", "priority": {"EEC": "15", "PPS": "3"}},
"C827_0-RCLKA": {"state": "invalid", "priority": {"EEC": "4", "PPS": "4"}},
"C827_0-RCLKB": {"state": "invalid", "priority": {"EEC": "5", "PPS": "5"}},
"C827_1-RCLKA": {"state": "invalid", "priority": {"EEC": "6", "PPS": "6"}},
"C827_1-RCLKB": {"state": "invalid", "priority": {"EEC": "7", "PPS": "7"}},
"SMA1": {"state": "invalid", "priority": {"EEC": "1", "PPS": "1"}},
"SMA2/U.FL2": {"state": "invalid", "priority": {"EEC": "2", "PPS": "2"}},
"GNSS-1PPS": {"state": "valid", "priority": {"EEC": "0", "PPS": "0"}},
},
"EEC DPLL": {"Current reference": "GNSS-1PPS", "Status": "locked_ho_acq"},
"PPS DPLL": {
"Current reference": "GNSS-1PPS",
"Status": "locked_ho_acq",
"Phase offset": "-86",
},
}
self.testCguHandler.cgu_path = testpath + "test_input_files/mock_cgu_output"
self.testCguHandler.cgu_path = testpath + "test_input_files/mock_cgu_output_logan_beach"
self.testCguHandler.read_cgu()
self.testCguHandler.cgu_output_to_dict()
self.assertDictEqual(self.testCguHandler.cgu_output_parsed, reference_dict)
def test_cgu_output_to_dict_westport_channel(self):
reference_dict = {
"input": {
"CVL-SDP22": {"state": "invalid", "priority": {"EEC": "8", "PPS": "8"}},
"CVL-SDP20": {"state": "invalid", "priority": {"EEC": "15", "PPS": "3"}},
"C827_0-RCLKA": {"state": "invalid", "priority": {"EEC": "4", "PPS": "4"}},
"C827_0-RCLKB": {"state": "invalid", "priority": {"EEC": "5", "PPS": "5"}},
"SMA1": {"state": "invalid", "priority": {"EEC": "1", "PPS": "1"}},
"SMA2/U.FL2": {"state": "invalid", "priority": {"EEC": "2", "PPS": "2"}},
"GNSS-1PPS": {"state": "valid", "priority": {"EEC": "0", "PPS": "0"}},
},
"EEC DPLL": {"Current reference": "GNSS-1PPS", "Status": "locked_ho_ack"},
"PPS DPLL": {
"Current reference": "GNSS-1PPS",
"Status": "locked_ho_ack",
"Phase offset": "295",
},
}
self.testCguHandler.cgu_path = testpath + "test_input_files/mock_cgu_output_westport_channel"
self.testCguHandler.read_cgu()
self.testCguHandler.cgu_output_to_dict()
self.assertDictEqual(self.testCguHandler.cgu_output_parsed, reference_dict)

View File

@ -0,0 +1,25 @@
Found ZL80032 CGU
DPLL Config ver: 1.3.0.1
CGU Input status:
| | priority | |
input (idx) | state | EEC (0) | PPS (1) | ESync fail |
----------------------------------------------------------------
CVL-SDP22 (0) | invalid | 8 | 8 | N/A |
CVL-SDP20 (1) | invalid | 15 | 3 | N/A |
C827_0-RCLKA (2) | invalid | 4 | 4 | N/A |
C827_0-RCLKB (3) | invalid | 5 | 5 | N/A |
C827_1-RCLKA (4) | invalid | 6 | 6 | N/A |
C827_1-RCLKB (5) | invalid | 7 | 7 | N/A |
SMA1 (6) | invalid | 1 | 1 | N/A |
SMA2/U.FL2 (7) | invalid | 2 | 2 | N/A |
GNSS-1PPS (8) | valid | 0 | 0 | N/A |
EEC DPLL:
Current reference: GNSS-1PPS
Status: locked_ho_acq
PPS DPLL:
Current reference: GNSS-1PPS
Status: locked_ho_acq
Phase offset [ns]: -86