Message ID | 20220725080549.4163484-1-michal.lowas-rzechonek@silvair.com |
---|---|
State | New |
Headers | show |
Series | [BlueZ,v2] mesh: Set global bus earlier | expand |
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
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; + /* 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); + if (dbus_debug) l_dbus_set_debug(dbus, do_debug, "[DBUS] ", NULL); l_dbus_set_ready_handler(dbus, ready_callback, dbus, NULL);