Skip to content

Commit 3d35404

Browse files
authored
Certain VDM fields not populating after encountering KeyError on 400ZR optics (sonic-net#442)
* Certain VDM fields not populating after encountering KeyError on 400ZR optics Signed-off-by: Mihir Patel <[email protected]> * Added soproc in the VDM_KEY_TO_DB_KEY_PREFIX_MAP and changed NA to N/A --------- Signed-off-by: Mihir Patel <[email protected]>
1 parent 796e89a commit 3d35404

File tree

2 files changed

+98
-186
lines changed

2 files changed

+98
-186
lines changed

sonic_platform_base/sonic_xcvr/api/public/c_cmis.py

+78-163
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,74 @@
1212
VDM_UNFREEZE = 0
1313
SYSLOG_IDENTIFIER = "CCmisApi"
1414

15+
VDM_KEY_TO_DB_KEY_PREFIX_MAP = {
16+
'Modulator Bias X/I [%]' : 'biasxi',
17+
'Modulator Bias X/Q [%]' : 'biasxq',
18+
'Modulator Bias X_Phase [%]' : 'biasxp',
19+
'Modulator Bias Y/I [%]' : 'biasyi',
20+
'Modulator Bias Y/Q [%]' : 'biasyq',
21+
'Modulator Bias Y_Phase [%]' : 'biasyp',
22+
'CD high granularity, short link [ps/nm]' : 'cdshort',
23+
'CD low granularity, long link [ps/nm]' : 'cdlong',
24+
'DGD [ps]' : 'dgd',
25+
'SOPMD [ps^2]' : 'sopmd',
26+
'SOP ROC [krad/s]' : 'soproc',
27+
'PDL [dB]' : 'pdl',
28+
'OSNR [dB]' : 'osnr',
29+
'eSNR [dB]' : 'esnr',
30+
'CFO [MHz]' : 'cfo',
31+
'Tx Power [dBm]' : 'txcurrpower',
32+
'Rx Total Power [dBm]' : 'rxtotpower',
33+
'Rx Signal Power [dBm]' : 'rxsigpower'
34+
}
35+
36+
VDM_SUBTYPE_IDX_MAP= {
37+
1: 'highalarm',
38+
2: 'lowalarm',
39+
3: 'highwarning',
40+
4: 'lowwarning',
41+
5: 'highalarm_flag',
42+
6: 'lowalarm_flag',
43+
7: 'highwarning_flag',
44+
8: 'lowwarning_flag'
45+
}
46+
47+
1548
helper_logger = logger.Logger(SYSLOG_IDENTIFIER)
1649

1750
class CCmisApi(CmisApi):
1851
def __init__(self, xcvr_eeprom):
1952
super(CCmisApi, self).__init__(xcvr_eeprom)
2053

54+
def _update_dict_if_vdm_key_exists(self, dict_to_be_updated, new_key, vdm_dict_key, vdm_subtype_index, lane=1):
55+
'''
56+
This function updates the dictionary with the VDM value if the vdm_dict_key exists.
57+
@param dict_to_be_updated: the dictionary to be updated.
58+
@param new_key: the key to be added in dict_to_be_updated.
59+
@param vdm_dict_key: lookup key in the VDM dictionary.
60+
@param vdm_subtype_index: the index of the VDM subtype in the VDM page.
61+
0 refers to the real time value
62+
1 refers to the high alarm threshold
63+
2 refers to the low alarm threshold
64+
3 refers to the high warning threshold
65+
4 refers to the low warning threshold
66+
5 refers to the high alarm flag
67+
6 refers to the low alarm flag
68+
7 refers to the high warning flag
69+
8 refers to the low warning flag
70+
@param lane: the lane number. Default is 1.
71+
72+
@return: True if the key exists in the VDM dictionary, False if not.
73+
'''
74+
try:
75+
dict_to_be_updated[new_key] = self.vdm_dict[vdm_dict_key][lane][vdm_subtype_index]
76+
except KeyError:
77+
dict_to_be_updated[new_key] = 'N/A'
78+
helper_logger.log_debug('key {} not present in VDM'.format(new_key))
79+
return False
80+
81+
return True
82+
2183
def get_freq_grid(self):
2284
'''
2385
This function returns the configured frequency grid. Unit in GHz
@@ -377,27 +439,10 @@ def get_transceiver_bulk_status(self):
377439
========================================================================
378440
"""
379441
trans_dom = super(CCmisApi,self).get_transceiver_bulk_status()
380-
try:
381-
trans_dom['bias_xi'] = self.vdm_dict['Modulator Bias X/I [%]'][1][0]
382-
trans_dom['bias_xq'] = self.vdm_dict['Modulator Bias X/Q [%]'][1][0]
383-
trans_dom['bias_xp'] = self.vdm_dict['Modulator Bias X_Phase [%]'][1][0]
384-
trans_dom['bias_yi'] = self.vdm_dict['Modulator Bias Y/I [%]'][1][0]
385-
trans_dom['bias_yq'] = self.vdm_dict['Modulator Bias Y/Q [%]'][1][0]
386-
trans_dom['bias_yp'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][0]
387-
trans_dom['cd_shortlink'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][0]
388-
trans_dom['cd_longlink'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][0]
389-
trans_dom['dgd'] = self.vdm_dict['DGD [ps]'][1][0]
390-
trans_dom['sopmd'] = self.vdm_dict['SOPMD [ps^2]'][1][0]
391-
trans_dom['soproc'] = self.vdm_dict['SOP ROC [krad/s]'][1][0]
392-
trans_dom['pdl'] = self.vdm_dict['PDL [dB]'][1][0]
393-
trans_dom['osnr'] = self.vdm_dict['OSNR [dB]'][1][0]
394-
trans_dom['esnr'] = self.vdm_dict['eSNR [dB]'][1][0]
395-
trans_dom['cfo'] = self.vdm_dict['CFO [MHz]'][1][0]
396-
trans_dom['tx_curr_power'] = self.vdm_dict['Tx Power [dBm]'][1][0]
397-
trans_dom['rx_tot_power'] = self.vdm_dict['Rx Total Power [dBm]'][1][0]
398-
trans_dom['rx_sig_power'] = self.vdm_dict['Rx Signal Power [dBm]'][1][0]
399-
except KeyError:
400-
pass
442+
443+
for vdm_key, trans_dom_key in VDM_KEY_TO_DB_KEY_PREFIX_MAP.items():
444+
self._update_dict_if_vdm_key_exists(trans_dom, trans_dom_key, vdm_key, 0)
445+
401446
trans_dom['laser_config_freq'] = self.get_laser_config_freq()
402447
trans_dom['laser_curr_freq'] = self.get_current_laser_freq()
403448
trans_dom['tx_config_power'] = self.get_tx_config_power()
@@ -515,77 +560,12 @@ def get_transceiver_threshold_info(self):
515560
========================================================================
516561
"""
517562
trans_dom_th = super(CCmisApi,self).get_transceiver_threshold_info()
518-
try:
519-
trans_dom_th['biasxihighalarm'] = self.vdm_dict['Modulator Bias X/I [%]'][1][1]
520-
trans_dom_th['biasxilowalarm'] = self.vdm_dict['Modulator Bias X/I [%]'][1][2]
521-
trans_dom_th['biasxihighwarning'] = self.vdm_dict['Modulator Bias X/I [%]'][1][3]
522-
trans_dom_th['biasxilowwarning'] = self.vdm_dict['Modulator Bias X/I [%]'][1][4]
523-
trans_dom_th['biasxqhighalarm'] = self.vdm_dict['Modulator Bias X/Q [%]'][1][1]
524-
trans_dom_th['biasxqlowalarm'] = self.vdm_dict['Modulator Bias X/Q [%]'][1][2]
525-
trans_dom_th['biasxqhighwarning'] = self.vdm_dict['Modulator Bias X/Q [%]'][1][3]
526-
trans_dom_th['biasxqlowwarning'] = self.vdm_dict['Modulator Bias X/Q [%]'][1][4]
527-
trans_dom_th['biasxphighalarm'] = self.vdm_dict['Modulator Bias X_Phase [%]'][1][1]
528-
trans_dom_th['biasxplowalarm'] = self.vdm_dict['Modulator Bias X_Phase [%]'][1][2]
529-
trans_dom_th['biasxphighwarning'] = self.vdm_dict['Modulator Bias X_Phase [%]'][1][3]
530-
trans_dom_th['biasxplowwarning'] = self.vdm_dict['Modulator Bias X_Phase [%]'][1][4]
531-
trans_dom_th['biasyihighalarm'] = self.vdm_dict['Modulator Bias Y/I [%]'][1][1]
532-
trans_dom_th['biasyilowalarm'] = self.vdm_dict['Modulator Bias Y/I [%]'][1][2]
533-
trans_dom_th['biasyihighwarning'] = self.vdm_dict['Modulator Bias Y/I [%]'][1][3]
534-
trans_dom_th['biasyilowwarning'] = self.vdm_dict['Modulator Bias Y/I [%]'][1][4]
535-
trans_dom_th['biasyqhighalarm'] = self.vdm_dict['Modulator Bias Y/Q [%]'][1][1]
536-
trans_dom_th['biasyqlowalarm'] = self.vdm_dict['Modulator Bias Y/Q [%]'][1][2]
537-
trans_dom_th['biasyqhighwarning'] = self.vdm_dict['Modulator Bias Y/Q [%]'][1][3]
538-
trans_dom_th['biasyqlowwarning'] = self.vdm_dict['Modulator Bias Y/Q [%]'][1][4]
539-
trans_dom_th['biasyphighalarm'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][1]
540-
trans_dom_th['biasyplowalarm'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][2]
541-
trans_dom_th['biasyphighwarning'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][3]
542-
trans_dom_th['biasyplowwarning'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][4]
543-
trans_dom_th['cdshorthighalarm'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][1]
544-
trans_dom_th['cdshortlowalarm'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][2]
545-
trans_dom_th['cdshorthighwarning'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][3]
546-
trans_dom_th['cdshortlowwarning'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][4]
547-
trans_dom_th['cdlonghighalarm'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][1]
548-
trans_dom_th['cdlonglowalarm'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][2]
549-
trans_dom_th['cdlonghighwarning'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][3]
550-
trans_dom_th['cdlonglowwarning'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][4]
551-
trans_dom_th['dgdhighalarm'] = self.vdm_dict['DGD [ps]'][1][1]
552-
trans_dom_th['dgdlowalarm'] = self.vdm_dict['DGD [ps]'][1][2]
553-
trans_dom_th['dgdhighwarning'] = self.vdm_dict['DGD [ps]'][1][3]
554-
trans_dom_th['dgdlowwarning'] = self.vdm_dict['DGD [ps]'][1][4]
555-
trans_dom_th['sopmdhighalarm'] = self.vdm_dict['SOPMD [ps^2]'][1][1]
556-
trans_dom_th['sopmdlowalarm'] = self.vdm_dict['SOPMD [ps^2]'][1][2]
557-
trans_dom_th['sopmdhighwarning'] = self.vdm_dict['SOPMD [ps^2]'][1][3]
558-
trans_dom_th['sopmdlowwarning'] = self.vdm_dict['SOPMD [ps^2]'][1][4]
559-
trans_dom_th['pdlhighalarm'] = self.vdm_dict['PDL [dB]'][1][1]
560-
trans_dom_th['pdllowalarm'] = self.vdm_dict['PDL [dB]'][1][2]
561-
trans_dom_th['pdlhighwarning'] = self.vdm_dict['PDL [dB]'][1][3]
562-
trans_dom_th['pdllowwarning'] = self.vdm_dict['PDL [dB]'][1][4]
563-
trans_dom_th['osnrhighalarm'] = self.vdm_dict['OSNR [dB]'][1][1]
564-
trans_dom_th['osnrlowalarm'] = self.vdm_dict['OSNR [dB]'][1][2]
565-
trans_dom_th['osnrhighwarning'] = self.vdm_dict['OSNR [dB]'][1][3]
566-
trans_dom_th['osnrlowwarning'] = self.vdm_dict['OSNR [dB]'][1][4]
567-
trans_dom_th['esnrhighalarm'] = self.vdm_dict['eSNR [dB]'][1][1]
568-
trans_dom_th['esnrlowalarm'] = self.vdm_dict['eSNR [dB]'][1][2]
569-
trans_dom_th['esnrhighwarning'] = self.vdm_dict['eSNR [dB]'][1][3]
570-
trans_dom_th['esnrlowwarning'] = self.vdm_dict['eSNR [dB]'][1][4]
571-
trans_dom_th['cfohighalarm'] = self.vdm_dict['CFO [MHz]'][1][1]
572-
trans_dom_th['cfolowalarm'] = self.vdm_dict['CFO [MHz]'][1][2]
573-
trans_dom_th['cfohighwarning'] = self.vdm_dict['CFO [MHz]'][1][3]
574-
trans_dom_th['cfolowwarning'] = self.vdm_dict['CFO [MHz]'][1][4]
575-
trans_dom_th['txcurrpowerhighalarm'] = self.vdm_dict['Tx Power [dBm]'][1][1]
576-
trans_dom_th['txcurrpowerlowalarm'] = self.vdm_dict['Tx Power [dBm]'][1][2]
577-
trans_dom_th['txcurrpowerhighwarning'] = self.vdm_dict['Tx Power [dBm]'][1][3]
578-
trans_dom_th['txcurrpowerlowwarning'] = self.vdm_dict['Tx Power [dBm]'][1][4]
579-
trans_dom_th['rxtotpowerhighalarm'] = self.vdm_dict['Rx Total Power [dBm]'][1][1]
580-
trans_dom_th['rxtotpowerlowalarm'] = self.vdm_dict['Rx Total Power [dBm]'][1][2]
581-
trans_dom_th['rxtotpowerhighwarning'] = self.vdm_dict['Rx Total Power [dBm]'][1][3]
582-
trans_dom_th['rxtotpowerlowwarning'] = self.vdm_dict['Rx Total Power [dBm]'][1][4]
583-
trans_dom_th['rxsigpowerhighalarm'] = self.vdm_dict['Rx Signal Power [dBm]'][1][1]
584-
trans_dom_th['rxsigpowerlowalarm'] = self.vdm_dict['Rx Signal Power [dBm]'][1][2]
585-
trans_dom_th['rxsigpowerhighwarning'] = self.vdm_dict['Rx Signal Power [dBm]'][1][3]
586-
trans_dom_th['rxsigpowerlowwarning'] = self.vdm_dict['Rx Signal Power [dBm]'][1][4]
587-
except KeyError:
588-
pass
563+
564+
for vdm_key, trans_dom_th_key_prefix in VDM_KEY_TO_DB_KEY_PREFIX_MAP.items():
565+
for i in range(1, 5):
566+
trans_dom_th_key = trans_dom_th_key_prefix + VDM_SUBTYPE_IDX_MAP[i]
567+
self._update_dict_if_vdm_key_exists(trans_dom_th, trans_dom_th_key, vdm_key, i)
568+
589569
return trans_dom_th
590570

591571
def get_transceiver_status(self):
@@ -772,77 +752,12 @@ def get_transceiver_status(self):
772752
trans_status['tuning_not_accepted'] = 'TuningNotAccepted' in laser_tuning_summary
773753
trans_status['invalid_channel_num'] = 'InvalidChannel' in laser_tuning_summary
774754
trans_status['tuning_complete'] = 'TuningComplete' in laser_tuning_summary
775-
try:
776-
trans_status['biasxihighalarm_flag'] = self.vdm_dict['Modulator Bias X/I [%]'][1][5]
777-
trans_status['biasxilowalarm_flag'] = self.vdm_dict['Modulator Bias X/I [%]'][1][6]
778-
trans_status['biasxihighwarning_flag'] = self.vdm_dict['Modulator Bias X/I [%]'][1][7]
779-
trans_status['biasxilowwarning_flag'] = self.vdm_dict['Modulator Bias X/I [%]'][1][8]
780-
trans_status['biasxqhighalarm_flag'] = self.vdm_dict['Modulator Bias X/Q [%]'][1][5]
781-
trans_status['biasxqlowalarm_flag'] = self.vdm_dict['Modulator Bias X/Q [%]'][1][6]
782-
trans_status['biasxqhighwarning_flag'] = self.vdm_dict['Modulator Bias X/Q [%]'][1][7]
783-
trans_status['biasxqlowwarning_flag'] = self.vdm_dict['Modulator Bias X/Q [%]'][1][8]
784-
trans_status['biasxphighalarm_flag'] = self.vdm_dict['Modulator Bias X_Phase [%]'][1][5]
785-
trans_status['biasxplowalarm_flag'] = self.vdm_dict['Modulator Bias X_Phase [%]'][1][6]
786-
trans_status['biasxphighwarning_flag'] = self.vdm_dict['Modulator Bias X_Phase [%]'][1][7]
787-
trans_status['biasxplowwarning_flag'] = self.vdm_dict['Modulator Bias X_Phase [%]'][1][8]
788-
trans_status['biasyihighalarm_flag'] = self.vdm_dict['Modulator Bias Y/I [%]'][1][5]
789-
trans_status['biasyilowalarm_flag'] = self.vdm_dict['Modulator Bias Y/I [%]'][1][6]
790-
trans_status['biasyihighwarning_flag'] = self.vdm_dict['Modulator Bias Y/I [%]'][1][7]
791-
trans_status['biasyilowwarning_flag'] = self.vdm_dict['Modulator Bias Y/I [%]'][1][8]
792-
trans_status['biasyqhighalarm_flag'] = self.vdm_dict['Modulator Bias Y/Q [%]'][1][5]
793-
trans_status['biasyqlowalarm_flag'] = self.vdm_dict['Modulator Bias Y/Q [%]'][1][6]
794-
trans_status['biasyqhighwarning_flag'] = self.vdm_dict['Modulator Bias Y/Q [%]'][1][7]
795-
trans_status['biasyqlowwarning_flag'] = self.vdm_dict['Modulator Bias Y/Q [%]'][1][8]
796-
trans_status['biasyphighalarm_flag'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][5]
797-
trans_status['biasyplowalarm_flag'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][6]
798-
trans_status['biasyphighwarning_flag'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][7]
799-
trans_status['biasyplowwarning_flag'] = self.vdm_dict['Modulator Bias Y_Phase [%]'][1][8]
800-
trans_status['cdshorthighalarm_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][5]
801-
trans_status['cdshortlowalarm_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][6]
802-
trans_status['cdshorthighwarning_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][7]
803-
trans_status['cdshortlowwarning_flag'] = self.vdm_dict['CD high granularity, short link [ps/nm]'][1][8]
804-
trans_status['cdlonghighalarm_flag'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][5]
805-
trans_status['cdlonglowalarm_flag'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][6]
806-
trans_status['cdlonghighwarning_flag'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][7]
807-
trans_status['cdlonglowwarning_flag'] = self.vdm_dict['CD low granularity, long link [ps/nm]'][1][8]
808-
trans_status['dgdhighalarm_flag'] = self.vdm_dict['DGD [ps]'][1][5]
809-
trans_status['dgdlowalarm_flag'] = self.vdm_dict['DGD [ps]'][1][6]
810-
trans_status['dgdhighwarning_flag'] = self.vdm_dict['DGD [ps]'][1][7]
811-
trans_status['dgdlowwarning_flag'] = self.vdm_dict['DGD [ps]'][1][8]
812-
trans_status['sopmdhighalarm_flag'] = self.vdm_dict['SOPMD [ps^2]'][1][5]
813-
trans_status['sopmdlowalarm_flag'] = self.vdm_dict['SOPMD [ps^2]'][1][6]
814-
trans_status['sopmdhighwarning_flag'] = self.vdm_dict['SOPMD [ps^2]'][1][7]
815-
trans_status['sopmdlowwarning_flag'] = self.vdm_dict['SOPMD [ps^2]'][1][8]
816-
trans_status['pdlhighalarm_flag'] = self.vdm_dict['PDL [dB]'][1][5]
817-
trans_status['pdllowalarm_flag'] = self.vdm_dict['PDL [dB]'][1][6]
818-
trans_status['pdlhighwarning_flag'] = self.vdm_dict['PDL [dB]'][1][7]
819-
trans_status['pdllowwarning_flag'] = self.vdm_dict['PDL [dB]'][1][8]
820-
trans_status['osnrhighalarm_flag'] = self.vdm_dict['OSNR [dB]'][1][5]
821-
trans_status['osnrlowalarm_flag'] = self.vdm_dict['OSNR [dB]'][1][6]
822-
trans_status['osnrhighwarning_flag'] = self.vdm_dict['OSNR [dB]'][1][7]
823-
trans_status['osnrlowwarning_flag'] = self.vdm_dict['OSNR [dB]'][1][8]
824-
trans_status['esnrhighalarm_flag'] = self.vdm_dict['eSNR [dB]'][1][5]
825-
trans_status['esnrlowalarm_flag'] = self.vdm_dict['eSNR [dB]'][1][6]
826-
trans_status['esnrhighwarning_flag'] = self.vdm_dict['eSNR [dB]'][1][7]
827-
trans_status['esnrlowwarning_flag'] = self.vdm_dict['eSNR [dB]'][1][8]
828-
trans_status['cfohighalarm_flag'] = self.vdm_dict['CFO [MHz]'][1][5]
829-
trans_status['cfolowalarm_flag'] = self.vdm_dict['CFO [MHz]'][1][6]
830-
trans_status['cfohighwarning_flag'] = self.vdm_dict['CFO [MHz]'][1][7]
831-
trans_status['cfolowwarning_flag'] = self.vdm_dict['CFO [MHz]'][1][8]
832-
trans_status['txcurrpowerhighalarm_flag'] = self.vdm_dict['Tx Power [dBm]'][1][5]
833-
trans_status['txcurrpowerlowalarm_flag'] = self.vdm_dict['Tx Power [dBm]'][1][6]
834-
trans_status['txcurrpowerhighwarning_flag'] = self.vdm_dict['Tx Power [dBm]'][1][7]
835-
trans_status['txcurrpowerlowwarning_flag'] = self.vdm_dict['Tx Power [dBm]'][1][8]
836-
trans_status['rxtotpowerhighalarm_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][5]
837-
trans_status['rxtotpowerlowalarm_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][6]
838-
trans_status['rxtotpowerhighwarning_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][7]
839-
trans_status['rxtotpowerlowwarning_flag'] = self.vdm_dict['Rx Total Power [dBm]'][1][8]
840-
trans_status['rxsigpowerhighalarm_flag'] = self.vdm_dict['Rx Signal Power [dBm]'][1][5]
841-
trans_status['rxsigpowerlowalarm_flag'] = self.vdm_dict['Rx Signal Power [dBm]'][1][6]
842-
trans_status['rxsigpowerhighwarning_flag'] = self.vdm_dict['Rx Signal Power [dBm]'][1][7]
843-
trans_status['rxsigpowerlowwarning_flag'] = self.vdm_dict['Rx Signal Power [dBm]'][1][8]
844-
except KeyError:
845-
helper_logger.log_debug('fields not present in VDM')
755+
756+
for vdm_key, trans_status_key_prefix in VDM_KEY_TO_DB_KEY_PREFIX_MAP.items():
757+
for i in range(5, 9):
758+
trans_status_key = trans_status_key_prefix + VDM_SUBTYPE_IDX_MAP[i]
759+
self._update_dict_if_vdm_key_exists(trans_status, trans_status_key, vdm_key, i)
760+
846761
return trans_status
847762

848763
def get_transceiver_pm(self):

0 commit comments

Comments
 (0)