Stéphane Raimbault 17 years ago
parent
commit
31400c9a48
4 changed files with 869 additions and 869 deletions
  1. 586 586
      src/modbus.c
  2. 47 47
      src/modbus.h
  3. 159 159
      src/test-modbus-master.c
  4. 77 77
      src/test-modbus-slave.c

File diff suppressed because it is too large
+ 586 - 586
src/modbus.c


+ 47 - 47
src/modbus.h

@@ -36,7 +36,7 @@
 #define PRESET_RESPONSE_SIZE_TCP  8
 
 #define CHECKSUM_SIZE_RTU      2
-#define CHECKSUM_SIZE_TCP      0	
+#define CHECKSUM_SIZE_TCP      0        
 
 /* 8 + HEADER_LENGTH_TCP */
 #define MIN_QUERY_SIZE        14
@@ -112,41 +112,41 @@
 typedef enum { RTU, TCP } type_com_t;
 
 typedef struct {
-	/* Communication : RTU or TCP */
-	type_com_t type_com;
-	/* Device: "/dev/ttyS0" */
-	char device[11];
-	/* Parity: "even", "odd", "none" */
-	char parity[5];
-	/* Bauds: 19200 */
-	int baud_i;
-	/* Data bit */
-	int data_bit;
-	/* Stop bit */
-	int stop_bit;
-	/* Save old termios settings */
-	struct termios old_tios;
-	/* Descriptor (tty or socket) */
-	int fd;
-	/* Flag debug */
-	int debug;
-	/* IP address */
-	char ip[16];
-	/* Header length used for offset */
-	int header_length;
-	/* Checksum size RTU = 2 and TCP = 0 */
-	int checksum_size;
+        /* Communication : RTU or TCP */
+        type_com_t type_com;
+        /* Device: "/dev/ttyS0" */
+        char device[11];
+        /* Parity: "even", "odd", "none" */
+        char parity[5];
+        /* Bauds: 19200 */
+        int baud_i;
+        /* Data bit */
+        int data_bit;
+        /* Stop bit */
+        int stop_bit;
+        /* Save old termios settings */
+        struct termios old_tios;
+        /* Descriptor (tty or socket) */
+        int fd;
+        /* Flag debug */
+        int debug;
+        /* IP address */
+        char ip[16];
+        /* Header length used for offset */
+        int header_length;
+        /* Checksum size RTU = 2 and TCP = 0 */
+        int checksum_size;
 } modbus_param_t;
 
 typedef struct {
-	int nb_coil_status;
-	int nb_input_status;
-	int nb_input_registers;
-	int nb_holding_registers;
-	unsigned char *tab_coil_status;
-	unsigned char *tab_input_status;
-	unsigned short *tab_input_registers;
-	unsigned short *tab_holding_registers;
+        int nb_coil_status;
+        int nb_input_status;
+        int nb_input_registers;
+        int nb_holding_registers;
+        unsigned char *tab_coil_status;
+        unsigned char *tab_input_status;
+        unsigned short *tab_input_registers;
+        unsigned short *tab_holding_registers;
 } modbus_mapping_t;
 
 /* All functions used for sending or receiving data return :
@@ -157,43 +157,43 @@ typedef struct {
 /* Reads the boolean status of coils and sets the array elements in
    the destination to TRUE or FALSE */
 int read_coil_status(modbus_param_t *mb_param, int slave,
-		     int start_addr, int count, int *dest);
+                     int start_addr, int count, int *dest);
 
 /* Same as read_coil_status but reads the slaves input table */
 int read_input_status(modbus_param_t *mb_param, int slave,
-		      int start_addr, int count, int *dest);
+                      int start_addr, int count, int *dest);
 
 /* Reads the holding registers in a slave and put the data into an
    array */
 int read_holding_registers(modbus_param_t *mb_param, int slave,
-			   int start_addr, int count, int *dest);
+                           int start_addr, int count, int *dest);
 
 
 /* Reads the input registers in a slave and put the data into an
    array */
 int read_input_registers(modbus_param_t *mb_param, int slave,
-			 int start_addr, int count, int *dest);
+                         int start_addr, int count, int *dest);
 
 /* Turns on or off a single coil on the slave device */
 int force_single_coil(modbus_param_t *mb_param, int slave,
-		      int coil_addr, int state);
+                      int coil_addr, int state);
 
 /* Sets a value in one holding register in the slave device */
 int preset_single_register(modbus_param_t *mb_param, int slave,
-			   int reg_addr, int value);
+                           int reg_addr, int value);
 
 /* Takes an array of ints and sets or resets the coils on a slave
    appropriatly */
 int force_multiple_coils(modbus_param_t *mb_param, int slave,
-			 int start_addr, int coil_count, int *data);
+                         int start_addr, int coil_count, int *data);
 
 /* Copy the values in an array to an array on the slave */
 int preset_multiple_registers(modbus_param_t *mb_param, int slave,
-			      int start_addr, int reg_count, int *data);
+                              int start_addr, int reg_count, int *data);
 
 /* Returns some useful information about the modbus controller */
 int report_slave_id(modbus_param_t *mb_param, int slave,
-		    unsigned char *dest);
+                    unsigned char *dest);
 
 /* Initialises a parameters structure
    - device : "/dev/ttyS0"
@@ -203,8 +203,8 @@ int report_slave_id(modbus_param_t *mb_param, int slave,
    - stop_bits : 1, 2
 */
 void modbus_init_rtu(modbus_param_t *mb_param, char *device,
-		     int baud, char *parity, int data_bit,
-		     int stop_bit);
+                     int baud, char *parity, int data_bit,
+                     int stop_bit);
 /* Initialises a parameters structure for TCP
    - ip : "192.168.0.5" */
 void modbus_init_tcp(modbus_param_t *mb_param, char *ip_address);
