Newer
Older
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
if (i < lengthof(vc_utEvents)) {
log("*** " & testcasename() & ": FAIL: DENM was treated as valid and was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": FAIL: DENM was treated as invalid and was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
} // end TC_DEN_MSRV_BV_09_XX
function f_DEN_MSRV_BO_09_01 () runs on ItsDenm {
f_DEN_MSRV_BO_09_XX(
"CERT_TS_DENM_01",
m_situation(CauseCodeType_trafficCondition_, TrafficConditionSubCauseCode_unavailable_),
m_situation(CauseCodeType_trafficCondition_, TrafficConditionSubCauseCode_trafficJamIncreasing_)
);
}
function f_DEN_MSRV_BO_09_02 () runs on ItsDenm {
f_DEN_MSRV_BO_09_XX(
"CERT_TS_DENM_02",
m_situation(CauseCodeType_accident_, AccidentSubCauseCode_unavailable_),
m_situation(CauseCodeType_accident_, AccidentSubCauseCode_multiVehicleAccident_)
);
}
}
/**
* @desc TP Function for TC_DEN_MSRV_BV_10
*/
function f_DEN_MSRV_BV_10() runs on ItsDenm {
//Local constants
// Local variables
var template (value) SituationContainer v_situation := m_situation(CauseCodeType_vehicleBreakdown_, VehicleBreakdownSubCauseCode_unavailable_);
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
var ActionID v_actionId;
// Test control
if (not PICS_DENM_RECEPTION) {
log("*** " & testcasename() & ": PICS_DENM_RECEPTION required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cfUp();
// Preamble
f_prInitialState();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_actionId := f_sendDenMessage (
m_denm ( m_denmMgmtCon ( m_tsActionId), v_situation, m_denmLocation_zeroDelta, m_alacarteConImpactReduction ) );
tc_ac.start;
alt {
[] denmPort.receive ( mw_denmInd ( mw_denmPdu ( mw_denm ( mw_denmMgmtCon ( mw_actionId ( f_getTsStationId() ) ), v_situation, mw_anyDenmLocation,
mw_alacarteConImpactReduction ) ) ) ) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: DENM with correct alacarte container ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive ( mw_denmInd ( mw_denmPdu ( mw_denm ( mw_denmMgmtCon ( mw_actionId ( f_getTsStationId() ) ) ) ) ) ) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: DENM with incorrect containers ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: DENM not rreceived ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
}
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
} // end TC_DEN_MSRV_BV_10
} // end denMessageReception
// 5.2.3
group denKeepAliveForwarding {
/**
* @desc TP Function for TC_DEN_KAFW_BV_01
*/
function f_DEN_KAFW_BV_01() runs on ItsDenm {
//Local constants
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(CauseCodeType_vehicleBreakdown_, VehicleBreakdownSubCauseCode_unavailable_);
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
var ActionID v_actionId;
// Local timers
timer t_forwarding := 2.0 * int2float(c_transmissionInterval) / 1000.0;
// Test control
if (not PICS_DENM_KAF) {
log("*** " & testcasename() & ": PICS_DENM_KAF required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cfUp();
// Test adapter configuration
// Preamble
f_prInitialState();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId,
-,
c_transmissionInterval * 4 / 1000,
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
c_transmissionInterval
),
v_situation,
m_denmLocation_zeroDelta
)
);
t_forwarding.start;
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId)
)
)
)
) {
if(t_forwarding.running) {
t_forwarding.stop;
log("*** " & testcasename() & ": FAIL: IUT re-forwarded the packet too early ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: DENM re-forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
[] t_forwarding.timeout {
tc_ac.start;
log("*** " & testcasename() & ": INFO: Ready for receiving re-forwarded DENM ***");
repeat;
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: DENM was not forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
} // end TC_DEN_KAFW_BV_01
/**
* @desc TP Function for TC_DEN_KAFW_BV_02
*/
function f_DEN_KAFW_BV_02() runs on ItsDenm {
//Local constants
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(CauseCodeType_vehicleBreakdown_, VehicleBreakdownSubCauseCode_unavailable_);
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
var TimestampIts v_referenceTime1 := f_getCurrentTime();
var TimestampIts v_referenceTime2 := v_referenceTime1 - 1000;
var ActionID v_actionId;
// Local timers
timer t_forwarding := 2.0 * int2float(c_transmissionInterval) /1000.0;
// Test control
if (not PICS_DENM_KAF) {
log("*** " & testcasename() & ": PICS_DENM_KAF required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cfUp();
// Test adapter configuration
// Preamble
f_prInitialState();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId,
-,
c_transmissionInterval * 4 / 1000,
c_transmissionInterval,
v_referenceTime1
),
v_situation,
m_denmLocation_zeroDelta
)
);
// start KAF timer here, as 2nd DENM shall be ignored
t_forwarding.start;
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId,
-,
c_transmissionInterval * 4 / 1000,
c_transmissionInterval,
v_referenceTime2
),
v_situation,
m_denmLocation_zeroDelta
)
);
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId, -, v_referenceTime1)
)
)
)
) {
if(t_forwarding.running) {
t_forwarding.stop;
log("*** TC_DEN_KAFW_BV_02: INFO: IUT re-forwarded the packet too early ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
tc_ac.stop;
log("*** TC_DEN_KAFW_BV_02: PASS: DENM re-forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId)
)
)
)
) {
tc_ac.stop;
t_forwarding.stop;
log("*** " & testcasename() & ": FAIL: IUT re-forwarded wrong version of DENM ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] t_forwarding.timeout {
tc_ac.start;
log("*** " & testcasename() & ": INFO: Ready for receiving re-forwarded DENM ***");
repeat;
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: DENM was not forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
} // end TC_DEN_KAFW_BV_02
/**
* @desc TP Function for TC_DEN_KAFW_TI_03
*/
function f_DEN_KAFW_TI_03() runs on ItsDenm {
//Local constants
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(CauseCodeType_vehicleBreakdown_, VehicleBreakdownSubCauseCode_unavailable_);
var ActionID v_actionId;
// Local timers
timer t_forwardingMin := 2.0 * int2float(c_transmissionInterval) / 1000.0;
timer t_forwardingMax := 2.0 * int2float(c_transmissionInterval) / 1000.0 + 0.15 /* from the spec */ + 0.1 /* processing time */;
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
// Test control
if (not PICS_DENM_KAF) {
log("*** " & testcasename() & ": PICS_DENM_KAF required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cfUp();
// Test adapter configuration
// Preamble
f_prInitialState();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId,
-,
c_transmissionInterval * 4 / 1000,
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
c_transmissionInterval
),
v_situation,
m_denmLocation_zeroDelta
)
);
t_forwardingMin.start;
t_forwardingMax.start;
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId)
)
)
)
) {
t_forwardingMax.stop;
if(t_forwardingMin.running) {
t_forwardingMin.stop;
log("*** " & testcasename() & ": FAIL: IUT re-forwarded the packet too early ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": PASS: DENM re-forwarded correctly ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
[] t_forwardingMin.timeout {
log("*** " & testcasename() & ": INFO: Ready for receiving re-forwarded DENM ***");
repeat;
}
[] t_forwardingMax.timeout {
log("*** " & testcasename() & ": FAIL: DENM was not forwarded on time ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
} // end TC_DEN_KAFW_TI_03
/**
* @desc TP Function for TC_DEN_KAFW_BV_04
*/
function f_DEN_KAFW_BV_04() runs on ItsDenm {
//Local constants
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(CauseCodeType_vehicleBreakdown_, VehicleBreakdownSubCauseCode_unavailable_);
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
var ActionID v_actionId;
// Test control
if (not PICS_DENM_KAF) {
log("*** " & testcasename() & ": PICS_DENM_KAF required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cfUp();
// Test adapter configuration
// Preamble
f_prInitialState();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId,
-,
c_transmissionInterval * 4 / 1000,
c_transmissionInterval
),
v_situation,
m_denmLocation_zeroDelta
)
);
tc_ac.start((int2float(c_interval_10sec) * 2.0 / 1000.0) + 0.5);
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId)
),
f_getIutStationId()
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: DENM re-forwarded with correct stationID ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId)
),
mw_anyStationId
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: DENM re-forwarded with incorrect stationID ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: DENM was not forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
} // end TC_DEN_KAFW_BV_04
/**
* @desc TP Function for TC_DEN_KAFW_BV_05
*/
function f_DEN_KAFW_BV_05() runs on ItsDenm {
//Local constants
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(CauseCodeType_vehicleBreakdown_, VehicleBreakdownSubCauseCode_unavailable_);
var ActionID v_actionId;
// Test control
if (not PICS_DENM_KAF) {
log("*** " & testcasename() & ": PICS_DENM_KAF required for executing the TC ***");
setverdict(inconc);
stop;
// Test component configuration
f_cfUp();
// Test adapter configuration
// Preamble
f_prInitialState();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId,
-,
c_transmissionInterval * 4 / 1000,
c_transmissionInterval
),
v_situation,
m_denmLocation_zeroDelta
)
);
tc_ac.start((int2float(c_interval_10sec) * 2.0 / 1000.0) + 0.5);
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId)
)
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: DENM re-forwarded with correct actionID ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(mw_anyActionId)
)
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: DENM re-forwarded with incorrect actionID ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: DENM was not forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
} // end TC_DEN_KAFW_BV_05
/**
* @desc TP Function for TC_DEN_KAFW_BV_06
*/
function f_DEN_KAFW_BV_06() runs on ItsDenm {
//Local constants
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(CauseCodeType_vehicleBreakdown_, VehicleBreakdownSubCauseCode_unavailable_);
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
var TimestampIts v_referenceTime1 := f_getCurrentTime();
var ActionID v_actionId;
// Test control
if (not PICS_DENM_KAF) {
log("*** " & testcasename() & ": PICS_DENM_KAF required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cfUp();
// Test adapter configuration
// Preamble
f_prInitialState();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId,
-,
c_transmissionInterval * 4 / 1000,
c_transmissionInterval,
v_referenceTime1
),
v_situation,
m_denmLocation_zeroDelta
)
);
tc_ac.start((int2float(c_interval_10sec) * 2.0 / 1000.0) + 0.5);
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId, -, v_referenceTime1)
)
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: DENM re-forwarded with correct referenceTime ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId)
)
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: DENM re-forwarded with incorrect referenceTime ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: DENM was not forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
} // end TC_DEN_KAFW_BV_06
/**
* @desc TP Function for TC_DEN_KAFW_BV_07
*/
function f_DEN_KAFW_BV_07() runs on ItsDenm {
//Local constants
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(CauseCodeType_vehicleBreakdown_, VehicleBreakdownSubCauseCode_unavailable_);
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
var ActionID v_actionId;
// Test control
if (not PICS_DENM_KAF) {
log("*** " & testcasename() & ": PICS_DENM_KAF required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cfUp();
// Test adapter configuration
// Preamble
f_prInitialState();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId,
-,
c_transmissionInterval * 4 / 1000,
c_transmissionInterval
),
v_situation,
m_denmLocation_zeroDelta
)
);
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtConTermination(
m_tsActionId,
-,
c_transmissionInterval * 4 / 1000,
c_transmissionInterval,
-,
-,
isNegation
),
v_situation,
m_denmLocation_zeroDelta
)
);
tc_ac.start((int2float(c_interval_10sec) * 2.0 / 1000.0) + 0.5);
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon ( v_actionId, - )
)
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: DENM re-forwarded with correct isNegation ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon ( v_actionId, - )
)
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: DENM re-forwarded with incorrect isNegation ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: DENM was not forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
} // end TC_DEN_KAFW_BV_07
/**
* @desc TP Function for TC_DEN_KAFW_BV_08
*/
function f_DEN_KAFW_BV_08() runs on ItsDenm {
//Local constants
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(CauseCodeType_vehicleBreakdown_, VehicleBreakdownSubCauseCode_unavailable_);
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
var ActionID v_actionId;
// Test control
if (not PICS_DENM_KAF) {
log("*** " & testcasename() & ": PICS_DENM_KAF required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cfUp();
// Test adapter configuration
// Preamble
f_prInitialState();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId,
-,
c_transmissionInterval * 3 / 1000,
c_transmissionInterval
),
v_situation,
m_denmLocation_zeroDelta,
m_alacarteConLaneCount
)
);
tc_ac.start((int2float(c_interval_10sec) * 2.0 / 1000.0) + 0.5);
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId),
v_situation,
m_denmLocation_zeroDelta,
m_alacarteConLaneCount
)
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: DENM re-forwarded with correct containers ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId)
)
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: DENM re-forwarded with incorrect containers ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: DENM was not forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
} // end TC_DEN_KAFW_BV_08
/**
* @desc TP Function for TC_DEN_KAFW_BV_09
*/
function f_DEN_KAFW_BV_09() runs on ItsDenm {
//Local constants
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(CauseCodeType_vehicleBreakdown_, VehicleBreakdownSubCauseCode_unavailable_);
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
var ActionID v_actionId;
// Local timers
timer t_validity := int2float(c_transmissionInterval * 3) / 1000.0;
// Test control
if (not PICS_DENM_KAF) {
log("*** " & testcasename() & ": PICS_DENM_KAF required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cfUp();
// Test adapter configuration
// Preamble
f_prInitialState();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId,
-,
c_transmissionInterval * 3 / 1000,
c_transmissionInterval
),
v_situation,
m_denmLocation_zeroDelta
)
);
t_validity.start;
tc_ac.start((int2float(c_interval_10sec) * 2.0 / 1000.0) + 0.5);
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId)
)
)
)
) {
tc_ac.stop;
if(t_validity.running) {
log("*** " & testcasename() & ": INFO: DENM re-forwarded during validity period ***");
tc_ac.start((int2float(c_interval_10sec) * 2.0 / 1000.0) + 0.5);
repeat;
}
else {
log("*** " & testcasename() & ": FAIL: DENM re-forwarded after validity expiration ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] tc_ac.timeout {
if(t_validity.running) {
log("*** " & testcasename() & ": INCONC: DENM was not forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
else {
log("*** " & testcasename() & ": PASS: DENM not reforwarded after validity expiration ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
}
}
[] t_validity.timeout {
log("*** " & testcasename() & ": INFO: End of validity period ***");
repeat;
}
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
} // end TC_DEN_KAFW_BV_09
/**
* @desc TP Function for TC_DEN_KAFW_BV_10
*/
function f_DEN_KAFW_BV_10() runs on ItsDenm {
//Local constants
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(CauseCodeType_vehicleBreakdown_, VehicleBreakdownSubCauseCode_unavailable_);
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
var ActionID v_actionId;
var boolean v_positionChanged := false;
// Test control
if (not PICS_DENM_KAF) {
log("*** " & testcasename() & ": PICS_DENM_KAF required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cfUp();
// Test adapter configuration
// Preamble
f_prInitialState();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId,
-,
c_transmissionInterval * 5 / 1000,
c_transmissionInterval
),
v_situation,
m_denmLocation_zeroDelta
)
);
tc_ac.start((int2float(c_interval_10sec) * 2.0 / 1000.0) + 0.5);
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId)
)
)
)
) {
tc_ac.stop;
if(v_positionChanged == false) {
log("*** " & testcasename() & ": INFO: DENM re-forwarded. Changing position ***");
f_utChangePosition(m_utChangePosition(1000, 0));
v_positionChanged := true;
tc_ac.start;
repeat;
}
else {
log("*** " & testcasename() & ": FAIL: DENM was re-forwarded ***");
f_utChangePosition(m_utChangePosition(-1000, 0));
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] tc_ac.timeout {
if(v_positionChanged == false) {
log("*** " & testcasename() & ": INCONC: DENM was not forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
else {
log("*** " & testcasename() & ": PASS: DENM stopped re-forwarding DENM ***");
f_utChangePosition(m_utChangePosition(-1000, 0));
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
} // end TC_DEN_KAFW_BV_10
/**
* @desc TP Function for TC_DEN_KAFW_BV_11
*/
function f_DEN_KAFW_BV_11() runs on ItsDenm {
// Local variables
var template (value) SituationContainer v_situation := m_situation(CauseCodeType_vehicleBreakdown_, VehicleBreakdownSubCauseCode_unavailable_);
var ActionID v_actionId;
// Test control
if (not PICS_DENM_KAF) {
log("*** " & testcasename() & ": PICS_DENM_KAF required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cfUp();