diff options
author | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2021-06-07 22:25:58 +0200 |
---|---|---|
committer | fixeria <vyanitskiy@sysmocom.de> | 2021-06-10 21:50:48 +0000 |
commit | ef4a6a0f4302a7d284093028fa15246a9f065044 (patch) | |
tree | 17f0d581e999f9cd488ba28454cc0d28fc36f0f7 | |
parent | 4590b099bf4409b8456872bd1eec9cf3ba2a42a9 (diff) |
l1sap: fix TDMA frame number arithmetic in fn_ms_adj()
Using the normal arithmetic for TDMA frame numbers is wrong.
Change-Id: Ie17670d150489014a4a2e140cede42086100bbc0
-rw-r--r-- | src/common/l1sap.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/common/l1sap.c b/src/common/l1sap.c index cd2af57a..0debae04 100644 --- a/src/common/l1sap.c +++ b/src/common/l1sap.c @@ -139,7 +139,8 @@ static uint32_t fn_ms_adj(uint32_t fn, const struct gsm_lchan *lchan) /* 12/13 frames usable for audio in TCH, 160 samples per RTP packet, 1 RTP packet per 4 frames */ - samples_passed = (fn - lchan->tch.last_fn) * 12 * 160 / (13 * 4); + const uint32_t num_fn = GSM_TDMA_FN_SUB(fn, lchan->tch.last_fn); + samples_passed = num_fn * 12 * 160 / (13 * 4); /* round number of samples to the nearest multiple of GSM_RTP_DURATION */ r = samples_passed + GSM_RTP_DURATION / 2; |