class MockEzservo

  attr_accessor :active_motor_num, :log_moves, :stop_wait, :velocity
  
  def initialize(config, portname='/dev/ezservo') 
    syslog("_ initializer called with portname = #{portname}")
    @encoderPos = [0, 0]  
  end  

  def encoder_position
    if(self.active_motor_num == "A")
      return @encoderPos
    elsif(self.active_motor_num == "1")
      return @encoderPos[0]
    elsif(self.active_motor_num == "2")
      return @encoderPos[1]
    else
      raise "Unknown active motor number"
    end
  end
  
  def encoder_position= new_position
    if(self.active_motor_num == "A")
      unless(new_position.is_a?(Array))
        raise("encoder position should be an array!")
      end
      @encoderPos = new_position
    elsif(self.active_motor_num == "1")
      @encoderPos[0] = new_position
    elsif(self.active_motor_num == "2")
      @encoderPos[1] = new_position
    else
      raise "Unknown active motor number"
    end
  end

  def forward(encoderCounts)
    puts("Mock Ezservo sleeping 5 seconds to simulate forward move")
    sleep(5)
    if(self.active_motor_num == "A")
      self.encoder_position = [encoderCounts, encoderCounts]
    else
      self.encoder_position = encoderCounts
    end
  end

  def turn(starboard_dir, starboard_dist, port_dir, port_dist)
    if(starboard_dir != :forward && starboard_dir != :backward)
      raise("unknown turn direction for starboard_dir")
    end
    if(port_dir != :forward && port_dir != :backward)
      raise("unknown turn direction for port_dir")
    end
    if(starboard_dir == :backward || port_dir == :backward)
      raise("backward directions are currently buggy, not supported in this mock object")
    end
    puts("Mock ezservo told to turn port #{port_dir} #{port_dist} and " <<
         "starboard #{starboard_dir} #{starboard_dist}")
    puts("Mock ezservo sleeping 5 seconds to simulate turn")
    sleep(5)
    @encoderPos[0] += starboard_dist
    @encoderPos[1] += port_dist
  end

  def stop_command
    puts("MockEzservo received stop command.")  
  end
  
end 