<div dir="ltr">Hello,<div>I'm currently working on a proof of concept for a foreign customer. We have a Fairwaves UmTRX board and we would like to send Cell Broadcast message (SMS-CB).</div><div>I have a full working osmocom chain (trx, bts-trx, bsc, stp, msc, hlr) that woks fine for SMS sending by example.</div><div><br></div><div>I have made a fix in rsl.c because all SMSCB commands where rejected (see at bottom of this message).</div><div><br></div><div>I have dig into the code and found the place where the SMS CB are queued (rsl.c : bts_process_smscb_cmd) and the code to extract them as MAC blocks (rsl.c : bts_cbch_get).</div><div><br></div><div>I have also found the handler of the scheduler (scheduler_trx.c : tx_data_fn) where to put the block data.</div><div><br></div><div>I have read articles about the superframe mechanism but I do not figure out how to advertise the CBCH functionality on the BCCH, nor how to adapt the scheduler to enable the CB channel.</div><div><br></div><div><br></div><div>Is it someone also interrested in this and/or working on the Bug 1617?</div><div>Or is it someone that can me give a track to start the implementation?</div><div><br></div><div><br></div><div><div>Have a nice day,</div></div><div>Antony</div><div><br></div><div><br></div><div>-----------------------------------------------------------------------------------------------------------</div><div>Fix in rsl.c :</div><div>

<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">-----------------------------------------------------------------------------------------------------------</span>

<br></div><div>replaced :</div><div><div>        if (chan_nr_is_dchan(cch->chan_nr))</div><div>               return rsl_reject_unknown_lchan(msg);</div><div><br></div><div>       msg->lchan = lchan_lookup(trx, cch->chan_nr, "RSL rx CCHAN: ");</div><div>       if (!msg->lchan) {</div><div>               LOGP(DRSL, LOGL_ERROR, "Rx RSL %s for unknown lchan\n",</div><div>                       rsl_msg_name(cch->c.msg_type));</div><div>               return rsl_reject_unknown_lchan(msg);</div><div>      }</div></div><div><br></div><div>

<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">-----------------------------------------------------------------------------------------------------------</span>

<br></div><div>by:</div><div><div><span style="white-space:pre">    </span>if (chan_nr_is_dchan(cch->chan_nr))</div><div>        {</div><div>            printf("Message NOT for DCHAN\n");</div><div>            //return rsl_reject_unknown_lchan(msg);</div><div>        }</div><div>        else</div><div>        {     </div><div>            printf("Message for DCHAN\n");</div><div>            </div><div>            // Only check channel validity if  it is a dedicated channel call.</div><div>            msg->lchan = lchan_lookup(trx, cch->chan_nr, "RSL rx CCHAN: ");</div><div>            if (!msg->lchan) {</div><div>                    LOGP(DRSL, LOGL_ERROR, "Rx RSL %s for unknown lchan\n",</div><div>                            rsl_msg_name(cch->c.msg_type));</div><div>                    return rsl_reject_unknown_lchan(msg);</div><div>            }</div><div>        }</div></div></div>