#####################  real.rb -- brent@mbari.org  #####################
# $Source: /home/cvs/ESP/gen2/software/esp/mode/real.rb,v $
#    Copyright (C) 2004 MBARI
#    MBARI Proprietary Information. All rights reserved.
# $Id: real.rb,v 1.39 2005/11/01 07:56:26 brent Exp $
#
#  Outer shell script for RealTime scripts operating on real hardware
#
########################################################################

require 'log'
logFile = open ESP.logFn, "a"
logger = Log::ExceptionsAndComments.new logFile  #ExceptionsAndComments

begin
  require 'i2c/sleepy'

  (sch = Schedule::RealTime.new Time.now, logger).
     thread.name=(ESP::Mode.to_s+"Scheduler").intern

  #Set retries to 0 for engineering tests
  #Gateway is the RS-232<->I2C gateway to all external I2C network nodes
  gateway = I2C::Sleepy.new(:Dwarf, 
              I2C::DwarfParser,  I2C::DwarfNet, :address=>0x10,
              :portPath=>"/dev/I2Cgate", :CRCACK=>:bit, :retries=>3)
  begin    
    :Sleepy.denotes (I2C::Dwarf.default = gateway)
    gateway.start
    gateway.configure
    I2C.buildControllers I2C::DwarfAdr.keys
    ESP.shell(:ESPmain) do
      logger.record "Initialized "+gateway.signon
      gateway.queryCan
      gateway.canPollPeriod=60
      gateway.power :raw, :on
    end
  ensure
    gateway.terminate
  end
rescue Exception => err
  logger.recordException err
ensure
  logger.terminate
end