@@ -223,8 +223,8 @@ void modbus_set_debug(modbus_param_t *mb_param, int boolean);
 
 /* Slave/client functions */
 int modbus_mapping_new(modbus_mapping_t *mb_mapping,
-		       int nb_coil_status, int nb_input_status,
-		       int nb_input_registers, int nb_holding_registers);
+                       int nb_coil_status, int nb_input_status,
+                       int nb_input_registers, int nb_holding_registers);
 void modbus_mapping_free(modbus_mapping_t *mb_mapping);
 
 int modbus_init_listen_tcp(modbus_param_t *mb_param);
@@ -232,7 +232,7 @@ int modbus_init_listen_tcp(modbus_param_t *mb_param);
 int modbus_listen(modbus_param_t *mb_param, unsigned char *query, int *query_size);
 
 void manage_query(modbus_param_t *mb_param, unsigned char *query,
-		  int query_size, modbus_mapping_t *mb_mapping);
+                  int query_size, modbus_mapping_t *mb_mapping);
 
 /* Not implemented :
    - read_exception_status()

+ 159 - 159
src/test-modbus-master.c

@@ -34,168 +34,168 @@
 
 int main(void)
 {
-	int ok, fail;
-	int loop_nb;
-	int addr;
-	int field_nb;
-	int *tab_rq;
-	int *tab_rq_bits;
-	int *tab_rp;
-	modbus_param_t mb_param;
-
-	/* RTU parity : none, even, odd */
+        int ok, fail;
+        int loop_nb;
+        int addr;
+        int field_nb;
+        int *tab_rq;
+        int *tab_rq_bits;
+        int *tab_rp;
+        modbus_param_t mb_param;
+
+        /* RTU parity : none, even, odd */
 /*      modbus_init_rtu(&mb_param, "/dev/ttyS0", 19200, "none", 8, 1); */
 
