fp@59: /****************************************************************************** fp@59: * fp@59: * E t h e r C A T _ s i . h fp@59: * fp@59: * EtherCAT Slave-Interface. fp@59: * fp@59: * $Id$ fp@59: * fp@59: *****************************************************************************/ fp@59: fp@77: #include fp@77: fp@59: /*****************************************************************************/ fp@59: fp@74: // Bitwise read/write macros fp@59: fp@74: #define EC_READ_BIT(PD, CH) (*((uint8_t *) (PD)) >> (CH)) & 0x01) fp@59: fp@74: #define EC_WRITE_BIT(PD, CH, VAL) \ fp@59: do { \ fp@74: if (VAL) *((uint8_t *) (PD)) |= (1 << (CH)); \ fp@74: else *((uint8_t *) (PD)) &= ~(1 << (CH)); \ fp@59: } while (0) fp@59: fp@59: /*****************************************************************************/ fp@59: fp@74: // Read macros fp@71: fp@77: #define EC_READ_U8(PD) ((uint8_t) *((uint8_t *) (PD))) fp@77: #define EC_READ_S8(PD) ((int8_t) *((uint8_t *) (PD))) fp@74: fp@77: #define EC_READ_U16(PD) ((uint16_t) le16_to_cpup((void *) (PD))) fp@77: #define EC_READ_S16(PD) ((int16_t) le16_to_cpup((void *) (PD))) fp@74: fp@77: #define EC_READ_U32(PD) ((uint32_t) le32_to_cpup((void *) (PD))) fp@77: #define EC_READ_S32(PD) ((int32_t) le32_to_cpup((void *) (PD))) fp@67: fp@67: /*****************************************************************************/ fp@67: fp@74: // Write macros fp@74: fp@74: #define EC_WRITE_U8(PD, VAL) \ fp@59: do { \ fp@74: *((uint8_t *)(PD)) = ((uint8_t) (VAL)); \ fp@59: } while (0) fp@59: fp@74: #define EC_WRITE_S8(PD, VAL) EC_WRITE_U8(PD, VAL) fp@59: fp@74: #define EC_WRITE_U16(PD, VAL) \ fp@74: do { \ fp@77: *((uint16_t *) (PD)) = (uint16_t) (VAL); \ fp@77: cpu_to_le16s(PD); \ fp@74: } while (0) fp@67: fp@74: #define EC_WRITE_S16(PD, VAL) EC_WRITE_U16(PD, VAL) fp@67: fp@74: #define EC_WRITE_U32(PD, VAL) \ fp@74: do { \ fp@77: *((uint32_t *) (PD)) = (uint32_t) (VAL); \ fp@77: cpu_to_le16s(PD); \ fp@74: } while (0) fp@66: fp@74: #define EC_WRITE_S32(PD, VAL) EC_WRITE_U32(PD, VAL) fp@67: fp@66: /*****************************************************************************/ fp@66: fp@59: /* Emacs-Konfiguration fp@59: ;;; Local Variables: *** fp@59: ;;; c-basic-offset:4 *** fp@59: ;;; End: *** fp@59: */