X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcodec_utils%2Fcommon%2Fodu_common_codec.c;h=a65aefc9e3c94f6fa35596bd1f5c600b38625e8a;hb=b110af4f2f3e6afabd350432f105e51adf4e2e16;hp=9439554ec31febda9e7737d6551b297add8d2b1f;hpb=13d69430713cd381772de495739acff114be7e2a;p=o-du%2Fl2.git diff --git a/src/codec_utils/common/odu_common_codec.c b/src/codec_utils/common/odu_common_codec.c index 9439554ec..a65aefc9e 100644 --- a/src/codec_utils/common/odu_common_codec.c +++ b/src/codec_utils/common/odu_common_codec.c @@ -48,19 +48,29 @@ int PrepFinalEncBuf(const void *buffer, size_t size, void *encodedBuf) * * ****************************************************************/ -uint8_t fillBitString(BIT_STRING_t *id, uint8_t unusedBits, uint8_t byteSize, uint8_t val) +uint8_t fillBitString(BIT_STRING_t *id, uint8_t unusedBits, uint8_t byteSize, uint64_t data) { - uint8_t tmp; + uint64_t tmp = 0; + uint8_t byteIdx = 0; + if(id->buf == NULLP) { + DU_LOG("\nERROR --> DU_APP : Buffer allocation is empty"); return RFAILED; } - - for (tmp = 0 ; tmp < (byteSize-1); tmp++) + memset(id->buf, 0, byteSize); + data = data << unusedBits; + + /*Now, seggregate the value into 'byteSize' number of Octets in sequence: + * 1. Pull out a byte of value (Starting from MSB) and put in the 0th Octet + * 2. Fill the buffer/String Octet one by one until LSB is reached*/ + for(byteIdx = 1; byteIdx <= byteSize; byteIdx++) { - id->buf[tmp] = tmp; + tmp = (uint64_t)0xFF; + tmp = (tmp << (8 * (byteSize - byteIdx))); + tmp = (data & tmp) >> (8 * (byteSize - byteIdx)); + id->buf[byteIdx - 1] = tmp; } - id->buf[byteSize-1] = val; id->bits_unused = unusedBits; return ROK; } @@ -84,16 +94,16 @@ uint8_t fillBitString(BIT_STRING_t *id, uint8_t unusedBits, uint8_t byteSize, ui uint8_t bitStringToInt(BIT_STRING_t *bitString, void *value) { uint16_t idx; - uint32_t *val = NULLP; + uint64_t *val = NULLP; if(bitString->buf == NULL || bitString->size <= 0) { - DU_LOG("\nDU_APP : Bit string is empty"); + DU_LOG("\nERROR --> DU_APP : Bit string is empty"); return RFAILED; } if(value) - val = (uint32_t *)value; + val = (uint64_t *)value; else return RFAILED; @@ -101,7 +111,7 @@ uint8_t bitStringToInt(BIT_STRING_t *bitString, void *value) { *val |= bitString->buf[idx]; *val <<= 8; - } + } *val |= bitString->buf[idx]; *val >>= bitString->bits_unused;