From 7f73a1ac58d6b9f2f8ec793123bf0ee3038fb3a4 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 14 Dec 2009 22:23:27 +0100 Subject: bitvec: Introduce bitvec_get_nth_set_bit() function This is particularly important for determining the ARFCN for cells reported in 04.08 MEAS REP. --- openbsc/src/bitvec.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'openbsc/src/bitvec.c') diff --git a/openbsc/src/bitvec.c b/openbsc/src/bitvec.c index 8c82b8776..ad03958f3 100644 --- a/openbsc/src/bitvec.c +++ b/openbsc/src/bitvec.c @@ -77,6 +77,22 @@ enum bit_value bitvec_get_bit_pos(struct bitvec *bv, unsigned int bitnr) return ZERO; } +/* get the Nth set bit inside the bit vector */ +unsigned int bitvec_get_nth_set_bit(struct bitvec *bv, unsigned int n) +{ + unsigned int i, k = 0; + + for (i = 0; i < bv->data_len*8; i++) { + if (bitvec_get_bit_pos(bv, i) == ONE) { + k++; + if (k == n) + return i; + } + } + + return 0; +} + /* set the bit at a given position inside a bitvec */ int bitvec_set_bit_pos(struct bitvec *bv, unsigned int bitnr, enum bit_value bit) -- cgit v1.2.3