-------------------------------------------------------------------------------
-- |
-- Module      :  System.Hardware.Arduino
-- Copyright   :  (c) Levent Erkok
-- License     :  BSD3
-- Maintainer  :  erkokl@gmail.com
-- Stability   :  experimental
--
-- hArduino allows Haskell programs to control Arduino boards (<http://www.arduino.cc>)
-- and peripherals, using the Firmata protocol (<http://firmata.org>).
--
-- For details, see: <http://leventerkok.github.com/hArduino>.
-------------------------------------------------------------------------------
module System.Hardware.Arduino (
  -- * Running the controller
  withArduino, Arduino
  -- * Programming the Arduino
  -- ** Pins
  , analog, digital, pin, Pin, PinMode(..), setPinMode
  -- ** Analog input/output (PWM)
  , analogRead, analogWrite
  -- ** Digital I/O
  , digitalWrite, digitalRead
  -- ** Programming with triggers
  , waitFor, waitAny, waitAnyHigh, waitAnyLow
  -- ** Receiving and sending pulses
  , pulse, pulseIn_hostTiming, pulseOut_hostTiming
  -- * Misc utilities
  , setAnalogSamplingInterval, pullUpResistor, delay, time, timeOut
  , queryFirmware
 )
 where

import System.Hardware.Arduino.Data
import System.Hardware.Arduino.Comm
import System.Hardware.Arduino.Firmata