RE: [PATCH BlueZ v5] tools/meshctl: Fix default directory for JSON files

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Raul,

-----Original Message-----
> From: linux-bluetooth-owner@xxxxxxxxxxxxxxx [mailto:linux-bluetooth-
> owner@xxxxxxxxxxxxxxx] On Behalf Of Raul Piper
> Sent: Wednesday, September 12, 2018 10:33 AM
> To: luiz.dentz@xxxxxxxxx
> Cc: Stotland, Inga <inga.stotland@xxxxxxxxx>; linux-
> bluetooth@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH BlueZ v5] tools/meshctl: Fix default directory for JSON
> files
> 
> Hello ,
> On Fri, Aug 31, 2018 at 7:57 PM Luiz Augusto von Dentz
> <luiz.dentz@xxxxxxxxx> wrote:
> >
> > Hi Inga,
> >
> > On Wed, Aug 29, 2018 at 9:25 PM, Inga Stotland <inga.stotland@xxxxxxxxx>
> wrote:
> > > This fixes the name of default directory that contains sample JSON files.
> > > README file is updated to describe the default location.
> > > ---
> > >  tools/mesh/README | 19 +++++++++++++-
> > >  tools/meshctl.c   | 65 ++++++++++++++++++++++++++++++++-----------
> ----
> > >  2 files changed, 62 insertions(+), 22 deletions(-)
> > >
> > > diff --git a/tools/mesh/README b/tools/mesh/README index
> > > ea561efc8..44d633313 100644
> > > --- a/tools/mesh/README
> > > +++ b/tools/mesh/README
> > > @@ -1,5 +1,5 @@
> > >  MeshCtl - BlueZ GATT based Bluetooth Mesh Provisioner
> > > -******************************************
> > > +*****************************************************
> > >
> > >  Copyright (C) 2017  Intel Corporation. All rights reserved.
> > >
> > > @@ -16,6 +16,23 @@ Configuration and options
> > >
> > >                 Build meshctl and other Bluetooth Mesh based tools
> > > and utils
> > >
> > > +Example configuration files
> > > +===========================
> > > +
> > > +The MeshCtl tool requires two input configuration files in JSON format:
> > > +       - local_node.json
> > > +               Local mesh node configuration
> > > +       - prov_db.json
> > > +               Provisoner's database for all the configured nodes
> > > +in the mesh
> > > +
> > > +The default directory for MeshCtl configuration files is
> > > +/home/<username>/.config/meshctl
> > > +
> > > +To use .json configuration files either copy them to the default
> > > +directory or, to specify a custom storage directory, run meshctl tool as:
> > > +
> > > +       meshctl -c <config_dir_name>
> > > +
> > >  Information
> > >  ===========
> > >
> > > diff --git a/tools/meshctl.c b/tools/meshctl.c index
> > > 3e1484f61..55e25a56e 100644
> > > --- a/tools/meshctl.c
> > > +++ b/tools/meshctl.c
> > > @@ -72,6 +72,8 @@
> > >  #define MESH_PROXY_DATA_IN_UUID_STR    "00002add-0000-1000-
> 8000-00805f9b34fb"
> > >  #define MESH_PROXY_DATA_OUT_UUID_STR   "00002ade-0000-1000-
> 8000-00805f9b34fb"
> > >
> > > +#define MESHCTL_CONFIG_DIR     "meshctl"
> > > +
> > >  static DBusConnection *dbus_conn;
> > >
> > >  struct adapter {
> > > @@ -1873,7 +1875,7 @@ static const struct bt_shell_menu main_menu =
> {
> > >         { } },
> > >  };
> > >
> > > -static const char *mesh_config_dir;
> > > +static const char *config_dir;
> > >
> > >  static const struct option options[] = {
> > >         { "config",     required_argument, 0, 'c' },
> > > @@ -1881,7 +1883,7 @@ static const struct option options[] = {  };
> > >
> > >  static const char **optargs[] = {
> > > -       &mesh_config_dir
> > > +       &config_dir
> > >  };
> > >
> > >  static const char *help[] = {
> > > @@ -1907,38 +1909,57 @@ int main(int argc, char *argv[])
> > >         int status;
> > >         int len;
> > >         int extra;
> > > +       char *mesh_dir = NULL;
> > >
> > >         bt_shell_init(argc, argv, &opt);
> > >         bt_shell_set_menu(&main_menu);
> > >         bt_shell_set_prompt(PROMPT_OFF);
> > >
> > > -       if (!mesh_config_dir) {
> > > -               bt_shell_printf("Local config directory not provided.\n");
> > > -               mesh_config_dir = "";
> > > +       if (!config_dir) {
> > > +               char *home;
> > > +
> > > +               home = getenv("XDG_CONFIG_HOME");
> > > +               if (home) {
> > > +                       mesh_dir = g_strdup_printf("%s/%s", home,
> > > +                                                       MESHCTL_CONFIG_DIR);
> > > +               }
> > > +
> > > +               if (!mesh_dir) {
> > > +                       home = getenv("HOME");
> > > +                       mesh_dir = g_strdup_printf("%s/.config/%s", home,
> > > +                                                       MESHCTL_CONFIG_DIR);
> > > +               }
> > > +
> > > +               if (!mesh_dir) {
> > > +                       g_printerr("Configuration directory not found\n");
> > > +                       goto fail;
> > > +               }
> > > +
> > >         } else {
> > > -               bt_shell_printf("Reading prov_db.json and local_node.json
> from"
> > > -                               " %s\n", mesh_config_dir);
> > > +               mesh_dir = g_strdup_printf("%s", config_dir);
> > >         }
> > >
> > > -       len = strlen(mesh_config_dir);
> > > -       if (len && mesh_config_dir[len - 1] != '/') {
> > > +
> > > +       g_print("Reading prov_db.json and local_node.json from %s
> > > + directory\n",
> > > +
> > > + mesh_dir);
> > > +
> > > +       len = strlen(mesh_dir);
> > > +
> > > +       if (len && mesh_dir[len - 1] != '/')
> > >                 extra = 1;
> > > -               bt_shell_printf("mesh_config_dir[%d] %s\n", len,
> > > -                                               &mesh_config_dir[len - 1]);
> > > -       } else {
> > > +       else
> > >                 extra = 0;
> > > -       }
> > > +
> > >         mesh_local_config_filename = g_malloc(len +
> strlen("local_node.json")
> > >                                                                         + 2);
> > >         if (!mesh_local_config_filename)
> > >                 goto fail;
> > >
> > >         mesh_prov_db_filename = g_malloc(len + strlen("prov_db.json") +
> 2);
> > > -       if (!mesh_prov_db_filename) {
> > > +       if (!mesh_prov_db_filename)
> > >                 goto fail;
> > > -       }
> > >
> > > -       sprintf(mesh_local_config_filename, "%s", mesh_config_dir);
> > > +       sprintf(mesh_local_config_filename, "%s", mesh_dir);
> > >
> > >         if (extra)
> > >                 sprintf(mesh_local_config_filename + len , "%c",
> > > '/'); @@ -1946,7 +1967,6 @@ int main(int argc, char *argv[])
> > >         sprintf(mesh_local_config_filename + len + extra, "%s",
> > >                                                         "local_node.json");
> > >         len = len + extra + strlen("local_node.json");
> > > -       sprintf(mesh_local_config_filename + len, "%c", '\0');
> > >
> > >         if (!prov_db_read_local_node(mesh_local_config_filename, true)) {
> > >                 g_printerr("Failed to parse local node configuration
> > > file %s\n", @@ -1954,14 +1974,15 @@ int main(int argc, char *argv[])
> > >                 goto fail;
> > >         }
> > >
> > > -       sprintf(mesh_prov_db_filename, "%s", mesh_config_dir);
> > > -       len = strlen(mesh_config_dir);
> > > +       sprintf(mesh_prov_db_filename, "%s", mesh_dir);
> > > +       len = strlen(mesh_dir);
> > > +
> > > +       g_free(mesh_dir);
> > > +
> > >         if (extra)
> > >                 sprintf(mesh_prov_db_filename + len , "%c", '/');
> > >
> > >         sprintf(mesh_prov_db_filename + len + extra, "%s",
> "prov_db.json");
> > > -       sprintf(mesh_prov_db_filename + len + extra +
> strlen("prov_db.json"),
> > > -                                                               "%c", '\0');
> > >
> > >         if (!prov_db_read(mesh_prov_db_filename)) {
> > >                 g_printerr("Failed to parse provisioning database
> > > file %s\n", @@ -2006,5 +2027,7 @@ int main(int argc, char *argv[])
> > >
> > >  fail:
> > >         bt_shell_cleanup();
> > > +       g_free(mesh_dir);
> > > +
> > >         return EXIT_FAILURE;
> > >  }
> > > --
> > > 2.17.1
> >
> > Applied, thanks.
> >
> >
> > --
> > Luiz Augusto von Dentz
> 
> Is there a PB_ADV support in meshctl for provisioning?If not any plan in
> future?

PB-ADV support will *not* be added to meshctl, however, we *will* be adding Provisioning support to btmesh and meshd. This work is underway now, although we do need to wait for a few things in the Working Group to become "Official" regarding the database.

> 
> Br,
> Rp




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux