Ejemplo n.º 1
0
    def set_mode(self, mode):

        if mode not in [
                SimManager.MODE_DISABLED, SimManager.MODE_AUTONOMOUS,
                SimManager.MODE_OPERATOR_CONTROL, SimManager.MODE_TEST
        ]:
            raise ValueError("Invalid value for mode: %s" % mode)

        with self._lock:

            # TODO: need a way to notify the caller that the set failed. Perhaps an exception?
            if not self.is_alive():
                return

            old_mode = self.mode
            self.mode = mode
            callback = self.mode_callback

        # don't call from inside the lock
        if old_mode != mode:

            if mode == SimManager.MODE_DISABLED:
                mode_helpers.set_disabled()
            elif mode == SimManager.MODE_AUTONOMOUS:
                mode_helpers.set_autonomous(True)
            elif mode == SimManager.MODE_OPERATOR_CONTROL:
                mode_helpers.set_teleop_mode(True)
            elif mode == SimManager.MODE_TEST:
                mode_helpers.set_test_mode(True)

            self.physics_controller._set_robot_enabled(
                mode != SimManager.MODE_DISABLED)

            if callback is not None:
                callback(mode)
Ejemplo n.º 2
0
 def set_mode(self, mode):
     
     if mode not in [SimManager.MODE_DISABLED, 
                     SimManager.MODE_AUTONOMOUS, 
                     SimManager.MODE_OPERATOR_CONTROL,
                     SimManager.MODE_TEST]:
         raise ValueError("Invalid value for mode: %s" % mode)
     
     with self._lock:
         
         # TODO: need a way to notify the caller that the set failed. Perhaps an exception?
         if not self.is_alive():
             return
         
         old_mode = self.mode
         self.mode = mode
         callback = self.mode_callback
         
     # don't call from inside the lock
     if old_mode != mode:
         
         if mode == SimManager.MODE_DISABLED:
             mode_helpers.set_disabled()
         elif mode == SimManager.MODE_AUTONOMOUS:
             mode_helpers.set_autonomous(True)
         elif mode == SimManager.MODE_OPERATOR_CONTROL:
             mode_helpers.set_teleop_mode(True)
         elif mode == SimManager.MODE_TEST:
             mode_helpers.set_test_mode(True)
         
         self.physics_controller._set_robot_enabled(mode != SimManager.MODE_DISABLED)
         
         if callback is not None:
             callback(mode)