import gsm0502_calc_paging_group() from openbsc
[osmocom-bb.git] / src / bitvec.c
index 04c465a..4fd3834 100644 (file)
@@ -24,7 +24,7 @@
 #include <errno.h>
 #include <stdint.h>
 
-#include <osmocore/bitvec.h>
+#include <osmocom/core/bitvec.h>
 
 #define BITNUM_FROM_COMP(byte, bit)    ((byte*8)+bit)
 
@@ -90,7 +90,7 @@ enum bit_value bitvec_get_bit_pos_high(const struct bitvec *bv,
 
        bitval = bitval2mask(H, bitnum);
 
-       if (bv->data[bytenum] & bitval)
+       if ((bv->data[bytenum] & (1 << bitnum)) == bitval)
                return H;
 
        return L;
@@ -217,3 +217,17 @@ int bitvec_spare_padding(struct bitvec *bv, unsigned int up_to_bit)
 
        return 0;
 }
+
+/* find first bit set in bit vector */
+int bitvec_find_bit_pos(const struct bitvec *bv, unsigned int n,
+                       enum bit_value val)
+{
+       unsigned int i;
+
+       for (i = n; i < bv->data_len*8; i++) {
+               if (bitvec_get_bit_pos(bv, i) == val)
+                       return i;
+       }
+
+       return -1;
+}