Hi Eramoto, Marcin, On Fri, Sep 22, 2017 at 9:27 AM, ERAMOTO Masaya <eramoto.masaya@xxxxxxxxxxxxxx> wrote: > Hi Marcin, > >> +#ifdef HAVE_CONFIG_H >> +#include <config.h> >> +#endif >> + >> +#include <stdio.h> >> +#include "src/shared/util.h" >> +#include "src/shared/queue.h" >> +#include "src/shared/bt_shell.h" >> + >> +#define CMD_LENGTH 48 >> + >> +static struct { >> + const struct bt_shell_menu_entry *current; >> +} bt_shell_data; >> + >> +bool bt_shell_init(const struct bt_shell_menu_entry *menu) >> +{ >> + if (bt_shell_data.current || !menu) >> + return false; >> + >> + bt_shell_data.current = menu; >> + >> + return true; >> +} >> + >> +void bt_shell_cleanup(void) >> +{ >> + bt_shell_data.current = NULL; >> +} >> + >> +void bt_shell_process(const char *cmd, const char *arg) >> +{ >> + const struct bt_shell_menu_entry *entry; >> + >> + if (!bt_shell_data.current || !cmd) >> + return; >> + >> + for (entry = bt_shell_data.current; entry->cmd; entry++) { >> + if (strcmp(cmd, entry->cmd)) >> + continue; >> + >> + if (entry->func) { >> + entry->func(arg); >> + return; >> + } >> + } >> + >> + if (strcmp(cmd, "help")) { >> + printf("Invalid command\n"); >> + return; >> + } >> + >> + bt_shell_print_menu(); >> +} >> + >> +void bt_shell_print_menu(void) >> +{ >> + const struct bt_shell_menu_entry *entry; >> + >> + if (!bt_shell_data.current) >> + return; >> + >> + printf("Available commands:\n"); >> + for (entry = bt_shell_data.current; entry->cmd; entry++) { >> + printf(" %s %-*s %s\n", entry->cmd, >> + (int)(CMD_LENGTH - strlen(entry->cmd)), >> + entry->arg ? : "", entry->desc ? : ""); > > > I think that it is better to > - add some white-spaces > or > - add a new line > between the argument string and the description string, because it is a little > difficult for the help of register-characteristic to read as below: > > [bluetooth]# help > Available commands: > ... > unregister-service <UUID/object> Unregister application service > register-characteristic <UUID> <Flags=read,write,notify...> Register application characteristic > unregister-characteristic <UUID/object> Unregister application characteristic > register-descriptor <UUID> <Flags=read,write...> Register application descriptor It should probably have the same formatting as bluetoothctl: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/client/main.c#n2677 -- Luiz Augusto von Dentz -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html