0010-libmodbus-from-GfA-repo.patch 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. diff --git a/package/libmodbus/001-GfA-echo-rtu.patch b/package/libmodbus/001-GfA-echo-rtu.patch
  2. deleted file mode 100644
  3. index 386172f..0000000
  4. --- a/package/libmodbus/001-GfA-echo-rtu.patch
  5. +++ /dev/null
  6. @@ -1,105 +0,0 @@
  7. -diff -Naur a/src/modbus-rtu.c b/src/modbus-rtu.c
  8. ---- a/src/modbus-rtu.c 2017-10-11 23:07:11.623017506 +0200
  9. -+++ b/src/modbus-rtu.c 2017-10-11 23:07:20.495035402 +0200
  10. -@@ -257,6 +257,27 @@
  11. - }
  12. - #endif
  13. -
  14. -+
  15. -+ssize_t _modbus_rtu_write_n_read(modbus_t *ctx, const uint8_t *req, int req_length) {
  16. -+ ssize_t w, r, i;
  17. -+ uint8_t rb[req_length];
  18. -+
  19. -+ // Transmit
  20. -+ w = write(ctx->s, req, req_length);
  21. -+
  22. -+ // Read back written bytes if hw has echo
  23. -+ r = 0;
  24. -+ while (r < w)
  25. -+ r += read(ctx->s, rb + r, w - r);
  26. -+ if (ctx->debug) {
  27. -+ for (i = 0; i < r; ++i)
  28. -+ fprintf(stderr, "|%02X|", rb[i]);
  29. -+ fprintf(stderr, "\n");
  30. -+ }
  31. -+
  32. -+ return w;
  33. -+}
  34. -+
  35. - ssize_t _modbus_rtu_send(modbus_t *ctx, const uint8_t *req, int req_length)
  36. - {
  37. - #if defined(_WIN32)
  38. -@@ -264,7 +285,14 @@
  39. - DWORD n_bytes = 0;
  40. - return (WriteFile(ctx_rtu->w_ser.fd, req, req_length, &n_bytes, NULL)) ? n_bytes : -1;
  41. - #else
  42. -- return write(ctx->s, req, req_length);
  43. -+ modbus_rtu_t *ctx_rtu = ctx->backend_data;
  44. -+ ssize_t w;
  45. -+
  46. -+ if(!ctx_rtu->echohw)
  47. -+ w = write(ctx->s, req, req_length);
  48. -+ else
  49. -+ w = _modbus_rtu_write_n_read(ctx, req, req_length);
  50. -+ return w;
  51. - #endif
  52. - }
  53. -
  54. -@@ -772,6 +800,30 @@
  55. - }
  56. - }
  57. -
  58. -+
  59. -+int modbus_rtu_set_echohw_mode(modbus_t* ctx, uint8_t mode) {
  60. -+ if (ctx->backend->backend_type == _MODBUS_BACKEND_TYPE_RTU) {
  61. -+ modbus_rtu_t* rtu = (modbus_rtu_t*) ctx->backend_data;
  62. -+ rtu->echohw= mode;
  63. -+ return 0;
  64. -+ }
  65. -+ /* Wrong backend and invalid mode specified */
  66. -+ errno = EINVAL;
  67. -+ return -1;
  68. -+
  69. -+}
  70. -+
  71. -+int modbus_rtu_get_echohw_mode(modbus_t* ctx) {
  72. -+ if (ctx->backend->backend_type == _MODBUS_BACKEND_TYPE_RTU) {
  73. -+ modbus_rtu_t* rtu = (modbus_rtu_t*) ctx->backend_data;
  74. -+ return rtu->echohw;
  75. -+ }
  76. -+ /* Wrong backend and invalid mode specified */
  77. -+ errno = EINVAL;
  78. -+ return -1;
  79. -+
  80. -+}
  81. -+
  82. - void _modbus_rtu_close(modbus_t *ctx)
  83. - {
  84. - /* Closes the file descriptor in RTU mode */
  85. -diff -Naur a/src/modbus-rtu.h b/src/modbus-rtu.h
  86. ---- a/src/modbus-rtu.h 2017-10-11 23:07:11.623017506 +0200
  87. -+++ b/src/modbus-rtu.h 2017-10-11 23:07:20.495035402 +0200
  88. -@@ -37,6 +37,12 @@
  89. - int modbus_rtu_set_serial_mode(modbus_t *ctx, int mode);
  90. - int modbus_rtu_get_serial_mode(modbus_t *ctx);
  91. -
  92. -+#define MODBUS_RTU_HAS_ECHOHW 1
  93. -+#define MODBUS_RTU_NO_ECHOHW 0
  94. -+
  95. -+int modbus_rtu_set_echohw_mode(modbus_t *ctx, uint8_t mode);
  96. -+int modbus_rtu_get_echohw_mode(modbus_t *ctx);
  97. -+
  98. - MODBUS_END_DECLS
  99. -
  100. - #endif /* _MODBUS_RTU_H_ */
  101. -diff -Naur a/src/modbus-rtu-private.h b/src/modbus-rtu-private.h
  102. ---- a/src/modbus-rtu-private.h 2017-10-11 23:07:11.623017506 +0200
  103. -+++ b/src/modbus-rtu-private.h 2017-10-11 23:07:20.495035402 +0200
  104. -@@ -81,6 +81,7 @@
  105. - #if HAVE_DECL_TIOCSRS485
  106. - int serial_mode;
  107. - #endif
  108. -+ uint8_t echohw;
  109. - } modbus_rtu_t;
  110. -
  111. - #endif /* _MODBUS_RTU_PRIVATE_H_ */
  112. diff --git a/package/libmodbus/002-GfA-fflush-for-debug.patch b/package/libmodbus/002-GfA-fflush-for-debug.patch
  113. deleted file mode 100644
  114. index 93eaa9a..0000000
  115. --- a/package/libmodbus/002-GfA-fflush-for-debug.patch
  116. +++ /dev/null
  117. @@ -1,47 +0,0 @@
  118. -diff '--exclude=.libs*' -Naurp libmodbus-3.0.6/src/modbus.c b/src/modbus.c
  119. ---- libmodbus-3.0.6/src/modbus.c 2014-04-02 23:34:00.000000000 +0200
  120. -+++ b/src/modbus.c 2018-06-15 08:36:32.657047324 +0200
  121. -@@ -170,6 +170,7 @@ static int send_msg(modbus_t *ctx, uint8
  122. - for (i = 0; i < msg_length; i++)
  123. - printf("[%.2X]", msg[i]);
  124. - printf("\n");
  125. -+ fflush(stdout);
  126. - }
  127. -
  128. - /* In recovery mode, the write command will be issued until to be
  129. -@@ -407,6 +408,7 @@ static int receive_msg(modbus_t *ctx, ui
  130. - int i;
  131. - for (i=0; i < rc; i++)
  132. - printf("<%.2X>", msg[msg_length + i]);
  133. -+ fflush(stdout);
  134. - }
  135. -
  136. - /* Sums bytes received */
  137. -diff '--exclude=.libs*' -Naurp libmodbus-3.0.6/src/modbus-rtu.c b/src/modbus-rtu.c
  138. ---- libmodbus-3.0.6/src/modbus-rtu.c 2018-06-16 17:44:19.011371930 +0200
  139. -+++ b/src/modbus-rtu.c 2018-06-15 08:34:34.544888427 +0200
  140. -@@ -260,7 +260,7 @@ static int win32_ser_read(struct win32_s
  141. -
  142. - ssize_t _modbus_rtu_write_n_read(modbus_t *ctx, const uint8_t *req, int req_length) {
  143. - ssize_t w, r, i;
  144. -- uint8_t rb[req_length];
  145. -+ uint8_t rb[512];
  146. -
  147. - // Transmit
  148. - w = write(ctx->s, req, req_length);
  149. -@@ -273,6 +273,7 @@ ssize_t _modbus_rtu_write_n_read(modbus_
  150. - for (i = 0; i < r; ++i)
  151. - fprintf(stderr, "|%02X|", rb[i]);
  152. - fprintf(stderr, "\n");
  153. -+ fflush(stderr);
  154. - }
  155. -
  156. - return w;
  157. -@@ -325,6 +326,7 @@ int _modbus_rtu_check_integrity(modbus_t
  158. - if (ctx->debug) {
  159. - fprintf(stderr, "ERROR CRC received %0X != CRC calculated %0X\n",
  160. - crc_received, crc_calculated);
  161. -+ fflush(stderr);
  162. - }
  163. - if (ctx->error_recovery & MODBUS_ERROR_RECOVERY_PROTOCOL) {
  164. - _modbus_rtu_flush(ctx);
  165. diff --git a/package/libmodbus/003-GfA-empty-input-queue-on-CRC-error.patch b/package/libmodbus/003-GfA-empty-input-queue-on-CRC-error.patch
  166. deleted file mode 100644
  167. index 79a7ae3..0000000
  168. --- a/package/libmodbus/003-GfA-empty-input-queue-on-CRC-error.patch
  169. +++ /dev/null
  170. @@ -1,39 +0,0 @@
  171. -diff '--exclude=.libs*' '--exclude=*.la' '--exclude=*.lo' '--exclude=Makefile*' -Naurp libmodbus-3.0.6/src/modbus-rtu.c b/src/modbus-rtu.c
  172. ---- libmodbus-3.0.6/src/modbus-rtu.c 2018-06-22 10:34:55.987233891 +0200
  173. -+++ b/src/modbus-rtu.c 2018-06-18 19:47:12.682614777 +0200
  174. -@@ -323,6 +323,35 @@ int _modbus_rtu_check_integrity(modbus_t
  175. - if (crc_calculated == crc_received) {
  176. - return msg_length;
  177. - } else {
  178. -+ modbus_rtu_t *ctx_rtu = ctx->backend_data;
  179. -+
  180. -+ if(ctx_rtu->echohw) {/* on active echomode empty receiver on crc error */
  181. -+ int rc;
  182. -+ fd_set rfds;
  183. -+ struct timeval tv;
  184. -+
  185. -+ /* Add a file descriptor to the set */
  186. -+ FD_ZERO(&rfds);
  187. -+ FD_SET(ctx->s, &rfds);
  188. -+
  189. -+ if (ctx->debug) {
  190. -+ fprintf(stderr, "ERROR CRC received on ECHOHW empty input tv.tv_sec=%d tv.tv_usec=%d\n",
  191. -+ (int)ctx->response_timeout.tv_sec,
  192. -+ (int)ctx->response_timeout.tv_usec);
  193. -+ fflush(stderr);
  194. -+ }
  195. -+
  196. -+ do {
  197. -+ unsigned char cc[256]; /* dummy buffer für cleaning input */
  198. -+
  199. -+ tv.tv_sec = ctx->response_timeout.tv_sec;
  200. -+ tv.tv_usec = ctx->response_timeout.tv_usec;
  201. -+
  202. -+ rc = ctx->backend->select(ctx, &rfds, &tv, sizeof(cc));
  203. -+ if(rc > 0) ctx->backend->recv(ctx, msg + msg_length, rc);
  204. -+ } while(rc > 0); /* read until transfer empty */
  205. -+ }
  206. -+
  207. - if (ctx->debug) {
  208. - fprintf(stderr, "ERROR CRC received %0X != CRC calculated %0X\n",
  209. - crc_received, crc_calculated);
  210. diff --git a/package/libmodbus/libmodbus.mk b/package/libmodbus/libmodbus.mk
  211. index 1f8c730..62909e4 100644
  212. --- a/package/libmodbus/libmodbus.mk
  213. +++ b/package/libmodbus/libmodbus.mk
  214. @@ -4,10 +4,12 @@
  215. #
  216. ################################################################################
  217. -LIBMODBUS_VERSION = 3.0.6
  218. -LIBMODBUS_SITE = http://libmodbus.org/releases
  219. +LIBMODBUS_VERSION = GfA
  220. +LIBMODBUS_SITE = https://gogs.reru.org/GfA/libmodbus.git
  221. +LIBMODBUS_SITE_METHOD = git
  222. LIBMODBUS_LICENSE = LGPLv2.1+
  223. LIBMODBUS_LICENSE_FILES = COPYING.LESSER
  224. +LIBMODBUS_AUTORECONF = YES
  225. LIBMODBUS_INSTALL_STAGING = YES
  226. $(eval $(autotools-package))