/** @file dig_io-kapi.c
 
   Contains digital input functions.
 
   @par CREATION  
   @author Krauth Julien
   @date   09.10.2006
   
   @par VERSION
   @verbatim
   $LastChangedRevision:$
   $LastChangedDate:$
   @endverbatim   
   
   @par LICENCE
   @verbatim
   Copyright (C) 2004,2005  ADDI-DATA GmbH for the source code of this module.
        
        ADDI-DATA GmbH 
        Dieselstrasse 3 
        D-77833 Ottersweier 
        Tel: +19(0)7223/9493-0 
        Fax: +49(0)7223/9493-92 
        http://www.addi-data-com 
        info@addi-data.com 
        
   This program is free software; you can redistribute it and/or modify it under 
   the terms of the GNU General Public License as published by the Free Software 
   Foundation; either version 2 of the License, or (at your option) any later version.

   This program is distributed in the hope that it will be useful, 
   but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
   or FITNESS FOR A PARTICULAR PURPOSE. 
   See the GNU General Public License for more details.

   You should have received a copy of the GNU General Public License along with 
   this program; if not, write to the Free Software Foundation, 
   Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

   You shoud also find the complete GPL in the COPYING file 
   accompanying this source code.
   @endverbatim   
 */ 

#include "apci3701-private.h"

EXPORT_SYMBOL(i_APCI3701_Read8DigitalInput);
EXPORT_SYMBOL(i_APCI3701_Write8DigitalOutput);

//----------------------------------------------------------------------------

/** Read 8 digital input.                                                 
 * 
 * @param [in] pdev                 : The device to initialize.
 * @param [out] b_DigitalInputValue : Digital input value.
 *
 * @retval 0: No error.
 * @retval 1: The handle parameter of the board is wrong.
 */
int   i_APCI3701_Read8DigitalInput (struct pci_dev *pdev, uint8_t *b_DigitalInputValue)
{

    if (!pdev) return 1;
    
    *b_DigitalInputValue = (unsigned char) (inw((GET_BAR2(pdev) + APCI3701_REG_DIGITAL_INPUT)) & 0xFF);

	return 0;
}    

//----------------------------------------------------------------------------

/** Write 8 digital output.                                                 
 * 
 * @param [in] pdev                 : The device to initialize.
 * @param [in] b_DigitalOutputValue : Digital output value.
 *
 * @retval 0: No error.
 * @retval 1: The handle parameter of the board is wrong.
 */
int   i_APCI3701_Write8DigitalOutput (struct pci_dev *pdev, uint8_t b_DigitalOutputValue)
{

    if (!pdev) return 1;
      
    outw((b_DigitalOutputValue & 0xFF) , (GET_BAR2(pdev) + APCI3701_REG_DIGITAL_OUTPUT));

	return 0;
}    

//----------------------------------------------------------------------------

