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
This commit is contained in:
parent
fd355a3c6f
commit
26d7907b02
|
@ -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;
|
||||
|
|
|
@ -677,10 +677,11 @@ static int rsl_rf_chan_release(struct gsm_lchan *lchan, int error)
|
|||
rc = abis_rsl_sendmsg(msg);
|
||||
|
||||
/* BTS will respond by RF CHAN REL ACK */
|
||||
|
||||
#ifdef HSL_SR_1_0
|
||||
/* The HSL Femto seems to 'forget' sending a REL ACK for TS1...TS7 */
|
||||
if (lchan->ts->trx->bts->type == GSM_BTS_TYPE_HSL_FEMTO && lchan->ts->nr != 0)
|
||||
rc = rsl_rx_rf_chan_rel_ack(lchan);
|
||||
#endif
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -397,7 +397,7 @@ static int bootstrap_bts(struct gsm_bts *bts)
|
|||
if (bts->network->dtx_enabled)
|
||||
bts->si_common.cell_options.dtx = 0;
|
||||
else
|
||||
bts->si_common.cell_options.dtx = 2;
|
||||
bts->si_common.cell_options.dtx = 3;
|
||||
|
||||
bts->si_common.cell_options.pwrc = 0; /* PWRC not set */
|
||||
|
||||
|
|
|
@ -61,7 +61,11 @@ static const uint8_t conn_trau_msg2[] = {
|
|||
};
|
||||
|
||||
static uint8_t oml_arfcn_bsic[] = {
|
||||
#ifdef HSL_SR_1_0
|
||||
0x81, 0x80, 0x00, 10,
|
||||
#else
|
||||
0x80, 0x80, 0x00, 10,
|
||||
#endif
|
||||
NM_MT_SET_BTS_ATTR, NM_OC_BTS, 0xff, 0xff, 0xff,
|
||||
NM_ATT_BCCH_ARFCN, 0x03, 0x67,
|
||||
NM_ATT_BSIC, 0x00
|
||||
|
|
Loading…
Reference in New Issue