Review at  https://gerrit.osmocom.org/5906

HO: If handover logic is used to do assignment, signal assignment result

Change-Id: I465caef03626e67d9b3a21bdf730589b9852c211
---
M include/osmocom/bsc/signal.h
M src/libbsc/bsc_api.c
2 files changed, 31 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/06/5906/1

diff --git a/include/osmocom/bsc/signal.h b/include/osmocom/bsc/signal.h
index 58d9acf..9c0d5a3 100644
--- a/include/osmocom/bsc/signal.h
+++ b/include/osmocom/bsc/signal.h
@@ -85,6 +85,8 @@
        S_LCHAN_ACTIVATE_NACK,          /* 08.58 Channel Activate NACK */
        S_LCHAN_HANDOVER_COMPL,         /* 04.08 Handover Completed */
        S_LCHAN_HANDOVER_FAIL,          /* 04.08 Handover Failed */
+       S_LCHAN_ASSIGNMENT_COMPL,       /* 04.08 Assignment Completed */
+       S_LCHAN_ASSIGNMENT_FAIL,        /* 04.08 Assignment Failed */
        S_LCHAN_HANDOVER_DETECT,        /* 08.58 Handover Detect */
        S_LCHAN_MEAS_REP,               /* 08.58 Measurement Report */
 };
diff --git a/src/libbsc/bsc_api.c b/src/libbsc/bsc_api.c
index 3592c00..ec64bb8 100644
--- a/src/libbsc/bsc_api.c
+++ b/src/libbsc/bsc_api.c
@@ -436,6 +436,21 @@
        struct gsm48_hdr *gh;
        struct bsc_api *api = conn->network->bsc_api;
 
+       if (conn->ho_lchan) {
+               struct lchan_signal_data sig;
+               struct gsm48_hdr *gh = msgb_l3(msg);
+
+               DEBUGP(DRR, "ASSIGNMENT COMPLETE cause = %s\n",
+                       rr_cause_name(gh->data[0]));
+
+               sig.lchan = msg->lchan;
+               sig.mr = NULL;
+               osmo_signal_dispatch(SS_LCHAN, S_LCHAN_ASSIGNMENT_COMPL, &sig);
+               /* FIXME: release old channel */
+
+               return;
+       }
+
        if (conn->secondary_lchan != msg->lchan) {
                LOGP(DMSC, LOGL_ERROR, "Assignment Compl should occur on second 
lchan.\n");
                return;
@@ -471,6 +486,20 @@
        uint8_t *rr_failure;
        struct gsm48_hdr *gh;
 
+       if (conn->ho_lchan) {
+               struct lchan_signal_data sig;
+               struct gsm48_hdr *gh = msgb_l3(msg);
+
+               DEBUGP(DRR, "ASSIGNMENT FAILED cause = %s\n",
+                       rr_cause_name(gh->data[0]));
+
+               sig.lchan = msg->lchan;
+               sig.mr = NULL;
+               osmo_signal_dispatch(SS_LCHAN, S_LCHAN_ASSIGNMENT_FAIL, &sig);
+               /* FIXME: release allocated new channel */
+
+               return;
+       }
 
        if (conn->lchan != msg->lchan) {
                LOGP(DMSC, LOGL_ERROR, "Assignment failure should occur on 
primary lchan.\n");

-- 
To view, visit https://gerrit.osmocom.org/5906
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I465caef03626e67d9b3a21bdf730589b9852c211
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofm...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder

Reply via email to