I would agree that the best design of this kind of machine-to-machine communication shoud be something compariable, something easy to parse, so error code is good and error message is not good. But here I need a balance between over design and functionality, you know, for nearly all these D-Bus functions, only one boolean return value is enough according to the current feature requirement. I added one more message value just in case we need some other info in the future.
If we really need the error code or any other things, let's extend the protocol since the protocol is not a spec but private and used only by ourselves, just like all those function calls. WDYT?