New function modbus_reply_callback()#319
Conversation
The modbus_reply_callback() function is modelled iclosely on modbus_reply(), but should be used when more complex actions are required for handling Modbus functions that what is possible with the current mapping scheme.
|
Thank you for your patch and the very good documentation. I think we can achieve the same behaviour with #323. It would be nice if you could participate to this new feature (tests, docs, whatever), I'm intend to talk about that on the mailing list... stay tuned. |
|
It has been a while since I coded this together for a project and only recently managed to push it. I agree that there are some duplication in the code. However, when I started to make this I did try to look at some way to reduce the duplication. There were a few reasons why I ended up with what I did:
I am no longer involved in the project which spawned this patch, but I will try to contribute in any way I can. |
msinttypes moved to GitHub, so change URL accordingly.
Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
Signed-off-by: Stéphane Raimbault <stephane.raimbault@gmail.com>
Related to 52ab1bb. The arguments have been changed (see documentation). https://groups.google.com/d/msg/libmodbus/aXO8nBzW4Ew/uVGTDmvvBAAJ
Thanks to Karl Palsson.
Thanks to Rüdiger Ranft for the idea.
Thanks to paperwork
Making all in src
CC modbus.lo
CC modbus-data.lo
modbus-data.c:51:5: attention : #warning "Fallback on C functions for bswap_16" [-Wcpp]
# warning "Fallback on C functions for bswap_16"
^
modbus-data.c:52:24: erreur: redefinition of ‘bswap_16’
static inline uint16_t bswap_16(uint16_t x)
|
I tried pushing four changes to this fork to address your concern, but it looks like I ended up with a merge mess. Does the changes make sense or should I start from scratch? |
Based on @frodete's proposal (stephane#319) a more minimalistic implementation of a callback-based reply-function. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done.
Based on @frodete's proposal (stephane#319) a more minimalistic implementation of a callback-based reply-function. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done.
Based on @frodete's proposal (stephane#319) a more minimalistic implementation of a callback-based reply-function. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done.
Based on @frodete's proposal (stephane#319) a more minimalistic implementation of a callback-based reply-function. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done.
Based on @frodete's proposal (stephane#319) this implementation adds a a callback-based reply-functionality. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done. Also adds a MODBUS_SLAVE_ACCEPT_ALL "address", which can be used with modbus_set_slave(). This makes the modbus_receive()-function accept all requests, independently of the slave-address found in the decoded-request. Useful for multi-slave-implementation using libmodbus.
Based on @frodete's proposal (stephane#319) this implementation adds a a callback-based reply-functionality. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done. Also adds a MODBUS_SLAVE_ACCEPT_ALL "address", which can be used with modbus_set_slave(). This makes the modbus_receive()-function accept all requests, independently of the slave-address found in the decoded-request. Useful for multi-slave-implementation using libmodbus.
Based on @frodete's proposal (stephane#319) this implementation adds a a callback-based reply-functionality. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done. Also adds a MODBUS_SLAVE_ACCEPT_ALL "address", which can be used with modbus_set_slave(). This makes the modbus_receive()-function accept all requests, independently of the slave-address found in the decoded-request. Useful for multi-slave-implementation using libmodbus.
Based on @frodete's proposal (stephane#319) this implementation adds a a callback-based reply-functionality. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done. Also adds a MODBUS_SLAVE_ACCEPT_ALL "address", which can be used with modbus_set_slave(). This makes the modbus_receive()-function accept all requests, independently of the slave-address found in the decoded-request. Useful for multi-slave-implementation using libmodbus.
Based on @frodete's proposal (stephane#319) this implementation adds a a callback-based reply-functionality. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done. Also adds a MODBUS_SLAVE_ACCEPT_ALL "address", which can be used with modbus_set_slave(). This makes the modbus_receive()-function accept all requests, independently of the slave-address found in the decoded-request. Useful for multi-slave-implementation using libmodbus.
Based on @frodete's proposal (stephane#319) this implementation adds a a callback-based reply-functionality. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done. Also adds a MODBUS_SLAVE_ACCEPT_ALL "address", which can be used with modbus_set_slave(). This makes the modbus_receive()-function accept all requests, independently of the slave-address found in the decoded-request. Useful for multi-slave-implementation using libmodbus.
Based on @frodete's proposal (stephane#319) this implementation adds a a callback-based reply-functionality. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done. Also adds a MODBUS_SLAVE_ACCEPT_ALL "address", which can be used with modbus_set_slave(). This makes the modbus_receive()-function accept all requests, independently of the slave-address found in the decoded-request. Useful for multi-slave-implementation using libmodbus.
Based on @frodete's proposal (stephane#319) this implementation adds a a callback-based reply-functionality. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done. Also adds a MODBUS_SLAVE_ACCEPT_ALL "address", which can be used with modbus_set_slave(). This makes the modbus_receive()-function accept all requests, independently of the slave-address found in the decoded-request. Useful for multi-slave-implementation using libmodbus.
Based on @frodete's proposal (stephane#319) this implementation adds a a callback-based reply-functionality. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done. Also adds a MODBUS_SLAVE_ACCEPT_ALL "address", which can be used with modbus_set_slave(). This makes the modbus_receive()-function accept all requests, independently of the slave-address found in the decoded-request. Useful for multi-slave-implementation using libmodbus.
Based on @frodete's proposal (stephane#319) this implementation adds a a callback-based reply-functionality. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done. Also adds a MODBUS_SLAVE_ACCEPT_ALL "address", which can be used with modbus_set_slave(). This makes the modbus_receive()-function accept all requests, independently of the slave-address found in the decoded-request. Useful for multi-slave-implementation using libmodbus.
Based on @frodete's proposal (stephane#319) this implementation adds a a callback-based reply-functionality. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done. Also adds a MODBUS_SLAVE_ACCEPT_ALL "address", which can be used with modbus_set_slave(). This makes the modbus_receive()-function accept all requests, independently of the slave-address found in the decoded-request. Useful for multi-slave-implementation using libmodbus.
Based on @frodete's proposal (stephane#319) this implementation adds a a callback-based reply-functionality. The old mapping-implementation is now based on this version. As a nice side-effect some DRY code optimizations could have been done. Also adds a MODBUS_SLAVE_ACCEPT_ALL "address", which can be used with modbus_set_slave(). This makes the modbus_receive()-function accept all requests, independently of the slave-address found in the decoded-request. Useful for multi-slave-implementation using libmodbus.
The modbus_reply_callback() function is modelled closely on modbus_reply(),
but should be used when more complex actions are required for handling
Modbus functions that what is possible with the current mapping scheme.