fixeria submitted this change.

View Change

Approvals: pespin: Looks good to me, but someone else must approve falconia: Looks good to me, but someone else must approve Jenkins Builder: Verified fixeria: Looks good to me, approved
csd_v110: clarify field names in csd_v110_lchan_desc[]

A radio-interface block in GSM carries several modified 36-bit or
60-bit V.110 frames. Let's rename the fields to avoid confusion.

Change-Id: If97787a64e30ff9b39c26749ba32aed09d3d7983
---
M include/osmo-bts/csd_v110.h
M src/common/csd_v110.c
2 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/include/osmo-bts/csd_v110.h b/include/osmo-bts/csd_v110.h
index d2a27b3..62058f4 100644
--- a/include/osmo-bts/csd_v110.h
+++ b/include/osmo-bts/csd_v110.h
@@ -6,15 +6,15 @@
struct gsm_lchan;

struct csd_v110_lchan_desc {
- uint16_t num_blocks;
- uint16_t num_bits;
- uint8_t ra2_ir; /* intermediate rate (8 or 16 kbit/s) for RA2 step */
+ uint16_t num_frames; /* number of V.110 frames in a radio block */
+ uint16_t num_frame_bits; /* number of bits in each V.110 frame */
+ uint8_t ra2_ir; /* intermediate rate (8 or 16 kbit/s) for RA2 step */
};

extern const struct csd_v110_lchan_desc csd_v110_lchan_desc[256];

#define CSD_V110_NUM_BITS(desc) \
- ((desc)->num_blocks * (desc)->num_bits)
+ ((desc)->num_frames * (desc)->num_frame_bits)

int csd_v110_rtp_encode(const struct gsm_lchan *lchan, uint8_t *rtp,
const uint8_t *data, size_t data_len,
diff --git a/src/common/csd_v110.c b/src/common/csd_v110.c
index 4d7ee4f..f578d52 100644
--- a/src/common/csd_v110.c
+++ b/src/common/csd_v110.c
@@ -39,27 +39,27 @@
#if 0
[GSM48_CMODE_DATA_14k5] = {
/* TCH/F14.4: 290 bits every 20 ms (14.5 kbit/s) */
- .num_blocks = 1,
- .num_bits = 290,
+ .num_frames = 1,
+ .num_frame_bits = 290,
.ra2_ir = 16,
},
#endif
[GSM48_CMODE_DATA_12k0] = {
/* TCH/F9.6: 4 * 60 bits every 20 ms (12.0 kbit/s) */
- .num_blocks = 4,
- .num_bits = 60,
+ .num_frames = 4,
+ .num_frame_bits = 60,
.ra2_ir = 16,
},
[GSM48_CMODE_DATA_6k0] = {
/* TCH/[FH]4.8: 2 * 60 bits every 20 ms (6.0 kbit/s) */
- .num_blocks = 2,
- .num_bits = 60,
+ .num_frames = 2,
+ .num_frame_bits = 60,
.ra2_ir = 8,
},
[GSM48_CMODE_DATA_3k6] = {
/* TCH/[FH]2.4: 2 * 36 bits every 20 ms (3.6 kbit/s) */
- .num_blocks = 2,
- .num_bits = 36,
+ .num_frames = 2,
+ .num_frame_bits = 36,
.ra2_ir = 8,
},
};
@@ -88,26 +88,26 @@

OSMO_ASSERT(lchan->tch_mode < ARRAY_SIZE(csd_v110_lchan_desc));
desc = &csd_v110_lchan_desc[lchan->tch_mode];
- if (OSMO_UNLIKELY(desc->num_blocks == 0))
+ if (OSMO_UNLIKELY(desc->num_frames == 0))
return -ENOTSUP;

/* handle empty/incomplete Uplink frames gracefully */
if (OSMO_UNLIKELY(data_len < CSD_V110_NUM_BITS(desc))) {
/* encode N idle frames as per 3GPP TS 44.021, section 8.1.6 */
memset(&ra_bits[0], 0x01, sizeof(ra_bits));
- for (unsigned int i = 0; i < desc->num_blocks; i++)
+ for (unsigned int i = 0; i < desc->num_frames; i++)
memset(&ra_bits[i * 80], 0x00, 8); /* alignment pattern */
goto ra1_ra2;
}

/* RA1'/RA1: convert from radio rate to an intermediate data rate */
- for (unsigned int i = 0; i < desc->num_blocks; i++) {
+ for (unsigned int i = 0; i < desc->num_frames; i++) {
struct osmo_v110_decoded_frame df;

/* convert a V.110 36-/60-bit frame to a V.110 80-bit frame */
- if (desc->num_bits == 60)
+ if (desc->num_frame_bits == 60)
osmo_csd_12k_6k_decode_frame(&df, &data[i * 60], 60);
- else /* desc->num_bits == 36 */
+ else /* desc->num_frame_bits == 36 */
osmo_csd_3k6_decode_frame(&df, &data[i * 36], 36);

/* E1 .. E3 must set by out-of-band knowledge */
@@ -116,7 +116,7 @@
/* E1: as per 15.1.2, shall be set to 0 (for BSS-MSC) */
df.e_bits[0] = 0;
/* E2: 0 for Q1/Q2, 1 for Q3/Q4 */
- if (desc->num_blocks == 4)
+ if (desc->num_frames == 4)
df.e_bits[1] = (i >> 1) & 0x01;
else
df.e_bits[1] = nt48_half_num;
@@ -165,7 +165,7 @@

OSMO_ASSERT(lchan->tch_mode < ARRAY_SIZE(csd_v110_lchan_desc));
desc = &csd_v110_lchan_desc[lchan->tch_mode];
- if (OSMO_UNLIKELY(desc->num_blocks == 0))
+ if (OSMO_UNLIKELY(desc->num_frames == 0))
return -ENOTSUP;

if (OSMO_UNLIKELY(rtp_len != RFC4040_RTP_PLEN))
@@ -178,7 +178,7 @@
osmo_csd_ra2_8k_unpack(&ra_bits[0], &rtp[0], RFC4040_RTP_PLEN);

/* RA1'/RA1: convert from an intermediate rate to radio rate */
- for (unsigned int i = 0; i < desc->num_blocks; i++) {
+ for (unsigned int i = 0; i < desc->num_frames; i++) {
struct osmo_v110_decoded_frame df;

/* We require our RTP input to consist of aligned V.110
@@ -188,9 +188,9 @@
return -EINVAL;
/* convert a V.110 80-bit frame to a V.110 36-/60-bit frame */
osmo_v110_decode_frame(&df, &ra_bits[i * 80], 80);
- if (desc->num_bits == 60)
+ if (desc->num_frame_bits == 60)
osmo_csd_12k_6k_encode_frame(&data[i * 60], 60, &df);
- else /* desc->num_bits == 36 */
+ else /* desc->num_frame_bits == 36 */
osmo_csd_3k6_encode_frame(&data[i * 36], 36, &df);
/* save bits E2 & E3 that may be needed for RLP alignment */
align_accum <<= 2;

To view, visit change 38816. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: merged
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: If97787a64e30ff9b39c26749ba32aed09d3d7983
Gerrit-Change-Number: 38816
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: falconia <falcon@freecalypso.org>
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>