line source
/*
+------------------------------------------------------------------------------
| File: alr_dedicated_constraints.cpp
+------------------------------------------------------------------------------
| Copyright 2003 Texas Instruments
| All rights reserved.
|
| This file is confidential and a trade secret of Texas Instruments.
| The receipt of or possession of this file does not convey
| any rights to reproduce or disclose its contents or to
| manufacture, use, or sell anything it may describe, in
| whole, or in part, without the specific written consent of
| Texas Instruments.
+------------------------------------------------------------------------------
| Purpose: Contains test constraints for alr
|
+------------------------------------------------------------------------------
*/
#include "alr_constraints.h"
const U16 CHLIST_14_23_69_115_FFFF_elements[5] = {
ARFCN_14,
ARFCN_23,
ARFCN_69,
ARFCN_115,
NOT_PRESENT_16BIT
};
T_ARRAY<U16> CHLIST_14_23_69_115_FFFF(CHLIST_14_23_69_115_FFFF_elements, SKIP_TO_END);
T_start starting_time()
{
T_start pstruct;
pstruct->v_start = 1;
pstruct->t1 = 11;
pstruct->t2 = 22;
pstruct->t3 = 33;
return pstruct;
}
T_starting_time s_time_mphc()
{
T_starting_time pstruct;
pstruct->start_time_present = 1;
pstruct->start_time.t1=11;
pstruct->start_time.t2=22;
pstruct->start_time.t3=33;
return pstruct;
}
T_starting_time s_time_t1()
{
T_starting_time pstruct;
pstruct->start_time_present = 1;
pstruct->start_time.t1 = 11;
pstruct->start_time.t2 = 22;
pstruct->start_time.t3 = 33;
return pstruct;
}
T_ch_type ch_type_tch2()
{
T_ch_type pstruct;
pstruct->ch = 0x01;
pstruct->tn = 1;
pstruct->tsc = 0;
pstruct->h = 1;
pstruct->arfcn = 0;
pstruct->maio = 1;
pstruct->hsn = 0;
pstruct->ma = CHLIST_14_23_69_115_FFFF;
return pstruct;
}
T_ch_type ch_type_tch3()
{
T_ch_type pstruct;
pstruct->ch = 0x01;
pstruct->tn = 3;
pstruct->tsc = 0;
pstruct->h = 1;
pstruct->arfcn = 0;
pstruct->maio = 1;
pstruct->hsn = 0;
pstruct->ma = CHLIST_14_23_69_115_FFFF;
return pstruct;
}
T_ho_param ho_param()
{
T_ho_param pstruct;
pstruct->ho_ref = NCI_TA_OUT_OF_RANGE_OK;
pstruct->ho_pow = 0;
pstruct->ho_acc_type = 0;
pstruct->ho_nci = 0;
return pstruct;
}
T_ho_param ho_param_1()
{
T_ho_param pstruct;
pstruct->ho_ref = HO_REF;
pstruct->ho_pow = HO_POW;
pstruct->ho_acc_type = 0;
pstruct->ho_nci = 0;
return pstruct;
}
T_tr_para tr_param()
{
T_tr_para pstruct;
pstruct->power = 10;
pstruct->dtx = DTX_NOT_USED;
pstruct->rlt = 5;
pstruct->tav = 30;
pstruct->pwrc = PWRC_NOT_SET;
pstruct->mode = MODE_SPEECH_VER1;
return pstruct;
}
T_ciph ciph_param()
{
const U8 CIPH_PARAM_KC[8] = {
0,1,2,3,4,5,6,7
};
T_ciph pstruct;
pstruct->stat = STAT_CIPH_OFF;
pstruct->algo = ALGO_A5_1;
pstruct->kc = CIPH_PARAM_KC;
return pstruct;
}
T_channel_desc channel_desc_2_tch()
{
T_channel_desc pstruct;
pstruct->chan_sel.h = 1;
pstruct->chan_sel.rf_channel.maio = 1;
pstruct->chan_sel.rf_channel.hsn = 0;
pstruct->channel_type = 0x01;
pstruct->sub_channel = 0;
pstruct->timeslot_no = 1;
pstruct->tsc = 0;
return pstruct;
}
T_channel_desc channel_desc_3_tch()
{
T_channel_desc pstruct;
pstruct->chan_sel.h = 1;
pstruct->chan_sel.rf_channel.maio = 1;
pstruct->chan_sel.rf_channel.hsn = 0;
pstruct->channel_type = 0x01;
pstruct->sub_channel = 0;
pstruct->timeslot_no = 3;
pstruct->tsc = 0;
return pstruct;
}
T_cell_description cell_description_2()
{
T_cell_description pstruct;
pstruct->ncc = 0;
pstruct->bcc = 1;
pstruct->bcch_carrier = 14;
return pstruct;
}
T_channel_desc channel_desc_ia()
{
T_channel_desc pstruct;
pstruct->chan_sel.h = 1;
pstruct->chan_sel.rf_channel.maio = 0;
pstruct->chan_sel.rf_channel.hsn = 1;
pstruct->channel_type = CH_TCH_F;
pstruct->sub_channel = 0;
pstruct->timeslot_no = 1;
pstruct->tsc = 5;
return pstruct;
}
T_amr_conf s_amr_conf_4_icmi()
{
T_amr_conf pstruct;
pstruct->nscb = NSCB;
pstruct->icmi = ICMI_S;
pstruct->st_mode = ST_MODE_1;
pstruct->acs = ACS_4;
pstruct->v_cod_prop = V_COD_PROP;
pstruct->c_cod_prop = C_COD_PROP_4;
pstruct->cod_prop[0].codec_hyst = 0x01;
pstruct->cod_prop[0].codec_thr = 0x01;
pstruct->cod_prop[1].codec_hyst = 0x03;
pstruct->cod_prop[1].codec_thr = 0x03;
pstruct->cod_prop[2].codec_hyst = 0x05;
pstruct->cod_prop[2].codec_thr = 0x05;
// = sa_cod_prop_4();
return pstruct;
}
T_amr_configuration s_amr_configuration()
{
T_amr_configuration pstruct;
pstruct->noise_suppression_control_bit = NSCB;
pstruct->initial_codec_mode_indicator = ICMI_S;
pstruct->initial_codec_mode = ST_MODE_1;
pstruct->active_codec_set = ACS_4;
pstruct->threshold [0] = 0x01;
pstruct->threshold [1] = 0x03;
pstruct->threshold [2] = 0x05;
pstruct->hysteresis[0] = 0x01;
pstruct->hysteresis[1] = 0x03;
pstruct->hysteresis[2] = 0x05;
return pstruct;
}
T_frequency_list freq_list_ia()
{
const U16 FREQ_LIST_IA_FREQ_elements[5] = {
26, 34, 42, 52, 59
};
T_ARRAY<U16> FREQ_LIST_IA_FREQ(FREQ_LIST_IA_FREQ_elements, SKIP_TO_END);
T_frequency_list pstruct;
pstruct->rf_chan_cnt = 5;
pstruct->rf_chan_no.radio_freq = FREQ_LIST_IA_FREQ;
return pstruct;
}
T_channel_desc channel_desc_fr()
{
T_channel_desc pstruct;
pstruct->chan_sel.h = 1;
pstruct->chan_sel.rf_channel.maio = 1;
pstruct->chan_sel.rf_channel.hsn = 1;
pstruct->channel_type = CH_TCH_F;
pstruct->sub_channel = 0;
pstruct->timeslot_no = 1;
pstruct->tsc = 5;
return pstruct;
}
T_frequency_list freq_list_fr()
{
const U16 CHLIST_10_52_59_73_108_114_elements[6] = {
ARFCN_10,
ARFCN_52,
ARFCN_59,
ARFCN_73,
ARFCN_108,
ARFCN_114
};
T_ARRAY<U16> CHLIST_10_52_59_73_108_114(CHLIST_10_52_59_73_108_114_elements, SKIP_TO_END);
T_frequency_list pstruct;
pstruct->rf_chan_cnt = 6;
pstruct->rf_chan_no.radio_freq = CHLIST_10_52_59_73_108_114;
return pstruct;
}
T_PRIMITIVE_UNION mph_dedicated_req_1()
{
const U16 CHLIST_0_elements[1] = {
0x00
};
T_ARRAY<U16> CHLIST_0(CHLIST_0_elements, SKIP_TO_END);
T_MPH_DEDICATED_REQ prim;
prim->mod = MODE_IMM_ASSIGN;
prim->start = starting_time();
// prim->ch_type = ch_type_hop();
prim->ch_type.ch = CH_SDCCH_8_0;
prim->ch_type.tn = 0;
prim->ch_type.tsc = 0;
prim->ch_type.h = 1;
prim->ch_type.arfcn = 0;
prim->ch_type.maio = 1;
prim->ch_type.hsn = 0;
prim->ch_type.ma = CHLIST_14_23_69_115_FFFF;
// prim->ch_type2. = ch_type2();
prim->ch_type2.ch = 0x00;
prim->ch_type2.tn = 3;
prim->ch_type2.tsc = 6;
prim->ch_type2.h = 0;
prim->ch_type2.arfcn = 0;
prim->ch_type2.maio = 0;
prim->ch_type2.hsn = 0;
prim->ch_type2.ma = CHLIST_0;
prim->arfcn = ARFCN_23;
prim->bsic = BSIC_1;
prim->ho_param = ho_param();
prim->tr_para = tr_param();
prim->ciph = ciph_param();
prim->amr_conf._skip;
return prim;
}
T_PRIMITIVE_UNION mph_dedicated_req_2()
{
T_MPH_DEDICATED_REQ prim;
prim->mod = MODE_ASYNC_HANDOVER;
prim->start._skip;
prim->ch_type = ch_type_tch2();
prim->ch_type2._skip;
prim->arfcn = ARFCN_14;
prim->bsic = BSIC_1;
prim->ho_param = ho_param_1();
prim->tr_para = tr_param();
prim->ciph = ciph_param();
prim->amr_conf._skip;
return prim;
}
T_PRIMITIVE_UNION mph_dedicated_req_3()
{
const U16 CHLIST_26_34_42_52_59_FFFF_elements[6] = {
ARFCN_26,
ARFCN_34,
ARFCN_42,
ARFCN_52,
ARFCN_59,
NOT_PRESENT_16BIT
};
T_ARRAY<U16> CHLIST_26_34_42_52_59_FFFF(CHLIST_26_34_42_52_59_FFFF_elements, SKIP_TO_END);
T_MPH_DEDICATED_REQ prim;
prim->mod = MODE_IMM_ASSIGN;
prim->start.v_start=0;
prim->start.t1._skip;
prim->start.t2._skip;
prim->start.t3._skip;
// prim->ch_type. = ch_type_imm_ass();
prim->ch_type.ch = CH_TCH_F;
prim->ch_type.tn = 1;
prim->ch_type.tsc = 5;
prim->ch_type.h = H_FREQ;
prim->ch_type.arfcn = 0;
prim->ch_type.maio = 0;
prim->ch_type.hsn = 1;
prim->ch_type.ma = CHLIST_26_34_42_52_59_FFFF;
prim->ch_type2._skip;
prim->arfcn = ARFCN_14;
prim->bsic = BSIC_1;
prim->ho_param = ho_param();
prim->tr_para = tr_param();
prim->ciph = ciph_param();
prim->amr_conf._skip;
return prim;
}
T_PRIMITIVE_UNION mph_dedicated_req_4()
{
const U16 CHLIST_73_74_75_76_FFFF_elements[5] = {
ARFCN_73,
ARFCN_74,
ARFCN_75,
ARFCN_76,
NOT_PRESENT_16BIT
};
T_ARRAY<U16> CHLIST_73_74_75_76_FFFF(CHLIST_73_74_75_76_FFFF_elements, SKIP_TO_END);
const U16 CHLIST_46_52_59_66_73_74_FFFF_elements[7] = {
ARFCN_46,
ARFCN_52,
ARFCN_59,
ARFCN_66,
ARFCN_73,
ARFCN_74,
NOT_PRESENT_16BIT
};
T_ARRAY<U16> CHLIST_46_52_59_66_73_74_FFFF(CHLIST_46_52_59_66_73_74_FFFF_elements, SKIP_TO_END);
T_MPH_DEDICATED_REQ prim;
prim->mod = MODE_CHAN_ASSIGN;
prim->start.v_start = 1;
prim->start.t1 = 45;
prim->start.t2 = 22;
prim->start.t3 = 33;
prim->ch_type.ch = CH_TCH_F;
prim->ch_type.tn = 0;
prim->ch_type.tsc = 5;
prim->ch_type.h = H_FREQ;
prim->ch_type.arfcn = 0;
prim->ch_type.maio = 0;
prim->ch_type.hsn = 1;
prim->ch_type.ma = CHLIST_73_74_75_76_FFFF;
/* before time */
prim->ch_type2.ch = CH_TCH_F;
prim->ch_type2.tn = 0;
prim->ch_type2.tsc = 5;
prim->ch_type2.h = H_FREQ;
prim->ch_type2.arfcn = 0;
prim->ch_type2.maio = 1;
prim->ch_type2.hsn = 7;
prim->ch_type2.ma = CHLIST_46_52_59_66_73_74_FFFF;
prim->arfcn = ARFCN_14;
prim->bsic = BSIC_1;
prim->ho_param._skip;
prim->tr_para = tr_param();
prim->ciph = ciph_param();
prim->amr_conf._skip;
return prim;
}
T_PRIMITIVE_UNION mph_dedicated_req_5()
{
T_MPH_DEDICATED_REQ prim;
prim->mod = MODE_ASYNC_HANDOVER;
prim->start = starting_time();
prim->ch_type = ch_type_tch2();
prim->ch_type2 = ch_type_tch3();
prim->arfcn = ARFCN_14;
prim->bsic = BSIC_1;
prim->ho_param = ho_param_1();
prim->tr_para = tr_param();
prim->ciph = ciph_param();
prim->amr_conf._skip;
return prim;
}
T_PRIMITIVE_UNION mph_dedicated_req_6(CHAR variant)
{
T_MPH_DEDICATED_REQ prim;
prim->mod = MODE_ASYNC_HANDOVER;
prim->start = starting_time();
prim->ch_type = ch_type_tch2();
prim->ch_type2 = ch_type_tch3();
if (variant == 'A') prim->arfcn = ARFCN_23;
if (variant == 'B') prim->arfcn = ARFCN_23;
if (variant == 'C') prim->arfcn = ARFCN_14;
if (variant == 'D') prim->arfcn = ARFCN_1;
if (variant == 'E') prim->arfcn = ARFCN_124;
prim->bsic = BSIC_1;
prim->ho_param = ho_param_1();
prim->tr_para = tr_param();
prim->ciph = ciph_param();
if (variant == 'A') prim->amr_conf._skip;
if (variant == 'B') prim->amr_conf = s_amr_conf_4_icmi();
if (variant == 'C') prim->amr_conf._skip;
if (variant == 'D') prim->amr_conf._skip;
if (variant == 'E') prim->amr_conf._skip;
return prim;
}
T_PRIMITIVE_UNION mphc_immed_assign_req_1()
{
T_MPHC_IMMED_ASSIGN_REQ prim;
//prim->channel_desc. = channel_desc_1();
prim->channel_desc.chan_sel.h = 1;
prim->channel_desc.chan_sel.rf_channel.maio = 1;
prim->channel_desc.chan_sel.rf_channel.hsn = 0;
prim->channel_desc.channel_type = 0x04;
prim->channel_desc.sub_channel = 0;
prim->channel_desc.timeslot_no = 0;
prim->channel_desc.tsc = 0;
prim->timing_advance = TIMING_ADVANCE;
prim->frequency_list = freq_list();
prim->starting_time = s_time_mphc();
prim->frequency_list_bef_sti._skip;
prim->maio_bef_sti._skip;
prim->dtx_allowed._skip;
prim->bcch_allocation._skip;
prim->ba_id._skip;
prim->pwrc._skip;
return prim;
}
T_PRIMITIVE_UNION mphc_immed_assign_req_2()
{
T_MPHC_IMMED_ASSIGN_REQ prim;
prim->channel_desc = channel_desc_ia();
prim->timing_advance = TIMING_ADVANCE;
prim->frequency_list = freq_list_ia();
prim->starting_time.start_time_present = 0;
prim->starting_time.start_time._skip;
prim->frequency_list_bef_sti._skip;
prim->maio_bef_sti._skip;
prim->dtx_allowed._skip;
prim->bcch_allocation._skip;
prim->ba_id._skip;
prim->pwrc._skip;
return prim;
}
T_PRIMITIVE_UNION mphc_immed_assign_con_1()
{
T_MPHC_IMMED_ASSIGN_CON prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mph_dedicated_cnf_1(CHAR success)
{
T_MPH_DEDICATED_CNF prim;
prim->dedi_res = success;
return prim;
}
T_PRIMITIVE_UNION mphc_async_ho_req_1(U8 ho_type)
{
T_MPHC_ASYNC_HO_REQ prim;
//prim->handover_command. = async_ho_cmd();
prim->handover_command.cell_description = cell_description_2();
prim->handover_command.channel_desc_1 = channel_desc_2_tch();
prim->handover_command.channel_mode_1 = MODE_SPEECH_VER1;
prim->handover_command.starting_time._skip;
prim->handover_command.ho_acc = HO_REF;
prim->handover_command.txpwr = HO_POW;
prim->handover_command.report_time_diff._skip;
prim->handover_command.frequency_list = freq_list();
prim->handover_command.channel_desc_2._skip;
prim->handover_command.channel_mode_2._skip;
prim->handover_command.frequency_list_bef_sti._skip;
prim->handover_command.channel_desc_1_bef_sti._skip;
prim->handover_command.channel_desc_2_bef_sti._skip;
prim->handover_command.cipher_mode._skip;
prim->handover_command.a5_algorithm._skip;
prim->fn_offset._skip;
prim->time_alignmnt._skip;
prim->cipher_key._skip;
prim->amr_configuration._skip;
#ifdef FF_EGPRS
prim->handover_type = ho_type;
#endif // FF_EGPRS
return prim;
}
T_PRIMITIVE_UNION mphc_async_ho_req_2()
{
T_MPHC_ASYNC_HO_REQ prim;
// prim->handover_command. = async_ho_cmd_2();
prim->handover_command.cell_description = cell_description_2();
prim->handover_command.channel_desc_1 = channel_desc_2_tch();
prim->handover_command.channel_mode_1 = MODE_SPEECH_VER1;
prim->handover_command.starting_time = s_time_mphc();
prim->handover_command.ho_acc = HO_REF;
prim->handover_command.txpwr = HO_POW;
prim->handover_command.report_time_diff._skip;
prim->handover_command.frequency_list = freq_list();
prim->handover_command.channel_desc_2._skip;
prim->handover_command.channel_mode_2._skip;
prim->handover_command.frequency_list_bef_sti = freq_list();
prim->handover_command.channel_desc_1_bef_sti = channel_desc_3_tch();
prim->handover_command.channel_desc_2_bef_sti._skip;
prim->handover_command.cipher_mode._skip;
prim->handover_command.a5_algorithm._skip;
prim->fn_offset._skip;
prim->time_alignmnt._skip;
prim->cipher_key._skip;
prim->amr_configuration._skip;
#ifdef FF_EGPRS
prim->handover_type = HOT_REGULAR;
#endif // FF_EGPRS
return prim;
}
T_PRIMITIVE_UNION mphc_async_ho_req_3(CHAR variant)
{
T_MPHC_ASYNC_HO_REQ prim;
//prim->handover_command. = async_ho_cmd_3();
prim->handover_command.cell_description.ncc = 0;
prim->handover_command.cell_description.bcc = 1;
if (variant == 'A' || variant == 'B')
prim->handover_command.cell_description.bcch_carrier = ARFCN_23;
else if (variant == 'E')
prim->handover_command.cell_description.bcch_carrier = ARFCN_124;
else if (variant == 'D')
prim->handover_command.cell_description.bcch_carrier = ARFCN_1;
else
prim->handover_command.cell_description.bcch_carrier = ARFCN_14;
prim->handover_command.channel_desc_1 = channel_desc_2_tch();
prim->handover_command.channel_mode_1 = MODE_SPEECH_VER1;
prim->handover_command.starting_time = s_time_mphc();
prim->handover_command.ho_acc = HO_REF;
prim->handover_command.txpwr = HO_POW;
prim->handover_command.report_time_diff._skip;
prim->handover_command.frequency_list = freq_list();
prim->handover_command.channel_desc_2._skip;
prim->handover_command.channel_mode_2._skip;
prim->handover_command.frequency_list_bef_sti = freq_list();
prim->handover_command.channel_desc_1_bef_sti = channel_desc_3_tch();
prim->handover_command.channel_desc_2_bef_sti._skip;
prim->handover_command.cipher_mode._skip;
prim->handover_command.a5_algorithm._skip;
prim->fn_offset._skip;
prim->time_alignmnt._skip;
prim->cipher_key._skip;
if (variant == 'A') prim->amr_configuration._skip;
if (variant == 'B') prim->amr_configuration = s_amr_configuration();
#ifdef FF_EGPRS
if (variant == 'D')
prim->handover_type = HOT_BLIND;
else
prim->handover_type = HOT_REGULAR;
#endif // FF_EGPRS
return prim;
}
T_PRIMITIVE_UNION mph_freq_redef_req_1()
{
const U16 CHLIST_10_52_59_73_108_114_FFFF_elements[7] = {
ARFCN_10,
ARFCN_52,
ARFCN_59,
ARFCN_73,
ARFCN_108,
ARFCN_114,
NOT_PRESENT_16BIT
};
T_ARRAY<U16> CHLIST_10_52_59_73_108_114_FFFF(CHLIST_10_52_59_73_108_114_FFFF_elements, SKIP_TO_END);
T_MPH_FREQ_REDEF_REQ prim;
prim->start.v_start = 1;
prim->start.t1 = 11;
prim->start.t2 = 22;
prim->start.t3 = 33;
// prim->ch_type. = ch_type_freq_redef();
prim->ch_type.ch = CH_TCH_F;
prim->ch_type.tn = 1;
prim->ch_type.tsc = 5;
prim->ch_type.h = H_FREQ;
prim->ch_type.arfcn = 0;
prim->ch_type.maio = 1;
prim->ch_type.hsn = 1;
prim->ch_type.ma = CHLIST_10_52_59_73_108_114_FFFF;
return prim;
}
T_PRIMITIVE_UNION mph_freq_redef_req_2()
{
T_MPH_FREQ_REDEF_REQ prim;
prim->start = starting_time();
//prim->ch_type. = ch_type_sdcch4();
prim->ch_type.ch = CH_SDCCH_8_0;
prim->ch_type.tn = 4;
prim->ch_type.tsc = 0;
prim->ch_type.h = 1;
prim->ch_type.arfcn = 0;
prim->ch_type.maio = 1;
prim->ch_type.hsn = 0;
prim->ch_type.ma = CHLIST_14_23_69_115_FFFF;
return prim;
}
T_PRIMITIVE_UNION mphc_change_frequency_1()
{
T_MPHC_CHANGE_FREQUENCY prim;
prim->channel_desc = channel_desc_fr();
prim->frequency_list = freq_list_fr();
prim->starting_time = s_time_t1();
return prim;
}
T_PRIMITIVE_UNION mphc_change_frequency_2()
{
T_MPHC_CHANGE_FREQUENCY prim;
//prim->channel_desc. = channel_desc_4();
prim->channel_desc.chan_sel.h = 1;
prim->channel_desc.chan_sel.rf_channel.maio = 1;
prim->channel_desc.chan_sel.rf_channel.hsn = 0;
prim->channel_desc.channel_type = 0x04;
prim->channel_desc.sub_channel = 0;
prim->channel_desc.timeslot_no = 4;
prim->channel_desc.tsc = 0;
prim->frequency_list = freq_list();
prim->starting_time = s_time_mphc();
return prim;
}
T_PRIMITIVE_UNION mphc_channel_assign_req_1()
{
T_MPHC_CHANNEL_ASSIGN_REQ prim;
prim->channel_desc_1.chan_sel.h = 1;
prim->channel_desc_1.chan_sel.rf_channel.maio = 0;
prim->channel_desc_1.chan_sel.rf_channel.hsn = 1;
prim->channel_desc_1.channel_type = CH_TCH_F;
prim->channel_desc_1.sub_channel = 0;
prim->channel_desc_1.timeslot_no = 0;
prim->channel_desc_1.tsc = 5;
const U16 CHLIST_73_74_75_76_elements[4] = {
ARFCN_73,
ARFCN_74,
ARFCN_75,
ARFCN_76
};
T_ARRAY<U16> CHLIST_73_74_75_76(CHLIST_73_74_75_76_elements, SKIP_TO_END);
prim->channel_mode_1._skip;
prim->txpwr = TXPWR0;
prim->frequency_list.rf_chan_cnt = 4;
prim->frequency_list.rf_chan_no.radio_freq = CHLIST_73_74_75_76;
prim->starting_time.start_time_present = 1;
prim->starting_time.start_time.t1 = 45;
prim->starting_time.start_time.t2 = 22;
prim->starting_time.start_time.t3 = 33;
const U16 CHLIST_46_52_59_66_73_74_elements[6] = {
ARFCN_46,
ARFCN_52,
ARFCN_59,
ARFCN_66,
ARFCN_73,
ARFCN_74
};
T_ARRAY<U16> CHLIST_46_52_59_66_73_74(CHLIST_46_52_59_66_73_74_elements, SKIP_TO_END);
prim->channel_desc_2._skip;
prim->channel_mode_2._skip;
prim->frequency_list_bef_sti.rf_chan_cnt = 6;
prim->frequency_list_bef_sti.rf_chan_no.radio_freq = CHLIST_46_52_59_66_73_74;
prim->channel_desc_1_bef_sti.chan_sel.h = 1;
prim->channel_desc_1_bef_sti.chan_sel.rf_channel.maio = 1;
prim->channel_desc_1_bef_sti.chan_sel.rf_channel.hsn = 7;
prim->channel_desc_1_bef_sti.channel_type = CH_TCH_F;
prim->channel_desc_1_bef_sti.sub_channel = 0;
prim->channel_desc_1_bef_sti.timeslot_no = 0;
prim->channel_desc_1_bef_sti.tsc = 5;
prim->channel_desc_2_bef_sti._skip;
prim->cipher_mode._skip;
prim->a5_algorithm._skip;
prim->cipher_key._skip;
prim->dtx_allowed._skip;
prim->amr_configuration._skip;
return prim;
}
T_PRIMITIVE_UNION mphc_channel_assign_req_2()
{
T_MPHC_CHANNEL_ASSIGN_REQ prim;
prim->channel_desc_1 = channel_desc_fr();
prim->channel_mode_1._skip;
prim->txpwr = POWER_12;
prim->frequency_list = freq_list_fr();
prim->starting_time = s_time_t1();
prim->channel_desc_2._skip;
prim->channel_mode_2._skip;
prim->frequency_list_bef_sti = freq_list_ia();
prim->channel_desc_1_bef_sti = channel_desc_ia();
prim->channel_desc_2_bef_sti._skip;
prim->cipher_mode._skip;
prim->a5_algorithm._skip;
prim->cipher_key._skip;
prim->dtx_allowed._skip;
prim->amr_configuration._skip;
return prim;
}
T_PRIMITIVE_UNION mphc_channel_assign_con_1()
{
T_MPHC_CHANNEL_ASSIGN_CON prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mph_dedicated_fail_req_1()
{
T_MPH_DEDICATED_FAIL_REQ prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mph_dedicated_fail_cnf_1()
{
T_MPH_DEDICATED_FAIL_CNF prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mphc_async_ho_con_1()
{
T_MPHC_ASYNC_HO_CON prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mphc_handover_finished_1(CHAR success)
{
T_MPHC_HANDOVER_FINISHED prim;
prim->cause = success;
#ifdef FF_EGPRS
/*valid only for BHO*/
prim->fn_offset = FN_OFF_ARFCN_1;
prim->time_alignment = TIME_ALIGNMT_1;
#endif // FF_EGPRS
return prim;
}
T_PRIMITIVE_UNION mphc_handover_fail_req_1()
{
T_MPHC_HANDOVER_FAIL_REQ prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mphc_handover_fail_con_1()
{
T_MPHC_HANDOVER_FAIL_CON prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mphc_change_frequency_con_1()
{
T_MPHC_CHANGE_FREQUENCY_CON prim;
prim->param._skip;
return prim;
}
T_RADIO_FRAME copy_array_to_l2_frame(U8 ch_type, const U8 const array[])
{
T_RADIO_FRAME l2_frame;
U16 sdu_len = (array[0] + (array[1] << 8)) >> 3; /* sdu length in bytes */
U8 l2_header_off = (ch_type == L2_CHANNEL_SACCH) ? 6 : 4;
U8 l2_len = array[l2_header_off+2] >> 2; /* length in bytes from l2 header */
tdc_usi_trace ("copy_array_to_l2_frame(): sdu_len=%u l2_len=%u", sdu_len, l2_len);
/*
* Due to the incorrect SDU lengths in some message sdu´s, we use the length
* indicator field of the layer 2 header instead. The remain of the
* information will be filled with fill bytes. Please note the layer 1 header
* in frames on SACCH.
*/
l2_len += 3/*l2 header*/ + (l2_header_off-4)/*l1 header*/;
for (int i = 0; i < l2_len;i++) /* without sdu length and sdu offset */
{
l2_frame->A[i] = array[i+4];
}
for (; i < 23; i++)
{
l2_frame->A[i] = 0x2b; /* fill bytes */
}
return l2_frame;
}
T_PRIMITIVE_UNION ph_data_ind_1()
{
const U8 I_SMS[27] = {
0xA8, 0x00,
0x10, 0x00,
0xFF, 0xAA,
0x0F,
0x02,
0x19,
0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B,
0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B
};
T_PH_DATA_IND prim;
prim->rf_chan_num._skip;
prim->l2_channel_type= L2_CHANNEL_SACCH;
prim->l2_frame = copy_array_to_l2_frame (L2_CHANNEL_SACCH, I_SMS);
prim->error_cause = VALID_BLOCK;
prim->bsic._skip;
prim->tc._skip;
return prim;
}
T_PRIMITIVE_UNION mph_channel_mode_req_1()
{
T_MPH_CHANNEL_MODE_REQ prim;
prim->mode = CHANNEL_MODE_AMR;
prim->ch = CHANNEL_0;
prim->amr_conf = s_amr_conf_4_icmi();
return prim;
}
T_PRIMITIVE_UNION mphc_channel_mode_modify_req_1()
{
T_MPHC_CHANNEL_MODE_MODIFY_REQ prim;
prim->sub_channel = CHANNEL_0;
prim->channel_mode = CHM_AHS;
prim->amr_configuration = s_amr_configuration();
return prim;
}
T_PRIMITIVE_UNION mphc_channel_mode_modify_con_1()
{
T_MPHC_CHANNEL_MODE_MODIFY_CON prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mphc_stop_dedicated_req()
{
T_MPHC_STOP_DEDICATED_REQ prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mphc_stop_dedicated_con()
{
T_MPHC_STOP_DEDICATED_CON prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mph_stop_dedicated_req()
{
T_MPH_STOP_DEDICATED_REQ prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mph_stop_dedicated_cnf()
{
T_MPH_STOP_DEDICATED_CNF prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mph_dedicated_req_2g()
{
T_MPH_DEDICATED_REQ prim;
prim->mod = MODE_PDCH_ASSIGN;
prim->start._skip;
prim->ch_type._skip;
prim->ch_type2._skip;
prim->arfcn._skip;
prim->bsic._skip;
prim->ho_param._skip;
prim->tr_para._skip;
prim->ciph._skip;
prim->amr_conf._skip;
return prim;
}
T_PRIMITIVE_UNION mph_dedicated_fail_req_1g()
{
T_MPH_DEDICATED_FAIL_REQ prim;
prim->param._skip;
return prim;
}
#if 0
T_PRIMITIVE_UNION mphc_immed_assign_req_2g()
{
T_MPHC_IMMED_ASSIGN_REQ prim;
prim->channel_desc = channel_desc_1();
prim->timing_advance = TIMING_ADVANCE;
prim->frequency_list = freq_list();
prim->starting_time._skip;
prim->frequency_list_bef_sti._skip;
prim->maio_bef_sti._skip;
prim->dtx_allowed._skip;
prim->bcch_allocation._skip;
prim->ba_id._skip;
prim->pwrc._skip;
return prim;
}
#endif
T_PRIMITIVE_UNION mphc_channel_assign_req_1g()
{
T_MPHC_CHANNEL_ASSIGN_REQ prim;
prim->channel_desc_1._skip;
prim->channel_mode_1._skip;
prim->txpwr._skip;
prim->frequency_list._skip;
prim->starting_time._skip;
prim->channel_desc_2._skip;
prim->channel_mode_2._skip;
prim->frequency_list_bef_sti._skip;
prim->channel_desc_1_bef_sti._skip;
prim->channel_desc_2_bef_sti._skip;
prim->cipher_mode._skip;
prim->a5_algorithm._skip;
prim->cipher_key._skip;
prim->dtx_allowed._skip;
prim->amr_configuration._skip;
return prim;
}
T_PRIMITIVE_UNION mphc_channel_assign_con_1g()
{
T_MPHC_CHANNEL_ASSIGN_CON prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mph_dedicated_fail_cnf_1g()
{
T_MPH_DEDICATED_FAIL_CNF prim;
prim->param._skip;
return prim;
}
T_PRIMITIVE_UNION mph_dedicated_req_fn(U8 mode, U16 arfcn, U8 bsic)
{
T_MPH_DEDICATED_REQ prim;
prim->mod = mode;
prim->start._skip;
prim->ch_type = ch_type_tch2();
prim->ch_type2._skip;
prim->arfcn = arfcn;
prim->bsic = bsic;
prim->ho_param = ho_param_1();
prim->tr_para = tr_param();
prim->ciph = ciph_param();
prim->amr_conf._skip;
return prim;
}
T_PRIMITIVE_UNION mphc_async_ho_req_ho_type_fn(U8 ho_type, U32 fn_offset, U32 time_alignment)
{
T_MPHC_ASYNC_HO_REQ prim;
prim->handover_command._skip;
prim->fn_offset = fn_offset;
prim->time_alignmnt = time_alignment;
prim->cipher_key._skip;
prim->amr_configuration._skip;
#ifdef FF_EGPRS
prim->handover_type = ho_type;
#endif // FF_EGPRS
return prim;
}
T_PRIMITIVE_UNION mphc_sync_ho_req_ho_type_fn(U8 ho_type, U32 fn_offset, U32 time_alignment)
{
T_MPHC_SYNC_HO_REQ prim;
prim->handover_command._skip;
prim->fn_offset = fn_offset;
prim->time_alignmnt = time_alignment;
prim->cipher_key._skip;
prim->amr_configuration._skip;
#ifdef FF_EGPRS
prim->handover_type = ho_type;
#endif // FF_EGPRS
return prim;
}
T_PRIMITIVE_UNION mphc_presync_ho_req_ho_type_fn(U8 ho_type, U32 fn_offset, U32 time_alignment)
{
T_MPHC_PRE_SYNC_HO_REQ prim;
prim->handover_command._skip;
prim->fn_offset = fn_offset;
prim->time_alignmnt = time_alignment;
prim->cipher_key._skip;
prim->amr_configuration._skip;
#ifdef FF_EGPRS
prim->handover_type = ho_type;
#endif // FF_EGPRS
return prim;
}
T_PRIMITIVE_UNION mphc_handover_finished_fn(U8 cause)
{
T_MPHC_HANDOVER_FINISHED prim;
if(cause == 0xFF) prim->cause._show;
else prim->cause = cause;
return prim;
}
T_PRIMITIVE_UNION mph_dedicated_cnf_fn(U8 cause)
{
T_MPH_DEDICATED_CNF prim;
if(cause == 0xFF) prim->dedi_res._show;
else prim->dedi_res = cause;
return prim;
}