From 5455243306bdc57f39a38da4d2d191d7d549b67c Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 5 Feb 2011 12:26:55 +0100 Subject: [PATCH] [input] make mi_e1_line_update() a driver specific callback This helps us to further disentangle the misdn driver and e1_input in preparation of DAHDI support. --- openbsc/include/openbsc/e1_input.h | 1 + openbsc/src/e1_input.c | 5 ++++- openbsc/src/input/misdn.c | 5 ++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/openbsc/include/openbsc/e1_input.h b/openbsc/include/openbsc/e1_input.h index aa4aa392f..93f9c527f 100644 --- a/openbsc/include/openbsc/e1_input.h +++ b/openbsc/include/openbsc/e1_input.h @@ -95,6 +95,7 @@ struct e1inp_driver { struct llist_head list; const char *name; int (*want_write)(struct e1inp_ts *ts); + int (*line_update)(struct e1inp_line *line); int default_delay; }; diff --git a/openbsc/src/e1_input.c b/openbsc/src/e1_input.c index a17ae415d..45231c398 100644 --- a/openbsc/src/e1_input.c +++ b/openbsc/src/e1_input.c @@ -542,7 +542,10 @@ int e1inp_driver_register(struct e1inp_driver *drv) int e1inp_line_update(struct e1inp_line *line) { - return mi_e1_line_update(line); + if (line->driver && line->driver->line_update) + return line->driver->line_update(line); + else + return 0; } static int e1i_sig_cb(unsigned int subsys, unsigned int signal, diff --git a/openbsc/src/input/misdn.c b/openbsc/src/input/misdn.c index 07a9ad0c9..1f24a2782 100644 --- a/openbsc/src/input/misdn.c +++ b/openbsc/src/input/misdn.c @@ -383,10 +383,13 @@ static int activate_bchan(struct e1inp_line *line, int ts, int act) return ret; } +static int mi_e1_line_update(struct e1inp_line *line); + struct e1inp_driver misdn_driver = { .name = "mISDNuser", .want_write = ts_want_write, .default_delay = 50000, + .line_update = &mi_e1_line_update, }; static int mi_e1_setup(struct e1inp_line *line, int release_l2) @@ -478,7 +481,7 @@ static int mi_e1_setup(struct e1inp_line *line, int release_l2) return 0; } -int mi_e1_line_update(struct e1inp_line *line) +static int mi_e1_line_update(struct e1inp_line *line) { struct mISDN_devinfo devinfo; int sk, ret, cnt;