Thank you for this @PerrineAguiar . I think it is good as is.
Only a couple of optional suggestions:
I think since this is an inner interface inside a class that is already called TangoServiceSomething, it is not necessary to add the TangoService prefix to the interface name, imho.
One alternative way to cover for the case where no listener is set is to create a DefaultCallbackListener class that doesn't do anything (or that logs a message indicating no callback for each method), and set a new instance of a DefaultCallbackListener by default. This has the added benefit that if someone wants to implement only a given listener, they can extend the DefaultCallbackListener and only override the functions that the user is interested in overriding - vs. implementing an interface which forces the user to implement all methods.
Fixes #308.