@@ -871,15 +871,41 @@ def reset_module(self, reset = False):
871
871
else :
872
872
return True
873
873
874
- def set_low_power (self , AssertLowPower ):
874
+ def get_lpmode (self ):
875
+ '''
876
+ Retrieves Low power module status
877
+ Returns True if module in low power else returns False.
878
+ '''
879
+ if self .is_flat_memory () or not self .get_lpmode_support ():
880
+ return False
881
+
882
+ lpmode = self .xcvr_eeprom .read (consts .TRANS_MODULE_STATUS_FIELD )
883
+ if lpmode is not None :
884
+ if lpmode .get ('ModuleState' ) == 'ModuleLowPwr' :
885
+ return True
886
+ return False
887
+
888
+ def set_lpmode (self , lpmode ):
875
889
'''
876
890
This function sets the module to low power state.
877
- AssertLowPower being 0 means "set to high power"
878
- AssertLowPower being 1 means "set to low power"
891
+ lpmode being False means "set to high power"
892
+ lpmode being True means "set to low power"
879
893
Return True if the provision succeeds, False if it fails
880
894
'''
881
- low_power_control = AssertLowPower << 6
882
- return self .xcvr_eeprom .write (consts .MODULE_LEVEL_CONTROL , low_power_control )
895
+
896
+ if self .is_flat_memory () or not self .get_lpmode_support ():
897
+ return False
898
+
899
+ lpmode_val = self .xcvr_eeprom .read (consts .MODULE_LEVEL_CONTROL )
900
+ if lpmode_val is not None :
901
+ if lpmode is True :
902
+ lpmode_val = lpmode_val | (1 << 4 )
903
+ else :
904
+ lpmode_val = lpmode_val & ~ (1 << 4 )
905
+ self .xcvr_eeprom .write (consts .MODULE_LEVEL_CONTROL , lpmode_val )
906
+ time .sleep (0.1 )
907
+ return self .get_lpmode ()
908
+ return False
883
909
884
910
def get_loopback_capability (self ):
885
911
'''
0 commit comments