44import  wpilib ._impl 
55import  wpilib ._impl .report_error 
66
7+ from  wpilib  import  DriverStation , DSControlWord 
8+ from  wpilib .shuffleboard  import  Shuffleboard 
9+ 
710
811from  enum  import  IntEnum 
912
@@ -20,15 +23,15 @@ class IterativeRobotPy(wpilib.RobotBase):
2023
2124    def  __init__ (self , period : float ):
2225        super ().__init__ ()
23-         self ._m_word  =  wpilib . DSControlWord ()
24-         self ._m_period  =  period 
25-         self ._m_watchdog  =  wpilib .Watchdog (self ._m_period , self .printLoopOverrunMessage )
26+         self ._word  =  DSControlWord ()
27+         self ._periodS  =  period 
28+         self ._watchdog  =  wpilib .Watchdog (self ._periodS , self .printLoopOverrunMessage )
2629        self ._mode : IterativeRobotMode  =  IterativeRobotMode .kNone 
27-         self ._m_lastMode : IterativeRobotMode  =  IterativeRobotMode .kNone 
28-         self ._m_ntFlushEnabled : bool  =  True 
29-         self ._m_lwEnabledInTest : bool  =  False 
30-         self ._m_calledDsConnected : bool  =  False 
31-         self ._m_reportedLw : bool  =  False 
30+         self ._lastMode : IterativeRobotMode  =  IterativeRobotMode .kNone 
31+         self ._ntFlushEnabled : bool  =  True 
32+         self ._lwEnabledInTest : bool  =  False 
33+         self ._calledDsConnected : bool  =  False 
34+         self ._reportedLw : bool  =  False 
3235        self ._robotPeriodicHasRun : bool  =  False 
3336        self ._simulationPeriodicHasRun : bool  =  False 
3437        self ._disabledPeriodicHasRun : bool  =  False 
@@ -104,121 +107,121 @@ def testExit(self):
104107
105108    # todo @Deprecated(forRemoval=true, since="2025") 
106109    def  setNetworkTablesFlushEnabled (self , enabled : bool ):
107-         self ._m_ntFlushEnabled  =  enabled 
110+         self ._ntFlushEnabled  =  enabled 
108111
109112    def  enableLiveWindowInTest (self , testLW : bool ):
110113        if  self .isTestEnabled ():
111114            pass 
112115            # todo throw 
113116            #     throw FRC_MakeError(err::IncompatibleMode, 
114117            #                         "Can't configure test mode while in test mode!") 
115-         if  not  self ._m_reportedLw  and  testLW :
118+         if  not  self ._reportedLw  and  testLW :
116119            hal .report (
117120                hal .tResourceType .kResourceType_SmartDashboard ,
118121                hal .tInstances .kSmartDashboard_LiveWindow ,
119122            )
120-             self ._m_reportedLw  =  True 
121-         self ._m_lwEnabledInTest  =  testLW 
123+             self ._reportedLw  =  True 
124+         self ._lwEnabledInTest  =  testLW 
122125
123126    def  isLiveWindowEnabledInTest (self ) ->  bool :
124-         return  self ._m_lwEnabledInTest 
127+         return  self ._lwEnabledInTest 
125128
126129    def  getPeriod (self ) ->  float :
127-         return  self ._m_period 
130+         return  self ._periodS 
128131
129132    def  loopFunc (self ):
130-         wpilib . DriverStation .refreshData ()
131-         self ._m_watchdog .reset ()
132- 
133-         self ._m_word . refresh ()   # todo from Java implementation  
134- 
135-         mode  =  IterativeRobotMode .kNone 
136-         if  self ._m_word . IsDisabled ():
137-             mode  =  IterativeRobotMode .kDisabled 
138-         elif  self ._m_word . IsAutonomous ():
139-             mode  =  IterativeRobotMode .kAutonomous 
140-         elif  self ._m_word . IsTeleop ():
141-             mode  =  IterativeRobotMode .kTeleop 
142-         elif  self ._m_word . IsTest ():
143-             mode  =  IterativeRobotMode .kTest 
144- 
145-         if  not  self ._m_calledDsConnected  and  self ._m_word . IsDSAttached ():
146-             self ._m_calledDsConnected  =  True 
133+         DriverStation .refreshData ()
134+         self ._watchdog .reset ()
135+ 
136+         self ._word   =   DSControlWord () # todo switch to a version that does refresh()  
137+ 
138+         self . _mode  =  IterativeRobotMode .kNone 
139+         if  self ._word . isDisabled ():
140+             self . _mode  =  IterativeRobotMode .kDisabled 
141+         elif  self ._word . isAutonomous ():
142+             self . _mode  =  IterativeRobotMode .kAutonomous 
143+         elif  self ._word . isTeleop ():
144+             self . _mode  =  IterativeRobotMode .kTeleop 
145+         elif  self ._word . isTest ():
146+             self . _mode  =  IterativeRobotMode .kTest 
147+ 
148+         if  not  self ._calledDsConnected  and  self ._word . isDSAttached ():
149+             self ._calledDsConnected  =  True 
147150            self .driverStationConnected ()
148151
149-         # If mode  changed, call mode  exit and entry functions 
150-         if  self ._m_lastMode  !=  mode :
151-             if  self ._m_lastMode  ==  IterativeRobotMode .kDisabled :
152+         # If self._mode  changed, call self._mode  exit and entry functions 
153+         if  self ._lastMode  !=  self . _mode :
154+             if  self ._lastMode  ==  IterativeRobotMode .kDisabled :
152155                self .disabledExit ()
153-             elif  self ._m_lastMode  ==  IterativeRobotMode .kAutonomous :
156+             elif  self ._lastMode  ==  IterativeRobotMode .kAutonomous :
154157                self .autonomousExit ()
155-             elif  self ._m_lastMode  ==  IterativeRobotMode .kTeleop :
158+             elif  self ._lastMode  ==  IterativeRobotMode .kTeleop :
156159                self .teleopExit ()
157-             elif  self ._m_lastMode  ==  IterativeRobotMode .kTest :
158-                 if  self ._m_lwEnabledInTest :
160+             elif  self ._lastMode  ==  IterativeRobotMode .kTest :
161+                 if  self ._lwEnabledInTest :
159162                    wpilib .LiveWindow .setEnabled (False )
160-                     # todo  Shuffleboard::DisableActuatorWidgets ()
163+                     Shuffleboard . disableActuatorWidgets ()
161164                self .testExit ()
162165
163-         if  mode  ==  IterativeRobotMode .kDisabled :
166+         if  self . _mode  ==  IterativeRobotMode .kDisabled :
164167            self .disabledInit ()
165-             self ._m_watchdog .addEpoch ("DisabledInit()" )
166-         elif  mode  ==  IterativeRobotMode .kAutonomous :
168+             self ._watchdog .addEpoch ("DisabledInit()" )
169+         elif  self . _mode  ==  IterativeRobotMode .kAutonomous :
167170            self .autonomousInit ()
168-             self ._m_watchdog .addEpoch ("AutonomousInit()" )
169-         elif  mode  ==  IterativeRobotMode .kTeleop :
171+             self ._watchdog .addEpoch ("AutonomousInit()" )
172+         elif  self . _mode  ==  IterativeRobotMode .kTeleop :
170173            self .teleopInit ()
171-             self ._m_watchdog .addEpoch ("TeleopInit()" )
172-         elif  mode  ==  IterativeRobotMode .kTest :
173-             if  self ._m_lwEnabledInTest :
174+             self ._watchdog .addEpoch ("TeleopInit()" )
175+         elif  self . _mode  ==  IterativeRobotMode .kTest :
176+             if  self ._lwEnabledInTest :
174177                wpilib .LiveWindow .setEnabled (True )
175-                 # todo  Shuffleboard::EnableActuatorWidgets ()
178+                 Shuffleboard . enableActuatorWidgets ()
176179            self .testInit ()
177-             self ._m_watchdog .addEpoch ("TestInit()" )
178-         self ._m_lastMode  =  mode 
180+             self ._watchdog .addEpoch ("TestInit()" )
181+         self ._lastMode  =  self . _mode 
179182
180183        # Call the appropriate function depending upon the current robot mode 
181-         if  mode  ==  IterativeRobotMode .kDisabled :
184+         if  self . _mode  ==  IterativeRobotMode .kDisabled :
182185            hal .observeUserProgramDisabled ()
183186            self .disabledPeriodic ()
184-             self ._m_watchdog .addEpoch ("DisabledPeriodic()" )
185-         elif  mode  ==  IterativeRobotMode .kAutonomous :
187+             self ._watchdog .addEpoch ("DisabledPeriodic()" )
188+         elif  self . _mode  ==  IterativeRobotMode .kAutonomous :
186189            hal .observeUserProgramAutonomous ()
187190            self .autonomousPeriodic ()
188-             self ._m_watchdog .addEpoch ("AutonomousPeriodic()" )
189-         elif  mode  ==  IterativeRobotMode .kTeleop :
191+             self ._watchdog .addEpoch ("AutonomousPeriodic()" )
192+         elif  self . _mode  ==  IterativeRobotMode .kTeleop :
190193            hal .observeUserProgramTeleop ()
191194            self .teleopPeriodic ()
192-             self ._m_watchdog .addEpoch ("TeleopPeriodic()" )
193-         elif  mode  ==  IterativeRobotMode .kTest :
195+             self ._watchdog .addEpoch ("TeleopPeriodic()" )
196+         elif  self . _mode  ==  IterativeRobotMode .kTest :
194197            hal .observeUserProgramTest ()
195198            self .testPeriodic ()
196-             self ._m_watchdog .addEpoch ("TestPeriodic()" )
199+             self ._watchdog .addEpoch ("TestPeriodic()" )
197200
198201        self .robotPeriodic ()
199-         self ._m_watchdog .addEpoch ("RobotPeriodic()" )
202+         self ._watchdog .addEpoch ("RobotPeriodic()" )
200203        # 
201204        wpilib .SmartDashboard .updateValues ()
202-         self ._m_watchdog .addEpoch ("SmartDashboard::UpdateValues()" )
205+         self ._watchdog .addEpoch ("SmartDashboard::UpdateValues()" )
203206        wpilib .LiveWindow .updateValues ()
204-         self ._m_watchdog .addEpoch ("LiveWindow::UpdateValues()" )
205-         # todo  Shuffleboard::Update ()
206-         self ._m_watchdog .addEpoch ("Shuffleboard::Update()" )
207+         self ._watchdog .addEpoch ("LiveWindow::UpdateValues()" )
208+         Shuffleboard . update ()
209+         self ._watchdog .addEpoch ("Shuffleboard::Update()" )
207210        if  self .isSimulation ():
208211            hal .simPeriodicBefore ()
209212            self .simulationPeriodic ()
210213            hal .simPeriodicAfter ()
211-             self ._m_watchdog .addEpoch ("SimulationPeriodic()" )
214+             self ._watchdog .addEpoch ("SimulationPeriodic()" )
212215
213-         self ._m_watchdog . Disable ()
216+         self ._watchdog . disable ()
214217
215218        # // Flush NetworkTables 
216-         if  self ._m_ntFlushEnabled :
219+         if  self ._ntFlushEnabled :
217220            ntcore .NetworkTableInstance .getDefault ().flushLocal ()
218221
219222        # Warn on loop time overruns 
220-         if  self ._m_watchdog . IsExpired ():
221-             self ._m_watchdog . PrintEpochs ()
223+         if  self ._watchdog . isExpired ():
224+             self ._watchdog . printEpochs ()
222225
223226    def  printLoopOverrunMessages (self ):
224227        # todo ask about this 
@@ -230,8 +233,8 @@ def printLoopOverrunMessages(self):
230233        #     DriverStation.reportWarning("Loop time of " + m_period + "s overrun\n", false); 
231234        # } 
232235        wpilib ._impl .report_error .reportWarning (
233-             f"Loop time of { self ._m_period }  s overrun\n " , False 
236+             f"Loop time of { self ._periodS }  s overrun\n " , False 
234237        )
235238
236239    def  printWatchdogEpochs (self ):
237-         self ._m_watchdog .printEpochs ()
240+         self ._watchdog .printEpochs ()
0 commit comments