{-# LANGUAGE RecordWildCards #-}

module System.Hardware.Acquisition.Adaptor.Identity
	( adaptor
	) where

import Prelude
import Data.Traversable
import Control.Monad.Error

import System.Hardware.Acquisition as Acquisition

{-|
	Passthrough adaptor. Start here if you intend to implement your own.
-}
adaptor :: Monad m => Adaptor m
adaptor c = do

	let getSample :: (Error e, MonadError e m, MonadIO m) => m Sample
	    getSample = Acquisition.getSample c

	let close :: MonadIO m => m ()
	    close = return ()

	return Channel {..}