Method to get the name of the Callback registered in the Task
georgevbsantiago opened this issue · 8 comments
Hello @arkhipenko
First of all, THANK YOU SO MUCH for this fantastic library!!!
A doubt. Is there a method to get the current callback name of the task?
In this case, when we use Task as a finite state machine, it would be interesting to know which Callback is registered in Task.
Ex:
void function_01 () { ... }
void function_02 () { ... }
void function_03 () { ... }
task.setCallback(&function_01);
...
task.setCallback(&function_02);
....
task.setCallback(&function_03);
....
if( equal(task.getCallback(), &function_02) ) {
....
}
I never needed this functionality and it was not asked for until now, hence it does not exist in the current version.
I'm using Task as a finite state machine to manage the messages on the 20x04 Display.
The need to know which Callback is registered in the Task arose from the need to know which message was being viewed on the Display.
If a 'getCallback' method is made available in a future version, it would be possible to identify the current Callback registered in the Task.
Thanks.
I got this idea (to use the Task to visualize the messages on the 20x04 Display) after reading this example from the documentation.
2. "Native" support for finite state machine
https://github.com/arkhipenko/TaskScheduler/wiki/Implementation-scenarios-and-ideas/#2-native-support-for-finite-state-machine
If a 'getCallback' method is made available in a future version, it would be possible to identify the current Callback registered in the Task.
The callback is a piece of code, not an object, so it can not really hold a "name". I can have Tasks return a pointer to the current callbacks, and you would need to compare to known pointers to figure out which one is assigned.
Would that satisfy your requirement?
Hi, I believe so.
What would be the proper approach to purchasing the 'getCallback' method with the compared function pointer?
Something like? : task.getCallback() == &function_02
Yes, something like that I guess.
I'm a beginner in C++, but maybe this post can help:
https://stackoverflow.com/questions/12898227/comparing-function-pointers