Improved EC_WRITE macros by replacing in-situ conversions

(cpu_to_lexxs()) by by-value ones (cpu_to_lexx()).
This commit is contained in:
Florian Pose 2008-04-16 09:21:51 +00:00
parent e9ff403255
commit ec73b9cce0
1 changed files with 16 additions and 4 deletions

View File

@ -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
*/