From 7aaf112ba7370d0eea1419c00abbebe911a9c87c Mon Sep 17 00:00:00 2001 From: Holger Freyther Date: Sat, 14 Feb 2009 22:51:13 +0000 Subject: [PATCH] [signal] Add consumer of the signal api, inform about paging Use the new signaling API in the telnet interface to broadcast a succeeded or failed paging request. --- src/telnet_interface.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/telnet_interface.c b/src/telnet_interface.c index 6462c5f9a..e3f56c2c2 100644 --- a/src/telnet_interface.c +++ b/src/telnet_interface.c @@ -32,6 +32,7 @@ #include #include #include +#include extern void telnet_parse(struct telnet_connection *connection, char *line); @@ -47,6 +48,8 @@ LLIST_HEAD(active_connections); /* per network data */ static int telnet_new_connection(struct bsc_fd *fd, unsigned int what); +static int telnet_paging_callback(struct signal_data *signal, void *data); + static struct bsc_fd server_socket = { .when = BSC_FD_READ, .cb = telnet_new_connection, @@ -84,6 +87,9 @@ void telnet_init(struct gsm_network *network, int port) { server_socket.data = network; server_socket.fd = fd; bsc_register_fd(&server_socket); + + /* register paging callbacks */ + register_signal_handler(S_PAGING, telnet_paging_callback, network); } void telnet_write_help(int fd) { @@ -354,3 +360,24 @@ static int telnet_new_connection(struct bsc_fd *fd, unsigned int what) { return 0; } + +static int telnet_paging_callback(struct signal_data *signal, void *data) +{ + struct paging_signal_data *paging = + (struct paging_signal_data *) signal; + struct telnet_connection *con; + + llist_for_each_entry(con, &active_connections, entry) { + if (paging->lchan) { + WRITE_CONNECTION(con->fd.fd, "Paging succeeded\n"); + show_lchan(con->fd.fd, paging->lchan); + } else { + WRITE_CONNECTION(con->fd.fd, "Paging failed for subscriber: %s/%s/%s\n", + paging->subscr->imsi, + paging->subscr->tmsi, + paging->subscr->name); + } + } + + return 0; +}