bts: add send_gsmtap_rach(), also send PTCCH/U over GSMTAP

Change-Id: I5cc4c3d2522215a31924121f83fcc2ac9ac6fe9c
diff --git a/src/bts.cpp b/src/bts.cpp
index 26cb258..0482168 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -430,6 +430,16 @@
 	return 0;
 }
 
+void BTS::send_gsmtap_rach(enum pcu_gsmtap_category categ, uint8_t channel,
+			   const struct rach_ind_params *rip)
+{
+	struct pcu_l1_meas meas;
+	send_gsmtap_meas(categ, true, rip->trx_nr, rip->ts_nr, channel,
+			 rfn_to_fn(rip->rfn), (uint8_t *) &rip->ra,
+			 /* TODO: properly pack 11 bit RA */
+			 rip->is_11bit ? 2 : 1, &meas);
+}
+
 void BTS::send_gsmtap(enum pcu_gsmtap_category categ, bool uplink, uint8_t trx_no,
 		      uint8_t ts_no, uint8_t channel, uint32_t fn,
 		      const uint8_t *data, unsigned int len)
@@ -801,9 +811,7 @@
 	uint32_t Fn = rfn_to_fn(rip->rfn);
 	uint8_t ta = qta2ta(rip->qta);
 
-	send_gsmtap(PCU_GSMTAP_C_UL_RACH, true, rip->trx_nr, rip->ts_nr,
-		    GSMTAP_CHANNEL_RACH, Fn, (uint8_t *) &rip->ra,
-		    rip->is_11bit ? 2 : 1);
+	send_gsmtap_rach(PCU_GSMTAP_C_UL_RACH, GSMTAP_CHANNEL_RACH, rip);
 
 	LOGP(DRLCMAC, LOGL_DEBUG, "MS requests Uplink resource on CCCH/RACH: "
 	     "ra=0x%02x (%d bit) Fn=%u qta=%d\n", rip->ra,
@@ -908,6 +916,8 @@
 	struct gprs_rlcmac_pdch *pdch;
 	uint8_t ss;
 
+	send_gsmtap_rach(PCU_GSMTAP_C_UL_PTCCH, GSMTAP_CHANNEL_PTCCH, rip);
+
 	/* Prevent buffer overflow */
 	if (rip->trx_nr >= ARRAY_SIZE(bts->trx) || rip->ts_nr >= 8) {
 		LOGP(DRLCMAC, LOGL_ERROR, "(TRX=%u TS=%u RFN=%u) Rx malformed "