Ejemplo n.º 1
0
 private bool StateIsDifferent(irobottypes.ReturnSensors a, irobottypes.ReturnSensors b)
 {
     return((a.BumpsWheeldrops != b.BumpsWheeldrops) ||
            (a.CliffFrontLeft != b.CliffFrontLeft) ||
            (a.CliffFrontRight != b.CliffFrontRight) ||
            (a.CliffLeft != b.CliffLeft) ||
            (a.CliffRight != b.CliffRight) ||
            (a.DirtDetectorLeft != b.DirtDetectorLeft) ||
            (a.DirtDetectorRight != b.DirtDetectorRight) ||
            (a.MotorOvercurrents != b.MotorOvercurrents) ||
            (a.RoombaMode != b.RoombaMode) ||
            (a.VirtualWall != b.VirtualWall) ||
            (a.Wall != b.Wall));
 }
Ejemplo n.º 2
0
        private void ProcessSensors(roomba.ReturnSensors sensors)
        {
            foreach (bumper.ContactSensor bumper in _state.Sensors)
            {
                bool bump = false;
                // Find the Roomba sensor which corresponds to this bumper
                switch ((RoombaBumpers)bumper.HardwareIdentifier)
                {
                case RoombaBumpers.LeftBumper:
                    bump = ((sensors.BumpsWheeldrops & roomba.BumpsWheeldrops.BumpLeft) == roomba.BumpsWheeldrops.BumpLeft);
                    break;

                case RoombaBumpers.RightBumper:
                    bump = ((sensors.BumpsWheeldrops & roomba.BumpsWheeldrops.BumpRight) == roomba.BumpsWheeldrops.BumpRight);
                    break;

                case RoombaBumpers.Wall:
                    bump = sensors.Wall;
                    break;

                case RoombaBumpers.VirtualWall:
                    bump = sensors.VirtualWall;
                    break;

                case RoombaBumpers.CliffLeft:
                    bump = sensors.CliffLeft;
                    break;

                case RoombaBumpers.CliffFrontLeft:
                    bump = sensors.CliffFrontLeft;
                    break;

                case RoombaBumpers.CliffFrontRight:
                    bump = sensors.CliffFrontRight;
                    break;

                case RoombaBumpers.CliffRight:
                    bump = sensors.CliffRight;
                    break;

                case RoombaBumpers.WheelDropLeft:
                    bump = ((sensors.BumpsWheeldrops & roomba.BumpsWheeldrops.WheelDropLeft) == roomba.BumpsWheeldrops.WheelDropLeft);
                    break;

                case RoombaBumpers.WheelDropRight:
                    bump = ((sensors.BumpsWheeldrops & roomba.BumpsWheeldrops.WheelDropRight) == roomba.BumpsWheeldrops.WheelDropRight);
                    break;

                case RoombaBumpers.WheelDropRear:
                    bump = ((sensors.BumpsWheeldrops & roomba.BumpsWheeldrops.WheelDropCaster) == roomba.BumpsWheeldrops.WheelDropCaster);
                    break;

                case (RoombaBumpers)99:     // wheels stalled
                    bump = ((int)(sensors.MotorOvercurrents & (roomba.MotorOvercurrents.DriveLeft | roomba.MotorOvercurrents.DriveRight)) != 0);
                    break;
                }

                if (bumper.Pressed != bump)
                {
                    bumper.Pressed = bump;
                    this.SendNotification <bumper.Update>(_subMgrPort, new bumper.Update(bumper));
                }
            }
        }