I see two possible ways to approach this issue.
The first would be to create two separate Msgs for each, Start A and Start B.
When the reentrant waveform Module goes active It figures out which type of module it is A or B and then registers to receive only those Msgs.
The second would be to design one Start Msg with an enum that indicates the start type.
The waveform module would have to figure out it's correct start enum setting.
When the UI sends the start Msg it sets the enum to the correct type.
Both reentrant waveform module A and B receive the Msg but if the enum is not the correct type for that module it is ignored.
Both methods require that the module have some way of discovering what Msgs it cares about or what specific waveform module it is.
This will create some additional coding to make the module more intelligent.
The benefit IMHO is you have a very loosely coupled, more reusable, debug able, testable module.
Aside from the framework parent class dependencies, Each module is stand alone and totally independent of its caller or callees.
It's up to the module developer to figure out how to register, react and send the correct Msgs.
Hope this helps
Thanks for reviewing the framework
Mark