<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/14218">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
Harald Welte: Looks good to me, approved
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trxcon/scheduler: refactor description of TRXC_* lchans<br><br>Let's avoid fancy alignment in the description of logical channels<br>for the benefits of having better readability, the ability to add<br>more comments and fields without making it look ugly.<br><br>Also, let's get rid of field 'chan' of 'trx_lchan_desc' structure<br>since it's not used anywhere, and not actually needed because the<br>position of each lchan description is defined by its TRXC_* type.<br><br>As a bonus, let's add a human readable description to each<br>lchan definition, so it can be printed in the VTY some day.<br><br>Change-Id: I2fc61e1cdca4690a34e2861b9ee3b7c64ea64843<br>---<br>M src/host/trxcon/sched_lchan_desc.c<br>M src/host/trxcon/sched_trx.h<br>2 files changed, 438 insertions(+), 211 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/host/trxcon/sched_lchan_desc.c b/src/host/trxcon/sched_lchan_desc.c</span><br><span>index 8bc336e..5cee7c8 100644</span><br><span>--- a/src/host/trxcon/sched_lchan_desc.c</span><br><span>+++ b/src/host/trxcon/sched_lchan_desc.c</span><br><span>@@ -63,256 +63,482 @@</span><br><span> struct trx_lchan_state *lchan, uint32_t fn, uint8_t bid);</span><br><span> </span><br><span> const struct trx_lchan_desc trx_lchan_desc[_TRX_CHAN_MAX] = {</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_IDLE, "IDLE",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00, 0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_IDLE] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "IDLE",</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Idle channel",</span><br><span style="color: hsl(120, 100%, 40%);">+ /* The MS needs to perform neighbour measurements during</span><br><span style="color: hsl(120, 100%, 40%);">+ * IDLE slots, however this is not implemented (yet). */</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_FCCH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "FCCH", /* 3GPP TS 05.02, section 3.3.2.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Frequency correction channel",</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Handled by transceiver, nothing to do. */</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SCH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SCH", /* 3GPP TS 05.02, section 3.3.2.2 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Synchronization channel",</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /**</span><br><span style="color: hsl(0, 100%, 40%);">- * MS: do nothing, save power...</span><br><span style="color: hsl(0, 100%, 40%);">- * BTS: send dummy burst on C0</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">- NULL, NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+ /* 3GPP TS 05.03, section 4.7. Handled by transceiver,</span><br><span style="color: hsl(120, 100%, 40%);">+ * however we still need to parse BSIC (BCC / NCC). */</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_sch_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_FCCH, "FCCH",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00, 0x00,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_BCCH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "BCCH", /* 3GPP TS 05.02, section 3.3.2.3 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Broadcast control channel",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_BCCH,</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /* FCCH is handled by transceiver */</span><br><span style="color: hsl(0, 100%, 40%);">- NULL, NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Rx only, xCCH convolutional coding (3GPP TS 05.03, section 4.4),</span><br><span style="color: hsl(120, 100%, 40%);">+ * regular interleaving (3GPP TS 05.02, clause 7, table 3):</span><br><span style="color: hsl(120, 100%, 40%);">+ * a L2 frame is interleaved over 4 consecutive bursts. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SCH, "SCH",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00, TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_RACH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "RACH", /* 3GPP TS 05.02, section 3.3.3.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Random access channel",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_RACH,</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /**</span><br><span style="color: hsl(0, 100%, 40%);">- * We already have clock indications from TRX,</span><br><span style="color: hsl(0, 100%, 40%);">- * but we also need BSIC (BCC / NCC) value.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">- rx_sch_fn, NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Tx only, RACH convolutional coding (3GPP TS 05.03, section 4.6). */</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_rach_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_BCCH, "BCCH",</span><br><span style="color: hsl(0, 100%, 40%);">- RSL_CHAN_BCCH, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_CCCH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "CCCH", /* 3GPP TS 05.02, section 3.3.3.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Common control channel",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_PCH_AGCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Rx only, xCCH convolutional coding (3GPP TS 05.03, section 4.4),</span><br><span style="color: hsl(120, 100%, 40%);">+ * regular interleaving (3GPP TS 05.02, clause 7, table 3):</span><br><span style="color: hsl(120, 100%, 40%);">+ * a L2 frame is interleaved over 4 consecutive bursts. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_RACH, "RACH",</span><br><span style="color: hsl(0, 100%, 40%);">- RSL_CHAN_RACH, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00, TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(0, 100%, 40%);">- NULL, tx_rach_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_TCHF] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "TCH/F", /* 3GPP TS 05.02, section 3.2 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Full Rate traffic channel",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_Bm_ACCHs,</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Rx and Tx, multiple convolutional coding types (3GPP TS 05.03,</span><br><span style="color: hsl(120, 100%, 40%);">+ * chapter 3), block diagonal interleaving (3GPP TS 05.02, clause 7):</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * - a traffic frame is interleaved over 8 consecutive bursts</span><br><span style="color: hsl(120, 100%, 40%);">+ * using the even numbered bits of the first 4 bursts</span><br><span style="color: hsl(120, 100%, 40%);">+ * and odd numbered bits of the last 4 bursts;</span><br><span style="color: hsl(120, 100%, 40%);">+ * - a FACCH/F frame 'steals' (replaces) one traffic frame,</span><br><span style="color: hsl(120, 100%, 40%);">+ * interleaving is done in the same way.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * The MS shall continuously transmit bursts, even if there is nothing</span><br><span style="color: hsl(120, 100%, 40%);">+ * to send, unless DTX (Discontinuous Transmission) is used. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 8 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_tchf_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_tchf_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_CCCH, "CCCH",</span><br><span style="color: hsl(0, 100%, 40%);">- RSL_CHAN_PCH_AGCH, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_TCHH_0] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "TCH/H(0)", /* 3GPP TS 05.02, section 3.2 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Half Rate traffic channel (sub-channel 0)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_Lm_ACCHs + (0 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Rx and Tx, multiple convolutional coding types (3GPP TS 05.03,</span><br><span style="color: hsl(120, 100%, 40%);">+ * chapter 3), block diagonal interleaving (3GPP TS 05.02, clause 7):</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * - a traffic frame is interleaved over 6 consecutive bursts</span><br><span style="color: hsl(120, 100%, 40%);">+ * using the even numbered bits of the first 2 bursts,</span><br><span style="color: hsl(120, 100%, 40%);">+ * all bits of the middle two 2 bursts,</span><br><span style="color: hsl(120, 100%, 40%);">+ * and odd numbered bits of the last 2 bursts;</span><br><span style="color: hsl(120, 100%, 40%);">+ * - a FACCH/H frame 'steals' (replaces) two traffic frames,</span><br><span style="color: hsl(120, 100%, 40%);">+ * interleaving is done over 4 consecutive bursts,</span><br><span style="color: hsl(120, 100%, 40%);">+ * the same as given for a TCH/FS.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * The MS shall continuously transmit bursts, even if there is nothing</span><br><span style="color: hsl(120, 100%, 40%);">+ * to send, unless DTX (Discontinuous Transmission) is used. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 6 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_tchh_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_tchh_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_TCHF, "TCH/F",</span><br><span style="color: hsl(0, 100%, 40%);">- RSL_CHAN_Bm_ACCHs, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 8 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_tchf_fn, tx_tchf_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_TCHH_1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "TCH/H(1)", /* 3GPP TS 05.02, section 3.2 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Half Rate traffic channel (sub-channel 1)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_Lm_ACCHs + (1 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_TCHH_0, see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 6 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_tchh_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_tchh_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_TCHH_0, "TCH/H(0)",</span><br><span style="color: hsl(0, 100%, 40%);">- RSL_CHAN_Lm_ACCHs, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 6 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_tchh_fn, tx_tchh_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SDCCH4_0] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/4(0)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Stand-alone dedicated control channel (sub-channel 0)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH4_ACCH + (0 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_TCHH_1, "TCH/H(1)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x18, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 6 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_tchh_fn, tx_tchh_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SDCCH4_1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/4(1)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Stand-alone dedicated control channel (sub-channel 1)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH4_ACCH + (1 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH4_0, "SDCCH/4(0)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x20, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SDCCH4_2] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/4(2)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Stand-alone dedicated control channel (sub-channel 2)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH4_ACCH + (2 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH4_1, "SDCCH/4(1)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x28, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SDCCH4_3] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/4(3)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Stand-alone dedicated control channel (sub-channel 3)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH4_ACCH + (3 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH4_2, "SDCCH/4(2)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x30, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SDCCH8_0] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/8(0)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Stand-alone dedicated control channel (sub-channel 0)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (0 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH4_3, "SDCCH/4(3)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x38, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SDCCH8_1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/8(1)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Stand-alone dedicated control channel (sub-channel 1)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (1 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH8_0, "SDCCH/8(0)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x40, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SDCCH8_2] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/8(2)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Stand-alone dedicated control channel (sub-channel 2)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (2 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH8_1, "SDCCH/8(1)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x48, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SDCCH8_3] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/8(3)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Stand-alone dedicated control channel (sub-channel 3)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (3 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH8_2, "SDCCH/8(2)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x50, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SDCCH8_4] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/8(4)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Stand-alone dedicated control channel (sub-channel 4)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (4 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH8_3, "SDCCH/8(3)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x58, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SDCCH8_5] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/8(5)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Stand-alone dedicated control channel (sub-channel 5)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (5 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH8_4, "SDCCH/8(4)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x60, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SDCCH8_6] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/8(6)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Stand-alone dedicated control channel (sub-channel 6)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (6 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH8_5, "SDCCH/8(5)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x68, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SDCCH8_7] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/8(7)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Stand-alone dedicated control channel (sub-channel 7)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (7 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH8_6, "SDCCH/8(6)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x70, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCHTF] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/TF", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow TCH/F associated control channel",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_Bm_ACCHs,</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH8_7, "SDCCH/8(7)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x78, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCHTH_0] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/TH(0)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow TCH/H associated control channel (sub-channel 0)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_Lm_ACCHs + (0 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCHTF, "SACCH/TF",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x08, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCHTH_1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/TH(1)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow TCH/H associated control channel (sub-channel 1)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_Lm_ACCHs + (1 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCHTH_0, "SACCH/TH(0)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x10, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCH4_0] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/4(0)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow SDCCH/4 associated control channel (sub-channel 0)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH4_ACCH + (0 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCHTH_1, "SACCH/TH(1)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x18, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCH4_1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/4(1)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow SDCCH/4 associated control channel (sub-channel 1)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH4_ACCH + (1 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCH4_0, "SACCH/4(0)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x20, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCH4_2] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/4(2)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow SDCCH/4 associated control channel (sub-channel 2)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH4_ACCH + (2 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCH4_1, "SACCH/4(1)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x28, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCH4_3] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/4(3)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow SDCCH/4 associated control channel (sub-channel 3)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH4_ACCH + (3 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH4_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCH4_2, "SACCH/4(2)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x30, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCH8_0] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/8(0)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow SDCCH/8 associated control channel (sub-channel 0)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (0 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCH4_3, "SACCH/4(3)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x38, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCH8_1] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/8(1)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow SDCCH/8 associated control channel (sub-channel 1)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (1 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCH8_0, "SACCH/8(0)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x40, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCH8_2] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/8(2)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow SDCCH/8 associated control channel (sub-channel 2)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (2 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCH8_1, "SACCH/8(1)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x48, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCH8_3] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/8(3)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow SDCCH/8 associated control channel (sub-channel 3)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (3 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCH8_2, "SACCH/8(2)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x50, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCH8_4] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/8(4)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow SDCCH/8 associated control channel (sub-channel 4)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (4 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCH8_3, "SACCH/8(3)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x58, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCH8_5] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/8(5)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow SDCCH/8 associated control channel (sub-channel 5)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (5 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCH8_4, "SACCH/8(4)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x60, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCH8_6] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/8(6)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow SDCCH/8 associated control channel (sub-channel 6)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (6 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCH8_5, "SACCH/8(5)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x68, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_SACCH8_7] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SACCH/8(7)", /* 3GPP TS 05.02, section 3.3.4.1 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Slow SDCCH/8 associated control channel (sub-channel 7)",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_SDCCH8_ACCH + (7 << 3),</span><br><span style="color: hsl(120, 100%, 40%);">+ .link_id = TRX_CH_LID_SACCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH and TRXC_SDCCH8_* (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCH8_6, "SACCH/8(6)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x70, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_PDTCH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "PDTCH", /* 3GPP TS 05.02, sections 3.2.4, 3.3.2.4 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Packet data traffic & control channel",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_OSMO_PDCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Rx and Tx, multiple coding schemes: CS-2..4 and MCS-1..9 (3GPP TS</span><br><span style="color: hsl(120, 100%, 40%);">+ * 05.03, chapter 5), regular interleaving as specified for xCCH.</span><br><span style="color: hsl(120, 100%, 40%);">+ * NOTE: the burst buffer is three times bigger because the</span><br><span style="color: hsl(120, 100%, 40%);">+ * payload of EDGE bursts is three times longer. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 3 * 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_PDCH,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_pdtch_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_pdtch_fn,</span><br><span> },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SACCH8_7, "SACCH/8(7)",</span><br><span style="color: hsl(0, 100%, 40%);">- 0x78, TRX_CH_LID_SACCH,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_CBTX,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(0, 100%, 40%);">- },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_PDTCH, "PDTCH",</span><br><span style="color: hsl(0, 100%, 40%);">- RSL_CHAN_OSMO_PDCH, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 12 * GSM_BURST_PL_LEN, TRX_CH_FLAG_PDCH,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_pdtch_fn, tx_pdtch_fn,</span><br><span style="color: hsl(0, 100%, 40%);">- },</span><br><span style="color: hsl(0, 100%, 40%);">- {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_PTCCH, "PTCCH",</span><br><span style="color: hsl(0, 100%, 40%);">- RSL_CHAN_OSMO_PDCH, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_PDCH,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, tx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ [TRXC_PTCCH] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "PTCCH", /* 3GPP TS 05.02, section 3.3.4.2 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Packet Timing advance control channel",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_OSMO_PDCH,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH (xCCH), see above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .flags = TRX_CH_FLAG_PDCH,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+ .tx_fn = tx_data_fn,</span><br><span> },</span><br><span> [TRXC_SDCCH4_CBCH] = {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH4_CBCH, "SDCCH/4(CBCH)",</span><br><span style="color: hsl(0, 100%, 40%);">- RSL_CHAN_OSMO_CBCH4, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, TRX_CH_FLAG_AUTO,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/4(CBCH)", /* 3GPP TS 05.02, section 3.3.5 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Cell Broadcast channel on SDCCH/4",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_OSMO_CBCH4,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH (xCCH), but Rx only. See above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span> },</span><br><span> [TRXC_SDCCH8_CBCH] = {</span><br><span style="color: hsl(0, 100%, 40%);">- TRXC_SDCCH8_CBCH, "SDCCH/8(CBCH)",</span><br><span style="color: hsl(0, 100%, 40%);">- RSL_CHAN_OSMO_CBCH8, TRX_CH_LID_DEDIC,</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * GSM_BURST_PL_LEN, 0x00,</span><br><span style="color: hsl(0, 100%, 40%);">- rx_data_fn, NULL,</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "SDCCH/8(CBCH)", /* 3GPP TS 05.02, section 3.3.5 */</span><br><span style="color: hsl(120, 100%, 40%);">+ .desc = "Cell Broadcast channel on SDCCH/8",</span><br><span style="color: hsl(120, 100%, 40%);">+ .chan_nr = RSL_CHAN_OSMO_CBCH8,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Same as for TRXC_BCCH (xCCH), but Rx only. See above. */</span><br><span style="color: hsl(120, 100%, 40%);">+ .burst_buf_size = 4 * GSM_BURST_PL_LEN,</span><br><span style="color: hsl(120, 100%, 40%);">+ .rx_fn = rx_data_fn,</span><br><span> },</span><br><span> };</span><br><span>diff --git a/src/host/trxcon/sched_trx.h b/src/host/trxcon/sched_trx.h</span><br><span>index 72d9549..fcb78a7 100644</span><br><span>--- a/src/host/trxcon/sched_trx.h</span><br><span>+++ b/src/host/trxcon/sched_trx.h</span><br><span>@@ -101,10 +101,11 @@</span><br><span> uint32_t fn, uint8_t bid);</span><br><span> </span><br><span> struct trx_lchan_desc {</span><br><span style="color: hsl(0, 100%, 40%);">- /*! \brief TRX Channel Type */</span><br><span style="color: hsl(0, 100%, 40%);">- enum trx_lchan_type chan;</span><br><span> /*! \brief Human-readable name */</span><br><span> const char *name;</span><br><span style="color: hsl(120, 100%, 40%);">+ /*! \brief Human-readable description */</span><br><span style="color: hsl(120, 100%, 40%);">+ const char *desc;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! \brief Channel Number (like in RSL) */</span><br><span> uint8_t chan_nr;</span><br><span> /*! \brief Link ID (like in RSL) */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/14218">change 14218</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/14218"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmocom-bb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I2fc61e1cdca4690a34e2861b9ee3b7c64ea64843 </div>
<div style="display:none"> Gerrit-Change-Number: 14218 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>