From bbc397013bb3e167a43a0a8b400ebaef70da3caa Mon Sep 17 00:00:00 2001 From: Bostjan Meglic Date: Mon, 29 May 2023 12:24:07 +0000 Subject: [PATCH] [SBI,NAS] Fix conversion of bitrate between OpenAPI/NAS and internal representation From the OpenAPI document,TS29571_CommonData.yaml : BitRate String representing a bit rate; the prefixes follow the standard symbols from The International System of Units, and represent x1000 multipliers, with the exception that prefix "K" is used to represent the standard symbol "k". --- lib/nas/common/types.c | 52 +++++++++++++++++++++--------------------- lib/sbi/conv.c | 16 ++++++------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/lib/nas/common/types.c b/lib/nas/common/types.c index f0da24b84..80cf63f81 100644 --- a/lib/nas/common/types.c +++ b/lib/nas/common/types.c @@ -432,7 +432,7 @@ void ogs_nas_bitrate_from_uint64(ogs_nas_bitrate_t *nas, uint64_t bitrate) ogs_assert(nas); ogs_assert(bitrate); - bitrate >>= 10; /* bps to Kbps */ + bitrate /= 1000; /* bps to Kbps */ for (nas->unit = OGS_NAS_BR_UNIT_1K; nas->unit < OGS_NAS_BR_UNIT_256P; nas->unit++) { @@ -449,55 +449,55 @@ uint64_t ogs_nas_bitrate_to_uint64(ogs_nas_bitrate_t *nas_bitrate) ogs_assert(nas_bitrate); if (nas_bitrate->unit == OGS_NAS_BR_UNIT_1K) - return nas_bitrate->value * 1024; + return nas_bitrate->value * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_4K) - return nas_bitrate->value * 4 * 1024; + return nas_bitrate->value * 4 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_16K) - return nas_bitrate->value * 16 * 1024; + return nas_bitrate->value * 16 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_64K) - return nas_bitrate->value * 64 * 1024; + return nas_bitrate->value * 64 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_256K) - return nas_bitrate->value * 256 * 1024; + return nas_bitrate->value * 256 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_1M) - return nas_bitrate->value * 1024 * 1024; + return nas_bitrate->value * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_4M) - return nas_bitrate->value * 4 * 1024 * 1024; + return nas_bitrate->value * 4 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_16M) - return nas_bitrate->value * 16 * 1024 * 1024; + return nas_bitrate->value * 16 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_64M) - return nas_bitrate->value * 64 * 1024 * 1024; + return nas_bitrate->value * 64 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_256M) - return nas_bitrate->value * 256 * 1024 * 1024; + return nas_bitrate->value * 256 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_1G) - return nas_bitrate->value * 1024 * 1024 * 1024; + return nas_bitrate->value * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_4G) - return nas_bitrate->value * 4 * 1024 * 1024 * 1024; + return nas_bitrate->value * 4 * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_16G) - return nas_bitrate->value * 16 * 1024 * 1024 * 1024; + return nas_bitrate->value * 16 * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_64G) - return nas_bitrate->value * 64 * 1024 * 1024 * 1024; + return nas_bitrate->value * 64 * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_256G) - return nas_bitrate->value * 256 * 1024 * 1024 * 1024; + return nas_bitrate->value * 256 * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_1T) - return nas_bitrate->value * 1024 * 1024 * 1024 * 1024; + return nas_bitrate->value * 1000 * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_4T) - return nas_bitrate->value * 4 * 1024 * 1024 * 1024 * 1024; + return nas_bitrate->value * 4 * 1000 * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_16T) - return nas_bitrate->value * 16 * 1024 * 1024 * 1024 * 1024; + return nas_bitrate->value * 16 * 1000 * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_64T) - return nas_bitrate->value * 64 * 1024 * 1024 * 1024 * 1024; + return nas_bitrate->value * 64 * 1000 * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_256T) - return nas_bitrate->value * 256 * 1024 * 1024 * 1024 * 1024; + return nas_bitrate->value * 256 * 1000 * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_1P) - return nas_bitrate->value * 1024 * 1024 * 1024 * 1024 * 1024; + return nas_bitrate->value * 1000 * 1000 * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_4P) - return nas_bitrate->value * 4 * 1024 * 1024 * 1024 * 1024 * 1024; + return nas_bitrate->value * 4 * 1000 * 1000 * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_16P) - return nas_bitrate->value * 16 * 1024 * 1024 * 1024 * 1024 * 1024; + return nas_bitrate->value * 16 * 1000 * 1000 * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_64P) - return nas_bitrate->value * 64 * 1024 * 1024 * 1024 * 1024 * 1024; + return nas_bitrate->value * 64 * 1000 * 1000 * 1000 * 1000 * 1000; if (nas_bitrate->unit == OGS_NAS_BR_UNIT_256P) - return nas_bitrate->value * 256 * 1024 * 1024 * 1024 * 1024 * 1024; + return nas_bitrate->value * 256 * 1000 * 1000 * 1000 * 1000 * 1000; ogs_fatal("Unknown unit [%d]", nas_bitrate->unit); ogs_assert_if_reached(); diff --git a/lib/sbi/conv.c b/lib/sbi/conv.c index 9479a9e4e..f3122a8bc 100644 --- a/lib/sbi/conv.c +++ b/lib/sbi/conv.c @@ -516,16 +516,16 @@ char *ogs_sbi_bitrate_to_string(uint64_t bitrate, int unit) { if (unit == OGS_SBI_BITRATE_KBPS) { return ogs_msprintf("%lld Kbps", - (long long)bitrate / 1024); + (long long)bitrate / 1000); } else if (unit == OGS_SBI_BITRATE_MBPS) { return ogs_msprintf("%lld Mbps", - (long long)bitrate / 1024 / 1024); + (long long)bitrate / 1000 / 1000); } else if (unit == OGS_SBI_BITRATE_GBPS) { return ogs_msprintf("%lld Gbps", - (long long)bitrate / 1024 / 1024 / 1024); + (long long)bitrate / 1000 / 1000 / 1000); } else if (unit == OGS_SBI_BITRATE_TBPS) { return ogs_msprintf("%lld Tbps", - (long long)bitrate / 1024 / 1024 / 1024 / 1024); + (long long)bitrate / 1000 / 1000 / 1000 / 1000); } return ogs_msprintf("%lld bps", (long long)bitrate); @@ -547,13 +547,13 @@ uint64_t ogs_sbi_bitrate_from_string(char *str) SWITCH(unit+1) CASE("Kbps") - return bitrate * 1024; + return bitrate * 1000; CASE("Mbps") - return bitrate * 1024 * 1024; + return bitrate * 1000 * 1000; CASE("Gbps") - return bitrate * 1024 * 1024 * 1024; + return bitrate * 1000 * 1000 * 1000; CASE("Tbps") - return bitrate * 1024 * 1024 * 1024 * 1024; + return bitrate * 1000 * 1000 * 1000 * 1000; DEFAULT END return bitrate;