From 26d7907b0229f982a65bd709c86b849eb6fef2ce Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Fri, 14 Jan 2011 23:18:59 +0100 Subject: Implement the HSL SR1.0.1 protocol It seems HSL has fixed most of their obvious issues in the SR1.0.1 release. However, this creates quite an incompatibility of the protocol, and we have to adapt accordingly --- openbsc/src/libabis/input/hsl.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'openbsc/src/libabis') diff --git a/openbsc/src/libabis/input/hsl.c b/openbsc/src/libabis/input/hsl.c index 12e974b34..360be32fc 100644 --- a/openbsc/src/libabis/input/hsl.c +++ b/openbsc/src/libabis/input/hsl.c @@ -228,7 +228,7 @@ static int handle_ts1_read(struct bsc_fd *bfd) } /* HSL proprietary RSL extension */ - if (hh->proto == 0 && msg->l2h[0] == 0x80) { + if (hh->proto == 0 && (msg->l2h[0] == 0x81 || msg->l2h[0] == 0x80)) { ret = process_hsl_rsl(msg, line); if (ret < 0) { /* FIXME: close connection */ @@ -238,11 +238,11 @@ static int handle_ts1_read(struct bsc_fd *bfd) return 0; /* else: continue... */ } - +#ifdef HSL_SR_1_0 /* HSL for whatever reason chose to use 0x81 instead of 0x80 for FOM */ if (hh->proto == 255 && msg->l2h[0] == (ABIS_OM_MDISC_FOM | 0x01)) msg->l2h[0] = ABIS_OM_MDISC_FOM; - +#endif link = e1inp_lookup_sign_link(e1i_ts, hh->proto, 0); if (!link) { LOGP(DINP, LOGL_ERROR, "no matching signalling link for " @@ -312,9 +312,11 @@ static int handle_ts1_write(struct bsc_fd *bfd) switch (sign_link->type) { case E1INP_SIGN_OML: proto = IPAC_PROTO_OML; +#ifdef HSL_SR_1_0 /* HSL uses 0x81 for FOM for some reason */ if (msg->data[0] == ABIS_OM_MDISC_FOM) msg->data[0] = ABIS_OM_MDISC_FOM | 0x01; +#endif break; case E1INP_SIGN_RSL: proto = IPAC_PROTO_RSL; -- cgit v1.2.3