From: Luiz Augusto von Dentz <[email protected]>
This adds transport.receive command:
Get/Set file to receive
Usage:
receive [filename]
---
client/player.c | 57 +++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 53 insertions(+), 4 deletions(-)
diff --git a/client/player.c b/client/player.c
index 315cde712..c2c10e7e2 100644
--- a/client/player.c
+++ b/client/player.c
@@ -81,10 +81,13 @@ static GList *transports = NULL;
struct transport {
int sk;
int mtu[2];
+ char *filename;
+ int fd;
struct io *io;
uint32_t seq;
} transport = {
.sk = -1,
+ .fd = -1,
};
static void endpoint_unregister(void *data)
@@ -2219,7 +2222,7 @@ static bool transport_disconnected(struct io *io, void *user_data)
static bool transport_recv(struct io *io, void *user_data)
{
uint8_t buf[1024];
- int ret;
+ int ret, len;
ret = read(io_get_fd(io), buf, sizeof(buf));
if (ret < 0) {
@@ -2232,6 +2235,13 @@ static bool transport_recv(struct io *io, void *user_data)
transport.seq++;
+ if (transport.fd) {
+ len = write(transport.fd, buf, ret);
+ if (len < 0)
+ bt_shell_printf("Unable to write: %s (%d)",
+ strerror(errno), -errno);
+ }
+
return true;
}
@@ -2451,13 +2461,17 @@ static void cmd_release_transport(int argc, char *argv[])
return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
-static int open_file(const char *filename)
+static int open_file(const char *filename, int flags)
{
int fd = -1;
bt_shell_printf("Opening %s ...\n", filename);
- fd = open(filename, O_RDONLY);
+ if (flags & O_CREAT)
+ fd = open(filename, flags, 0755);
+ else
+ fd = open(filename, flags);
+
if (fd <= 0)
bt_shell_printf("Can't open file %s: %s\n", filename,
strerror(errno));
@@ -2514,7 +2528,7 @@ static void cmd_send_transport(int argc, char *argv[])
return bt_shell_noninteractive_quit(EXIT_FAILURE);
}
- fd = open_file(argv[1]);
+ fd = open_file(argv[1], O_RDONLY);
bt_shell_printf("Sending ...\n");
err = transport_send(fd);
@@ -2527,6 +2541,38 @@ static void cmd_send_transport(int argc, char *argv[])
return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}
+static void transport_close(void)
+{
+ if (transport.fd < 0)
+ return;
+
+ close(transport.fd);
+ transport.fd = -1;
+
+ free(transport.filename);
+ transport.filename = NULL;
+}
+
+static void cmd_receive_transport(int argc, char *argv[])
+{
+ if (argc == 1) {
+ bt_shell_printf("Filename: %s\n", transport.filename);
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
+ }
+
+ transport_close();
+
+ transport.fd = open_file(argv[1], O_RDWR | O_CREAT);
+ if (transport.fd < 0)
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+
+ transport.filename = strdup(argv[1]);
+
+ bt_shell_printf("Filename: %s\n", transport.filename);
+
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
+}
+
static void volume_callback(const DBusError *error, void *user_data)
{
if (dbus_error_is_set(error)) {
@@ -2589,6 +2635,8 @@ static const struct bt_shell_menu transport_menu = {
transport_generator },
{ "send", "<filename>", cmd_send_transport,
"Send contents of a file" },
+ { "receive", "[filename]", cmd_receive_transport,
+ "Get/Set file to receive" },
{ "volume", "<transport> [value]", cmd_volume_transport,
"Get/Set transport volume",
transport_generator },
@@ -2617,4 +2665,5 @@ void player_add_submenu(void)
void player_remove_submenu(void)
{
g_dbus_client_unref(client);
+ transport_close();
}
--
2.35.1
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=635861
---Test result---
Test Summary:
CheckPatch PASS 1.50 seconds
GitLint FAIL 1.01 seconds
Prep - Setup ELL PASS 42.35 seconds
Build - Prep PASS 0.70 seconds
Build - Configure PASS 8.43 seconds
Build - Make PASS 1357.65 seconds
Make Check PASS 11.97 seconds
Make Check w/Valgrind PASS 441.40 seconds
Make Distcheck PASS 226.99 seconds
Build w/ext ELL - Configure PASS 8.58 seconds
Build w/ext ELL - Make PASS 1358.19 seconds
Incremental Build with patchesPASS 0.00 seconds
Details
##############################
Test: GitLint - FAIL
Desc: Run gitlint with rule in .gitlint
Output:
[v2,BlueZ] client/player: Add transport.receive command
9: B3 Line contains hard tab characters (\t): " receive [filename]"
---
Regards,
Linux Bluetooth
Hello:
This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <[email protected]>:
On Tue, 26 Apr 2022 11:04:01 -0700 you wrote:
> From: Luiz Augusto von Dentz <[email protected]>
>
> This adds transport.receive command:
>
> Get/Set file to receive
> Usage:
> receive [filename]
>
> [...]
Here is the summary with links:
- [v2,BlueZ] client/player: Add transport.receive command
https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=7a87497da4ab
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html