From e53a73eebbecfe03a9020f49bab9a3fd3d995813 Mon Sep 17 00:00:00 2001
From: Florian Pose <fp@igh-essen.com>
Date: Wed, 16 Apr 2008 09:21:51 +0000
Subject: [PATCH] Improved EC_WRITE macros by replacing in-situ conversions
 (cpu_to_lexxs()) by by-value ones (cpu_to_lexx()).

---
 include/ecrt.h | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/include/ecrt.h b/include/ecrt.h
index d531d633..9d667452 100644
--- a/include/ecrt.h
+++ b/include/ecrt.h
@@ -792,12 +792,14 @@ void ecrt_sdo_request_read(
  *****************************************************************************/
 
 /** Read a certain bit of an EtherCAT data byte.
+ *
  * \param DATA EtherCAT data pointer
  * \param POS bit position
  */
 #define EC_READ_BIT(DATA, POS) ((*((uint8_t *) (DATA)) >> (POS)) & 0x01)
 
 /** Write a certain bit of an EtherCAT data byte.
+ *
  * \param DATA EtherCAT data pointer
  * \param POS bit position
  * \param VAL new bit value
@@ -813,12 +815,14 @@ void ecrt_sdo_request_read(
  *****************************************************************************/
 
 /** Read an 8-bit unsigned value from EtherCAT data.
+ *
  * \return EtherCAT data value
  */
 #define EC_READ_U8(DATA) \
     ((uint8_t) *((uint8_t *) (DATA)))
 
 /** Read an 8-bit signed value from EtherCAT data.
+ *
  * \param DATA EtherCAT data pointer
  * \return EtherCAT data value
  */
@@ -826,6 +830,7 @@ void ecrt_sdo_request_read(
      ((int8_t) *((uint8_t *) (DATA)))
 
 /** Read a 16-bit unsigned value from EtherCAT data.
+ *
  * \param DATA EtherCAT data pointer
  * \return EtherCAT data value
  */
@@ -833,6 +838,7 @@ void ecrt_sdo_request_read(
      ((uint16_t) le16_to_cpup((void *) (DATA)))
 
 /** Read a 16-bit signed value from EtherCAT data.
+ *
  * \param DATA EtherCAT data pointer
  * \return EtherCAT data value
  */
@@ -840,6 +846,7 @@ void ecrt_sdo_request_read(
      ((int16_t) le16_to_cpup((void *) (DATA)))
 
 /** Read a 32-bit unsigned value from EtherCAT data.
+ *
  * \param DATA EtherCAT data pointer
  * \return EtherCAT data value
  */
@@ -847,6 +854,7 @@ void ecrt_sdo_request_read(
      ((uint32_t) le32_to_cpup((void *) (DATA)))
 
 /** Read a 32-bit signed value from EtherCAT data.
+ *
  * \param DATA EtherCAT data pointer
  * \return EtherCAT data value
  */
@@ -858,6 +866,7 @@ void ecrt_sdo_request_read(
  *****************************************************************************/
 
 /** Write an 8-bit unsigned value to EtherCAT data.
+ *
  * \param DATA EtherCAT data pointer
  * \param VAL new value
  */
@@ -867,38 +876,41 @@ void ecrt_sdo_request_read(
     } while (0)
 
 /** Write an 8-bit signed value to EtherCAT data.
+ *
  * \param DATA EtherCAT data pointer
  * \param VAL new value
  */
 #define EC_WRITE_S8(DATA, VAL) EC_WRITE_U8(DATA, VAL)
 
 /** Write a 16-bit unsigned value to EtherCAT data.
+ *
  * \param DATA EtherCAT data pointer
  * \param VAL new value
  */
 #define EC_WRITE_U16(DATA, VAL) \
     do { \
-        *((uint16_t *) (DATA)) = (uint16_t) (VAL); \
-        cpu_to_le16s((uint16_t *) (DATA)); \
+        *((uint16_t *) (DATA)) = cpu_to_le16((uint16_t) (VAL)); \
     } while (0)
 
 /** Write a 16-bit signed value to EtherCAT data.
+ *
  * \param DATA EtherCAT data pointer
  * \param VAL new value
  */
 #define EC_WRITE_S16(DATA, VAL) EC_WRITE_U16(DATA, VAL)
 
 /** Write a 32-bit unsigned value to EtherCAT data.
+ *
  * \param DATA EtherCAT data pointer
  * \param VAL new value
  */
 #define EC_WRITE_U32(DATA, VAL) \
     do { \
-        *((uint32_t *) (DATA)) = (uint32_t) (VAL); \
-        cpu_to_le32s((uint32_t *) (DATA)); \
+        *((uint32_t *) (DATA)) = cpu_to_le32((uint32_t) (VAL)); \
     } while (0)
 
 /** Write a 32-bit signed value to EtherCAT data.
+ *
  * \param DATA EtherCAT data pointer
  * \param VAL new value
  */
-- 
GitLab