소스 검색

Change order of few functions in modbus RTU code

Stéphane Raimbault 10 년 전
부모
커밋
8a7e2446a2
3개의 변경된 파일33개의 추가작업 그리고 32개의 파일을 삭제
  1. 1 1
      doc/Makefile.am
  2. 31 31
      src/modbus-rtu.c
  3. 1 0
      src/modbus-rtu.h

+ 1 - 1
doc/Makefile.am

@@ -29,9 +29,9 @@ TXT3 = \
         modbus_rtu_set_serial_mode.txt \
         modbus_rtu_get_rts.txt \
         modbus_rtu_set_rts.txt \
+        modbus_rtu_set_custom_rts.txt \
         modbus_rtu_get_rts_delay.txt \
         modbus_rtu_set_rts_delay.txt \
-        modbus_rtu_set_custom_rts.txt \
         modbus_send_raw_request.txt \
         modbus_set_bits_from_bytes.txt \
         modbus_set_bits_from_byte.txt \

+ 31 - 31
src/modbus-rtu.c

@@ -968,7 +968,7 @@ int modbus_rtu_get_serial_mode(modbus_t *ctx)
     }
 }
 
-int modbus_rtu_set_rts(modbus_t *ctx, int mode)
+int modbus_rtu_get_rts(modbus_t *ctx)
 {
     if (ctx == NULL) {
         errno = EINVAL;
@@ -978,19 +978,7 @@ int modbus_rtu_set_rts(modbus_t *ctx, int mode)
     if (ctx->backend->backend_type == _MODBUS_BACKEND_TYPE_RTU) {
 #if HAVE_DECL_TIOCM_RTS
         modbus_rtu_t *ctx_rtu = ctx->backend_data;
-
-        if (mode == MODBUS_RTU_RTS_NONE || mode == MODBUS_RTU_RTS_UP ||
-            mode == MODBUS_RTU_RTS_DOWN) {
-            ctx_rtu->rts = mode;
-
-            /* Set the RTS bit in order to not reserve the RS485 bus */
-            ctx_rtu->set_rts(ctx, ctx_rtu->rts != MODBUS_RTU_RTS_UP);
-
-            return 0;
-        } else {
-            errno = EINVAL;
-            return -1;
-        }
+        return ctx_rtu->rts;
 #else
         if (ctx->debug) {
             fprintf(stderr, "This function isn't supported on your platform\n");
@@ -998,13 +986,13 @@ int modbus_rtu_set_rts(modbus_t *ctx, int mode)
         errno = ENOTSUP;
         return -1;
 #endif
+    } else {
+        errno = EINVAL;
+        return -1;
     }
-    /* Wrong backend or invalid mode specified */
-    errno = EINVAL;
-    return -1;
 }
 
-int modbus_rtu_get_rts(modbus_t *ctx)
+int modbus_rtu_set_rts(modbus_t *ctx, int mode)
 {
     if (ctx == NULL) {
         errno = EINVAL;
@@ -1014,7 +1002,19 @@ int modbus_rtu_get_rts(modbus_t *ctx)
     if (ctx->backend->backend_type == _MODBUS_BACKEND_TYPE_RTU) {
 #if HAVE_DECL_TIOCM_RTS
         modbus_rtu_t *ctx_rtu = ctx->backend_data;
-        return ctx_rtu->rts;
+
+        if (mode == MODBUS_RTU_RTS_NONE || mode == MODBUS_RTU_RTS_UP ||
+            mode == MODBUS_RTU_RTS_DOWN) {
+            ctx_rtu->rts = mode;
+
+            /* Set the RTS bit in order to not reserve the RS485 bus */
+            ctx_rtu->set_rts(ctx, ctx_rtu->rts != MODBUS_RTU_RTS_UP);
+
+            return 0;
+        } else {
+            errno = EINVAL;
+            return -1;
+        }
 #else
         if (ctx->debug) {
             fprintf(stderr, "This function isn't supported on your platform\n");
@@ -1022,24 +1022,23 @@ int modbus_rtu_get_rts(modbus_t *ctx)
         errno = ENOTSUP;
         return -1;
 #endif
-    } else {
-        errno = EINVAL;
-        return -1;
     }
+    /* Wrong backend or invalid mode specified */
+    errno = EINVAL;
+    return -1;
 }
 
-int modbus_rtu_set_rts_delay(modbus_t *ctx, int us)
+int modbus_rtu_set_custom_rts(modbus_t *ctx, void (*set_rts) (modbus_t *ctx, int on))
 {
-    if (ctx == NULL || us < 0) {
+    if (ctx == NULL) {
         errno = EINVAL;
         return -1;
     }
 
     if (ctx->backend->backend_type == _MODBUS_BACKEND_TYPE_RTU) {
 #if HAVE_DECL_TIOCM_RTS
-        modbus_rtu_t *ctx_rtu;
-        ctx_rtu = (modbus_rtu_t *)ctx->backend_data;
-        ctx_rtu->rts_delay = us;
+        modbus_rtu_t *ctx_rtu = ctx->backend_data;
+        ctx_rtu->set_rts = set_rts;
         return 0;
 #else
         if (ctx->debug) {
@@ -1079,17 +1078,18 @@ int modbus_rtu_get_rts_delay(modbus_t *ctx)
     }
 }
 
-int modbus_rtu_set_custom_rts(modbus_t *ctx, void (*set_rts) (modbus_t *ctx, int on))
+int modbus_rtu_set_rts_delay(modbus_t *ctx, int us)
 {
-    if (ctx == NULL) {
+    if (ctx == NULL || us < 0) {
         errno = EINVAL;
         return -1;
     }
 
     if (ctx->backend->backend_type == _MODBUS_BACKEND_TYPE_RTU) {
 #if HAVE_DECL_TIOCM_RTS
-        modbus_rtu_t *ctx_rtu = ctx->backend_data;
-        ctx_rtu->set_rts = set_rts;
+        modbus_rtu_t *ctx_rtu;
+        ctx_rtu = (modbus_rtu_t *)ctx->backend_data;
+        ctx_rtu->rts_delay = us;
         return 0;
 #else
         if (ctx->debug) {

+ 1 - 0
src/modbus-rtu.h

@@ -31,6 +31,7 @@ MODBUS_API int modbus_rtu_get_serial_mode(modbus_t *ctx);
 
 MODBUS_API int modbus_rtu_set_rts(modbus_t *ctx, int mode);
 MODBUS_API int modbus_rtu_get_rts(modbus_t *ctx);
+
 MODBUS_API int modbus_rtu_set_custom_rts(modbus_t *ctx, void (*set_rts) (modbus_t *ctx, int on));
 
 MODBUS_API int modbus_rtu_set_rts_delay(modbus_t *ctx, int us);