Commit 9b803dd4ee046edea06b588233e4b51a48432523
1 parent
fb89fa36
Add documentation for many functions and tweak argument names
Add macros in libmodbus.txt and: - modbus_get_byte_from_bits.txt - modbus_get_float.txt - modbus_reply.txt - modbus_reply_exception.txt - modbus_set_bits_from_byte.txt - modbus_set_bits_from_bytes.txt - modbus_set_float.txt
Showing
13 changed files
with
332 additions
and
15 deletions
NEWS
| @@ -10,8 +10,9 @@ libmodbus 2.9.5 (2011-06-XX) | @@ -10,8 +10,9 @@ libmodbus 2.9.5 (2011-06-XX) | ||
| 10 | * modbus_read_and_write_registers -> modbus_write_and_read_registers | 10 | * modbus_read_and_write_registers -> modbus_write_and_read_registers |
| 11 | The function name was confusing because the write operation is performed | 11 | The function name was confusing because the write operation is performed |
| 12 | before the read. Take care to swap the arguments in the migration process. | 12 | before the read. Take care to swap the arguments in the migration process. |
| 13 | -- Documentation of modbus_write_and_read_registers, modbus_mapping_new/free | ||
| 14 | - and report_slave_id. | 13 | +- Documentation of modbus_write_and_read_registers, modbus_mapping_new/free, |
| 14 | + report_slave_id. modbus_get_byte_from_bits, modbus_set_bits_from_byte(s), | ||
| 15 | + modbus_[gs]et_float, modbus_reply and modbus_reply_exception. | ||
| 15 | - Enhanced report slave ID | 16 | - Enhanced report slave ID |
| 16 | 17 | ||
| 17 | libmodbus 2.9.4 (2011-06-05) | 18 | libmodbus 2.9.4 (2011-06-05) |
doc/Makefile.am
| @@ -4,6 +4,9 @@ MAN3 = \ | @@ -4,6 +4,9 @@ MAN3 = \ | ||
| 4 | modbus_flush.3 \ | 4 | modbus_flush.3 \ |
| 5 | modbus_free.3 \ | 5 | modbus_free.3 \ |
| 6 | modbus_get_byte_timeout.3 \ | 6 | modbus_get_byte_timeout.3 \ |
| 7 | + modbus_get_byte_from_bits.3 \ | ||
| 8 | + modbus_get_float.3 \ | ||
| 9 | + modbus_set_float.3 \ | ||
| 7 | modbus_get_header_length.3 \ | 10 | modbus_get_header_length.3 \ |
| 8 | modbus_get_socket.3 \ | 11 | modbus_get_socket.3 \ |
| 9 | modbus_get_response_timeout.3 \ | 12 | modbus_get_response_timeout.3 \ |
| @@ -20,10 +23,14 @@ MAN3 = \ | @@ -20,10 +23,14 @@ MAN3 = \ | ||
| 20 | modbus_receive_confirmation.3 \ | 23 | modbus_receive_confirmation.3 \ |
| 21 | modbus_receive_from.3 \ | 24 | modbus_receive_from.3 \ |
| 22 | modbus_report_slave_id.3 \ | 25 | modbus_report_slave_id.3 \ |
| 26 | + modbus_reply.3 \ | ||
| 27 | + modbus_reply_exception.3 \ | ||
| 23 | modbus_rtu_get_serial_mode.3 \ | 28 | modbus_rtu_get_serial_mode.3 \ |
| 24 | modbus_rtu_set_serial_mode.3 \ | 29 | modbus_rtu_set_serial_mode.3 \ |
| 25 | modbus_send_raw_request.3 \ | 30 | modbus_send_raw_request.3 \ |
| 26 | modbus_set_byte_timeout.3 \ | 31 | modbus_set_byte_timeout.3 \ |
| 32 | + modbus_set_bits_from_byte.3 \ | ||
| 33 | + modbus_set_bits_from_bytes.3 \ | ||
| 27 | modbus_set_debug.3 \ | 34 | modbus_set_debug.3 \ |
| 28 | modbus_set_error_recovery.3 \ | 35 | modbus_set_error_recovery.3 \ |
| 29 | modbus_set_slave.3 \ | 36 | modbus_set_slave.3 \ |
doc/libmodbus.txt
| @@ -120,6 +120,23 @@ A libmodbus 'context' is thread safe and may be shared among as many application | @@ -120,6 +120,23 @@ A libmodbus 'context' is thread safe and may be shared among as many application | ||
| 120 | threads as necessary, without any additional locking required on the part of the | 120 | threads as necessary, without any additional locking required on the part of the |
| 121 | caller. | 121 | caller. |
| 122 | 122 | ||
| 123 | +Macros for data manipulation:: | ||
| 124 | + MODBUS_GET_HIGH_BYTE(data), extracts the high byte from a byte | ||
| 125 | + MODBUS_GET_LOW_BYTE(data), extracts the low byte from a byte | ||
| 126 | + MODBUS_GET_INT32_FROM_INT16(tab_int16, index), builds an int32 from the two | ||
| 127 | + first int16 starting at tab_int16[index] | ||
| 128 | + MODBUS_GET_INT16_FROM_INT8(tab_int8, index), builds an int16 from the two | ||
| 129 | + first int8 starting at tab_int8[index] | ||
| 130 | + MODBUS_SET_INT16_TO_INT8(tab_int8, index, value), set an int16 value into | ||
| 131 | + the two first bytes starting at tab_int8[index] | ||
| 132 | + | ||
| 133 | +Functions for data manipulation:: | ||
| 134 | + linkmb:modbus_set_bits_from_byte[3] | ||
| 135 | + linkmb:modbus_set_bits_from_bytes[3] | ||
| 136 | + linkmb:modbus_get_byte_from_bits[3] | ||
| 137 | + linkmb:modbus_get_float[3] | ||
| 138 | + linkmb:modbus_set_float[3] | ||
| 139 | + | ||
| 123 | 140 | ||
| 124 | Connection | 141 | Connection |
| 125 | ~~~~~~~~~~ | 142 | ~~~~~~~~~~ |
| @@ -162,6 +179,9 @@ Raw requests:: | @@ -162,6 +179,9 @@ Raw requests:: | ||
| 162 | linkmb:modbus_send_raw_request[3] | 179 | linkmb:modbus_send_raw_request[3] |
| 163 | linkmb:modbus_receive_confirmation[3] | 180 | linkmb:modbus_receive_confirmation[3] |
| 164 | 181 | ||
| 182 | +Reply an exception:: | ||
| 183 | + linkmb:modbus_reply_exception[3] | ||
| 184 | + | ||
| 165 | 185 | ||
| 166 | Server | 186 | Server |
| 167 | ~~~~~~ | 187 | ~~~~~~ |
| @@ -178,6 +198,7 @@ Receive:: | @@ -178,6 +198,7 @@ Receive:: | ||
| 178 | 198 | ||
| 179 | Reply:: | 199 | Reply:: |
| 180 | linkmb:modbus_reply[3] | 200 | linkmb:modbus_reply[3] |
| 201 | + linkmb:modbus_reply_exception[3] | ||
| 181 | 202 | ||
| 182 | 203 | ||
| 183 | ERROR HANDLING | 204 | ERROR HANDLING |
doc/modbus_get_byte_from_bits.txt
0 → 100644
| 1 | +modbus_get_byte_from_bits(3) | ||
| 2 | +============================ | ||
| 3 | + | ||
| 4 | +NAME | ||
| 5 | +---- | ||
| 6 | +modbus_get_byte_from_bits - get the value from many bits | ||
| 7 | + | ||
| 8 | + | ||
| 9 | +SYNOPSIS | ||
| 10 | +-------- | ||
| 11 | +*uint8_t modbus_get_byte_from_bits(const uint8_t *'src', int 'index', unsigned int 'nb_bits');* | ||
| 12 | + | ||
| 13 | + | ||
| 14 | +DESCRIPTION | ||
| 15 | +----------- | ||
| 16 | +The _modbus_get_byte_from_bits()_ function shall extract a value from many | ||
| 17 | +bits. All 'nb_bits' bits from 'src' at position 'index' will be read as a | ||
| 18 | +single value. To obtain a full byte, set nb_bits to 8. | ||
| 19 | + | ||
| 20 | + | ||
| 21 | +RETURN VALUE | ||
| 22 | +------------ | ||
| 23 | +The _modbus_get_byte_from_bits()_ function shall return a byte containing the | ||
| 24 | +bits read. | ||
| 25 | + | ||
| 26 | + | ||
| 27 | +SEE ALSO | ||
| 28 | +-------- | ||
| 29 | +linkmb:modbus_set_bits_from_byte[3] | ||
| 30 | +linkmb:modbus_set_bits_from_bytes[3] | ||
| 31 | + | ||
| 32 | + | ||
| 33 | +AUTHORS | ||
| 34 | +------- | ||
| 35 | +The libmodbus documentation was written by Stéphane Raimbault | ||
| 36 | +<stephane.raimbault@gmail.com> |
doc/modbus_get_float.txt
0 → 100644
| 1 | +modbus_get_float(3) | ||
| 2 | +=================== | ||
| 3 | + | ||
| 4 | + | ||
| 5 | +NAME | ||
| 6 | +---- | ||
| 7 | +modbus_get_float - get a float value | ||
| 8 | + | ||
| 9 | + | ||
| 10 | +SYNOPSIS | ||
| 11 | +-------- | ||
| 12 | +*float modbus_get_float(const uint16_t *'src');* | ||
| 13 | + | ||
| 14 | + | ||
| 15 | +DESCRIPTION | ||
| 16 | +----------- | ||
| 17 | +The _modbus_get_float()_ function shall get a float from 4 bytes in Modbus | ||
| 18 | +format. The 'src' array must be pointer on two 16 bits values, for example, | ||
| 19 | +if the first word is set to 0x4465 and the second to 0x229a, the float value | ||
| 20 | +read will be 916.540649. | ||
| 21 | + | ||
| 22 | + | ||
| 23 | +RETURN VALUE | ||
| 24 | +------------ | ||
| 25 | +The _modbus_get_float()_ function shall return a float. | ||
| 26 | + | ||
| 27 | + | ||
| 28 | +SEE ALSO | ||
| 29 | +-------- | ||
| 30 | +linkmb:modbus_set_float[3] | ||
| 31 | + | ||
| 32 | + | ||
| 33 | +AUTHORS | ||
| 34 | +------- | ||
| 35 | +The libmodbus documentation was written by Stéphane Raimbault | ||
| 36 | +<stephane.raimbault@gmail.com> |
doc/modbus_reply.txt
0 → 100644
| 1 | +modbus_reply(3) | ||
| 2 | +=============== | ||
| 3 | + | ||
| 4 | +NAME | ||
| 5 | +---- | ||
| 6 | +modbus_reply - send a reponse to the received request | ||
| 7 | + | ||
| 8 | + | ||
| 9 | +SYNOPSIS | ||
| 10 | +-------- | ||
| 11 | +*int modbus_reply(modbus_t *'ctx', const uint8_t *'req', int 'req_length', modbus_mapping_t *'mb_mapping'); | ||
| 12 | + | ||
| 13 | + | ||
| 14 | +DESCRIPTION | ||
| 15 | +----------- | ||
| 16 | +The _modbus_reply()_ function shall send a response to received request. The | ||
| 17 | +request 'req' given in argument is analyzed, a response is then built and sent | ||
| 18 | +by using the information of the modbus context 'ctx'. | ||
| 19 | + | ||
| 20 | +If the request indicates to read or write a value the operation will done in the | ||
| 21 | +modbus mapping 'mb_mapping' according to the type of the manipulated data. | ||
| 22 | + | ||
| 23 | +If an error occurs, an exception response will be sent. | ||
| 24 | + | ||
| 25 | +This function is designed for Modbus server. | ||
| 26 | + | ||
| 27 | + | ||
| 28 | +RETURN VALUE | ||
| 29 | +------------ | ||
| 30 | +The _modbus_reply()_ function shall return the length of the response sent if | ||
| 31 | +successful. Otherwise it shall return -1 and set errno. | ||
| 32 | + | ||
| 33 | + | ||
| 34 | +ERRORS | ||
| 35 | +------ | ||
| 36 | +EMBMDATA:: | ||
| 37 | +Sending has failed | ||
| 38 | + | ||
| 39 | +See also the errors returned by the syscall used to send the response (eg. send | ||
| 40 | +or write). | ||
| 41 | + | ||
| 42 | + | ||
| 43 | +SEE ALSO | ||
| 44 | +-------- | ||
| 45 | +linkmb:modbus_reply_exception[3] | ||
| 46 | +linkmb:libmodbus[7] | ||
| 47 | + | ||
| 48 | + | ||
| 49 | +AUTHORS | ||
| 50 | +------- | ||
| 51 | +The libmodbus documentation was written by Stéphane Raimbault | ||
| 52 | +<stephane.raimbault@gmail.com> |
doc/modbus_reply_exception.txt
0 → 100644
| 1 | +modbus_reply_exception(3) | ||
| 2 | +========================= | ||
| 3 | + | ||
| 4 | +NAME | ||
| 5 | +---- | ||
| 6 | +modbus_reply_exception - send an exception reponse | ||
| 7 | + | ||
| 8 | + | ||
| 9 | +SYNOPSIS | ||
| 10 | +-------- | ||
| 11 | +*int modbus_reply_exception(modbus_t *'ctx', const uint8_t *'req', unsigned int 'exception_code'); | ||
| 12 | + | ||
| 13 | + | ||
| 14 | +DESCRIPTION | ||
| 15 | +----------- | ||
| 16 | +The _modbus_reply_exception()_ function shall send an exception response based | ||
| 17 | +on the 'exception_code' in argument. | ||
| 18 | + | ||
| 19 | +The libmodbus provides the following exception codes: | ||
| 20 | + | ||
| 21 | +* MODBUS_EXCEPTION_ILLEGAL_FUNCTION (1) | ||
| 22 | +* MODBUS_EXCEPTION_ILLEGAL_DATA_ADDRESS (2) | ||
| 23 | +* MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE (3) | ||
| 24 | +* MODBUS_EXCEPTION_SLAVE_OR_SERVER_FAILURE (4) | ||
| 25 | +* MODBUS_EXCEPTION_ACKNOWLEDGE (5) | ||
| 26 | +* MODBUS_EXCEPTION_SLAVE_OR_SERVER_BUSY (6) | ||
| 27 | +* MODBUS_EXCEPTION_NEGATIVE_ACKNOWLEDGE (7) | ||
| 28 | +* MODBUS_EXCEPTION_MEMORY_PARITY (8) | ||
| 29 | +* MODBUS_EXCEPTION_NOT_DEFINED (9) | ||
| 30 | +* MODBUS_EXCEPTION_GATEWAY_PATH (10) | ||
| 31 | +* MODBUS_EXCEPTION_GATEWAY_TARGET (11) | ||
| 32 | + | ||
| 33 | +The initial request 'req' is required to build a valid response. | ||
| 34 | + | ||
| 35 | + | ||
| 36 | +RETURN VALUE | ||
| 37 | +------------ | ||
| 38 | +The _modbus_reply_exception()_ function shall return the length of the response sent if | ||
| 39 | +successful. Otherwise it shall return -1 and set errno. | ||
| 40 | + | ||
| 41 | + | ||
| 42 | +ERRORS | ||
| 43 | +------ | ||
| 44 | +EINVAL:: | ||
| 45 | +The exception code is invalid | ||
| 46 | + | ||
| 47 | + | ||
| 48 | +SEE ALSO | ||
| 49 | +-------- | ||
| 50 | +linkmb:modbus_reply[3] | ||
| 51 | +linkmb:libmodbus[7] | ||
| 52 | + | ||
| 53 | + | ||
| 54 | +AUTHORS | ||
| 55 | +------- | ||
| 56 | +The libmodbus documentation was written by Stéphane Raimbault | ||
| 57 | +<stephane.raimbault@gmail.com> |
doc/modbus_set_bits_from_byte.txt
0 → 100644
| 1 | +modbus_set_bits_from_byte(3) | ||
| 2 | +============================ | ||
| 3 | + | ||
| 4 | + | ||
| 5 | +NAME | ||
| 6 | +---- | ||
| 7 | +modbus_set_bits_from_byte - set many bits from a single byte value | ||
| 8 | + | ||
| 9 | + | ||
| 10 | +SYNOPSIS | ||
| 11 | +-------- | ||
| 12 | +*void modbus_set_bits_from_byte(uint8_t *'dest', int 'index', const uint8_t 'value');* | ||
| 13 | + | ||
| 14 | + | ||
| 15 | +DESCRIPTION | ||
| 16 | +----------- | ||
| 17 | +The _modbus_set_bits_from_byte_ function shall set many bits from a single byte. | ||
| 18 | +All 8 bits from the byte 'value' will be written to 'dest' array starting at | ||
| 19 | +'index' position. | ||
| 20 | + | ||
| 21 | + | ||
| 22 | +RETURN VALUE | ||
| 23 | +------------ | ||
| 24 | +There is no return values. | ||
| 25 | + | ||
| 26 | + | ||
| 27 | +SEE ALSO | ||
| 28 | +-------- | ||
| 29 | +linkmb:modbus_set_bits_from_byte[3] | ||
| 30 | +linkmb:modbus_set_bits_from_bytes[3] | ||
| 31 | + | ||
| 32 | + | ||
| 33 | +AUTHORS | ||
| 34 | +------- | ||
| 35 | +The libmodbus documentation was written by Stéphane Raimbault | ||
| 36 | +<stephane.raimbault@gmail.com> |
doc/modbus_set_bits_from_bytes.txt
0 → 100644
| 1 | +modbus_set_bits_from_bytes(3) | ||
| 2 | +============================ | ||
| 3 | + | ||
| 4 | + | ||
| 5 | +NAME | ||
| 6 | +---- | ||
| 7 | +modbus_set_bits_from_bytes - set many bits from an array of bytes | ||
| 8 | + | ||
| 9 | + | ||
| 10 | +SYNOPSIS | ||
| 11 | +-------- | ||
| 12 | +*void modbus_set_bits_from_bytes(uint8_t *'dest', int 'index', unsigned int 'nb_bits', const uint8_t *'tab_byte');* | ||
| 13 | + | ||
| 14 | + | ||
| 15 | +DESCRIPTION | ||
| 16 | +----------- | ||
| 17 | +The _modbus_set_bits_from_bytes_ function shall set bits by reading an array of | ||
| 18 | +bytes. All the bits of the bytes read from the first position of the array | ||
| 19 | +'tab_byte' are written as bits in the 'dest' array starting at position 'index'. | ||
| 20 | + | ||
| 21 | + | ||
| 22 | +RETURN VALUE | ||
| 23 | +------------ | ||
| 24 | +There is no return values. | ||
| 25 | + | ||
| 26 | + | ||
| 27 | +SEE ALSO | ||
| 28 | +-------- | ||
| 29 | +linkmb:modbus_set_bits_from_byte[3] | ||
| 30 | +linkmb:modbus_get_byte_from_bits[3] | ||
| 31 | + | ||
| 32 | + | ||
| 33 | +AUTHORS | ||
| 34 | +------- | ||
| 35 | +The libmodbus documentation was written by Stéphane Raimbault | ||
| 36 | +<stephane.raimbault@gmail.com> |
doc/modbus_set_float.txt
0 → 100644
| 1 | +modbus_set_float(3) | ||
| 2 | +=================== | ||
| 3 | + | ||
| 4 | + | ||
| 5 | +NAME | ||
| 6 | +---- | ||
| 7 | +modbus_set_float - set a float value | ||
| 8 | + | ||
| 9 | + | ||
| 10 | +SYNOPSIS | ||
| 11 | +-------- | ||
| 12 | +*void modbus_set_float(float 'f', uint16_t *'dest');* | ||
| 13 | + | ||
| 14 | + | ||
| 15 | +DESCRIPTION | ||
| 16 | +----------- | ||
| 17 | +The _modbus_set_float()_ function shall set a float to 4 bytes in Modbus | ||
| 18 | +format. The 'dest' array must be pointer on two 16 bits values to be able to | ||
| 19 | +store the full result of the conversion. | ||
| 20 | + | ||
| 21 | + | ||
| 22 | +RETURN VALUE | ||
| 23 | +------------ | ||
| 24 | +The is no return values. | ||
| 25 | + | ||
| 26 | + | ||
| 27 | +SEE ALSO | ||
| 28 | +-------- | ||
| 29 | +linkmb:modbus_set_float[3] | ||
| 30 | + | ||
| 31 | + | ||
| 32 | +AUTHORS | ||
| 33 | +------- | ||
| 34 | +The libmodbus documentation was written by Stéphane Raimbault | ||
| 35 | +<stephane.raimbault@gmail.com> |
src/modbus-data.c
| @@ -27,25 +27,25 @@ | @@ -27,25 +27,25 @@ | ||
| 27 | 27 | ||
| 28 | /* Sets many bits from a single byte value (all 8 bits of the byte value are | 28 | /* Sets many bits from a single byte value (all 8 bits of the byte value are |
| 29 | set) */ | 29 | set) */ |
| 30 | -void modbus_set_bits_from_byte(uint8_t *dest, int address, const uint8_t value) | 30 | +void modbus_set_bits_from_byte(uint8_t *dest, int index, const uint8_t value) |
| 31 | { | 31 | { |
| 32 | int i; | 32 | int i; |
| 33 | 33 | ||
| 34 | for (i=0; i<8; i++) { | 34 | for (i=0; i<8; i++) { |
| 35 | - dest[address+i] = (value & (1 << i)) ? 1 : 0; | 35 | + dest[index+i] = (value & (1 << i)) ? 1 : 0; |
| 36 | } | 36 | } |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | -/* Sets many bits from a table of bytes (only the bits between address and | ||
| 40 | - address + nb_bits are set) */ | ||
| 41 | -void modbus_set_bits_from_bytes(uint8_t *dest, int address, unsigned int nb_bits, | 39 | +/* Sets many bits from a table of bytes (only the bits between index and |
| 40 | + index + nb_bits are set) */ | ||
| 41 | +void modbus_set_bits_from_bytes(uint8_t *dest, int index, unsigned int nb_bits, | ||
| 42 | const uint8_t *tab_byte) | 42 | const uint8_t *tab_byte) |
| 43 | { | 43 | { |
| 44 | int i; | 44 | int i; |
| 45 | int shift = 0; | 45 | int shift = 0; |
| 46 | 46 | ||
| 47 | - for (i = address; i < address + nb_bits; i++) { | ||
| 48 | - dest[i] = tab_byte[(i - address) / 8] & (1 << shift) ? 1 : 0; | 47 | + for (i = index; i < index + nb_bits; i++) { |
| 48 | + dest[i] = tab_byte[(i - index) / 8] & (1 << shift) ? 1 : 0; | ||
| 49 | /* gcc doesn't like: shift = (++shift) % 8; */ | 49 | /* gcc doesn't like: shift = (++shift) % 8; */ |
| 50 | shift++; | 50 | shift++; |
| 51 | shift %= 8; | 51 | shift %= 8; |
| @@ -54,7 +54,7 @@ void modbus_set_bits_from_bytes(uint8_t *dest, int address, unsigned int nb_bits | @@ -54,7 +54,7 @@ void modbus_set_bits_from_bytes(uint8_t *dest, int address, unsigned int nb_bits | ||
| 54 | 54 | ||
| 55 | /* Gets the byte value from many bits. | 55 | /* Gets the byte value from many bits. |
| 56 | To obtain a full byte, set nb_bits to 8. */ | 56 | To obtain a full byte, set nb_bits to 8. */ |
| 57 | -uint8_t modbus_get_byte_from_bits(const uint8_t *src, int address, | 57 | +uint8_t modbus_get_byte_from_bits(const uint8_t *src, int index, |
| 58 | unsigned int nb_bits) | 58 | unsigned int nb_bits) |
| 59 | { | 59 | { |
| 60 | int i; | 60 | int i; |
| @@ -67,7 +67,7 @@ uint8_t modbus_get_byte_from_bits(const uint8_t *src, int address, | @@ -67,7 +67,7 @@ uint8_t modbus_get_byte_from_bits(const uint8_t *src, int address, | ||
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | for (i=0; i < nb_bits; i++) { | 69 | for (i=0; i < nb_bits; i++) { |
| 70 | - value |= (src[address+i] << i); | 70 | + value |= (src[index+i] << i); |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | return value; | 73 | return value; |
src/modbus.c
| @@ -632,7 +632,7 @@ static int response_exception(modbus_t *ctx, sft_t *sft, | @@ -632,7 +632,7 @@ static int response_exception(modbus_t *ctx, sft_t *sft, | ||
| 632 | return rsp_length; | 632 | return rsp_length; |
| 633 | } | 633 | } |
| 634 | 634 | ||
| 635 | -/* Send a response to the receive request. | 635 | +/* Send a response to the received request. |
| 636 | Analyses the request and constructs a response. | 636 | Analyses the request and constructs a response. |
| 637 | 637 | ||
| 638 | If an error occurs, this function construct the response | 638 | If an error occurs, this function construct the response |
src/modbus.h
| @@ -208,10 +208,10 @@ int modbus_reply_exception(modbus_t *ctx, const uint8_t *req, | @@ -208,10 +208,10 @@ int modbus_reply_exception(modbus_t *ctx, const uint8_t *req, | ||
| 208 | tab_int8[(index) + 1] = (value) & 0xFF; \ | 208 | tab_int8[(index) + 1] = (value) & 0xFF; \ |
| 209 | } while (0) | 209 | } while (0) |
| 210 | 210 | ||
| 211 | -void modbus_set_bits_from_byte(uint8_t *dest, int address, const uint8_t value); | ||
| 212 | -void modbus_set_bits_from_bytes(uint8_t *dest, int address, unsigned int nb_bits, | 211 | +void modbus_set_bits_from_byte(uint8_t *dest, int index, const uint8_t value); |
| 212 | +void modbus_set_bits_from_bytes(uint8_t *dest, int index, unsigned int nb_bits, | ||
| 213 | const uint8_t *tab_byte); | 213 | const uint8_t *tab_byte); |
| 214 | -uint8_t modbus_get_byte_from_bits(const uint8_t *src, int address, unsigned int nb_bits); | 214 | +uint8_t modbus_get_byte_from_bits(const uint8_t *src, int index, unsigned int nb_bits); |
| 215 | float modbus_get_float(const uint16_t *src); | 215 | float modbus_get_float(const uint16_t *src); |
| 216 | void modbus_set_float(float f, uint16_t *dest); | 216 | void modbus_set_float(float f, uint16_t *dest); |
| 217 | 217 |