#--
#******************************************************************************
#* Copyright 1990-2007 MBARI
#* MBARI Proprietary Information. All rights reserved.
#******************************************************************************
#* Summary  : Contain the rover software component objects
#* Filename : measure.rb
#* Author   : Henthorn
#* Project  : Benthic Rover
#* Version  : 
#* Created  : May-06   Initial functionality
#* Modified : 2007     Gradual polishing (2 rack assemblies, improved operation)
#******************************************************************************
#++

require "rover"
require "rover_thread"

# Class Measure attempts to encapsulate the data and operations needed to
# operate the Rover during the measurement phases. Measure runs in its own
# thread.
#
class TestRacks
  include LogHelper

  def run 
    relay = Rover.instance.relay
      
    while (true)
      relay.camerasOn
      relay.videoOn
      syslog("_Inserting chambers") 
      insert_chambers()

      relay.camerasOn
      relay.videoOn
      syslog("_Homing chambers") 
      home_chambers()
    end
    
    relay.camerasOff
    relay.videoOff
    
  end        # run


  #========================================================
  def insert_chambers()
    relay = Rover.instance.relay
    rack  = Rover.instance.rack

    # Lower the chamber
    #
    rack.reinit($STBD_RACK)
    result = rack.move_to_insert($STBD_RACK)
          
    unless (result)
      eventlog("! Unable to insert starboard chamber in sediment")
    end

    # Turn appliances off
    #
    relay.s_rackOff

    # Lower the chamber
    #
    rack.reinit($PORT_RACK)
    result = rack.move_to_insert($PORT_RACK)
          
    unless (result)
      eventlog("! Unable to insert port chamber in sediment")
    end

    # Turn appliances off
    #
    relay.p_rackOff

  end


  #========================================================
  # Move chambers back to home position
  def home_chambers()
    relay = Rover.instance.relay
    rack  = Rover.instance.rack

    rack.reinit($STBD_RACK)
    rack.move_home($STBD_RACK)
    relay.s_rackOff

    # Move port rack out of sediment
    #
    rack.reinit($PORT_RACK)
    rack.move_home($PORT_RACK)
    relay.p_rackOff
  end
end

tr = TestRacks.new
tr.run
