summaryrefslogtreecommitdiff
path: root/monitor/control.c
diff options
context:
space:
mode:
authorAndrzej Kaczmarek <andrzej.kaczmarek@codecoup.pl>2018-02-20 15:52:10 +0100
committerSzymon Janc <szymon.janc@codecoup.pl>2019-10-14 12:12:32 +0200
commit068bc4b0b42459457a2556963274b95a22acdedd (patch)
tree12d3634663ea28936426fd2a78476a2845d15818 /monitor/control.c
parent52faac4648500dd45c06b6aa41f1be426c43a125 (diff)
downloadbluez-068bc4b0b42459457a2556963274b95a22acdedd.tar.gz
monitor: Extract TTY data processing to separate function
Diffstat (limited to 'monitor/control.c')
-rw-r--r--monitor/control.c37
1 files changed, 21 insertions, 16 deletions
diff --git a/monitor/control.c b/monitor/control.c
index 39a413be1..4022e7644 100644
--- a/monitor/control.c
+++ b/monitor/control.c
@@ -1300,23 +1300,8 @@ static bool tty_parse_header(uint8_t *hdr, uint8_t len, struct timeval **tv,
return true;
}
-static void tty_callback(int fd, uint32_t events, void *user_data)
+static void process_data(struct control_data *data)
{
- struct control_data *data = user_data;
- ssize_t len;
-
- if (events & (EPOLLERR | EPOLLHUP)) {
- mainloop_remove_fd(data->fd);
- return;
- }
-
- len = read(data->fd, data->buf + data->offset,
- sizeof(data->buf) - data->offset);
- if (len < 0)
- return;
-
- data->offset += len;
-
while (data->offset >= sizeof(struct tty_hdr)) {
struct tty_hdr *hdr = (struct tty_hdr *) data->buf;
uint16_t pktlen, opcode, data_len;
@@ -1358,6 +1343,26 @@ static void tty_callback(int fd, uint32_t events, void *user_data)
}
}
+static void tty_callback(int fd, uint32_t events, void *user_data)
+{
+ struct control_data *data = user_data;
+ ssize_t len;
+
+ if (events & (EPOLLERR | EPOLLHUP)) {
+ mainloop_remove_fd(data->fd);
+ return;
+ }
+
+ len = read(data->fd, data->buf + data->offset,
+ sizeof(data->buf) - data->offset);
+ if (len < 0)
+ return;
+
+ data->offset += len;
+
+ process_data(data);
+}
+
int control_tty(const char *path, unsigned int speed)
{
struct control_data *data;