Newer
Older
/**
* @author ETSI / STF422_EETS
* @version $URL:$
* $Id:$
* @desc Inter-ITS-SCU communications (ISO 24102-4) functions
*/
module LibItsMgt_Functions {
// LibCommon
import from LibCommon_BasicTypesAndValues {
const
c_uInt8Max;
};
import from LibCommon_Sync {
function
f_selfOrClientSyncAndVerdict, f_selfOrClientSyncAndVerdictPreamble
};
import from LibCommon_VerdictControl all;
// LibIts
import from CALMllsap language "ASN.1:1997" {
type
MedType, CIaClass, CIclass
};
import from CALMmanagement language "ASN.1:1997" {
type
ITS_scuId
};
import from CALMiitsscu language "ASN.1:1997" {
type
IIC_Request,
ITS_SCUtype,
PduCounter
};
import from CALMmsap language "ASN.1:1997" {
type
CommandRef,
MN_Request_request, FWTupdate,
MF_Request_request
};
import from CALMfsap language "ASN.1:1997" {
type
GCregServer, GCregClient, GCderegClient, GCctxTxCmd, CTXrxNot
};
import from LibItsMgt_Templates all;
import from LibItsMgt_Pixits all;
import from LibIts_Interface {
type
group functions {
/**
* @desc Triggers a request command event in the test system adaptation.
* @param p_requestRequest The remote commad to trigger
* @return FncRetCode
*/
function f_mgtMFTriggerRequest(
in template (value) MF_Request_request p_requestRequest
) runs on ItsMgt return FncRetCode {
var FncRetCode v_ret := e_success;
mgtMFSapPort.send(m_mgtMFSapRequestReq(p_requestRequest));
return v_ret;
}
} // End of group functions
group mgtAltsteps {
group mfSap {
/**
* @desc The base default.
* See ISO/CD 24102-3 Clause 8.2
*/
altstep a_mgtMFSapPortDefault() runs on ItsMgt {
[] mgtMFSapPort.receive(mw_mgtMFSapCommandReq(mw_mfCommandRequest_any)) { // Receive any MF-COMMAND.request message
log("*** a_mgtMFSapPortDefault: INFO: MF-SAP service primitive received in default ***");
repeat;
}
[] mgtMFSapPort.receive(mw_mgtMFSapRequestReq(mw_mfRequestRequest_any)) { // Receive any MF-COMMAND.request message
log("*** a_mgtMFSapPortDefault: INFO: MF-SAP service primitive received in default ***");
repeat;
}
// FIXME Add support of response to CommandRequest & RequestRequest
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// [] mgtMFSapPort.receive(mw_mgtMFSapCommandInd(mw_mfCommandRequest_any)) { // Receive any MF-COMMAND.request message
// log("*** a_mgtMFSapPortDefault: INFO: MF-SAP service primitive received in default ***");
// repeat;
// }
// [] mgtMFSapPort.receive(mw_mgtMFSapRequestConfirmInd(mw_mfRequestConfirm_any)) { // Receive any MF-REQUEST.confirm message
// log("*** a_mgtMFSapPortDefault: INFO: MF-SAP service primitive received in default ***");
// repeat;
// }
[] mgtMFSapPort.receive { // Receive unknown message
log("*** a_mgtMFSapPortDefault: ERROR: event received on MgtMFSapPort port in default ***");
f_selfOrClientSyncAndVerdict("error", e_error);
}
} // End of altstep a_mgtMFSapPortDefault
// /**
// * @desc Wait for REQUEST.confirm/GCregServer MF-REQUEST.confirm
// * @param p_commandRef Unique cyclic reference number of command. Same value as in related MN-REQUEST.request
// * @verdict Unchanged
// */
// altstep a_mgtAwaitGCregServerReqConf(in CommandRef p_commandRef) runs on ItsMgt {
//
// [] mgtMFSapPort.receive(mw_mgtMFSapRequestConfirmInd(mdw_gCregServerRequestConf(p_commandRef))) {
// log("*** a_mgtAwaitGCregServerReqConf: INFO: MF-SAP GCregServer service primitive received ***");
// repeat;
// }
// } // End of altstep a_mgtAwaitGCregServerReqConf
} // End of group mfSap
group mnSap {
/**
* @desc The base default.
* See ISO/CD 24102-3 Clause 8.2
*/
altstep a_mgtMNSapPortDefault() runs on ItsMgt {
[] mgtMNSapPort.receive(mw_mgtMNSapCommandConfirm(mw_mnCommandConfirm_any)) { // Receive any MF-COMMAND.confirm message
log("*** a_mgtMNSapPortDefault: INFO: MN-SAP service primitive MF-COMMAND.confirm received in default ***");
repeat;
}
[] mgtMNSapPort.receive(mw_mgtMNSapRequestConfirm(mw_mnRequestConfirm_any)) { // Receive any MF-REQUEST.confirm message
log("*** a_mgtMNSapPortDefault: INFO: MN-SAP service primitive MF-REQUEST.confirm received in default ***");
repeat;
}
[] mgtMNSapPort.receive(mw_mgtMNSapRequestReq(mw_mnRequestRequest_any)) { // Receive any MF-REQUEST.request message
log("*** a_mgtMNSapPortDefault: INFO: MN-SAP service primitive MF-REQUEST.request received in default ***");
repeat;
}
[] mgtMNSapPort.receive { // Receive unknown message
log("*** a_mgtMNSapPortDefault: ERROR: event received on MgtMNSapPort port in default ***");
f_selfOrClientSyncAndVerdict("error", e_error);
}
} // End of altstep a_mgtMNSapPortDefault
/**
* @desc Wait for MN_COMMAND/FWTupdate message
* @verdict Unchanged
* @see ISO/WD 24102-4 - Clause 7.2.2
*/
altstep a_mgtSapAwaitFWTupdate() runs on ItsMgt {
[] mgtMNSapPort.receive(mw_mgtMNSapCommandReq(mw_fWTUpdateCommandReq)) -> value v_fWTupdate {
//vc_noFNTPfwtEntry := v_fWTupdate.msgIn.command_param.mnCmd.fWTupdate.update.fntp.reference;
log("*** a_mgtSapAwaitFWTupdate: INFO: MN-SAP FWTupdate service primitive received: vc_noFNTPfwtEntry=" & int2str(vc_noFNTPfwtEntry) & " ***");
}
} // End of altstep a_mgtSapAwaitFWTupdate
/**
* @desc Wait for a notification of creation of an entry in a forwarding table.
* @see ISO/WD 24102-4 Clause E.2.2 FWTsetNot
* @verdict Unchanged
*/
altstep a_mgtAwaitFWTsetNot() runs on ItsMgt {
[] mgtMNSapPort.receive(mw_mgtMNSapRequestReq(mdw_fWTSetNotRequestReq)) {
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
log("*** a_mgtAwaitFWTupdateNot: INFO: MN-SAP FWTupdateNot service primitive received ***");
}
} // End of altstep a_mgtAwaitFWTupdateNot
// /**
// * @desc Wait for a notification of an update of an entry in a forwarding table.
// * @see ISO/WD 24102-4 Clause E.2.3 FWTupdateNot
// * @verdict Unchanged
// */
// altstep a_mgtAwaitFWTupdateNot() runs on ItsMgt {
//
// [] mgtMNSapPort.receive(mw_mgtMNSapRequestReqInd(mdw_fWTupdateNotRequestReq)) {
// log("*** a_mgtAwaitFWTupdateNot: INFO: MN-SAP FWTupdateNot service primitive received ***");
// }
// } // End of altstep a_mgtAwaitFWTupdateNot
//
/**
* @desc Wait for a notification of deletion of an entry in a forwarding table.
* @see ISO/WD 24102-4 Clause E.2.4 FWTdeleteNot
* @verdict Unchanged
*/
// FIXME To be removed - Moved on NF-SAP
// altstep a_mgtAwaitFWTdeleteNot() runs on ItsMgt {
//
// [] mgtMNSapPort.receive(mw_mgtMNSapRequestReqInd(mdw_fWTdeleteNotRequestReq)) {
// log("*** a_mgtAwaitFWTdeleteNot: INFO: MN-SAP FWDdelateNot service primitive received ***");
// }
// } // End of altstep a_mgtAwaitFWTdeleteNot
// /**
// * @desc Wait for REQUEST.confirm/CTXrxNot MF-REQUEST.confirm
// * @param p_commandRef Unique cyclic reference number of command. Same value as in related MN-REQUEST.request
// * @verdict Unchanged
// */
// altstep a_mgtAwaitCTXrxNotReqConf(in CommandRef p_commandRef) runs on ItsMgt {
//
// [] mgtMNSapPort.receive(mw_mgtMNSapRequestConfirm(mdw_cTXrxNotRequestConf(p_commandRef))) {
// tc_ac.stop;
// log("*** a_mgtAwaitCTXrxNotReqConf: INFO: MN-SAP service primitive received ***");
// }
// } // End of altstep a_mgtAwaitCTXrxNotReqConf
//
} // End of group mnSap
} // End of group mgtAltsteps
group iiscFunctions {
/**
* @desc Triggers a request command event in the test system adaptation.
* @param p_rCmd The remote commad to trigger
* @return FncRetCode
*/
function f_iiscTriggerRequest(
in template (value) IIC_Request p_rCmd
) runs on ItsMgt return FncRetCode {
var FncRetCode v_ret := e_success;
iiscPort.send(m_iiscReq(p_rCmd));
return v_ret;
}
} // End of group iiscFunctions
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
group iiscAltsteps {
// /**
// * @desc Trap for not processed IICP message
// * @verdict Unchanged
// */
// altstep a_iiscAwaitFWTupdateNot(
// in template (value) ITS_scuId p_sourceITS_scuId,
// in template (value) ITS_scuId p_destinationITS_scuId,
// in template (value) PduCounter p_pduCounter
// ) runs on ItsMgt {
// [] iiscPort.receive(//mw_iiscResp(mdw_fWTupdateNotRequestReq)) {
// mw_iiscResp(
// mw_iiscMnRequestReq(
// p_sourceITS_scuId,
// p_destinationITS_scuId,
// p_pduCounter,
// mdw_fWTupdateNotRequestReq))) {
// log("*** a_iiscAwaitFWTupdateNot: INFO: IISC FWTupdateNot service primitive received ***");
// repeat;
// }
// } // End of function a_iiscAwaitFWTupdateNot
/**
* @desc Inter-ITS-SCU communications MN-rreq (see ISO/CD 24102-5) with payload MN-Request "SAMrxNot" (see ISO/CD 24102-3 & ISO/CD 24102-5)
* @param p_sourceITS-scuId ITS-SCU-ID of the source ITS-SCU which produces the request
* @param p_destinationITS-scuId ITS-SCU-ID of the destination ITS-SCU which shall evaluate the request
* @param p_pduCounter Even number generated fro a cyclic counter at the ITS-SCU
* @param p_mn_rreq The MN-REQUEST.request/SAMrxNot to be forwarded
* @verdict Unchanged
*/
// altstep a_iiscAwaitSAMrxNotRequestReq(
// in template (value) ITS_scuId p_sourceITS_scuId,
// in template (value) ITS_scuId p_destinationITS_scuId,
// in template (value) PduCounter p_pduCounter,
// in template (value) MN_Request_request p_mn_rreq // FIXME Replace MN_Request_request by SAMrxNot template
// ) runs on ItsMgt {
// [] iiscPort.receive(
// mw_iiscResp(
// mw_iiscMnRequestReq(
// p_sourceITS_scuId,
// p_destinationITS_scuId,
// p_pduCounter,
// p_mn_rreq))) { // Receive MN-REQUEST.request/SAMrxNot message
// log("*** a_iiscAwaitSAMrxNotRequestReq: INFO: Remote command service primitive received in default ***");
// repeat;
// }
// } // End of altstep a_iiscAwaitSAMrxNotRequestReq
/**
* @desc Inter-ITS-SCU communications MN-rreq (see ISO/WD 24102-4) with payload MN-Request "CTXrxNot" (see ISO/CD 24102-3 & ISO/CD 24102-5)
* @param p_sourceITS-scuId ITS-SCU-ID of the source ITS-SCU which produces the request
* @param p_destinationITS-scuId ITS-SCU-ID of the destination ITS-SCU which shall evaluate the request
* @param p_pduCounter Even number generated fro a cyclic counter at the ITS-SCU
* @param p_mn_rcmd The MN-REQUEST.request/SAMrxNot to be forwarded
* @verdict Unchanged
*/
// altstep a_iiscAwaitCTXrxNotRequestReq(
// in template (value) ITS_scuId p_sourceITS_scuId,
// in template (value) ITS_scuId p_destinationITS_scuId,
// in template (value) PduCounter p_pduCounter,
// in template (value) MN_Request_request p_mn_rreq // FIXME Replace MN_Request_request by CTXrxNot template
// ) runs on ItsMgt {
// [] iiscPort.receive(mw_iiscResp(mw_iiscMnRequestReq(
// p_sourceITS_scuId,
// p_destinationITS_scuId,
// p_pduCounter,
// p_mn_rreq))) { // Receive MN-REQUEST.request/CTXrxNot message
// log("*** a_iiscAwaitCTXrxNotRequestReq: INFO: Remote command service primitive received in default ***");
// repeat;
// }
// } // End of altstep a_iiscAwaitCTXrxNotRequestReq
/**
* @desc Trap for not processed IICP message.
* @verdict Set to fail on unknown message
*/
altstep a_iiscDefault() runs on ItsMgt {
// FIXME To be removed if we have not to check remote command request
// [] iiscPort.receive(mw_iiscReq(mw_iiscRequest_any)) { // Receive any IIC-Request message
// log("*** a_iiscDefault: INFO: Remote IIC-Request command service primitive received in default ***");
// repeat;
// }
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
[] iiscPort.receive(mw_iiscResp(mw_iiscResponse_any)) { // Receive any IIC-Response message
log("*** a_iiscDefault: INFO: Remote IIC-Response command service primitive received in default ***");
repeat;
}
[] iiscPort.receive { // Receive unknown message
log("*** a_iiscDefault: ERROR: event received on IISC port in default ***");
f_selfOrClientSyncAndVerdict("error", e_error);
}
} // End of altstep a_iiscDefault
} // End of group iiscAltsteps
group preambule {
// /**
// * @desc TODO
// *
// * See ISO/CD 29281-2 Clause 7.8.1
// */
// function f_fntpForwardingTableRegisterEntry() runs on ItsMgt {
// var PduCounter v_pduCounter;
// var CommandRef v_commandRef;
//
// // Get a pdu counter value
// v_pduCounter := f_getNextPduCounter();
// v_commandRef := f_getNextCommandRef();
//
// // Send FWSet MN-COMMAND
// iiscPort.send(m_iiscReq(
// m_remoteMnCommandRequest(
// PX_SRC_ITS_SCU_ID,
// PX_DST_ITS_SCU_ID,
// v_pduCounter,
// m_mnCommandRequest(
// v_commandRef,
// m_mnFWTSet(
// PX_HOST_CIID,
// PX_HOST_SCU_ID,
// PX_REMOTE_PORT,
// PX_HOST_SCU_ID,
// PX_USER_PRIORITY)))));
// tc_ac.start;
// alt {
// [] iiscPort.receive(mw_iiscResp(
// mw_mnCommandConfirm(
// PX_DST_ITS_SCU_ID,
// PX_SRC_ITS_SCU_ID,
// v_pduCounter + 1, // ISO/WD 24102-4 - Clause 6.2.1
// mw_mnCommandConfirmAny // FIXME Use a more restrictive template
// ))) {
// tc_ac.stop;
// }
// [] tc_ac.timeout {
// log("*** f_fntpForwardingTableRegisterEntry: INCONC: Pre-conditions: Failed to initialize FNTP Forwarding Table ***");
// f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
// }
// } // End of 'alt' statement
//
// } // End of function f_fntpForwardingTableRegisterEntry
} // End of group preambule
group testerFunctions {
/**
* @desc Increments the pdu counter and returns the new value
* @return The new pdu counter value
*
* See ISO/WD 24102-4 - Clause 6.2.1
*/
function f_getNextPduCounter() runs on ItsMgt return PduCounter {
vc_pduCounter := (vc_pduCounter + 2) mod (c_uInt8Max - 1); // ISO/WD 24102-4 - Clause 6.2.1: modulus 254
return vc_pduCounter;
} // End of function f_getNextPduCounter
/**
* @desc Increments the commandRef value and returns it
* @return The new commandRef value
*/
function f_getNextCommandRef() runs on ItsMgt return CommandRef {
vc_commandRef := (vc_commandRef + 1) mod (c_uInt8Max + 1);
return vc_commandRef;
} // End of function f_getNextCommandRef
} // End of group testerFunctions
group iutFunctions {
/**
* @desc TODO
* @return TODO
* @verdict Unchanged
* @see PX_SRC_ITS_SCU_ID
*/
function f_getIutSourceITS_scuId() return ITS_scuId {
return PX_SRC_ITS_SCU_ID;
}
/**
* @desc TODO
* @return TODO
* @verdict Unchanged
* @see PX_DST_ITS_SCU_ID
*/
function f_getIutDestITS_scuId() return ITS_scuId {
return PX_DST_ITS_SCU_ID;
}
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
/**
* @desc TODO
* @return TODO
* @verdict Unchanged
* @see PX_SRC_ITS_SCU_TYPE
*/
function f_getIutSourceITS_scuType() return ITS_SCUtype {
return PX_SRC_ITS_SCU_TYPE;
}
/**
* @desc TODO
* @return TODO
* @verdict Unchanged
* @see PX_MED_TYPE
*/
function f_getIutMedType() return MedType {
return PX_MED_TYPE;
}
/**
* @desc TODO
* @return TODO
* @verdict Unchanged
* @see PX_CIACLASS
*/
function f_getIutCIaClass() return CIaClass {
return PX_CIACLASS;
}
/**
* @desc TODO
* @return TODO
* @verdict Unchanged
* @see PX_CICLASS
*/
function f_getIutCIClass() return CIclass {
return PX_CICLASS;
}
} // End of group iutFunctions
} // End of module LibItsMgt_Functions