Description
Hi,
i have implemented the use of erpc via can bus in my stm32 project.
As far as I can tell, the erpc IDL (erpcgen) tooling will generate fixed ID's for differentiating / managing the different rpc function calls. (id 0, 1, 2, 3 ... N).
When utilizing a (1:*)-Bus, the slaves on that bus can all receive the rpc data. Normally, bus arbitration is done via various addressing schemes (can, i2c, ethernet etc).
In some use case, it is not possible/desired to rely on bus arbitration and instead broadcast packages (erpc calls) (canId 0x00, ethernet x.x.x.255). The current implementation of erpc does not tolerate that, because the function calls on the server/client are only separated by whatever ID was generated via the IDL. If a client would send a rpc call with id 0, that function could travel to 3 different servers and they would all execute whatever 0
means for them (probably different functions altogether).
Is it feasible to change the ID utilized by the erpcgen IDL tool to be a hash (32+bits) to differentiate between message function types instead? The erpcgen tool could also work recursively through a project (containing .erpc files for all servers and clients in the system) to make sure, that each and every individual erpc function has a different id (hash) so that no hickups occur.
This would allow (or is the first step to a) multi server/client approach in transport agnostic systems.
Activity