* generate virtual E1 TEI up/down events
* make debug printout a little less verbose
* introduce usleep to make things a bit slower for debugging
diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c
index f2964d8..2258267 100644
--- a/src/input/ipaccess.c
+++ b/src/input/ipaccess.c
@@ -76,10 +76,8 @@
{
u_int8_t msg_type = *(msg->l2h);
- printf("msg_type=0x%02x\n", msg_type);
switch (msg_type) {
case MSGT_PING:
- DEBUGP(DMI, "PING?\n");
write(fd, pong, sizeof(pong));
break;
case MSGT_PONG:
@@ -89,7 +87,7 @@
DEBUGP(DMI, "ID_RESP\n");
break;
case MSGT_IDENTITY_ACK:
- DEBUGP(DMI, "ID_ACK\n");
+ DEBUGP(DMI, "ID_ACK? -> ACK!\n");
write(fd, id_ack, sizeof(id_ack));
break;
}
@@ -98,6 +96,9 @@
return 0;
}
+/* FIXME: this is per BTS */
+static int oml_up = 0;
+
static int handle_ts1_read(struct bsc_fd *bfd)
{
struct e1inp_line *line = bfd->data;
@@ -120,6 +121,8 @@
}
if (ret == 0) {
fprintf(stderr, "BTS disappeared, dead socket\n");
+ e1inp_event(e1i_ts, EVT_E1_TEI_DN, 0, PROTO_RSL);
+ e1inp_event(e1i_ts, EVT_E1_TEI_DN, 0, PROTO_OML);
bsc_unregister_fd(bfd);
close(bfd->fd);
bfd->fd = -1;
@@ -135,7 +138,6 @@
//return -EIO;
}
msgb_put(msg, ret);
- DEBUGP(DMI, "<= ret=%d, len=%d, proto=0x%02x\n", ret, hh->len, hh->proto);
if (hh->proto == PROTO_IPACCESS)
return ipaccess_rcvmsg(msg, bfd->fd);
@@ -158,9 +160,14 @@
ret = abis_rsl_rcvmsg(msg);
break;
case PROTO_OML:
+ if (!oml_up) {
+ e1inp_event(e1i_ts, EVT_E1_TEI_UP, 0, PROTO_OML);
+ oml_up = 1;
+ }
ret = abis_nm_rcvmsg(msg);
break;
default:
+ DEBUGP(DMI, "Unknown IP.access protocol proto=0x%02x\n", hh->proto);
msgb_free(msg);
break;
}
@@ -205,12 +212,13 @@
}
if (debug_mask & DMI) {
- fprintf(stdout, "TX proto=0x%x: ", hh->proto);
+ fprintf(stdout, "TX: ");
hexdump(l2_data, hh->len);
}
ret = send(bfd->fd, msg->data, msg->len, 0);
msgb_free(msg);
+ usleep(100000);
return ret;
}