aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/csn1.cpp11
-rw-r--r--tests/rlcmac/RLCMACTest.cpp7
2 files changed, 6 insertions, 12 deletions
diff --git a/src/csn1.cpp b/src/csn1.cpp
index d51fe83..a1698a5 100644
--- a/src/csn1.cpp
+++ b/src/csn1.cpp
@@ -1110,22 +1110,21 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig
{ /* extract bits */
guint8* pui8 = pui8DATA(data, pDescr->offset);
- gint16 nB1 = no_of_bits & 0x07;/* no_of_bits Mod 8 */
- while (no_of_bits > 0)
+ while (no_of_bits >= 8)
{
*pui8 = bitvec_read_field(vector, readIndex, 8);
LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8);
pui8++;
no_of_bits -= 8;
}
- if (nB1 > 0)
+ if (no_of_bits > 0)
{
- *pui8 = bitvec_read_field(vector, readIndex, nB1);
+ *pui8 = bitvec_read_field(vector, readIndex, no_of_bits);
LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8);
pui8++;
- no_of_bits -= nB1;
- bit_offset += nB1; /* (nB1 is no_of_bits Mod 8) */
+ bit_offset += no_of_bits;
+ no_of_bits = 0;
}
}
}
diff --git a/tests/rlcmac/RLCMACTest.cpp b/tests/rlcmac/RLCMACTest.cpp
index f633dd8..97e5e60 100644
--- a/tests/rlcmac/RLCMACTest.cpp
+++ b/tests/rlcmac/RLCMACTest.cpp
@@ -223,13 +223,8 @@ void testCsnLeftAlignedVarBmpBounds()
&data.u.Egprs_Packet_Downlink_Ack_Nack.EGPRS_AckNack.Desc;
decode_gsm_rlcmac_uplink(vector, &data);
- /*
- * TODO: URBB len is decoded as 102 bits. So 96 + 6 bits = 12 bytes + 6
- * bits should be decoded. The 13th byte should end up as 0x00, but we
- * see data coming from bitvec_get_bit_pos() returning -EINVAL.
- */
OSMO_ASSERT(!strcmp(osmo_hexdump(urbb->URBB, 13),
- "7f ff ff ee 00 00 00 00 00 00 00 00 ea "));
+ "7f ff ff ee 00 00 00 00 00 00 00 00 00 "));
}
int main(int argc, char *argv[])