diff --git a/src/Makefile.am b/src/Makefile.am index a84a511a..eb1e3894 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -40,7 +40,7 @@ noinst_LTLIBRARIES = libgprs.la libgprs_la_SOURCES = \ gprs_debug.cpp \ - csn1.cpp \ + csn1.c \ gsm_rlcmac.cpp \ gprs_bssgp_pcu.cpp \ gprs_rlcmac.cpp \ diff --git a/src/csn1.cpp b/src/csn1.c similarity index 92% rename from src/csn1.cpp rename to src/csn1.c index b2ae1f2c..eedad755 100644 --- a/src/csn1.cpp +++ b/src/csn1.c @@ -28,8 +28,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include -#include #include #include #define __STDC_FORMAT_MACROS @@ -37,10 +35,8 @@ #include "csn1.h" #include -extern "C" { #include #include -} #define pvDATA(_pv, _offset) ((void*) ((unsigned char*)_pv + _offset)) #define pui8DATA(_pv, _offset) ((guint8*) pvDATA(_pv, _offset)) @@ -51,33 +47,32 @@ extern "C" { #define STANDARD_TAG 1 #define REVERSED_TAG 0 -using namespace std; static const unsigned char ixBitsTab[] = {0, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5}; /* Returns no_of_bits (up to 8) masked with 0x2B */ static guint8 -get_masked_bits8( bitvec *vector, unsigned& readIndex, gint bit_offset, const gint no_of_bits) +get_masked_bits8(struct bitvec *vector, unsigned *readIndex, gint bit_offset, const gint no_of_bits) { static const guint8 maskBits[] = {0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF}; //gint byte_offset = bit_offset >> 3; /* divide by 8 */ gint relative_bit_offset = bit_offset & 0x07; /* modulo 8 */ guint8 result; gint bit_shift = 8 - relative_bit_offset - (gint) no_of_bits; - readIndex -= relative_bit_offset; + *readIndex -= relative_bit_offset; if (bit_shift >= 0) { - result = (0x2B ^ ((guint8)bitvec_read_field(vector, &readIndex, 8))) >> bit_shift; - readIndex-= bit_shift; + result = (0x2B ^ ((guint8)bitvec_read_field(vector, readIndex, 8))) >> bit_shift; + *readIndex-= bit_shift; result &= maskBits[no_of_bits]; } else { - guint8 hight_part = (0x2B ^ ((guint8)bitvec_read_field(vector, &readIndex, 8))) & maskBits[8 - relative_bit_offset]; + guint8 hight_part = (0x2B ^ ((guint8)bitvec_read_field(vector, readIndex, 8))) & maskBits[8 - relative_bit_offset]; hight_part = (guint8) (hight_part << (-bit_shift)); - result = (0x2B ^ ((guint8)bitvec_read_field(vector, &readIndex, 8))) >> (8 + bit_shift); - readIndex = readIndex - (8 - (-bit_shift)); + result = (0x2B ^ ((guint8)bitvec_read_field(vector, readIndex, 8))) >> (8 + bit_shift); + *readIndex = *readIndex - (8 - (-bit_shift)); result |= hight_part; } return result; @@ -111,14 +106,14 @@ static const struct value_string csn1_error_names[] = { }; -static gint16 ProcessError_impl(const char *file, int line, unsigned readIndex, +static gint16 ProcessError_impl(const char *file, int line, unsigned *readIndex, const char* sz, gint16 err, const CSN_DESCR* pDescr) { /* Don't add trailing newline, top caller is responsible for appending it */ if (err != CSN_OK) LOGPSRC(DCSN1, LOGL_ERROR, file, line, "%s: error %s (%d) at %s (idx %d)", sz, get_value_string(csn1_error_names, err), err, - pDescr ? pDescr->sz : "-", readIndex); + pDescr ? pDescr->sz : "-", *readIndex); return err; } @@ -135,9 +130,9 @@ static gint16 ProcessError_impl(const char *file, int line, unsigned readIndex, */ static gboolean -existNextElement(bitvec *vector, unsigned& readIndex, guint8 Tag) +existNextElement(struct bitvec *vector, unsigned *readIndex, guint8 Tag) { - int res = bitvec_get_bit_pos(vector, readIndex++); + int res = bitvec_get_bit_pos(vector, (*readIndex)++); if (Tag == STANDARD_TAG) { return (res > 0); @@ -147,7 +142,7 @@ existNextElement(bitvec *vector, unsigned& readIndex, guint8 Tag) gint16 -csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsigned& readIndex, void* data) +csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, struct bitvec *vector, unsigned *readIndex, void* data) { gint remaining_bits_len = ar->remaining_bits_len; gint bit_offset = ar->bit_offset; @@ -156,6 +151,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig guint32* pui32; guint64* pui64; guint8 Tag = STANDARD_TAG; + unsigned ib; if (remaining_bits_len <= 0) { @@ -171,7 +167,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig if (remaining_bits_len > 0) { pui8 = pui8DATA(data, pDescr->offset); - *pui8 = bitvec_read_field(vector, &readIndex, 1); + *pui8 = bitvec_read_field(vector, readIndex, 1); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); /* end add the bit value to protocol tree */ } @@ -207,21 +203,21 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig { if (no_of_bits <= 8) { - guint8 ui8 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint8 ui8 = bitvec_read_field(vector, readIndex, no_of_bits); pui8 = pui8DATA(data, pDescr->offset); *pui8 = ui8; LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); } else if (no_of_bits <= 16) { - guint16 ui16 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint16 ui16 = bitvec_read_field(vector, readIndex, no_of_bits); pui16 = pui16DATA(data, pDescr->offset); *pui16 = ui16; LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , *pui16); } else if (no_of_bits <= 32) { - guint32 ui32 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint32 ui32 = bitvec_read_field(vector, readIndex, no_of_bits); pui32 = pui32DATA(data, pDescr->offset); *pui32 = ui32; LOGPC(DCSN1, LOGL_NOTICE, "%s = 0x%08x | ", pDescr->sz , *pui32); @@ -269,21 +265,21 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig { if (no_of_bits <= 8) { - guint8 ui8 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint8 ui8 = bitvec_read_field(vector, readIndex, no_of_bits); pui8 = pui8DATA(data, pDescr->offset); *pui8 = ui8 + (guint8)pDescr->descr.value; LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); } else if (no_of_bits <= 16) { - guint16 ui16 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint16 ui16 = bitvec_read_field(vector, readIndex, no_of_bits); pui16 = pui16DATA(data, pDescr->offset); *pui16 = ui16 + (guint16)pDescr->descr.value; LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , *pui16); } else if (no_of_bits <= 32) { - guint32 ui32 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint32 ui32 = bitvec_read_field(vector, readIndex, no_of_bits); pui32 = pui32DATA(data, pDescr->offset); *pui32 = ui32 + (guint16)pDescr->descr.value; LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , *pui32); @@ -352,7 +348,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig pui8 = pui8DATA(data, pDescr->offset); do { - *pui8 = bitvec_read_field(vector, &readIndex, no_of_bits); + *pui8 = bitvec_read_field(vector, readIndex, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; bit_offset += no_of_bits; @@ -433,9 +429,9 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig if (no_of_bits <= 32) { - for(unsigned ib = 0; ib < 4; ib++) + for(ib = 0; ib < 4; ib++) { - guint8 ui8 = bitvec_read_field(vector, &readIndex, 8); + guint8 ui8 = bitvec_read_field(vector, readIndex, 8); pui8 = pui8DATA(data, pDescr->offset+ib); *pui8 = ui8; LOGPC(DCSN1, LOGL_NOTICE, "%s[%u] = %u | ", pDescr->sz , ib, (unsigned)*pui8); @@ -443,9 +439,9 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig } else if (no_of_bits <= 64) { - for(unsigned ib = 0; ib < 8; ib++) + for(ib = 0; ib < 8; ib++) { - guint8 ui8 = bitvec_read_field(vector, &readIndex, 8); + guint8 ui8 = bitvec_read_field(vector, readIndex, 8); pui8 = pui8DATA(data, pDescr->offset+ib); *pui8 = ui8; LOGPC(DCSN1, LOGL_NOTICE, "%s[%u] = %u | ", pDescr->sz , ib, (unsigned)*pui8); @@ -502,7 +498,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig while (count > 0) { guint8 no_of_bits = pChoice->bits; - guint8 value = bitvec_read_field(vector, &readIndex, no_of_bits); + guint8 value = bitvec_read_field(vector, readIndex, no_of_bits); if (value == pChoice->value) { CSN_DESCR descr[2]; @@ -535,7 +531,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig break; } - readIndex -= no_of_bits; + *readIndex -= no_of_bits; count--; pChoice++; i++; @@ -556,7 +552,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig guint8 length_len = pDescr->i; gint16 Status = -1; - guint8 length = bitvec_read_field(vector, &readIndex, length_len); + guint8 length = bitvec_read_field(vector, readIndex, length_len); LOGPC(DCSN1, LOGL_NOTICE, "%s length = %d | ", pDescr->sz , (int)length); bit_offset += length_len; @@ -611,11 +607,11 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig if (CSN_UNION_LH == pDescr->type) { - index |= get_masked_bits8(vector,readIndex, bit_offset, 1); + index |= get_masked_bits8(vector, readIndex, bit_offset, 1); } else { - index |= bitvec_read_field(vector, &readIndex, 1); + index |= bitvec_read_field(vector, readIndex, 1); } remaining_bits_len--; bit_offset++; @@ -638,7 +634,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig { pui8 = pui8DATA(data, pDescr->offset); *pui8 = 0x00; - if (bitvec_read_field(vector, &readIndex, 1) > 0) + if (bitvec_read_field(vector, readIndex, 1) > 0) { *pui8 = 0x01; } @@ -665,21 +661,21 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig if (no_of_bits <= 8) { - guint8 ui8 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint8 ui8 = bitvec_read_field(vector, readIndex, no_of_bits); pui8 = pui8DATA(data, pDescr->offset); *pui8 = ui8; LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); } else if (no_of_bits <= 16) { - guint16 ui16 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint16 ui16 = bitvec_read_field(vector, readIndex, no_of_bits); pui16 = pui16DATA(data, pDescr->offset); *pui16 = ui16; LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , *pui16); } else if (no_of_bits <= 32) { - guint32 ui32 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint32 ui32 = bitvec_read_field(vector, readIndex, no_of_bits); pui32 = pui32DATA(data, pDescr->offset); *pui32 = ui32; LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , *pui32); @@ -707,21 +703,21 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig { if (no_of_bits <= 8) { - guint8 ui8 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint8 ui8 = bitvec_read_field(vector, readIndex, no_of_bits); pui8 = pui8DATA(data, pDescr->offset); *pui8 = ui8 + (guint8)pDescr->descr.value; LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); } else if (no_of_bits <= 16) { - guint16 ui16 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint16 ui16 = bitvec_read_field(vector, readIndex, no_of_bits); pui16 = pui16DATA(data, pDescr->offset); *pui16 = ui16 + (guint16)pDescr->descr.value; LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , *pui16); } else if (no_of_bits <= 32) { - guint32 ui32 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint32 ui32 = bitvec_read_field(vector, readIndex, no_of_bits); pui32 = pui32DATA(data, pDescr->offset); *pui32 = ui32 + (guint16)pDescr->descr.value; LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , *pui32); @@ -788,7 +784,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig while (nCount > 0) { - *pui8 = bitvec_read_field(vector, &readIndex, no_of_bits); + *pui8 = bitvec_read_field(vector, readIndex, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; bit_offset += no_of_bits; @@ -801,7 +797,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig while (nCount > 0) { - *pui16 = bitvec_read_field(vector, &readIndex, no_of_bits); + *pui16 = bitvec_read_field(vector, readIndex, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , *pui16); pui16++; bit_offset += no_of_bits; @@ -877,13 +873,13 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig if (no_of_bits <= 32) { - guint32 ui32 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint32 ui32 = bitvec_read_field(vector, readIndex, no_of_bits); pui32 = pui32DATA(data, pDescr->offset); *pui32 = ui32; } else if (no_of_bits <= 64) { - guint64 ui64 = bitvec_read_field(vector, &readIndex, no_of_bits); + guint64 ui64 = bitvec_read_field(vector, readIndex, no_of_bits); pui64 = pui64DATA(data, pDescr->offset); *pui64 = ui64; LOGPC(DCSN1, LOGL_NOTICE, "%s = %lu | ", pDescr->sz , *pui64); @@ -948,7 +944,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig } else { - fExist = bitvec_read_field(vector, &readIndex, 1); + fExist = bitvec_read_field(vector, readIndex, 1); } *pui8 = fExist; @@ -987,7 +983,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig /* the "regular" M_NEXT_EXIST description element */ fExist = 0x00; - if (bitvec_read_field(vector, &readIndex, 1)) + if (bitvec_read_field(vector, readIndex, 1)) { fExist = 0x01; } @@ -1030,7 +1026,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig } /* the "regular" M_NEXT_EXIST_LH description element */ - fExist = get_masked_bits8(vector,readIndex,bit_offset, 1); + fExist = get_masked_bits8(vector, readIndex, bit_offset, 1); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)fExist); *pui8++ = fExist; remaining_bits_len -= 1; @@ -1080,7 +1076,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig if (nB1 > 0) { /* take care of the first byte - it will be right aligned */ - *pui8 = bitvec_read_field(vector, &readIndex, nB1); + *pui8 = bitvec_read_field(vector, readIndex, nB1); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; no_of_bits -= nB1; @@ -1090,7 +1086,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig /* remaining no_of_bits is a multiple of 8 or 0 */ while (no_of_bits > 0) { - *pui8 = bitvec_read_field(vector, &readIndex, 8); + *pui8 = bitvec_read_field(vector, readIndex, 8); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; no_of_bits -= 8; @@ -1134,14 +1130,14 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig while (no_of_bits >= 8) { - *pui8 = bitvec_read_field(vector, &readIndex, 8); + *pui8 = bitvec_read_field(vector, readIndex, 8); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; no_of_bits -= 8; } if (no_of_bits > 0) - { - *pui8 = bitvec_read_field(vector, &readIndex, no_of_bits); + { + *pui8 = bitvec_read_field(vector, readIndex, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; bit_offset += no_of_bits; @@ -1212,7 +1208,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig while (count > 0) { readIndex -= 8; - *pui8 = bitvec_read_field(vector, &readIndex, 8); + *pui8 = bitvec_read_field(vector, readIndex, 8); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; bit_offset += 8; @@ -1245,7 +1241,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig remaining_bits_len--; /* extract and store no_of_bits long element from bitstream */ - *pui8 = bitvec_read_field(vector, &readIndex, no_of_bits); + *pui8 = bitvec_read_field(vector, readIndex, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; remaining_bits_len -= no_of_bits; @@ -1394,7 +1390,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig if (no_of_bits <= 32) { - ui32 = bitvec_read_field(vector, &readIndex, no_of_bits); + ui32 = bitvec_read_field(vector, readIndex, no_of_bits); } else { @@ -1446,7 +1442,7 @@ csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsig -gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsigned& writeIndex, void* data) +gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, struct bitvec *vector, unsigned *writeIndex, void* data) { gint remaining_bits_len = ar->remaining_bits_len; gint bit_offset = ar->bit_offset; @@ -1454,6 +1450,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector guint16* pui16; guint32* pui32; guint64* pui64; + unsigned ib; guint8 Tag = STANDARD_TAG; @@ -1471,7 +1468,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector if (remaining_bits_len > 0) { pui8 = pui8DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui8, 1); + bitvec_write_field(vector, writeIndex, *pui8, 1); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); /* end add the bit value to protocol tree */ } @@ -1505,19 +1502,19 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector if (no_of_bits <= 8) { pui8 = pui8DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui8, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui8, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); } else if (no_of_bits <= 16) { pui16 = pui16DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui16, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui16, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , *pui16); } else if (no_of_bits <= 32) { pui32 = pui32DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui32, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui32, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , *pui32); } else @@ -1550,19 +1547,19 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector if (no_of_bits <= 8) { pui8 = pui8DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui8 - (guint8)pDescr->descr.value, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui8 - (guint8)pDescr->descr.value, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)(*pui8 - (guint8)pDescr->descr.value)); } else if (no_of_bits <= 16) { pui16 = pui16DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui16 - (guint16)pDescr->descr.value, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui16 - (guint16)pDescr->descr.value, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , (unsigned short)(*pui16 - (guint16)pDescr->descr.value)); } else if (no_of_bits <= 32) { pui32 = pui32DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui32 - (guint16)pDescr->descr.value, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui32 - (guint16)pDescr->descr.value, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , (unsigned int)(*pui32 - (guint16)pDescr->descr.value)); } else @@ -1590,12 +1587,12 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector if (no_of_bits <= 8) { pui8 = pui8DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui8, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui8, no_of_bits); // TODO : Change get_masked_bits8() - writeIndex -= no_of_bits; + *writeIndex -= no_of_bits; guint8 ui8 = get_masked_bits8(vector, writeIndex, bit_offset, no_of_bits); - writeIndex -= no_of_bits; - bitvec_write_field(vector, &writeIndex, ui8, no_of_bits); + *writeIndex -= no_of_bits; + bitvec_write_field(vector, writeIndex, ui8, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); } @@ -1632,7 +1629,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector pui8 = pui8DATA(data, pDescr->offset); do { - bitvec_write_field(vector, &writeIndex, *pui8, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui8, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; remaining_bits_len -= no_of_bits; @@ -1715,19 +1712,19 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector if (no_of_bits <= 32) { - for(unsigned ib = 0; ib < 4; ib++) + for(ib = 0; ib < 4; ib++) { pui8 = pui8DATA(data, pDescr->offset+ib); - bitvec_write_field(vector, &writeIndex, *pui8, 8); + bitvec_write_field(vector, writeIndex, *pui8, 8); LOGPC(DCSN1, LOGL_NOTICE, "%s[%u] = %u | ", pDescr->sz , ib, (unsigned)*pui8); } } else if (no_of_bits <= 64) { - for(unsigned ib = 0; ib < 8; ib++) + for(ib = 0; ib < 8; ib++) { pui8 = pui8DATA(data, pDescr->offset+ib); - bitvec_write_field(vector, &writeIndex, *pui8, 8); + bitvec_write_field(vector, writeIndex, *pui8, 8); LOGPC(DCSN1, LOGL_NOTICE, "%s[%u] = %u | ", pDescr->sz , ib, (unsigned)*pui8); } } @@ -1782,7 +1779,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector guint8 no_of_bits = pChoice->bits; guint8 value = pChoice->value; LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pChoice->descr.sz , (unsigned)value); - bitvec_write_field(vector, &writeIndex, value, no_of_bits); + bitvec_write_field(vector, writeIndex, value, no_of_bits); CSN_DESCR descr[2]; gint16 Status; @@ -1820,16 +1817,16 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector unsigned lengthIndex; // store writeIndex for length value (7 bit) - lengthIndex = writeIndex; - writeIndex += length_len; + lengthIndex = *writeIndex; + *writeIndex += length_len; bit_offset += length_len; remaining_bits_len -= length_len; arT.direction = 0; csnStreamInit(&arT, bit_offset, remaining_bits_len); Status = serialize(&arT, vector, writeIndex, pvDATA(data, pDescr->offset)); - bitvec_write_field(vector, &lengthIndex, writeIndex-lengthIndex-length_len, length_len); - LOGPC(DCSN1, LOGL_NOTICE, "%s length = %u | ", pDescr->sz , (unsigned)(writeIndex-lengthIndex)); + bitvec_write_field(vector, &lengthIndex, *writeIndex - lengthIndex - length_len, length_len); + LOGPC(DCSN1, LOGL_NOTICE, "%s length = %u | ", pDescr->sz , (unsigned)(*writeIndex - lengthIndex)); if (Status >= 0) { @@ -1867,10 +1864,10 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector /* Assign UnionType */ pui8 = pui8DATA(data, pDescr->offset); //read index from data and write to vector - bitvec_write_field(vector, &writeIndex, *pui8, Bits); + bitvec_write_field(vector, writeIndex, *pui8, Bits); //decode index - writeIndex -= Bits; + *writeIndex -= Bits; while (Bits > 0) { @@ -1878,11 +1875,11 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector if (CSN_UNION_LH == pDescr->type) { - index |= get_masked_bits8(vector,writeIndex, bit_offset, 1); + index |= get_masked_bits8(vector, writeIndex, bit_offset, 1); } else { - index |= bitvec_read_field(vector, &writeIndex, 1); + index |= bitvec_read_field(vector, writeIndex, 1); } remaining_bits_len--; @@ -1890,8 +1887,8 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector Bits--; } - writeIndex -= Bits; - bitvec_write_field(vector, &writeIndex, index, Bits); + *writeIndex -= Bits; + bitvec_write_field(vector, writeIndex, index, Bits); /* script index to continue on, limited in case we do not have a power of 2 */ @@ -1904,7 +1901,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector case CSN_BIT: { pui8 = pui8DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui8, 1); + bitvec_write_field(vector, writeIndex, *pui8, 1); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); remaining_bits_len--; bit_offset++; @@ -1926,19 +1923,19 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector if (no_of_bits <= 8) { pui8 = pui8DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui8, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui8, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); } else if (no_of_bits <= 16) { pui16 = pui16DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui16, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui16, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , *pui16); } else if (no_of_bits <= 32) { pui32 = pui32DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui32, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui32, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , *pui32); } else @@ -1966,19 +1963,19 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector if (no_of_bits <= 8) { pui8 = pui8DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui8 - (guint8)pDescr->descr.value, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui8 - (guint8)pDescr->descr.value, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)(*pui8 - (guint8)pDescr->descr.value)); } else if (no_of_bits <= 16) { pui16 = pui16DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui16 - (guint16)pDescr->descr.value, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui16 - (guint16)pDescr->descr.value, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , (unsigned short)(*pui16 - (guint16)pDescr->descr.value)); } else if (no_of_bits <= 32) { pui32 = pui32DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui32 - (guint16)pDescr->descr.value, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui32 - (guint16)pDescr->descr.value, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , (unsigned int)(*pui32 - (guint16)pDescr->descr.value)); } else @@ -2007,12 +2004,12 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector if (no_of_bits <= 8) { pui8 = pui8DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui8, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui8, no_of_bits); // TODO : Change get_masked_bits8() - writeIndex -= no_of_bits; + *writeIndex -= no_of_bits; guint8 ui8 = get_masked_bits8(vector, writeIndex, bit_offset, no_of_bits); - writeIndex -= no_of_bits; - bitvec_write_field(vector, &writeIndex, ui8, no_of_bits); + *writeIndex -= no_of_bits; + bitvec_write_field(vector, writeIndex, ui8, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); } @@ -2049,7 +2046,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector pui8 = pui8DATA(data, pDescr->offset); do { - bitvec_write_field(vector, &writeIndex, *pui8, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui8, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; remaining_bits_len -= no_of_bits; @@ -2132,13 +2129,13 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector if (no_of_bits <= 32) { pui32 = pui32DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui32, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui32, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %d | ", pDescr->sz , *pui32); } else if (no_of_bits <= 64) { pui64 = pui64DATA(data, pDescr->offset); - bitvec_write_field(vector, &writeIndex, *pui64, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui64, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %lu | ", pDescr->sz , *pui64); } else @@ -2196,7 +2193,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector unsigned exist = 0; pui8 = pui8DATA(data, pDescr->offset); exist = *pui8; - bitvec_write_field(vector, &writeIndex, *pui8, 1); + bitvec_write_field(vector, writeIndex, *pui8, 1); writeIndex--; if (CSN_EXIST_LH == pDescr->type) { @@ -2204,10 +2201,10 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector } else { - fExist = bitvec_read_field(vector, &writeIndex, 1); + fExist = bitvec_read_field(vector, writeIndex, 1); } writeIndex--; - bitvec_write_field(vector, &writeIndex, fExist, 1); + bitvec_write_field(vector, writeIndex, fExist, 1); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz, (unsigned)fExist); remaining_bits_len--; bit_offset++; @@ -2238,7 +2235,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector break; } - bitvec_write_field(vector, &writeIndex, *pui8, 1); + bitvec_write_field(vector, writeIndex, *pui8, 1); fExist = *pui8; LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); @@ -2272,11 +2269,11 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector } /* the "regular" M_NEXT_EXIST_LH description element */ - bitvec_write_field(vector, &writeIndex, *pui8, 1); + bitvec_write_field(vector, writeIndex, *pui8, 1); writeIndex--; - fExist = get_masked_bits8(vector,writeIndex, bit_offset, 1); + fExist = get_masked_bits8(vector, writeIndex, bit_offset, 1); writeIndex--; - bitvec_write_field(vector, &writeIndex, fExist, 1); + bitvec_write_field(vector, writeIndex, fExist, 1); pui8++; remaining_bits_len--; @@ -2324,7 +2321,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector if (nB1 > 0) { /* take care of the first byte - it will be right aligned */ - bitvec_write_field(vector, &writeIndex, *pui8, nB1); + bitvec_write_field(vector, writeIndex, *pui8, nB1); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; no_of_bits -= nB1; @@ -2335,7 +2332,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector /* remaining no_of_bits is a multiple of 8 or 0 */ while (no_of_bits > 0) { - bitvec_write_field(vector, &writeIndex, *pui8, 8); + bitvec_write_field(vector, writeIndex, *pui8, 8); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; no_of_bits -= 8; @@ -2382,14 +2379,14 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector while (no_of_bits > 0) { - bitvec_write_field(vector, &writeIndex, *pui8, 8); + bitvec_write_field(vector, writeIndex, *pui8, 8); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; no_of_bits -= 8; } if (nB1 > 0) { - bitvec_write_field(vector, &writeIndex, *pui8, nB1); + bitvec_write_field(vector, writeIndex, *pui8, nB1); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; no_of_bits -= nB1; @@ -2421,14 +2418,14 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector * < padding bits > ::= { null | 0 < spare padding > ! < Ignore : 1 bit** = < no string > > } ; */ guint8 fl = filler&(0xff>>(8-bits_to_handle + 1)); - bitvec_write_field(vector, &writeIndex, fl, bits_to_handle); + bitvec_write_field(vector, writeIndex, fl, bits_to_handle); LOGPC(DCSN1, LOGL_NOTICE, "%u|", fl); remaining_bits_len -= bits_to_handle; bit_offset += bits_to_handle; } else if (bits_to_handle == 0) { - bitvec_write_field(vector, &writeIndex, filler, 8); + bitvec_write_field(vector, writeIndex, filler, 8); LOGPC(DCSN1, LOGL_NOTICE, "%u|", filler); remaining_bits_len -= 8; bit_offset += 8; @@ -2467,7 +2464,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector while (count > 0) { - bitvec_write_field(vector, &writeIndex, *pui8, 8); + bitvec_write_field(vector, writeIndex, *pui8, 8); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; bit_offset += 8; @@ -2495,13 +2492,13 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector ElementCount = *pui8DATA(data, (gint16)pDescr->descr.value); while (ElementCount > 0) { /* tag control shows existence of next list elements */ - bitvec_write_field(vector, &writeIndex, Tag, 1); + bitvec_write_field(vector, writeIndex, Tag, 1); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)Tag); bit_offset++; remaining_bits_len--; /* extract and store no_of_bits long element from bitstream */ - bitvec_write_field(vector, &writeIndex, *pui8, no_of_bits); + bitvec_write_field(vector, writeIndex, *pui8, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)*pui8); pui8++; ElementCount--; @@ -2515,7 +2512,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector remaining_bits_len -= no_of_bits; } - bitvec_write_field(vector, &writeIndex, !Tag, 1); + bitvec_write_field(vector, writeIndex, !Tag, 1); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)(!Tag)); bit_offset++; remaining_bits_len--; @@ -2537,7 +2534,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector while (ElementCount > 0) { /* tag control shows existence of next list elements */ - bitvec_write_field(vector, &writeIndex, Tag, 1); + bitvec_write_field(vector, writeIndex, Tag, 1); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)Tag); bit_offset++; @@ -2568,7 +2565,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector } } - bitvec_write_field(vector, &writeIndex, !Tag, 1); + bitvec_write_field(vector, writeIndex, !Tag, 1); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)(!Tag)); bit_offset++; @@ -2606,7 +2603,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector { /* get data element */ if (ElementCount != ElementNum) { - bitvec_write_field(vector, &writeIndex, Tag, 1); + bitvec_write_field(vector, writeIndex, Tag, 1); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)Tag); bit_offset++; remaining_bits_len--; @@ -2633,7 +2630,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector } } - bitvec_write_field(vector, &writeIndex, !Tag, 1); + bitvec_write_field(vector, writeIndex, !Tag, 1); bit_offset++; remaining_bits_len--; Tag = STANDARD_TAG; /* in case it was set to "reversed" */ @@ -2644,7 +2641,7 @@ gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector case CSN_FIXED: { /* Verify the fixed bits */ guint8 no_of_bits = (guint8) pDescr->i; - bitvec_write_field(vector, &writeIndex, pDescr->offset, no_of_bits); + bitvec_write_field(vector, writeIndex, pDescr->offset, no_of_bits); LOGPC(DCSN1, LOGL_NOTICE, "%s = %u | ", pDescr->sz , (unsigned)pDescr->offset); remaining_bits_len -= no_of_bits; bit_offset += no_of_bits; diff --git a/src/csn1.h b/src/csn1.h index f445dd2d..b3fdc0a5 100644 --- a/src/csn1.h +++ b/src/csn1.h @@ -28,12 +28,7 @@ #ifndef _PACKET_CSN1_H_ #define _PACKET_CSN1_H_ -extern "C" { #include -} - -#include -#include #define MIN(a,b) (((a)<(b))?(a):(b)) //#define max(a,b) (((a)>(b))?(a):(b)) @@ -88,7 +83,7 @@ typedef struct gint direction; /* 0 - decode; 1 - encode */ } csnStream_t; -typedef gint16 (*StreamSerializeFcn_t)(csnStream_t* ar, bitvec *vector, unsigned& readIndex, void* data); +typedef gint16 (*StreamSerializeFcn_t)(csnStream_t* ar, struct bitvec *vector, unsigned *readIndex, void* data); typedef enum { CSN_END = 0, @@ -233,9 +228,9 @@ void csnStreamInit(csnStream_t* ar,gint BitOffset,gint BitCount); * RETURNS: int Number of bits left to be unpacked. Negative Error code if failed to unpack all bits ******************************************************************************/ -gint16 csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsigned& readIndex, void* data); +gint16 csnStreamDecoder(csnStream_t* ar, const CSN_DESCR* pDescr, struct bitvec *vector, unsigned *readIndex, void* data); -gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, bitvec *vector, unsigned& readIndex, void* data); +gint16 csnStreamEncoder(csnStream_t* ar, const CSN_DESCR* pDescr, struct bitvec *vector, unsigned *writeIndex, void* data); /* CSN struct macro's */ #define CSN_DESCR_BEGIN(_STRUCT)\ diff --git a/src/gsm_rlcmac.cpp b/src/gsm_rlcmac.cpp index 403b65e4..52154b8b 100644 --- a/src/gsm_rlcmac.cpp +++ b/src/gsm_rlcmac.cpp @@ -184,7 +184,7 @@ CSN_DESCR_BEGIN (EGPRS_AckNack_Desc_t) CSN_DESCR_END (EGPRS_AckNack_Desc_t) /*< EGPRS Ack/Nack Description IE >*/ -gint16 Egprs_Ack_Nack_Desc_w_len_Dissector(csnStream_t* ar, bitvec *vector, unsigned& readIndex, void* data) +gint16 Egprs_Ack_Nack_Desc_w_len_Dissector(csnStream_t* ar, bitvec *vector, unsigned *readIndex, void* data) { if (ar->direction == 0) { @@ -745,7 +745,7 @@ CSN_DESCR_BEGIN(Receive_N_PDU_Number_t) M_UINT (Receive_N_PDU_Number_t, value, 8), CSN_DESCR_END (Receive_N_PDU_Number_t) -gint16 Receive_N_PDU_Number_list_Dissector(csnStream_t* ar, bitvec *vector, unsigned& readIndex, void* data) +gint16 Receive_N_PDU_Number_list_Dissector(csnStream_t* ar, bitvec *vector, unsigned *readIndex, void* data) { if (ar->direction == 0) { @@ -856,7 +856,7 @@ CSN_DESCR_BEGIN (Content_t) M_UINT_OR_NULL (Content_t, PS_HandoverCapability, 1), CSN_DESCR_END (Content_t) -gint16 Content_Dissector(csnStream_t* ar, bitvec *vector, unsigned& readIndex, void* data) +gint16 Content_Dissector(csnStream_t* ar, bitvec *vector, unsigned *readIndex, void* data) { if (ar->direction == 0) { @@ -880,7 +880,7 @@ CSN_DESCR_BEGIN (Additional_access_technologies_t) M_REC_TARRAY (Additional_access_technologies_t, Additional_access_technologies[0], Additional_access_technologies_struct_t, Count_additional_access_technologies), CSN_DESCR_END (Additional_access_technologies_t) -gint16 Additional_access_technologies_Dissector(csnStream_t* ar, bitvec* vector, unsigned& readIndex, void* data) +gint16 Additional_access_technologies_Dissector(csnStream_t* ar, bitvec* vector, unsigned *readIndex, void* data) { if (ar->direction == 0) { @@ -4999,73 +4999,73 @@ int decode_gsm_rlcmac_uplink(bitvec * vector, RlcMacUplink_t * data) * CSNDESCR is an array that holds the different element types * ar is the csn context holding the bitcount, offset and output */ - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Cell_Change_Failure_t), vector, readIndex, &data->u.Packet_Cell_Change_Failure); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Cell_Change_Failure_t), vector, &readIndex, &data->u.Packet_Cell_Change_Failure); break; } case MT_PACKET_CONTROL_ACK: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Control_Acknowledgement_t), vector, readIndex, &data->u.Packet_Control_Acknowledgement); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Control_Acknowledgement_t), vector, &readIndex, &data->u.Packet_Control_Acknowledgement); break; } case MT_PACKET_DOWNLINK_ACK_NACK: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Downlink_Ack_Nack_t), vector, readIndex, &data->u.Packet_Downlink_Ack_Nack); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Downlink_Ack_Nack_t), vector, &readIndex, &data->u.Packet_Downlink_Ack_Nack); break; } case MT_PACKET_UPLINK_DUMMY_CONTROL_BLOCK: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Uplink_Dummy_Control_Block_t), vector, readIndex, &data->u.Packet_Uplink_Dummy_Control_Block); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Uplink_Dummy_Control_Block_t), vector, &readIndex, &data->u.Packet_Uplink_Dummy_Control_Block); break; } case MT_PACKET_MEASUREMENT_REPORT: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Measurement_Report_t), vector, readIndex, &data->u.Packet_Measurement_Report); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Measurement_Report_t), vector, &readIndex, &data->u.Packet_Measurement_Report); break; } case MT_PACKET_RESOURCE_REQUEST: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Resource_Request_t), vector, readIndex, &data->u.Packet_Resource_Request); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Resource_Request_t), vector, &readIndex, &data->u.Packet_Resource_Request); break; } case MT_PACKET_MOBILE_TBF_STATUS: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Mobile_TBF_Status_t), vector, readIndex, &data->u.Packet_Mobile_TBF_Status); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Mobile_TBF_Status_t), vector, &readIndex, &data->u.Packet_Mobile_TBF_Status); break; } case MT_PACKET_PSI_STATUS: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_PSI_Status_t), vector, readIndex, &data->u.Packet_PSI_Status); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_PSI_Status_t), vector, &readIndex, &data->u.Packet_PSI_Status); break; } case MT_EGPRS_PACKET_DOWNLINK_ACK_NACK: { - ret = csnStreamDecoder(&ar, CSNDESCR(EGPRS_PD_AckNack_t), vector, readIndex, &data->u.Egprs_Packet_Downlink_Ack_Nack); + ret = csnStreamDecoder(&ar, CSNDESCR(EGPRS_PD_AckNack_t), vector, &readIndex, &data->u.Egprs_Packet_Downlink_Ack_Nack); break; } case MT_PACKET_PAUSE: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Pause_t), vector, readIndex, &data->u.Packet_Pause); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Pause_t), vector, &readIndex, &data->u.Packet_Pause); break; } case MT_PACKET_ENHANCED_MEASUREMENT_REPORT: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Enh_Measurement_Report_t), vector, readIndex, &data->u.Packet_Enh_Measurement_Report); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Enh_Measurement_Report_t), vector, &readIndex, &data->u.Packet_Enh_Measurement_Report); break; } case MT_ADDITIONAL_MS_RAC: { - ret = csnStreamDecoder(&ar, CSNDESCR(Additional_MS_Rad_Access_Cap_t), vector, readIndex, &data->u.Additional_MS_Rad_Access_Cap); + ret = csnStreamDecoder(&ar, CSNDESCR(Additional_MS_Rad_Access_Cap_t), vector, &readIndex, &data->u.Additional_MS_Rad_Access_Cap); break; } case MT_PACKET_CELL_CHANGE_NOTIFICATION: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Cell_Change_Notification_t), vector, readIndex, &data->u.Packet_Cell_Change_Notification); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Cell_Change_Notification_t), vector, &readIndex, &data->u.Packet_Cell_Change_Notification); break; } case MT_PACKET_SI_STATUS: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_SI_Status_t), vector, readIndex, &data->u.Packet_SI_Status); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_SI_Status_t), vector, &readIndex, &data->u.Packet_SI_Status); break; } default: @@ -5154,127 +5154,127 @@ int decode_gsm_rlcmac_downlink(bitvec * vector, RlcMacDownlink_t * data) { case MT_PACKET_ACCESS_REJECT: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Access_Reject_t), vector, readIndex, &data->u.Packet_Access_Reject); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Access_Reject_t), vector, &readIndex, &data->u.Packet_Access_Reject); break; } case MT_PACKET_CELL_CHANGE_ORDER: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Cell_Change_Order_t), vector, readIndex, &data->u.Packet_Cell_Change_Order); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Cell_Change_Order_t), vector, &readIndex, &data->u.Packet_Cell_Change_Order); break; } case MT_PACKET_CELL_CHANGE_CONTINUE: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Cell_Change_Continue_t), vector, readIndex, &data->u.Packet_Cell_Change_Continue); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Cell_Change_Continue_t), vector, &readIndex, &data->u.Packet_Cell_Change_Continue); break; } case MT_PACKET_DOWNLINK_ASSIGNMENT: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Downlink_Assignment_t), vector, readIndex, &data->u.Packet_Downlink_Assignment); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Downlink_Assignment_t), vector, &readIndex, &data->u.Packet_Downlink_Assignment); break; } case MT_PACKET_MEASUREMENT_ORDER: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Measurement_Order_t), vector, readIndex, &data->u.Packet_Measurement_Order); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Measurement_Order_t), vector, &readIndex, &data->u.Packet_Measurement_Order); break; } case MT_PACKET_NEIGHBOUR_CELL_DATA: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Neighbour_Cell_Data_t), vector, readIndex, &data->u.Packet_Neighbour_Cell_Data); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Neighbour_Cell_Data_t), vector, &readIndex, &data->u.Packet_Neighbour_Cell_Data); break; } case MT_PACKET_SERVING_CELL_DATA: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Serving_Cell_Data_t), vector, readIndex, &data->u.Packet_Serving_Cell_Data); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Serving_Cell_Data_t), vector, &readIndex, &data->u.Packet_Serving_Cell_Data); break; } case MT_PACKET_PAGING_REQUEST: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Paging_Request_t), vector, readIndex, &data->u.Packet_Paging_Request); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Paging_Request_t), vector, &readIndex, &data->u.Packet_Paging_Request); break; } case MT_PACKET_PDCH_RELEASE: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_PDCH_Release_t), vector, readIndex, &data->u.Packet_PDCH_Release); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_PDCH_Release_t), vector, &readIndex, &data->u.Packet_PDCH_Release); break; } case MT_PACKET_POLLING_REQ: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Polling_Request_t), vector, readIndex, &data->u.Packet_Polling_Request); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Polling_Request_t), vector, &readIndex, &data->u.Packet_Polling_Request); break; } case MT_PACKET_POWER_CONTROL_TIMING_ADVANCE: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Power_Control_Timing_Advance_t), vector, readIndex, &data->u.Packet_Power_Control_Timing_Advance); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Power_Control_Timing_Advance_t), vector, &readIndex, &data->u.Packet_Power_Control_Timing_Advance); break; } case MT_PACKET_PRACH_PARAMETERS: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_PRACH_Parameters_t), vector, readIndex, &data->u.Packet_PRACH_Parameters); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_PRACH_Parameters_t), vector, &readIndex, &data->u.Packet_PRACH_Parameters); break; } case MT_PACKET_QUEUEING_NOTIFICATION: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Queueing_Notification_t), vector, readIndex, &data->u.Packet_Queueing_Notification); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Queueing_Notification_t), vector, &readIndex, &data->u.Packet_Queueing_Notification); break; } case MT_PACKET_TIMESLOT_RECONFIGURE: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Timeslot_Reconfigure_t), vector, readIndex, &data->u.Packet_Timeslot_Reconfigure); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Timeslot_Reconfigure_t), vector, &readIndex, &data->u.Packet_Timeslot_Reconfigure); break; } case MT_PACKET_TBF_RELEASE: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_TBF_Release_t), vector, readIndex, &data->u.Packet_TBF_Release); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_TBF_Release_t), vector, &readIndex, &data->u.Packet_TBF_Release); break; } case MT_PACKET_UPLINK_ACK_NACK: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Uplink_Ack_Nack_t), vector, readIndex, &data->u.Packet_Uplink_Ack_Nack); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Uplink_Ack_Nack_t), vector, &readIndex, &data->u.Packet_Uplink_Ack_Nack); break; } case MT_PACKET_UPLINK_ASSIGNMENT: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Uplink_Assignment_t), vector, readIndex, &data->u.Packet_Uplink_Assignment); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Uplink_Assignment_t), vector, &readIndex, &data->u.Packet_Uplink_Assignment); break; } case MT_PACKET_HANDOVER_COMMAND: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Handover_Command_t), vector, readIndex, &data->u.Packet_Handover_Command); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Handover_Command_t), vector, &readIndex, &data->u.Packet_Handover_Command); break; } case MT_PACKET_PHYSICAL_INFORMATION: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_PhysicalInformation_t), vector, readIndex, &data->u.Packet_Handover_Command); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_PhysicalInformation_t), vector, &readIndex, &data->u.Packet_Handover_Command); break; } case MT_PACKET_DOWNLINK_DUMMY_CONTROL_BLOCK: { - ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Downlink_Dummy_Control_Block_t), vector, readIndex, &data->u.Packet_Downlink_Dummy_Control_Block); + ret = csnStreamDecoder(&ar, CSNDESCR(Packet_Downlink_Dummy_Control_Block_t), vector, &readIndex, &data->u.Packet_Downlink_Dummy_Control_Block); break; } case MT_PACKET_SYSTEM_INFO_1: { - ret = csnStreamDecoder(&ar, CSNDESCR(PSI1_t), vector, readIndex, &data->u.PSI1); + ret = csnStreamDecoder(&ar, CSNDESCR(PSI1_t), vector, &readIndex, &data->u.PSI1); break; } case MT_PACKET_SYSTEM_INFO_2: { - ret = csnStreamDecoder(&ar, CSNDESCR(PSI2_t), vector, readIndex, &data->u.PSI2); + ret = csnStreamDecoder(&ar, CSNDESCR(PSI2_t), vector, &readIndex, &data->u.PSI2); break; } case MT_PACKET_SYSTEM_INFO_3: { - ret = csnStreamDecoder(&ar, CSNDESCR(PSI3_t), vector, readIndex, &data->u.PSI3); + ret = csnStreamDecoder(&ar, CSNDESCR(PSI3_t), vector, &readIndex, &data->u.PSI3); break; } case MT_PACKET_SYSTEM_INFO_5: { - ret = csnStreamDecoder(&ar, CSNDESCR(PSI5_t), vector, readIndex, &data->u.PSI5); + ret = csnStreamDecoder(&ar, CSNDESCR(PSI5_t), vector, &readIndex, &data->u.PSI5); break; } case MT_PACKET_SYSTEM_INFO_13: { - ret = csnStreamDecoder(&ar, CSNDESCR(PSI13_t), vector, readIndex, &data->u.PSI13); + ret = csnStreamDecoder(&ar, CSNDESCR(PSI13_t), vector, &readIndex, &data->u.PSI13); break; } default: @@ -5316,73 +5316,73 @@ int encode_gsm_rlcmac_uplink(bitvec * vector, RlcMacUplink_t * data) * CSNDESCR is an array that holds the different element types * ar is the csn context holding the bitcount, offset and output */ - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Cell_Change_Failure_t), vector, writeIndex, &data->u.Packet_Cell_Change_Failure); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Cell_Change_Failure_t), vector, &writeIndex, &data->u.Packet_Cell_Change_Failure); break; } case MT_PACKET_CONTROL_ACK: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Control_Acknowledgement_t), vector, writeIndex, &data->u.Packet_Control_Acknowledgement); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Control_Acknowledgement_t), vector, &writeIndex, &data->u.Packet_Control_Acknowledgement); break; } case MT_PACKET_DOWNLINK_ACK_NACK: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Downlink_Ack_Nack_t), vector, writeIndex, &data->u.Packet_Downlink_Ack_Nack); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Downlink_Ack_Nack_t), vector, &writeIndex, &data->u.Packet_Downlink_Ack_Nack); break; } case MT_PACKET_UPLINK_DUMMY_CONTROL_BLOCK: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Uplink_Dummy_Control_Block_t), vector, writeIndex, &data->u.Packet_Uplink_Dummy_Control_Block); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Uplink_Dummy_Control_Block_t), vector, &writeIndex, &data->u.Packet_Uplink_Dummy_Control_Block); break; } case MT_PACKET_MEASUREMENT_REPORT: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Measurement_Report_t), vector, writeIndex, &data->u.Packet_Measurement_Report); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Measurement_Report_t), vector, &writeIndex, &data->u.Packet_Measurement_Report); break; } case MT_PACKET_RESOURCE_REQUEST: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Resource_Request_t), vector, writeIndex, &data->u.Packet_Resource_Request); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Resource_Request_t), vector, &writeIndex, &data->u.Packet_Resource_Request); break; } case MT_PACKET_MOBILE_TBF_STATUS: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Mobile_TBF_Status_t), vector, writeIndex, &data->u.Packet_Mobile_TBF_Status); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Mobile_TBF_Status_t), vector, &writeIndex, &data->u.Packet_Mobile_TBF_Status); break; } case MT_PACKET_PSI_STATUS: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_PSI_Status_t), vector, writeIndex, &data->u.Packet_PSI_Status); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_PSI_Status_t), vector, &writeIndex, &data->u.Packet_PSI_Status); break; } case MT_EGPRS_PACKET_DOWNLINK_ACK_NACK: { - ret = csnStreamEncoder(&ar, CSNDESCR(EGPRS_PD_AckNack_t), vector, writeIndex, &data->u.Egprs_Packet_Downlink_Ack_Nack); + ret = csnStreamEncoder(&ar, CSNDESCR(EGPRS_PD_AckNack_t), vector, &writeIndex, &data->u.Egprs_Packet_Downlink_Ack_Nack); break; } case MT_PACKET_PAUSE: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Pause_t), vector, writeIndex, &data->u.Packet_Pause); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Pause_t), vector, &writeIndex, &data->u.Packet_Pause); break; } case MT_PACKET_ENHANCED_MEASUREMENT_REPORT: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Enh_Measurement_Report_t), vector, writeIndex, &data->u.Packet_Enh_Measurement_Report); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Enh_Measurement_Report_t), vector, &writeIndex, &data->u.Packet_Enh_Measurement_Report); break; } case MT_ADDITIONAL_MS_RAC: { - ret = csnStreamEncoder(&ar, CSNDESCR(Additional_MS_Rad_Access_Cap_t), vector, writeIndex, &data->u.Additional_MS_Rad_Access_Cap); + ret = csnStreamEncoder(&ar, CSNDESCR(Additional_MS_Rad_Access_Cap_t), vector, &writeIndex, &data->u.Additional_MS_Rad_Access_Cap); break; } case MT_PACKET_CELL_CHANGE_NOTIFICATION: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Cell_Change_Notification_t), vector, writeIndex, &data->u.Packet_Cell_Change_Notification); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Cell_Change_Notification_t), vector, &writeIndex, &data->u.Packet_Cell_Change_Notification); break; } case MT_PACKET_SI_STATUS: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_SI_Status_t), vector, writeIndex, &data->u.Packet_SI_Status); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_SI_Status_t), vector, &writeIndex, &data->u.Packet_SI_Status); break; } default: @@ -5468,127 +5468,127 @@ int encode_gsm_rlcmac_downlink(bitvec * vector, RlcMacDownlink_t * data) { case MT_PACKET_ACCESS_REJECT: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Access_Reject_t), vector, writeIndex, &data->u.Packet_Access_Reject); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Access_Reject_t), vector, &writeIndex, &data->u.Packet_Access_Reject); break; } case MT_PACKET_CELL_CHANGE_ORDER: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Cell_Change_Order_t), vector, writeIndex, &data->u.Packet_Cell_Change_Order); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Cell_Change_Order_t), vector, &writeIndex, &data->u.Packet_Cell_Change_Order); break; } case MT_PACKET_CELL_CHANGE_CONTINUE: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Cell_Change_Continue_t), vector, writeIndex, &data->u.Packet_Cell_Change_Continue); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Cell_Change_Continue_t), vector, &writeIndex, &data->u.Packet_Cell_Change_Continue); break; } case MT_PACKET_DOWNLINK_ASSIGNMENT: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Downlink_Assignment_t), vector, writeIndex, &data->u.Packet_Downlink_Assignment); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Downlink_Assignment_t), vector, &writeIndex, &data->u.Packet_Downlink_Assignment); break; } case MT_PACKET_MEASUREMENT_ORDER: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Measurement_Order_t), vector, writeIndex, &data->u.Packet_Measurement_Order); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Measurement_Order_t), vector, &writeIndex, &data->u.Packet_Measurement_Order); break; } case MT_PACKET_NEIGHBOUR_CELL_DATA: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Neighbour_Cell_Data_t), vector, writeIndex, &data->u.Packet_Neighbour_Cell_Data); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Neighbour_Cell_Data_t), vector, &writeIndex, &data->u.Packet_Neighbour_Cell_Data); break; } case MT_PACKET_SERVING_CELL_DATA: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Serving_Cell_Data_t), vector, writeIndex, &data->u.Packet_Serving_Cell_Data); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Serving_Cell_Data_t), vector, &writeIndex, &data->u.Packet_Serving_Cell_Data); break; } case MT_PACKET_PAGING_REQUEST: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Paging_Request_t), vector, writeIndex, &data->u.Packet_Paging_Request); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Paging_Request_t), vector, &writeIndex, &data->u.Packet_Paging_Request); break; } case MT_PACKET_PDCH_RELEASE: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_PDCH_Release_t), vector, writeIndex, &data->u.Packet_PDCH_Release); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_PDCH_Release_t), vector, &writeIndex, &data->u.Packet_PDCH_Release); break; } case MT_PACKET_POLLING_REQ: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Polling_Request_t), vector, writeIndex, &data->u.Packet_Polling_Request); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Polling_Request_t), vector, &writeIndex, &data->u.Packet_Polling_Request); break; } case MT_PACKET_POWER_CONTROL_TIMING_ADVANCE: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Power_Control_Timing_Advance_t), vector, writeIndex, &data->u.Packet_Power_Control_Timing_Advance); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Power_Control_Timing_Advance_t), vector, &writeIndex, &data->u.Packet_Power_Control_Timing_Advance); break; } case MT_PACKET_PRACH_PARAMETERS: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_PRACH_Parameters_t), vector, writeIndex, &data->u.Packet_PRACH_Parameters); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_PRACH_Parameters_t), vector, &writeIndex, &data->u.Packet_PRACH_Parameters); break; } case MT_PACKET_QUEUEING_NOTIFICATION: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Queueing_Notification_t), vector, writeIndex, &data->u.Packet_Queueing_Notification); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Queueing_Notification_t), vector, &writeIndex, &data->u.Packet_Queueing_Notification); break; } case MT_PACKET_TIMESLOT_RECONFIGURE: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Timeslot_Reconfigure_t), vector, writeIndex, &data->u.Packet_Timeslot_Reconfigure); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Timeslot_Reconfigure_t), vector, &writeIndex, &data->u.Packet_Timeslot_Reconfigure); break; } case MT_PACKET_TBF_RELEASE: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_TBF_Release_t), vector, writeIndex, &data->u.Packet_TBF_Release); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_TBF_Release_t), vector, &writeIndex, &data->u.Packet_TBF_Release); break; } case MT_PACKET_UPLINK_ACK_NACK: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Uplink_Ack_Nack_t), vector, writeIndex, &data->u.Packet_Uplink_Ack_Nack); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Uplink_Ack_Nack_t), vector, &writeIndex, &data->u.Packet_Uplink_Ack_Nack); break; } case MT_PACKET_UPLINK_ASSIGNMENT: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Uplink_Assignment_t), vector, writeIndex, &data->u.Packet_Uplink_Assignment); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Uplink_Assignment_t), vector, &writeIndex, &data->u.Packet_Uplink_Assignment); break; } case MT_PACKET_HANDOVER_COMMAND: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Handover_Command_t), vector, writeIndex, &data->u.Packet_Handover_Command); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Handover_Command_t), vector, &writeIndex, &data->u.Packet_Handover_Command); break; } case MT_PACKET_PHYSICAL_INFORMATION: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_PhysicalInformation_t), vector, writeIndex, &data->u.Packet_Handover_Command); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_PhysicalInformation_t), vector, &writeIndex, &data->u.Packet_Handover_Command); break; } case MT_PACKET_DOWNLINK_DUMMY_CONTROL_BLOCK: { - ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Downlink_Dummy_Control_Block_t), vector, writeIndex, &data->u.Packet_Downlink_Dummy_Control_Block); + ret = csnStreamEncoder(&ar, CSNDESCR(Packet_Downlink_Dummy_Control_Block_t), vector, &writeIndex, &data->u.Packet_Downlink_Dummy_Control_Block); break; } case MT_PACKET_SYSTEM_INFO_1: { - ret = csnStreamEncoder(&ar, CSNDESCR(PSI1_t), vector, writeIndex, &data->u.PSI1); + ret = csnStreamEncoder(&ar, CSNDESCR(PSI1_t), vector, &writeIndex, &data->u.PSI1); break; } case MT_PACKET_SYSTEM_INFO_2: { - ret = csnStreamEncoder(&ar, CSNDESCR(PSI2_t), vector, writeIndex, &data->u.PSI2); + ret = csnStreamEncoder(&ar, CSNDESCR(PSI2_t), vector, &writeIndex, &data->u.PSI2); break; } case MT_PACKET_SYSTEM_INFO_3: { - ret = csnStreamEncoder(&ar, CSNDESCR(PSI3_t), vector, writeIndex, &data->u.PSI3); + ret = csnStreamEncoder(&ar, CSNDESCR(PSI3_t), vector, &writeIndex, &data->u.PSI3); break; } case MT_PACKET_SYSTEM_INFO_5: { - ret = csnStreamEncoder(&ar, CSNDESCR(PSI5_t), vector, writeIndex, &data->u.PSI5); + ret = csnStreamEncoder(&ar, CSNDESCR(PSI5_t), vector, &writeIndex, &data->u.PSI5); break; } case MT_PACKET_SYSTEM_INFO_13: { - ret = csnStreamEncoder(&ar, CSNDESCR(PSI13_t), vector, writeIndex, &data->u.PSI13); + ret = csnStreamEncoder(&ar, CSNDESCR(PSI13_t), vector, &writeIndex, &data->u.PSI13); break; } default: @@ -5754,7 +5754,7 @@ int decode_gsm_ra_cap(bitvec * vector, MS_Radio_Access_capability_t *data) /* recursive csnStreamEncoder call uses LOGPC everywhere, so we need to start the log somewhere... */ LOGP(DCSN1, LOGL_INFO, "csnStreamEncoder (RAcap): "); - ret = csnStreamDecoder(&ar, CSNDESCR(MS_Radio_Access_capability_t), vector, readIndex, data); + ret = csnStreamDecoder(&ar, CSNDESCR(MS_Radio_Access_capability_t), vector, &readIndex, data); /* recursive csnStreamDecoder call uses LOGPC everywhere without trailing newline, so as a caller we are responisble for submitting it */ diff --git a/src/gsm_rlcmac.h b/src/gsm_rlcmac.h index f6979e7e..4ba03fe1 100644 --- a/src/gsm_rlcmac.h +++ b/src/gsm_rlcmac.h @@ -32,7 +32,10 @@ #ifndef __PACKET_GSM_RLCMAC_H__ #define __PACKET_GSM_RLCMAC_H__ +extern "C" { #include "csn1.h" +} + #include #include diff --git a/tests/rlcmac/RLCMACTest.cpp b/tests/rlcmac/RLCMACTest.cpp index 0cc3347b..a8d62170 100644 --- a/tests/rlcmac/RLCMACTest.cpp +++ b/tests/rlcmac/RLCMACTest.cpp @@ -24,7 +24,6 @@ #include #include #include -#include "csn1.h" #include "gsm_rlcmac.h" #include "gprs_rlcmac.h" #include "decoding.h" @@ -37,6 +36,8 @@ extern const struct log_info gprs_log_info; #include #include #include + +#include "csn1.h" } using namespace std;