# HG changeset patch # User Mychaela Falconia # Date 1665605466 28800 # Node ID c8e9b295e88f9aa4e2dc17ac7f757a3fe5dccdaa # Parent 51cf5ea7f32036454942e4301a3a648b55dab260 mtctest: add time reporting for DTMF events diff -r 51cf5ea7f320 -r c8e9b295e88f mtctest/main.c --- a/mtctest/main.c Wed Oct 12 08:45:39 2022 -0800 +++ b/mtctest/main.c Wed Oct 12 12:11:06 2022 -0800 @@ -3,6 +3,7 @@ */ #include +#include #include #include #include @@ -13,6 +14,8 @@ extern int mtc_socket; extern int disconnect_mode; +struct timeval cur_event_time; + static void drain_stdin() { @@ -64,6 +67,7 @@ perror("select"); exit(1); } + gettimeofday(&cur_event_time, 0); if (FD_ISSET(mtc_socket, &fds)) mtc_socket_select(); if (!disconnect_mode && FD_ISSET(0, &fds)) { diff -r 51cf5ea7f320 -r c8e9b295e88f mtctest/sig_handler.c --- a/mtctest/sig_handler.c Wed Oct 12 08:45:39 2022 -0800 +++ b/mtctest/sig_handler.c Wed Oct 12 12:11:06 2022 -0800 @@ -5,6 +5,7 @@ */ #include +#include #include #include #include @@ -16,6 +17,7 @@ extern int disconnect_mode; extern struct sockaddr_storage dummy_rtp_endp; +extern struct timeval cur_event_time; static void print_bearer_cap(bcap) @@ -180,6 +182,27 @@ } static void +handle_dtmf_time() +{ + static struct timeval last_dtmf_time; + struct timeval delta; + unsigned ms; + + if (timerisset(&last_dtmf_time) && + timercmp(&cur_event_time, &last_dtmf_time, >)) { + timersub(&cur_event_time, &last_dtmf_time, &delta); + if (delta.tv_sec >= 2) + printf("Time since last DTMF event: %u s\n", + (unsigned) delta.tv_sec); + else { + ms = delta.tv_sec * 1000 + delta.tv_usec / 1000; + printf("Time since last DTMF event: %u ms\n", ms); + } + } + bcopy(&cur_event_time, &last_dtmf_time, sizeof(struct timeval)); +} + +static void handle_signaling_msg(msg, msglen) struct gsm_mncc *msg; unsigned msglen; @@ -230,6 +253,7 @@ case MNCC_START_DTMF_IND: printf("MNCC_START_DTMF_IND: MS sending DTMF start\n"); print_fields(msg); + handle_dtmf_time(); if (msg->fields & MNCC_F_KEYPAD && is_valid_dtmf_digit(msg->keypad)) { printf("Responding with ACK\n"); @@ -244,6 +268,7 @@ return; case MNCC_STOP_DTMF_IND: printf("MNCC_STOP_DTMF_IND: MS sending DTMF stop\n"); + handle_dtmf_time(); msg->msg_type = MNCC_STOP_DTMF_RSP; send_mncc_to_gsm(msg, sizeof(struct gsm_mncc)); return;