BS-11: Send proprietary MRPCI message after assignment + HO complete
This is a non-standard RSL message that must be sent after each traffic channel has been established. Without it, any voice call will be disconnected within seconds. This is a hack; we need to store the subscribers classmark2 value and use it here. Change-Id: I6cb6d25e405aa888c4df4022d897330a6af9e946 Related: OS#2389
This commit is contained in:
parent
2428bab7c0
commit
34363908b1
|
@ -32,6 +32,7 @@
|
|||
#include <osmocom/bsc/osmo_bsc_lcls.h>
|
||||
#include <osmocom/bsc/bsc_msc_data.h>
|
||||
#include <osmocom/bsc/gsm_08_08.h>
|
||||
#include <osmocom/bsc/gsm_04_08_rr.h>
|
||||
#include <osmocom/bsc/lchan_select.h>
|
||||
#include <osmocom/bsc/abis_rsl.h>
|
||||
#include <osmocom/bsc/bts.h>
|
||||
|
@ -224,10 +225,19 @@ static void send_assignment_complete(struct gsm_subscriber_connection *conn)
|
|||
|
||||
static void assignment_success(struct gsm_subscriber_connection *conn)
|
||||
{
|
||||
struct gsm_bts *bts;
|
||||
|
||||
/* Take on the new lchan */
|
||||
gscon_change_primary_lchan(conn, conn->assignment.new_lchan);
|
||||
conn->assignment.new_lchan = NULL;
|
||||
|
||||
bts = conn_get_bts(conn);
|
||||
if (is_siemens_bts(bts) && ts_is_tch(conn->lchan->ts)) {
|
||||
/* HACK: store the actual Classmark 2 LV from the subscriber and use it here! */
|
||||
uint8_t cm2_lv[] = { 0x02, 0x00, 0x00 };
|
||||
send_siemens_mrpci(conn->lchan, cm2_lv);
|
||||
}
|
||||
|
||||
/* apply LCLS configuration (if any) */
|
||||
lcls_apply_config(conn);
|
||||
|
||||
|
|
|
@ -863,8 +863,17 @@ void handover_end(struct gsm_subscriber_connection *conn, enum handover_result r
|
|||
LOG_HO(conn, LOGL_INFO, "Result: %s\n", handover_result_name(result));
|
||||
|
||||
if (ho->new_lchan && result == HO_RESULT_OK) {
|
||||
struct gsm_bts *bts;
|
||||
|
||||
gscon_change_primary_lchan(conn, conn->ho.new_lchan);
|
||||
ho->new_lchan = NULL;
|
||||
|
||||
bts = conn_get_bts(conn);
|
||||
if (is_siemens_bts(bts) && ts_is_tch(conn->lchan->ts)) {
|
||||
/* HACK: store the actual Classmark 2 LV from the subscriber and use it here! */
|
||||
uint8_t cm2_lv[] = { 0x02, 0x00, 0x00 };
|
||||
send_siemens_mrpci(conn->lchan, cm2_lv);
|
||||
}
|
||||
}
|
||||
|
||||
osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_HANDOVER_END, &result);
|
||||
|
|
Loading…
Reference in New Issue