Use new stat item/ctr getter APIs

Patch mostly done with the help of several small spatch snippets.

Change-Id: I600c7a8725f5b229b1a2feb879da7c3b2dce4505
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 9ed389d..eb215fe 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -1137,7 +1137,7 @@
 		ms_update_error_rate(ms(), this, error_rate);
 
 	m_window.update(bts, rbb, first_bsn, &lost, &received);
-	rate_ctr_add(&m_ctrs->ctr[TBF_CTR_RLC_NACKED], lost);
+	rate_ctr_add(rate_ctr_group_get_ctr(m_ctrs, TBF_CTR_RLC_NACKED), lost);
 
 	/* report lost and received packets */
 	gprs_rlcmac_received_lost(this, received, lost);
@@ -1193,7 +1193,7 @@
 
 	m_window.update(bts, show_rbb, ssn,
 			&lost, &received);
-	rate_ctr_add(&m_ctrs->ctr[TBF_CTR_RLC_NACKED], lost);
+	rate_ctr_add(rate_ctr_group_get_ctr(m_ctrs, TBF_CTR_RLC_NACKED), lost);
 
 	/* report lost and received packets */
 	gprs_rlcmac_received_lost(this, received, lost);
@@ -1509,55 +1509,55 @@
 	switch (cs) {
 	case CS1:
 		bts_do_rate_ctr_inc(bts, CTR_GPRS_DL_CS1);
-		rate_ctr_inc(&m_dl_gprs_ctrs->ctr[TBF_CTR_GPRS_DL_CS1]);
+		rate_ctr_inc(rate_ctr_group_get_ctr(m_dl_gprs_ctrs, TBF_CTR_GPRS_DL_CS1));
 		break;
 	case CS2:
 		bts_do_rate_ctr_inc(bts, CTR_GPRS_DL_CS2);
-		rate_ctr_inc(&m_dl_gprs_ctrs->ctr[TBF_CTR_GPRS_DL_CS2]);
+		rate_ctr_inc(rate_ctr_group_get_ctr(m_dl_gprs_ctrs, TBF_CTR_GPRS_DL_CS2));
 		break;
 	case CS3:
 		bts_do_rate_ctr_inc(bts, CTR_GPRS_DL_CS3);
-		rate_ctr_inc(&m_dl_gprs_ctrs->ctr[TBF_CTR_GPRS_DL_CS3]);
+		rate_ctr_inc(rate_ctr_group_get_ctr(m_dl_gprs_ctrs, TBF_CTR_GPRS_DL_CS3));
 		break;
 	case CS4:
 		bts_do_rate_ctr_inc(bts, CTR_GPRS_DL_CS4);
-		rate_ctr_inc(&m_dl_gprs_ctrs->ctr[TBF_CTR_GPRS_DL_CS4]);
+		rate_ctr_inc(rate_ctr_group_get_ctr(m_dl_gprs_ctrs, TBF_CTR_GPRS_DL_CS4));
 		break;
 	case MCS1:
 		bts_do_rate_ctr_inc(bts, CTR_EGPRS_DL_MCS1);
-		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS1]);
+		rate_ctr_inc(rate_ctr_group_get_ctr(m_dl_egprs_ctrs, TBF_CTR_EGPRS_DL_MCS1));
 		break;
 	case MCS2:
 		bts_do_rate_ctr_inc(bts, CTR_EGPRS_DL_MCS2);
-		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS2]);
+		rate_ctr_inc(rate_ctr_group_get_ctr(m_dl_egprs_ctrs, TBF_CTR_EGPRS_DL_MCS2));
 		break;
 	case MCS3:
 		bts_do_rate_ctr_inc(bts, CTR_EGPRS_DL_MCS3);
-		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS3]);
+		rate_ctr_inc(rate_ctr_group_get_ctr(m_dl_egprs_ctrs, TBF_CTR_EGPRS_DL_MCS3));
 		break;
 	case MCS4:
 		bts_do_rate_ctr_inc(bts, CTR_EGPRS_DL_MCS4);
-		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS4]);
+		rate_ctr_inc(rate_ctr_group_get_ctr(m_dl_egprs_ctrs, TBF_CTR_EGPRS_DL_MCS4));
 		break;
 	case MCS5:
 		bts_do_rate_ctr_inc(bts, CTR_EGPRS_DL_MCS5);
-		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS5]);
+		rate_ctr_inc(rate_ctr_group_get_ctr(m_dl_egprs_ctrs, TBF_CTR_EGPRS_DL_MCS5));
 		break;
 	case MCS6:
 		bts_do_rate_ctr_inc(bts, CTR_EGPRS_DL_MCS6);
-		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS6]);
+		rate_ctr_inc(rate_ctr_group_get_ctr(m_dl_egprs_ctrs, TBF_CTR_EGPRS_DL_MCS6));
 		break;
 	case MCS7:
 		bts_do_rate_ctr_inc(bts, CTR_EGPRS_DL_MCS7);
-		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS7]);
+		rate_ctr_inc(rate_ctr_group_get_ctr(m_dl_egprs_ctrs, TBF_CTR_EGPRS_DL_MCS7));
 		break;
 	case MCS8:
 		bts_do_rate_ctr_inc(bts, CTR_EGPRS_DL_MCS8);
-		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS8]);
+		rate_ctr_inc(rate_ctr_group_get_ctr(m_dl_egprs_ctrs, TBF_CTR_EGPRS_DL_MCS8));
 		break;
 	case MCS9:
 		bts_do_rate_ctr_inc(bts, CTR_EGPRS_DL_MCS9);
-		rate_ctr_inc(&m_dl_egprs_ctrs->ctr[TBF_CTR_EGPRS_DL_MCS9]);
+		rate_ctr_inc(rate_ctr_group_get_ctr(m_dl_egprs_ctrs, TBF_CTR_EGPRS_DL_MCS9));
 		break;
 	default:
 		LOGPTBFDL(this, LOGL_ERROR, "attempting to update rate counters for unsupported (M)CS %s\n",