# HG changeset patch # User Mario de Sousa # Date 1591017897 -3600 # Node ID d6effe86bc2f5bbf1cfc0d440c04d4968802b9b2 # Parent f14859c2475195db10bd0dbd9baf0435192f5189 Undo changes inserted in previous commit (included 2 unrelated changes) diff -r f14859c24751 -r d6effe86bc2f mb_slave.c --- a/mb_slave.c Mon Jun 01 14:15:03 2020 +0100 +++ b/mb_slave.c Mon Jun 01 14:24:57 2020 +0100 @@ -107,34 +107,22 @@ } -/* Determine endianess of platform... */ - -/* WARNING: The following files are being included: - * --> --> - * - * endian.h defines the following constants as: - * #define __LITTLE_ENDIAN and LITTLE_ENDIAN as 1234 - * #define __BIG_ENDIAN and BIG_ENDIAN as 4321 - * #define __PDP_ENDIAN and PDP_ENDIAN as 3412 - * - * bits/endian.h defines the constant BYTE_ORDER as: - * #define __BYTE_ORDER as __LITTLE_ENDIAN - * - * endian.h then sets the following constants - * (if __USE_BSD is set, which seems to be true): - * # define LITTLE_ENDIAN __LITTLE_ENDIAN - * # define BIG_ENDIAN __BIG_ENDIAN - * # define PDP_ENDIAN __PDP_ENDIAN - * # define BYTE_ORDER __BYTE_ORDER - */ - -/* If we still don't know byte order, try to get it from */ -#ifndef __BYTE_ORDER -#include -#endif - - -/* If we still don't know byte order => if using gcc, use it to determine byte order... */ +/* + * Functions to convert u16 variables + * between network and host byte order + * + * NOTE: Modbus uses MSByte first, just like + * tcp/ip, so we could be tempted to use the htons() and + * ntohs() functions to guarantee code portability. + * + * However, on some embedded systems running Linux + * these functions only work if the 16 bit words are + * stored on even addresses. This is not always the + * case in our code, so we have to define our own + * conversion functions... + */ + +/* if using gcc, use it to determine byte order... */ #ifndef __BYTE_ORDER #if defined(__GNUC__) /* We have GCC, which should define __LITTLE_ENDIAN__ */ @@ -147,32 +135,26 @@ #endif /* __BYTE_ORDER */ +/* If we still don't know byte order, try to get it from */ #ifndef __BYTE_ORDER -# error "Unable to determine platform's byte order. Aborting compilation." -#elif __BYTE_ORDER == __BIG_ENDIAN -# warning "Compiling for BIG endian platform." -#elif __BYTE_ORDER == __LITTLE_ENDIAN -# warning "Compiling for LITTLE endian platform." -#else -# error "Aborting compilation due to unsuported byte order (neither BIG not LITTLE endian)." +#include #endif - -/* - * Functions to convert u16 variables - * between network and host byte order - * - * NOTE: Modbus uses MSByte first, just like - * tcp/ip, so we could be tempted to use the htons() and - * ntohs() functions to guarantee code portability. - * - * However, on some embedded systems running Linux - * these functions only work if the 16 bit words are - * stored on even addresses. This is not always the - * case in our code, so we have to define our own - * conversion functions... - */ +#ifndef __BYTE_ORDER +# ifdef BYTE_ORDER +# if BYTE_ORDER == LITTLE_ENDIAN +# define __BYTE_ORDER __LITTLE_ENDIAN +# else +# if BYTE_ORDER == BIG_ENDIAN +# define __BYTE_ORDER __BIG_ENDIAN +# endif +# endif +# endif /* BYTE_ORDER */ +#endif /* __BYTE_ORDER */ + + + #ifdef __BYTE_ORDER diff -r f14859c24751 -r d6effe86bc2f mb_tcp.c --- a/mb_tcp.c Mon Jun 01 14:15:03 2020 +0100 +++ b/mb_tcp.c Mon Jun 01 14:24:57 2020 +0100 @@ -1517,8 +1517,8 @@ /* Check the parameters we were passed... */ if(sin_initaddr(&tmp_addr, - node_addr.addr.tcp.host, 1, // 1 => allow host NULL, "" or "*" -> INADDR_ANY - node_addr.addr.tcp.service, 1, // 1 => allow serivce NULL or "" -> port = 0 + node_addr.addr.tcp.host, 0, + node_addr.addr.tcp.service, 0, DEF_PROTOCOL) < 0) { #ifdef ERRMSG