This is by no means trivial, I think.
Pedro Calado tried in the past some solutions.
I am not completely aware of his accomplished (I know he had some positive results, but I do not know how much fast, or if anything was degraded etc.). I know that he dropped his efforts as it wasn't easy and he other things to do first.
For us, in the past this was more important that it is now. When we need something we either test it in the real world, or use the simulations to test neptus, or other high-level stuff.
The simulation task is a thread that's launched by the task manager. Without putting much thought into this, it seems to me that you won't be able to manipulate time using an IMC Message that is launched by a task that, in itself, is managed by a class (task manager) that's working using "real" time - The DUNE core Time class provides the functions necessary to provide timestamps/delays
Forgive me if I use the wrong terms here, but I think there are two possible solutions:
a) Ricardo mentioned in a meeting this week, that it is possible to have something between OS time and DUNE time (using a linux library) (if I understood correctly, that is! :D)
b) Have a simulated clock and modify output of DUNE::Time classes depending on profile
Regards,
José Braga