diff options
author | Andrzej Kaczmarek <andrzej.kaczmarek@codecoup.pl> | 2018-02-20 15:52:10 +0100 |
---|---|---|
committer | Szymon Janc <szymon.janc@codecoup.pl> | 2019-10-14 12:12:32 +0200 |
commit | 068bc4b0b42459457a2556963274b95a22acdedd (patch) | |
tree | 12d3634663ea28936426fd2a78476a2845d15818 /monitor | |
parent | 52faac4648500dd45c06b6aa41f1be426c43a125 (diff) | |
download | bluez-068bc4b0b42459457a2556963274b95a22acdedd.tar.gz |
monitor: Extract TTY data processing to separate function
Diffstat (limited to 'monitor')
-rw-r--r-- | monitor/control.c | 37 |
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; |