Re: [PATCH 1/4] shared/bt_shell: Add initial implementation

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

 



Hi Luiz,

>>>>>>> +#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/ma
>>>>> in.c#n2677
>>>>> 
>>>>> --
>>>>> Luiz Augusto von Dentz
>>>> 
>>>> Yes, I'll correct it
>>> 
>>> Are you still working on this?
>>> 
>> No, unfortunatelly I don't have enough time to finish it.
> 
> Ok, so I will start working on it myself.

just a side note, lets do src/shared/shell.[ch] and not start with bt_ prefixes in file names.

Regards

Marcel

--
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



[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