libec/libec.c
changeset 59 c8bd4fe3b38c
parent 58 21b7342e2a90
child 60 2d2b120ba734
equal deleted inserted replaced
58:21b7342e2a90 59:c8bd4fe3b38c
     1 /******************************************************************************
       
     2  *
       
     3  *  l i b e c . c
       
     4  *
       
     5  *  EtherCAT-Library fuer Echtzeitmodule
       
     6  *
       
     7  *  $Id$
       
     8  *
       
     9  *****************************************************************************/
       
    10 
       
    11 #include "libec.h"
       
    12 
       
    13 /*****************************************************************************/
       
    14 
       
    15 int LEC_read_EL10XX(ec_slave_t *slave, unsigned int channel)
       
    16 {
       
    17     unsigned char *data = slave->process_data;
       
    18 
       
    19     return (data[0] >> channel) & 0x01;
       
    20 }
       
    21 
       
    22 /*****************************************************************************/
       
    23 
       
    24 int LEC_read_EL31XX(ec_slave_t *slave, unsigned int channel)
       
    25 {
       
    26     unsigned char *data = slave->process_data;
       
    27 
       
    28     return (short int) ((data[channel * 3 + 2] << 8) | data[channel * 3 + 1]);
       
    29 }
       
    30 
       
    31 /*****************************************************************************/
       
    32 
       
    33 void LEC_write_EL20XX(ec_slave_t *slave, unsigned int channel, int value)
       
    34 {
       
    35     unsigned char *data = slave->process_data;
       
    36 
       
    37     if (value) data[0] |= (1 << channel);
       
    38     else data[0] &= ~(1 << channel);
       
    39 }
       
    40 
       
    41 /*****************************************************************************/
       
    42 
       
    43 void LEC_write_EL41XX(ec_slave_t *slave, unsigned int channel, int value)
       
    44 {
       
    45     unsigned char *data = slave->process_data;
       
    46 
       
    47     data[channel * 3 + 1] = (value & 0xFF00) >> 8;
       
    48     data[channel * 3 + 2] = value & 0xFF;
       
    49 }
       
    50 
       
    51 /*****************************************************************************/
       
    52 
       
    53 /* Emacs-Konfiguration
       
    54 ;;; Local Variables: ***
       
    55 ;;; c-basic-offset:4 ***
       
    56 ;;; End: ***
       
    57 */