Hi Michał, On Mon, 2022-07-25 at 10:05 +0200, Michał Lowas-Rzechonek wrote: > Some io implementations might want to either make calls to other D- > Bus > services, or provide additional objects/interfaces that allow > applications to fine-tune their operation, so allow them to use the > bus > even before initializing mesh D-Bus interfaces. > --- > mesh/dbus.c | 8 ++++++++ > mesh/dbus.h | 1 + > mesh/main.c | 2 ++ > 3 files changed, 11 insertions(+) > > diff --git a/mesh/dbus.c b/mesh/dbus.c > index a7abdc428..6e62abd27 100644 > --- a/mesh/dbus.c > +++ b/mesh/dbus.c > @@ -75,6 +75,11 @@ struct l_dbus_message *dbus_error(struct > l_dbus_message *msg, int err, > "%s", error_table[err].default_desc); > } > > +void dbus_set_bus(struct l_dbus *bus) > +{ > + dbus = bus; > +} > + > struct l_dbus *dbus_get_bus(void) > { > return dbus; > @@ -82,6 +87,9 @@ struct l_dbus *dbus_get_bus(void) > > bool dbus_init(struct l_dbus *bus) > { > + if (dbus != bus) > + return false; > + Since dbus_set_bus() is called prior to dbus_init(), wouldn't it make sense to eliminate an input parameter for dbus_init() and to perform a check (dbus != NULL) and also eliminate "dbus = bus" statement at the end of dbus_init()? > /* Network interface */ > if (!mesh_dbus_init(bus)) > return false; > diff --git a/mesh/dbus.h b/mesh/dbus.h > index 8f00434d6..ab8b0a2cc 100644 > --- a/mesh/dbus.h > +++ b/mesh/dbus.h > @@ -14,6 +14,7 @@ > #define DEFAULT_DBUS_TIMEOUT 30 > > bool dbus_init(struct l_dbus *dbus); > +void dbus_set_bus(struct l_dbus *bus); > struct l_dbus *dbus_get_bus(void); > void dbus_append_byte_array(struct l_dbus_message_builder *builder, > const uint8_t *data, > int len); > diff --git a/mesh/main.c b/mesh/main.c > index dd99c3085..0180c3768 100644 > --- a/mesh/main.c > +++ b/mesh/main.c > @@ -278,6 +278,8 @@ int main(int argc, char *argv[]) > goto done; > } > > + dbus_set_bus(dbus); > + It is better to call dbus_set_bus from within ready_callback() > if (dbus_debug) > l_dbus_set_debug(dbus, do_debug, "[DBUS] ", NULL); > l_dbus_set_ready_handler(dbus, ready_callback, dbus, NULL); Best regards, Inga