<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/21660">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">handover_test: send ho detection<br><br>So far we skipped the HO Detection message, because the FSM also accepts<br>a handover when the Handover Complete arrives without a Detection.<br>Rather model the real behavior.<br><br>Also send the EST IND message and RTP-ready events from the ho<br>detection.<br><br>Change-Id: Ib676e74f23ef9cd1b55262117822b0e110013bdc<br>---<br>M tests/handover/handover_test.c<br>1 file changed, 44 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/60/21660/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c</span><br><span>index 4ee02c2..41211ac 100644</span><br><span>--- a/tests/handover/handover_test.c</span><br><span>+++ b/tests/handover/handover_test.c</span><br><span>@@ -605,7 +605,32 @@</span><br><span>        abis_rsl_rcvmsg(msg);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* send handover complete */</span><br><span style="color: hsl(120, 100%, 40%);">+static void send_ho_detect(struct gsm_lchan *lchan)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    struct msgb *msg = msgb_alloc_headroom(256, 64, "RSL");</span><br><span style="color: hsl(120, 100%, 40%);">+     struct abis_rsl_rll_hdr *rh;</span><br><span style="color: hsl(120, 100%, 40%);">+  uint8_t chan_nr = gsm_lchan2chan_nr(lchan);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ fprintf(stderr, "- Send HO DETECT for %s\n", gsm_lchan_name(lchan));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      rh = (struct abis_rsl_rll_hdr *) msgb_put(msg, sizeof(*rh));</span><br><span style="color: hsl(120, 100%, 40%);">+  rh->c.msg_discr = ABIS_RSL_MDISC_DED_CHAN;</span><br><span style="color: hsl(120, 100%, 40%);">+ rh->c.msg_type = RSL_MT_HANDO_DET;</span><br><span style="color: hsl(120, 100%, 40%);">+ rh->ie_chan = RSL_IE_CHAN_NR;</span><br><span style="color: hsl(120, 100%, 40%);">+      rh->chan_nr = chan_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+     rh->ie_link_id = RSL_IE_LINK_IDENT;</span><br><span style="color: hsl(120, 100%, 40%);">+        rh->link_id = 0x00;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      msg->dst = lchan->ts->trx->bts->c0->rsl_link;</span><br><span style="color: hsl(120, 100%, 40%);">+       msg->l2h = (unsigned char *)rh;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  abis_rsl_rcvmsg(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       send_est_ind(lchan);</span><br><span style="color: hsl(120, 100%, 40%);">+  osmo_fsm_inst_dispatch(lchan->fi, LCHAN_EV_RTP_READY, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void send_ho_complete(struct gsm_lchan *lchan, bool success)</span><br><span> {</span><br><span>      struct msgb *msg = msgb_alloc_headroom(256, 64, "RSL");</span><br><span>@@ -615,9 +640,6 @@</span><br><span>      struct gsm48_hdr *gh;</span><br><span>        struct gsm48_ho_cpl *hc;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    send_est_ind(lchan);</span><br><span style="color: hsl(0, 100%, 40%);">-    osmo_fsm_inst_dispatch(lchan->fi, LCHAN_EV_RTP_READY, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>         if (success)</span><br><span>                 fprintf(stderr, "- Send HO COMPLETE for %s\n", gsm_lchan_name(lchan));</span><br><span>     else</span><br><span>@@ -975,6 +997,22 @@</span><br><span>  return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(ho_detection, ho_detection_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "ho-detect",</span><br><span style="color: hsl(120, 100%, 40%);">+      "Send Handover Detection to the most recent HO target lchan\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ if (!got_chan_req) {</span><br><span style="color: hsl(120, 100%, 40%);">+          fprintf(stderr, "Cannot ack handover/assignment, because no chan request\n");</span><br><span style="color: hsl(120, 100%, 40%);">+               exit(1);</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!got_ho_req) {</span><br><span style="color: hsl(120, 100%, 40%);">+            fprintf(stderr, "Cannot ack handover/assignment, because no ho request\n");</span><br><span style="color: hsl(120, 100%, 40%);">+         exit(1);</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     send_ho_detect(chan_req_lchan);</span><br><span style="color: hsl(120, 100%, 40%);">+       return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> DEFUN(ho_complete, ho_complete_cmd,</span><br><span>       "ho-complete",</span><br><span>       "Send Handover Complete for the most recent HO target lchan\n")</span><br><span>@@ -1005,6 +1043,7 @@</span><br><span>         _expect_chan_activ(to);</span><br><span>      _ack_chan_activ(to);</span><br><span>         _expect_ho_req(from);</span><br><span style="color: hsl(120, 100%, 40%);">+ send_ho_detect(to);</span><br><span>  send_ho_complete(to, true);</span><br><span>  lchan_release_ack(from);</span><br><span>     return CMD_SUCCESS;</span><br><span>@@ -1135,6 +1174,7 @@</span><br><span>  install_element(CONFIG_NODE, &expect_chan_cmd);</span><br><span>  install_element(CONFIG_NODE, &ack_chan_cmd);</span><br><span>     install_element(CONFIG_NODE, &expect_ho_req_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+ install_element(CONFIG_NODE, &ho_detection_cmd);</span><br><span>         install_element(CONFIG_NODE, &ho_complete_cmd);</span><br><span>  install_element(CONFIG_NODE, &expect_ho_cmd);</span><br><span>    install_element(CONFIG_NODE, &ho_failed_cmd);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/21660">change 21660</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/c/osmo-bsc/+/21660"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ib676e74f23ef9cd1b55262117822b0e110013bdc </div>
<div style="display:none"> Gerrit-Change-Number: 21660 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>