diff options
author | Harald Welte <laforge@gnumonks.org> | 2011-02-11 16:49:41 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2011-02-11 16:49:41 +0100 |
commit | f27d043032e6263f5b8f3b0c1db9594d3bba4156 (patch) | |
tree | d612c28d223b1c9ba32abf9176fac3dc80487f36 | |
parent | f338a03b0cc85ca20bfe8e1ebe3b98e86bcef3c1 (diff) |
E1 Input: Add new S_INP_LINE_INIT signal
This allows other code to listen ot a signal about a new line that
was just configured.
-rw-r--r-- | openbsc/include/openbsc/signal.h | 2 | ||||
-rw-r--r-- | openbsc/src/e1_input.c | 15 |
2 files changed, 15 insertions, 2 deletions
diff --git a/openbsc/include/openbsc/signal.h b/openbsc/include/openbsc/signal.h index c583e94cb..866fa293d 100644 --- a/openbsc/include/openbsc/signal.h +++ b/openbsc/include/openbsc/signal.h @@ -144,6 +144,7 @@ enum signal_input { S_INP_NONE, S_INP_TEI_UP, S_INP_TEI_DN, + S_INP_LINE_INIT, }; struct gsm_subscriber; @@ -244,6 +245,7 @@ struct ho_signal_data { struct input_signal_data { int link_type; struct gsm_bts_trx *trx; + struct e1inp_line *line; }; #endif diff --git a/openbsc/src/e1_input.c b/openbsc/src/e1_input.c index 92bfb242a..b131844bb 100644 --- a/openbsc/src/e1_input.c +++ b/openbsc/src/e1_input.c @@ -594,10 +594,21 @@ struct e1inp_driver *e1inp_driver_find(const char *name) int e1inp_line_update(struct e1inp_line *line) { + struct input_signal_data isd; + int rc; + if (line->driver && line->driver->line_update) - return line->driver->line_update(line); + rc = line->driver->line_update(line); else - return 0; + rc = 0; + + /* Send a signal to anyone who is interested in new lines being + * configured */ + memset(&isd, 0, sizeof(isd)); + isd.line = line; + dispatch_signal(SS_INPUT, S_INP_LINE_INIT, &isd); + + return rc; } static int e1i_sig_cb(unsigned int subsys, unsigned int signal, |