Fix pack/unpack of SRS beamforming report.
Fixes the pack/unpack functions to allow multiple reported symbols, instead of just one. Applied clang-format to both functions.
This commit is contained in:
committed by
Robert Schmidt
parent
c905655b4e
commit
36f65160fd
@@ -2569,28 +2569,32 @@ static uint8_t pack_nr_srs_reported_symbol(nfapi_nr_srs_reported_symbol_t *prgs,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pack_nr_srs_beamforming_report(void *pMessageBuf, void *pPackedBuf, uint32_t packedBufLen) {
|
int pack_nr_srs_beamforming_report(void *pMessageBuf, void *pPackedBuf, uint32_t packedBufLen)
|
||||||
|
{
|
||||||
nfapi_nr_srs_beamforming_report_t *nr_srs_beamforming_report = (nfapi_nr_srs_beamforming_report_t*)pMessageBuf;
|
nfapi_nr_srs_beamforming_report_t *nr_srs_beamforming_report = (nfapi_nr_srs_beamforming_report_t *)pMessageBuf;
|
||||||
|
|
||||||
uint8_t *pWritePackedMessage = pPackedBuf;
|
uint8_t *pWritePackedMessage = pPackedBuf;
|
||||||
uint8_t *end = pPackedBuf + packedBufLen;
|
uint8_t *end = pPackedBuf + packedBufLen;
|
||||||
|
|
||||||
if(!(push16(nr_srs_beamforming_report->prg_size, &pWritePackedMessage, end) &&
|
if (!(push16(nr_srs_beamforming_report->prg_size, &pWritePackedMessage, end)
|
||||||
push8(nr_srs_beamforming_report->num_symbols, &pWritePackedMessage, end) &&
|
&& push8(nr_srs_beamforming_report->num_symbols, &pWritePackedMessage, end)
|
||||||
push8(nr_srs_beamforming_report->wide_band_snr, &pWritePackedMessage, end) &&
|
&& push8(nr_srs_beamforming_report->wide_band_snr, &pWritePackedMessage, end)
|
||||||
push8(nr_srs_beamforming_report->num_reported_symbols, &pWritePackedMessage, end))) {
|
&& push8(nr_srs_beamforming_report->num_reported_symbols, &pWritePackedMessage, end))) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pack_nr_srs_reported_symbol(&nr_srs_beamforming_report->reported_symbol_list[0], &pWritePackedMessage, end)) {
|
for (int reported_symbol = 0; reported_symbol < nr_srs_beamforming_report->num_reported_symbols; ++reported_symbol) {
|
||||||
return 0;
|
if (!pack_nr_srs_reported_symbol(&nr_srs_beamforming_report->reported_symbol_list[reported_symbol],
|
||||||
|
&pWritePackedMessage,
|
||||||
|
end)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Message length
|
// Message length
|
||||||
uintptr_t msgHead = (uintptr_t)pPackedBuf;
|
uintptr_t msgHead = (uintptr_t)pPackedBuf;
|
||||||
uintptr_t msgEnd = (uintptr_t)pWritePackedMessage;
|
uintptr_t msgEnd = (uintptr_t)pWritePackedMessage;
|
||||||
return (msgEnd-msgHead);
|
return (msgEnd - msgHead);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t pack_nr_srs_report_tlv(nfapi_srs_report_tlv_t *report_tlv, uint8_t **ppWritePackedMsg, uint8_t *end) {
|
static uint8_t pack_nr_srs_report_tlv(nfapi_srs_report_tlv_t *report_tlv, uint8_t **ppWritePackedMsg, uint8_t *end) {
|
||||||
@@ -4531,24 +4535,28 @@ static uint8_t unpack_nr_srs_reported_symbol(nfapi_nr_srs_reported_symbol_t *prg
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int unpack_nr_srs_beamforming_report(void *pMessageBuf, uint32_t messageBufLen, void *pUnpackedBuf, uint32_t unpackedBufLen) {
|
int unpack_nr_srs_beamforming_report(void *pMessageBuf, uint32_t messageBufLen, void *pUnpackedBuf, uint32_t unpackedBufLen)
|
||||||
|
{
|
||||||
nfapi_nr_srs_beamforming_report_t *nr_srs_beamforming_report = (nfapi_nr_srs_beamforming_report_t*)pUnpackedBuf;
|
nfapi_nr_srs_beamforming_report_t *nr_srs_beamforming_report = (nfapi_nr_srs_beamforming_report_t *)pUnpackedBuf;
|
||||||
uint8_t *pReadPackedMessage = pMessageBuf;
|
uint8_t *pReadPackedMessage = pMessageBuf;
|
||||||
uint8_t *end = pMessageBuf + messageBufLen;
|
uint8_t *end = pMessageBuf + messageBufLen;
|
||||||
|
|
||||||
memset(pUnpackedBuf, 0, unpackedBufLen);
|
memset(pUnpackedBuf, 0, unpackedBufLen);
|
||||||
|
|
||||||
if(!(pull16(&pReadPackedMessage, &nr_srs_beamforming_report->prg_size, end) &&
|
if (!(pull16(&pReadPackedMessage, &nr_srs_beamforming_report->prg_size, end)
|
||||||
pull8(&pReadPackedMessage, &nr_srs_beamforming_report->num_symbols, end) &&
|
&& pull8(&pReadPackedMessage, &nr_srs_beamforming_report->num_symbols, end)
|
||||||
pull8(&pReadPackedMessage, &nr_srs_beamforming_report->wide_band_snr, end) &&
|
&& pull8(&pReadPackedMessage, &nr_srs_beamforming_report->wide_band_snr, end)
|
||||||
pull8(&pReadPackedMessage, &nr_srs_beamforming_report->num_reported_symbols, end))) {
|
&& pull8(&pReadPackedMessage, &nr_srs_beamforming_report->num_reported_symbols, end))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
nr_srs_beamforming_report->reported_symbol_list =
|
nr_srs_beamforming_report->reported_symbol_list =
|
||||||
calloc(nr_srs_beamforming_report->num_reported_symbols, sizeof(*nr_srs_beamforming_report->reported_symbol_list));
|
calloc(nr_srs_beamforming_report->num_reported_symbols, sizeof(*nr_srs_beamforming_report->reported_symbol_list));
|
||||||
if (!unpack_nr_srs_reported_symbol(&nr_srs_beamforming_report->reported_symbol_list[0], &pReadPackedMessage, end)) {
|
for (int reported_symbol = 0; reported_symbol < nr_srs_beamforming_report->num_reported_symbols; ++reported_symbol) {
|
||||||
return -1;
|
if (!unpack_nr_srs_reported_symbol(&nr_srs_beamforming_report->reported_symbol_list[reported_symbol],
|
||||||
|
&pReadPackedMessage,
|
||||||
|
end)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user