-	/* TCP */
-	modbus_init_tcp(&mb_param, "169.254.7.104");
-	modbus_set_debug(&mb_param, TRUE);
+        /* TCP */
+        modbus_init_tcp(&mb_param, "169.254.7.104");
+        modbus_set_debug(&mb_param, TRUE);
       
-	modbus_connect(&mb_param);
-
-	tab_rq = (int *) malloc(FIELDS * sizeof(int));
-	tab_rq_bits = (int *) malloc(FIELDS * sizeof(int));
-	tab_rp = (int *) malloc(FIELDS * sizeof(int));
-	
-	read_coil_status(&mb_param, SLAVE, 0x13, 0x25, tab_rp);
-	read_input_status(&mb_param, SLAVE, 0xC4, 0x16, tab_rp);
-	read_holding_registers(&mb_param, SLAVE, 0x6B, 3, tab_rp);
-	read_input_registers(&mb_param, SLAVE, 0x8, 1, tab_rp);
-	force_single_coil(&mb_param, SLAVE, 0xAC, ON);
-
-	free(tab_rp);						
-	free(tab_rq);
-	free(tab_rq_bits);
-	modbus_close(&mb_param);
-	
-	return 0;
-
-	loop_nb = ok = fail = 0;
-	while (loop_nb++ < LOOP) { 
-		for (addr=ADDR_MIN; addr <= ADDR_MAX; addr++) {
-			for (field_nb=1; field_nb<=FIELDS; field_nb++) {
-				int i;
-
-				/* Random numbers (short) */
-				for (i=0; i<field_nb; i++) {
-					tab_rq[i] = (int) (16536.0*rand()/(RAND_MAX+1.0));
-					tab_rq_bits[i] = (i) % 2;
-				}
-
-				/* SINGLE COIL */
-				ok = force_single_coil(&mb_param, SLAVE, addr, tab_rq_bits[0]);
-				if (ok != 1) {
-					printf("ERROR force_single_coil (%d)\n", ok);
-					printf("Slave = %d, address = %d, value = %d\n",
-					       SLAVE, addr, tab_rq_bits[0]);
-					fail++;
-				} else {
-					ok = read_coil_status(&mb_param, SLAVE, addr, 1, tab_rp);
-					if (ok != 1 || tab_rq_bits[0] != tab_rp[0]) {
-					        printf("ERROR read_coil_status single (%d)\n", ok);
-						printf("Slave = %d, address = %d\n", 
-						       SLAVE, addr);
-						fail++;
-					}
-				}
-
-				/* MULTIPLE COILS */
-				ok = force_multiple_coils(&mb_param, SLAVE, addr, field_nb, tab_rq_bits);
-				if (ok != field_nb) {
-					printf("ERROR force_multiple_coils (%d)\n", ok);
-					printf("Slave = %d, address = %d, field_nb = %d\n",
-					       SLAVE, addr, field_nb);
-					fail++;
-				} else {
-					ok = read_coil_status(&mb_param, SLAVE, addr,
-							      field_nb, tab_rp);
-					if (ok != field_nb) {
-						printf("ERROR read_coil_status\n");
-						printf("Slave = %d, address = %d, field_nb = %d\n",
-						       SLAVE, addr, field_nb);
-						fail++;
-					} else {
-						for (i=0; i<field_nb; i++) {
-							if (tab_rp[i] != tab_rq_bits[i]) {
-							        printf("ERROR read_coil_status ");
-								printf("(%d != %d)\n", tab_rp[i], tab_rq_bits[i]);
-								printf("Slave = %d, address = %d\n", 
-								       SLAVE, addr);
-								fail++;
+        modbus_connect(&mb_param);
+
+        tab_rq = (int *) malloc(FIELDS * sizeof(int));
+        tab_rq_bits = (int *) malloc(FIELDS * sizeof(int));
+        tab_rp = (int *) malloc(FIELDS * sizeof(int));
+        
+        read_coil_status(&mb_param, SLAVE, 0x13, 0x25, tab_rp);
+        read_input_status(&mb_param, SLAVE, 0xC4, 0x16, tab_rp);
+        read_holding_registers(&mb_param, SLAVE, 0x6B, 3, tab_rp);
+        read_input_registers(&mb_param, SLAVE, 0x8, 1, tab_rp);
+        force_single_coil(&mb_param, SLAVE, 0xAC, ON);
+
+        free(tab_rp);                                           
+        free(tab_rq);
+        free(tab_rq_bits);
+        modbus_close(&mb_param);
+        
+        return 0;
+
+        loop_nb = ok = fail = 0;
+        while (loop_nb++ < LOOP) { 
+                for (addr=ADDR_MIN; addr <= ADDR_MAX; addr++) {
+                        for (field_nb=1; field_nb<=FIELDS; field_nb++) {
+                                int i;
+
+                                /* Random numbers (short) */
+                                for (i=0; i<field_nb; i++) {
+                                        tab_rq[i] = (int) (16536.0*rand()/(RAND_MAX+1.0));
+                                        tab_rq_bits[i] = (i) % 2;
+                                }
+
+                                /* SINGLE COIL */
+                                ok = force_single_coil(&mb_param, SLAVE, addr, tab_rq_bits[0]);
+                                if (ok != 1) {
+                                        printf("ERROR force_single_coil (%d)\n", ok);
+                                        printf("Slave = %d, address = %d, value = %d\n",
+                                               SLAVE, addr, tab_rq_bits[0]);
+                                        fail++;
+                                } else {
+                                        ok = read_coil_status(&mb_param, SLAVE, addr, 1, tab_rp);
+                                        if (ok != 1 || tab_rq_bits[0] != tab_rp[0]) {
+                                                printf("ERROR read_coil_status single (%d)\n", ok);
+                                                printf("Slave = %d, address = %d\n", 
+                                                       SLAVE, addr);
+                                                fail++;
+                                        }
+                                }
+
+                                /* MULTIPLE COILS */
+                                ok = force_multiple_coils(&mb_param, SLAVE, addr, field_nb, tab_rq_bits);
+                                if (ok != field_nb) {
+                                        printf("ERROR force_multiple_coils (%d)\n", ok);
+                                        printf("Slave = %d, address = %d, field_nb = %d\n",
+                                               SLAVE, addr, field_nb);
+                                        fail++;
+                                } else {
+                                        ok = read_coil_status(&mb_param, SLAVE, addr,
+                                                              field_nb, tab_rp);
+                                        if (ok != field_nb) {
+                                                printf("ERROR read_coil_status\n");
+                                                printf("Slave = %d, address = %d, field_nb = %d\n",
+                                                       SLAVE, addr, field_nb);
+                                                fail++;
+                                        } else {
+                                                for (i=0; i<field_nb; i++) {
+                                                        if (tab_rp[i] != tab_rq_bits[i]) {
+                                                                printf("ERROR read_coil_status ");
+                                                                printf("(%d != %d)\n", tab_rp[i], tab_rq_bits[i]);
+                                                                printf("Slave = %d, address = %d\n", 
+                                                                       SLAVE, addr);
+                                                                fail++;
                                                         }
                                                 }
-					}
-				}
-
-				/* SINGLE REGISTER */
-				ok = preset_single_register(&mb_param, SLAVE, addr, tab_rq[0]);
-				if (ok != 1) {
-					printf("ERROR preset_single_register (%d)\n", ok);
-					printf("Slave = %d, address = %d, value = %d\n",
-					       SLAVE, addr, tab_rq[0]);
-					fail++;
-				} else {
-					ok = read_holding_registers(&mb_param, SLAVE,
-								    addr, 1, tab_rp);
-					if (ok != 1) {
-						printf("ERROR read_holding_registers single (%d)\n", ok);
-						printf("Slave = %d, address = %d\n",
-						       SLAVE, addr);
-						fail++;
-					} else {
-						if (tab_rq[0] != tab_rp[0]) {
-							printf("ERROR read_holding_registers single ");
-							printf("(%d != %d)\n",
-							       tab_rq[0], tab_rp[0]);
-							printf("Slave = %d, address = %d\n", 
-							       SLAVE, addr);
-							fail++;
-						}
-					}
-				}
-
-				/* MULTIPLE REGISTERS */
-				ok = preset_multiple_registers(&mb_param, SLAVE,
-							       addr, field_nb, tab_rq);
-				if (ok != field_nb) {
-					printf("ERROR preset_multiple_registers (%d)\n", ok);
-					printf("Slave = %d, address = %d, field_nb = %d\n",
-					       SLAVE, addr, field_nb);
-					fail++;
-				} else {
-					ok = read_holding_registers(&mb_param, SLAVE,
-								    addr, field_nb, tab_rp);
-					if (ok != field_nb) {
-						printf("ERROR read_holding_registers (%d)\n", ok);
-						printf("Slave = %d, address = %d, field_nb = %d\n",
-						       SLAVE, addr, field_nb);
-						fail++;
-					} else {
-						for (i=0; i<field_nb; i++) {
-							if (tab_rq[i] != tab_rp[i]) {
-								printf("ERROR read_holding_registers ");
-								printf("(%d != %d)\n",
-								       tab_rq[i], tab_rp[i]);
-								printf("Slave = %d, address = %d\n", 
-								       SLAVE, addr);
-								fail++;
-							}
-						}
-					}
-				}
-			}
-	
-			if (fail)
-				printf("Address : %d - Fails sum : %d\n", addr, fail);
-			else
-				printf("Address : %d - OK\n", addr);
-		}
-	}
-
-	free(tab_rp);						
-	free(tab_rq);
-	free(tab_rq_bits);
-	modbus_close(&mb_param);
-	
-	return 0;
+                                        }
+                                }
+
+                                /* SINGLE REGISTER */
+                                ok = preset_single_register(&mb_param, SLAVE, addr, tab_rq[0]);
+                                if (ok != 1) {
+                                        printf("ERROR preset_single_register (%d)\n", ok);
+                                        printf("Slave = %d, address = %d, value = %d\n",
+                                               SLAVE, addr, tab_rq[0]);
+                                        fail++;
+                                } else {
+                                        ok = read_holding_registers(&mb_param, SLAVE,
+                                                                    addr, 1, tab_rp);
+                                        if (ok != 1) {
+                                                printf("ERROR read_holding_registers single (%d)\n", ok);
+                                                printf("Slave = %d, address = %d\n",
+                                                       SLAVE, addr);
+                                                fail++;
+                                        } else {
+                                                if (tab_rq[0] != tab_rp[0]) {
+                                                        printf("ERROR read_holding_registers single ");
+                                                        printf("(%d != %d)\n",
+                                                               tab_rq[0], tab_rp[0]);
+                                                        printf("Slave = %d, address = %d\n", 
+                                                               SLAVE, addr);
+                                                        fail++;
+                                                }
+                                        }
+                                }
+
+                                /* MULTIPLE REGISTERS */
+                                ok = preset_multiple_registers(&mb_param, SLAVE,
+                                                               addr, field_nb, tab_rq);
+                                if (ok != field_nb) {
+                                        printf("ERROR preset_multiple_registers (%d)\n", ok);
+                                        printf("Slave = %d, address = %d, field_nb = %d\n",
+                                               SLAVE, addr, field_nb);
+                                        fail++;
+                                } else {
+                                        ok = read_holding_registers(&mb_param, SLAVE,
+                                                                    addr, field_nb, tab_rp);
+                                        if (ok != field_nb) {
+                                                printf("ERROR read_holding_registers (%d)\n", ok);
+                                                printf("Slave = %d, address = %d, field_nb = %d\n",
+                                                       SLAVE, addr, field_nb);
+                                                fail++;
+                                        } else {
+                                                for (i=0; i<field_nb; i++) {
+                                                        if (tab_rq[i] != tab_rp[i]) {
+                                                                printf("ERROR read_holding_registers ");
+                                                                printf("(%d != %d)\n",
+                                                                       tab_rq[i], tab_rp[i]);
+                                                                printf("Slave = %d, address = %d\n", 
+                                                                       SLAVE, addr);
+                                                                fail++;
+                                                        }
+                                                }
+                                        }
+                                }
+                        }
+        
+                        if (fail)
+                                printf("Address : %d - Fails sum : %d\n", addr, fail);
+                        else
+                                printf("Address : %d - OK\n", addr);
+                }
+        }
+
+        free(tab_rp);                                           
+        free(tab_rq);
+        free(tab_rq_bits);
+        modbus_close(&mb_param);
+        
+        return 0;
 }
-	
+        

+ 77 - 77
src/test-modbus-slave.c

@@ -28,88 +28,88 @@
 
 int main(void)
 {
-	const int nb_coil_status = 500;
-	const int nb_input_status = 500;
-	const int nb_input_registers = 500;
-	const int nb_holding_registers = 500;
+        const int nb_coil_status = 500;
+        const int nb_input_status = 500;
+        const int nb_input_registers = 500;
+        const int nb_holding_registers = 500;
         int socket;
-	modbus_param_t mb_param;
-	modbus_mapping_t mb_mapping;
-	int ret;
-	int i;
-
-	modbus_init_tcp(&mb_param, "127.0.0.1");
-	modbus_set_debug(&mb_param, TRUE);
-
-	modbus_mapping_new(&mb_mapping,
-			   nb_coil_status, nb_input_status, nb_input_registers, nb_holding_registers);
-
-	/* Examples from PI_MODBUS_300.pdf */
-
-	/* Coil status */
-	mb_mapping.tab_coil_status[26] = ON;
-	mb_mapping.tab_coil_status[25] = ON;
-	mb_mapping.tab_coil_status[24] = OFF;
-	mb_mapping.tab_coil_status[23] = OFF;
-	mb_mapping.tab_coil_status[22] = ON;
-	mb_mapping.tab_coil_status[21] = ON;
-	mb_mapping.tab_coil_status[20] = OFF;
-	mb_mapping.tab_coil_status[19] = ON;
-
-	/* Input status */
-	mb_mapping.tab_input_status[203] = ON;
-	mb_mapping.tab_input_status[202] = OFF;
-	mb_mapping.tab_input_status[201] = ON;
-	mb_mapping.tab_input_status[200] = OFF;
-	mb_mapping.tab_input_status[199] = ON;
-	mb_mapping.tab_input_status[198] = ON;
-	mb_mapping.tab_input_status[197] = OFF;
-	mb_mapping.tab_input_status[196] = OFF;
-
-	mb_mapping.tab_input_status[211] = ON;
-	mb_mapping.tab_input_status[210] = ON;
-	mb_mapping.tab_input_status[209] = OFF;
-	mb_mapping.tab_input_status[208] = ON;
-	mb_mapping.tab_input_status[207] = ON;
-	mb_mapping.tab_input_status[206] = OFF;
-	mb_mapping.tab_input_status[205] = ON;
-	mb_mapping.tab_input_status[204] = ON;
-
-	/* Incomplete byte */
-	mb_mapping.tab_input_status[217] = ON;
-	mb_mapping.tab_input_status[216] = ON;
-	mb_mapping.tab_input_status[215] = OFF;
-	mb_mapping.tab_input_status[214] = ON;
-	mb_mapping.tab_input_status[213] = OFF;
-	mb_mapping.tab_input_status[212] = ON;
-
-	/* Holding registers */
-	mb_mapping.tab_holding_registers[107] = 0x022B;
-	mb_mapping.tab_holding_registers[108] = 0x0000;
-	mb_mapping.tab_holding_registers[109] = 0x0064;
-
-	/* Input registers */
-	mb_mapping.tab_input_registers[8] = 0x000A;
+        modbus_param_t mb_param;
+        modbus_mapping_t mb_mapping;
+        int ret;
+        int i;
+
+        modbus_init_tcp(&mb_param, "127.0.0.1");
+        modbus_set_debug(&mb_param, TRUE);
+
+        modbus_mapping_new(&mb_mapping,
+                           nb_coil_status, nb_input_status, nb_input_registers, nb_holding_registers);
+
+        /* Examples from PI_MODBUS_300.pdf */
+
+        /* Coil status */
+        mb_mapping.tab_coil_status[26] = ON;
+        mb_mapping.tab_coil_status[25] = ON;
+        mb_mapping.tab_coil_status[24] = OFF;
+        mb_mapping.tab_coil_status[23] = OFF;
+        mb_mapping.tab_coil_status[22] = ON;
+        mb_mapping.tab_coil_status[21] = ON;
+        mb_mapping.tab_coil_status[20] = OFF;
+        mb_mapping.tab_coil_status[19] = ON;
+
+        /* Input status */
+        mb_mapping.tab_input_status[203] = ON;
+        mb_mapping.tab_input_status[202] = OFF;
+        mb_mapping.tab_input_status[201] = ON;
+        mb_mapping.tab_input_status[200] = OFF;
+        mb_mapping.tab_input_status[199] = ON;
+        mb_mapping.tab_input_status[198] = ON;
+        mb_mapping.tab_input_status[197] = OFF;
+        mb_mapping.tab_input_status[196] = OFF;
+
+        mb_mapping.tab_input_status[211] = ON;
+        mb_mapping.tab_input_status[210] = ON;
+        mb_mapping.tab_input_status[209] = OFF;
+        mb_mapping.tab_input_status[208] = ON;
+        mb_mapping.tab_input_status[207] = ON;
+        mb_mapping.tab_input_status[206] = OFF;
+        mb_mapping.tab_input_status[205] = ON;
+        mb_mapping.tab_input_status[204] = ON;
+
+        /* Incomplete byte */
+        mb_mapping.tab_input_status[217] = ON;
+        mb_mapping.tab_input_status[216] = ON;
+        mb_mapping.tab_input_status[215] = OFF;
+        mb_mapping.tab_input_status[214] = ON;
+        mb_mapping.tab_input_status[213] = OFF;
+        mb_mapping.tab_input_status[212] = ON;
+
+        /* Holding registers */
+        mb_mapping.tab_holding_registers[107] = 0x022B;
+        mb_mapping.tab_holding_registers[108] = 0x0000;
+        mb_mapping.tab_holding_registers[109] = 0x0064;
+
+        /* Input registers */
+        mb_mapping.tab_input_registers[8] = 0x000A;
  
         socket = modbus_init_listen_tcp(&mb_param);
-	
-	i =0;
-	while (i++ < 5) {
+        
+        i =0;
+        while (i++ < 5) {
                 unsigned char query[MAX_PACKET_SIZE];
-		int query_size;
-		int i;
-
-		ret = modbus_listen(&mb_param, query, &query_size);
-		if (ret == 0)
-			manage_query(&mb_param, query, query_size, &mb_mapping);
-		else
-			printf("Error in modbus_listen (%d)\n", ret);
+                int query_size;
+                int i;
+
+                ret = modbus_listen(&mb_param, query, &query_size);
+                if (ret == 0)
+                        manage_query(&mb_param, query, query_size, &mb_mapping);
+                else
+                        printf("Error in modbus_listen (%d)\n", ret);
         }
 
         close(socket);
-	modbus_mapping_free(&mb_mapping);
-	modbus_close(&mb_param);
-	
-	return 0;
+        modbus_mapping_free(&mb_mapping);
+        modbus_close(&mb_param);
+        
+        return 0;
 }
-	
+        

Some files were not shown because too many files changed in this diff