diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2013-06-02 20:46:32 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2018-01-19 16:03:16 +0100 |
commit | e0cba56daddac5f7bb30b8a736deb1a695a468bd (patch) | |
tree | 4332b2a9d75f18d66c3cdba96fef4daba7ba12b1 /src/libbsc/bsc_api.c | |
parent | 869121c09a93d781e58f72f46b2bebc0c24b688f (diff) |
HO: If handover logic is used to do assignment, signal assignment result
Change-Id: I465caef03626e67d9b3a21bdf730589b9852c211
Diffstat (limited to 'src/libbsc/bsc_api.c')
-rw-r--r-- | src/libbsc/bsc_api.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/libbsc/bsc_api.c b/src/libbsc/bsc_api.c index 3592c003d..ec64bb84e 100644 --- a/src/libbsc/bsc_api.c +++ b/src/libbsc/bsc_api.c @@ -436,6 +436,21 @@ static void handle_ass_compl(struct gsm_subscriber_connection *conn, 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 @@ static void handle_ass_fail(struct gsm_subscriber_connection *conn, 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"); |