Newer
Older
* @author ETSI / STF405
* @version $URL$
* $Id$
* @desc Module containing functions for GeoNetworking
// Libcommon
import from LibCommon_BasicTypesAndValues all;
import from LibCommon_VerdictControl {type FncRetCode;}
import from LibCommon_Sync {altstep all};
// LibIts
import from LibIts_TestSystem all;
import from LibIts_Interface all;
* @desc Create Facility component and connects GeoNetworking port
* @remark Only used when ItsFa is a PTC
* @param p_ptcDenm returned Facility component variable
function f_ptcGeoNetworkingUp(out ItsNt p_ptcGeoNetworking) {
p_ptcGeoNetworking := ItsNt.create("GeoNetworking Tester");
// map ports
map(p_ptcGeoNetworking:geoNetworkingPort, system:geoNetworkingPort);
* @desc Wait for component to finish and unmap GeoNetworking ports
* @remark Only used when ItsFa is a PTC
* @param p_camPtc Facility component variable
function f_ptcGeoNetworkingDown(in ItsNt p_ptcGeoNetworking) runs on ItsMtc {
log("*** f_ptcGeoNetworkingDown: ERROR: Timeout while waiting for component ***");
setverdict(inconc);
}
}
unmap(p_ptcGeoNetworking:geoNetworkingPort);
group geoConfigurationFunctions {
/**
* @desc This configuration features:
* - one ITS node (IUT)
* - two ITS nodes (nodeA, nodeB)
* - Area1 which only includes NodeB and IUT
* - Area2 which only includes NodeB
* NodeB being close to the area center
*/
function f_cf01Up() runs on ItsNt {
// Variables
var PositionTable v_positionTable := {};
// Map
map(self:geoNetworkingPort, system:geoNetworkingPort);
// Position table
f_addPosition(v_positionTable, c_compIut, f_getIutLongPosVector());
f_addPosition(v_positionTable, c_compNodeA, f_computePosition());
f_addPosition(v_positionTable, c_compNodeB, f_computePosition());
f_initialiseComponent(v_positionTable, c_compNodeB);
} // end f_cf01Up
*/
function f_cf01Down() runs on ItsNt {
// Map
unmap(self:geoNetworkingPort, system:geoNetworkingPort);
} // end f_cf01Down
/**
* @desc This configuration features:
* - one ITS node (IUT)
* - one ITS node (NodeA)
* - one ITS node (NodeB)
* - Area1 which only includes NodeA, NodeB and IUT
* - Area2 which only includes NodeA and NodeB
* NodeA being close to the area center
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
*/
function f_cf02Up(out ItsNt p_nodeA, out ItsNt p_nodeB) runs on ItsMtc {
// Variables
var PositionTable v_positionTable := {};
// Create
p_nodeA := ItsNt.create(c_compNodeA) alive;
p_nodeB := ItsNt.create(c_compNodeB) alive;
// Map
map(p_nodeA:geoNetworkingPort, system:geoNetworkingPort);
map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
// Connect
connect(p_nodeA:syncPort, self:syncPort);
connect(p_nodeB:syncPort, self:syncPort);
// Position table
f_addPosition(v_positionTable, c_compIut, f_getIutLongPosVector());
f_addPosition(v_positionTable, c_compNodeA, f_computePosition());
f_addPosition(v_positionTable, c_compNodeB, f_computePosition());
p_nodeA.start(f_initialiseComponent(v_positionTable, c_compNodeA));
p_nodeB.start(f_initialiseComponent(v_positionTable, c_compNodeB));
p_nodeA.done;
p_nodeB.done;
} // end f_cf02Up
/**
* @desc Deletes configuration cf02
* @param p_nodeA
* @param p_nodeB
*/
function f_cf02Down(in ItsNt p_nodeA, in ItsNt p_nodeB) runs on ItsMtc {
// Map
unmap(p_nodeA:geoNetworkingPort, system:geoNetworkingPort);
unmap(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
// Connect
disconnect(p_nodeA:syncPort, self:syncPort);
disconnect(p_nodeB:syncPort, self:syncPort);
} // end f_cf02Down
/**
* @desc This configuration features:
* - one ITS node (IUT)
* - one ITS node (NodeA)
* - one ITS node in direction of NodeA (NodeB)
* - one ITS node not in direction of NodeA (NodeC)
* - Area1 which only includes NodeB and IUT
* - Area2 which only includes NodeB
* NodeB being close to the area center
function f_cf03Up(out ItsNt p_nodeB, out ItsNt p_nodeC) runs on ItsMtc {
163
164
165
166
167
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
// Variables
var PositionTable v_positionTable := {};
// Create
p_nodeB := ItsNt.create(c_compNodeB) alive;
p_nodeC := ItsNt.create(c_compNodeC) alive;
// Map
map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
map(p_nodeC:geoNetworkingPort, system:geoNetworkingPort);
// Connect
connect(p_nodeB:syncPort, self:syncPort);
connect(p_nodeC:syncPort, self:syncPort);
// Position table
f_addPosition(v_positionTable, c_compIut, f_getIutLongPosVector());
f_addPosition(v_positionTable, c_compNodeA, f_computePosition());
f_addPosition(v_positionTable, c_compNodeB, f_computePosition());
f_addPosition(v_positionTable, c_compNodeC, f_computePosition());
p_nodeB.start(f_initialiseComponent(v_positionTable, c_compNodeB));
p_nodeC.start(f_initialiseComponent(v_positionTable, c_compNodeC));
p_nodeB.done;
p_nodeC.done;
} // end f_cf03Up
/**
* @desc Deletes configuration cf03
* @param p_nodeA
* @param p_nodeB
* @param p_nodeC
*/
function f_cf03Down(in ItsNt p_nodeB, in ItsNt p_nodeC) runs on ItsMtc {
Loading full blame...