DAHDI: Deliver ALARM/NOALARM as input signal to RBS2000 driver
... and re-start LAPD SABM as required
diff --git a/openbsc/src/bts_ericsson_rbs2000.c b/openbsc/src/bts_ericsson_rbs2000.c
index 9c6a98f..5ad47b2 100644
--- a/openbsc/src/bts_ericsson_rbs2000.c
+++ b/openbsc/src/bts_ericsson_rbs2000.c
@@ -53,7 +53,7 @@
/* Tell LAPD to start start the SAP (send SABM requests) for all signalling
* timeslots in this line */
-static void start_sabm_in_line(struct e1inp_line *line)
+static void start_sabm_in_line(struct e1inp_line *line, int start)
{
struct e1inp_sign_link *link;
int i;
@@ -65,7 +65,10 @@
continue;
llist_for_each_entry(link, &ts->sign.sign_links, list) {
- lapd_sap_start(ts->driver.dahdi.lapd, link->tei, link->sapi);
+ if (start)
+ lapd_sap_start(ts->driver.dahdi.lapd, link->tei, link->sapi);
+ else
+ lapd_sap_stop(ts->driver.dahdi.lapd, link->tei, link->sapi);
}
}
}
@@ -113,7 +116,17 @@
/* Right now Ericsson RBS are only supported on DAHDI */
if (strcasecmp(isd->line->driver->name, "DAHDI"))
break;
- start_sabm_in_line(isd->line);
+ start_sabm_in_line(isd->line, 1);
+ break;
+ case S_INP_LINE_ALARM:
+ if (strcasecmp(isd->line->driver->name, "DAHDI"))
+ break;
+ start_sabm_in_line(isd->line, 0);
+ break;
+ case S_INP_LINE_NOALARM:
+ if (strcasecmp(isd->line->driver->name, "DAHDI"))
+ break;
+ start_sabm_in_line(isd->line, 1);
break;
}