* 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;
 }