floss: btclient: run commands only after adapter is ready
When btclient processes a command in a non-interactive mode, it can
only handle the commands that do not require the adapter readiness
for now.
In order to let btclient be able to handle commands that require the
adapter readiness, in this patch, both interactive and non-interactive
modes are processed in handle_client_command().
As one of the differences between the two modes, the interactive
shell is only started in the interactive mode.
In the non-interactive mode, the command is processed immediately
after the adapter becomes ready. If there is no callback to wait for
the command, btclient exits. Otherwise, btclient will need to wait
until the callback is invoked.
One thing worth noting is that any btclient command that has a
follow-up callback has to invoke the callback through
ForegroundActions::RunCallback(callback) so that the foreground
thread is aware of when to exit.
Bug: 288193772
Tag: #floss
Test: mma -j32
Test: Conduct the following manual tests.
$ btclient -c "media log"
> It needs the adapter readiness. It is able dump the media debug log.
$ btclient --command "media log" --timeout 2
> It needs the adapter readiness. It is able dump the media debug log.
It runs the command with a timeout of 2 seconds.
$ btclient -c "help"
> It does not need the adapter readiness. It shows the help menu
and exits immediately.
$ btclient -c "media"
> It shows “btclient:error: Invalid arguments” and exits immediately.
$ btclient -c "hello"
> It shows "'hello' is an invalid command!" and exits immediately.
Change-Id: Ieff642697b4fa5ba986b06ab945bc87d7ddc636a
Loading
Please register or sign in to comment