Newer
Older
garciay
committed
/**
* @author ETSI / STF422_EETS
* @version $URL:$
* $Id:$
* @desc Inter-ITS-SCU communications (ISO 24102-4) functions
*/
module LibItsIicp_Functions {
// LibCommon
import from LibCommon_Sync all;
import from LibCommon_Time {
function f_sleepIgnoreDef
};
garciay
committed
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
Link_ID
};
import from CALMmsap language "ASN.1:1997" {
type
MF_Command, MN_Command, MI_Command,
MF_Request, MN_Request, MI_Request,
MF_Request_confirm
garciay
committed
import from CALMmanagement language "ASN.1:1997" {
type
garciay
committed
};
import from CALMiitsscu language "ASN.1:1997" {
type
IIC_Request, IIC_Response,
ITS_SCUtype,
VCI_Info, VCI_info_res, VCI_update_req
garciay
committed
};
garciay
committed
import from LibItsIicp_Templates all;
import from LibItsIicp_Pics all;
import from LibItsIicp_Pixits all;
garciay
committed
type
garciay
committed
IicpResp, IicpResp,
garciay
committed
};
group iicpConfigurationFunctions {
/**
* @desc This configuration features:
* <li>Host and Router are combined (see ISO/WD 29281-2 - Figure 1 - Implementation architecture I)</li>
* <li>MGT1 IISC Port (IISC/LAN) is used if specified</li>
*/
function f_cf01Up() runs on ItsMgt {
// Map
map(self:acPort, system:acPort);
map(self:utPort, system:utPort);
garciay
committed
map(self:iicpPort, system:iicpPort);
map(self:iicpPort, system:iicpPort);
map(self:mgtMfSapPort, system:mgtMfSapPort);
garciay
committed
// Connect
f_connect4SelfOrClientSync();
// Set processing on shutdown
activate(a_cf01Down());
// Initialize the component
f_initialiseComponent("cf01Up");
// Initialze the IUT
f_initialState();
} // End of function f_cf01Up
/**
* @desc Deletes configuration cf01
*/
function f_cf01Down() runs on ItsMgt {
deactivate;
// Unmap
unmap(self:acPort, system:acPort);
unmap(self:utPort, system:utPort);
garciay
committed
unmap(self:iicpPort, system:iicpPort);
unmap(self:mgtMfSapPort, system:mgtMfSapPort);
garciay
committed
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
127
128
129
130
131
132
133
134
135
136
137
138
// Disconnect
f_disconnect4SelfOrClientSync();
} // End of f_cf01Down
/**
* @desc Behavior function for initializing component's variables and tables
* @param p_componentName Name of the component
* @param p_iicpMGM Set to true if IISC port shall be used
*/
function f_initialiseComponent(in charstring p_componentName) runs on ItsMgt {
// Initialize variables
// Set defaults
activate(a_iicpDefault());
} // end f_initialiseComponent
} // End of group iicpConfigurationFunctions
group functions {
} // End of group functions
group iicpFunctions {
/**
* @desc Triggers a request command event in the test system adaptation.
* @param p_rCmd The remote commad to trigger
* @return FncRetCode
*/
function f_iicpTriggerRequest(
in template (value) IIC_Request p_rCmd
) runs on ItsMgt return FncRetCode {
var FncRetCode v_ret := e_success;
garciay
committed
iicpPort.send(m_iicpReq(p_rCmd));
garciay
committed
return v_ret;
}
/**
* @desc Triggers a response command event in the test system adaptation.
* @param p_rCmd The remote commad to trigger
* @return FncRetCode
*/
function f_iicpTriggerResponse(
in template (value) IIC_Response p_rCmd
) runs on ItsMgt return FncRetCode {
var FncRetCode v_ret := e_success;
iicpPort.send(m_iicpResp(p_rCmd));
return v_ret;
}
garciay
committed
} // End of group iicpFunctions
group iicpAltsteps {
/**
* @desc Trap for not processed IICP message.
* @verdict Set to fail on unknown message
*/
altstep a_iicpDefault() runs on ItsMgt {
[] iicpPort.receive(mw_iicpRequest(mw_iicpRequest_any)) { // Receive any IIC-Request message
log("*** a_iicpDefault: INFO: Remote IIC-Request command service primitive received in default ***");
repeat;
}
[] iicpPort.receive(mw_iicpResponse(mw_iicpResponse_any)) { // Receive any IIC-Response message
garciay
committed
log("*** a_iicpDefault: INFO: Remote IIC-Response command service primitive received in default ***");
repeat;
}
garciay
committed
[] iicpPort.receive { // Receive unknown message
garciay
committed
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
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
log("*** a_iicpDefault: ERROR: event received on IISC port in default ***");
f_selfOrClientSyncAndVerdict("error", e_error);
}
[] tc_wait.timeout {
log("*** a_iicpDefault: ERROR: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
}
[] tc_ac.timeout {
log("*** a_iicpDefault: ERROR: Timeout while awaiting the reception of a message ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
}
[] any timer.timeout {
log("*** a_iicpDefault: INCONC: An unknown timer has expired in default ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
}
[] a_shutdown() {
f_poDefault();
log("*** a_iicpDefault: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
if(self == mtc) {
f_cf01Down();
}
stop;
}
} // End of altstep a_iicpDefault
/**
* @desc Default handling cf01 de-initialisation.
*/
altstep a_cf01Down() runs on ItsMgt {
[] a_shutdown() {
f_poDefault();
f_cf01Down();
log("*** a_cf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
stop;
}
} // End of altstep a_cf01Down()
} // End of group iicpAltsteps
group preambule {
/**
* @desc Brings the IUT into an initial state.
*/
garciay
committed
f_utInitializeIut(m_iicpInitialize);
f_sleepIgnoreDef(PX_WAIT_FOR_IUT_READY); // Wait until the IUT is in a stable situation (beaconing...)
} // End of function f_initialState
} // End of group preambule
group postambles {
/**
* @desc The default postamble.
*/
function f_poDefault() runs on ItsMgt {
// Nothing to do
} // End of function f_poDefault
} // End of group postambles
group adapterControl {
} // End of group adapterControl
group testerFunctions {
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
/**
* @desc matches a record of values if, and only if, the record of values contains at least all of the elements defined within the SuperSet, and may contain more.
* @param p_vciInfoRes Received datas to be checked
* @param p_baseTemplate Template to be matched
* @return true on matching, false otherwise
* @verdict Unchanged
* @see ETSI ES 201 873-1 V4.3.1 (2011-06)
*/
function f_superset_VCI_Info(in template VCI_info_res p_vciInfoRes, in template VCI_Info p_baseTemplate) return boolean {
var integer v_counter;
for (v_counter := 0; v_counter < sizeof(p_vciInfoRes); v_counter := v_counter + 1) {
if (match(p_vciInfoRes[v_counter], p_baseTemplate)) {
return true;
}
} // End of 'for' statement
return false;
}
/**
* @desc matches a record of values if, and only if, the record of values contains at least all of the elements defined within the SuperSet, and may contain more.
* @param p_vciInfoRes Received datas to be checked
* @param p_baseTemplate Template to be matched
* @return true on matching, false otherwise
* @verdict Unchanged
* @see ETSI ES 201 873-1 V4.3.1 (2011-06)
*/
function f_superset_VCI_Update(in template VCI_update_req p_vciUpdate, in template VCI_Info p_baseTemplate) return boolean {
var integer v_counter;
for (v_counter := 0; v_counter < sizeof(p_vciUpdate); v_counter := v_counter + 1) {
if (match(p_vciUpdate[v_counter], p_baseTemplate)) {
return true;
}
} // End of 'for' statement
return false;
}
garciay
committed
} // End of group testerFunctions
group iutFunctions {
/**
* @desc Get the active VCI link identifier
* @return The active VCI link identifier
* @see PX_ACTIVE_VCI_LINK_ID
*/
function f_getIutCiLinkId() return Link_ID {
garciay
committed
/**
* @desc Gets the Local/source ITS scuID
* @return The Local/source ITS scuID
* @see PX_LOCAL_ITS_SCU_ID
* @see ISO/WD 24102-4 - Table 2 — ITS-SCU-ID value assignment
*/
function f_getIutLocalITSscuId() return ITS_scuId {
return PX_LOCAL_ITS_SCU_ID;
}
/**
* @desc Get the type of ITS-SCU in the "Data" element
* @return The type of ITS-SCU in the "Data" element
garciay
committed
* @see PX_SRC_ITS_SCU_TYPE
*/
function f_getIutSourceITS_scuType() return ITS_SCUtype {
return PX_SRC_ITS_SCU_TYPE;
}
/**
garciay
committed
* @return The type ITS scuID
* @see PX_LOCAL_ITS_TYPE
* @see ISO/WD 24102-4 - Table 2 — ITS-SCU-ID value assignment
*/
function f_getIutLocalITSType() return ITS_SCUtype {
return PX_LOCAL_ITS_TYPE;
}
/**
* @desc Gets the Alive timer
* @return The Alive timer
* @see PX_TALIVE
*/
function f_getIutTAlive() return Talive {
return PX_TALIVE;
}
* @desc Get the MI-Command value used for remote command
* @return The MI-Command value used for remote command
* @see PX_MI_RCMD_STATECINOTIFY
*/
function f_getIutRCmdForMiCommand() return MI_Command {
return PX_MI_RCMD_STATECINOTIFY;
}
/**
* @desc Get the MI-Request value used for remote command
* @return The MI-Request value used for remote command
* @see PX_MI_RCMD_REGTYPE
*/
function f_getIutRCmdForMiRequest() return MI_Request {
return PX_MI_RCMD_REGTYPE;
}
/**
* @desc Get the MM-Command value used for remote command
* @return The MM-Command value used for remote command
* @see PX_MN_RCMD_STATECINOTIFY
*/
function f_getIutRCmdForMnCommand() return MN_Command {
return PX_MN_RCMD_STATECINOTIFY;
}
/**
* @desc Get the MM-Request value used for remote command
* @return The MN-Request value used for remote command
* @see PX_MN_RCMD_FWYSETNOTIFY
*/
function f_getIutRCmdForMnRequest() return MN_Request {
return PX_MN_RCMD_FWYSETNOTIFY;
}
/**
* @desc Get the MF-Command value used for remote command
* @return The MF-Command value used for remote command
* @see PX_MF_RCMD_STATECINOTIFY
*/
function f_getIutRCmdForMfCommand() return MF_Command {
return PX_MF_RCMD_STATECINOTIFY;
}
* @desc Get the MF-Request value used for remote command
* @return The MF-Request value used for remote command
* @see PX_MF_RCMD_LDM_REGISTER
*/
function f_getIutRCmdForMfRequest() return MF_Request {
return PX_MF_RCMD_LDM_REGISTER;
}
/**
* @desc Get the List of reference number of parameter to be monitored
* @return The List of reference number of parameter to be monitored
* @see PX_MI_IPARAMNOLIST
*/
function f_getIutIParamNoList() return IParamNoList {
return PX_MI_IPARAMNOLIST;
}
/**
* @desc Get the list of error status for each parameter to be monitored
* @return The list of error status for each parameter to be monitored
* @see PX_MI_IPARAMNOLIST
*/
function f_getIutIParamList() return IParamList {
return PX_MI_IPARAMLIST;
}
* @desc Get the list of error status for each parameter to be monitored
* @return The list of error status for each parameter to be monitored
* @see PX_MI_ERRORSLIST
*/
function f_getIutErrorsList() return ErrorsList {
return PX_MI_ERRORSLIST;
}
/**
* @desc Get a IIC-Response value
* @return The IIC-Response value
* @see PX_IIC_RESPONSE
*/
function f_getIutIicResponse() return MF_Request_confirm {
return PX_IIC_RESPONSE;
}
garciay
committed
} // End of group iutFunctions
} // End of module LibItsIicp_Functions