In all the solutions I've reviewed and analyzed the generated code is not customizable and in most cases not really suitable for embedded systems, especially bare-metal ones. There are no means to introduce some compile or generation time updates such as configuring polymorphic interfaces required for a particular application or choosing particular data structures, disable usage of RTTI or exceptions, etc... The code generated by all the tools still requires a significant amount of integration boilerplate code to be written. All of the available solutions focus on supporting multiple programming languages in their code generation rather than a quality of the code for a particular language (C++ in my case).
At the end I didn't have much choice but to implement my own C++ and embedded systems focused solution. It's called CommsChampion Ecosystem (https://arobenko.github.io/cc/). There is a good introduction article on CodeProject (https://www.codeproject.com/Articles/1278887/Implementing-Binary-Communication-Protocols-in-Cpl) which explains the main motivation and provides a high level overview of the presented solution.