Newer
Older
// LibCommon
import from LibCommon_BasicTypesAndValues all;
import from LibCommon_Time all;
import from LibCommon_VerdictControl all;
import from LibCommon_Sync all;
// LibIts
// import from ITS_Container language "ASN.1:1997" all;
// import from CAM_PDU_Descriptions language "ASN.1:1997"all;
// import from DENM_PDU_Descriptions language "ASN.1:1997" all;
// LibItsCommon
// import from LibItsCommon_TypesAndValues all;
// import from LibItsCommon_Functions all;
// // LibItsCam
// import from LibItsCam_TypesAndValues all;
// import from LibItsCam_TestSystem all;
// import from LibItsCam_Templates {
// template m_camReq;
// group camTemplateFunctions
// };
//
// // LibItsDenm
// import from LibItsDenm_Templates all;
// import from LibItsDenm_TestSystem all;
// LibItsSecurity
import from LibItsSecurity_TypesAndValues all;
import from LibItsSecurity_Templates all;
import from LibItsSecurity_Functions all;
import from LibItsSecurity_Pixits all;
// LibItsBtp
import from LibItsBtp_TypesAndValues all;
import from LibItsBtp_Templates all;
// LibItsGeoNetworking
import from LibItsGeoNetworking_TypesAndValues all;
import from LibItsGeoNetworking_Templates all;
import from LibItsGeoNetworking_Functions all;
import from LibItsGeoNetworking_TestSystem all;
import from LibItsGeoNetworking_Pixits all;
import from LibItsGeoNetworking_Pics all;
import from LibItsGeoNetworking_EncdecDeclarations all;
// TestCodec
import from TestCodec_TestAndSystem all;
/**
* @desc Dummy template for GN_Address
*/
template (value) GN_Address m_dummyGnAddrIut := {
typeOfAddress := e_manual,
stationType := e_roadSideUnit,
stationCountryCode := 33,
mid := 'a4fedecabeef'O
}
/**
* @desc Dummy template for long position vector
*/
template (value) LongPosVector m_dummyLongPosVectorIut := {
gnAddr := m_dummyGnAddrIut,
timestamp_ := 123456,
latitude := 4856,
longitude := 675,
pai := '1'B,
speed := 55,
heading := 9876
}
template (value) GN_Address m_dummyGnAddrNodeA := {
typeOfAddress := e_manual,
stationType := e_pedestrian,
stationCountryCode := 49,
mid := 'a4fdea5ea5ed'O
}
template (value) GN_Address m_dummyGnAddrNodeB := {
typeOfAddress := e_manual,
stationType := e_specialVehicle,
stationCountryCode := 50,
mid := 'a40102030405'O
}
template (value) GN_Address m_dummyGnAddrNodeC := {
typeOfAddress := e_manual,
stationType := e_moped,
stationCountryCode := 42,
mid := 'deadbabebeef'O
}
template (value) LongPosVector m_dummyLongPosVectorNodeA := {
gnAddr := m_dummyGnAddrNodeA,
timestamp_ := 875,
latitude := 265,
longitude := 789,
pai := '0'B,
speed := 80,
heading := 548
}
template (value) LongPosVector m_dummyLongPosVectorNodeB := {
gnAddr := m_dummyGnAddrNodeB,
timestamp_ := 4585,
latitude := 126,
longitude := 123,
pai := '0'B,
speed := 45,
heading := 125
}
template (value) LongPosVector m_dummyLongPosVectorNodeC := {
gnAddr := m_dummyGnAddrNodeC,
timestamp_ := 23644,
latitude := 23754,
longitude := 49645,
pai := '0'B,
speed := 110,
heading := 23
}
template (value) ShortPosVector m_dummyShortPosVectorNodeC := {
gnAddr := m_dummyGnAddrNodeC,
timestamp_ := 23644,
latitude := 23754,
longitude := 49645
}
template (value) Area m_dummyArea1 := {
geoAreaPosLatitude := 298376,
geoAreaPosLongitude := 32745,
distanceA := 1234,
distanceB := 5678,
angle := 9123
}
template (value) Area m_dummyArea2 := {
geoAreaPosLatitude := 873548,
geoAreaPosLongitude := 2837,
distanceA := 8765,
distanceB := 4321,
angle := 4567
}
template (value) GeoBroadcastArea m_dummyGeoBroadcastArea1 := {
geoBroadcastSubType := e_geoBroadcastRect,
geoBroadcastArea := m_dummyArea1
}
template (value) GeoBroadcastArea m_dummyGeoBroadcastArea2 := {
geoBroadcastSubType := e_geoBroadcastElip,
geoBroadcastArea := m_dummyArea2
}
template (value) GeoAnycastArea m_dummyGeoAnycastArea1 := {
geoAnycastSubType := e_geoAnycastCircle,
geoAnycastArea := m_dummyArea1
}
template (value) GeoAnycastArea m_dummyGeoAnycastArea2 := {
geoAnycastSubType := e_geoAnycastRect,
geoAnycastArea := m_dummyArea2
}
/**
* @desc Send template for GeoNetworking SHB Packet
* @param p_sourceLongPosVec Long position vector of source
*/
template (value) GnNonSecuredPacket m_geoNwShbPacket_payload(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) GnRawPayload p_payload
) modifies m_geoNwShbPacket := {
template (value) GnNonSecuredPacket m_geoNwBeaconPacket_payload(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) GnRawPayload p_payload
) modifies m_geoNwBeaconPacket := {
/**
* @desc Send template for GeoUnicast header
* @param p_sourceLongPosVec Long position vector of source
* @param p_destinationLongPosVec Long position vector of destination
* @param p_senderLongPosVec Long position vector of sender
* @param p_seqNumber Sequence number of GeoUnicast packet
*/
template (value) ExtendedHeader m_geoUnicastHeaderGeoNetworking(
in template (value) LongPosVector p_sourceLongPosVec,
in template (value) ShortPosVector p_dstPosVector,
in template (value) UInt16 p_seqNumber
) := {
seqNumber := p_seqNumber,
reserved := c_uInt8Zero,
srcPosVector := p_sourceLongPosVec,
dstPosVector := p_dstPosVector
template (value) GeoNetworkingInd m_geoNwInd_withLinkLayerDestination(
in template (value) GeoNetworkingPdu p_geoNwMsg,
in template (value) MacAddress p_llDestinationAdress := 'FFFFFFFFFFFF'O,
in template (value) Bit256 p_ssp := int2bit(0, 256),
in template (value) UInt32 p_its_aid := 0
) := {
msgIn := p_geoNwMsg,
macDestinationAddress := p_llDestinationAdress,
ssp := p_ssp,
its_aid := p_its_aid
/**
* @desc Receive template for GeoNetworking SHB Packet
* @param p_sourceLongPosVec Long position vector of source (Default: ?)
* @param p_hopLimit Maximum number of hops (Default: ?)
*/
template (present) GnNonSecuredPacket mw_geoNwShbPacket_nextHeader(
in template (present) LongPosVector p_sourceLongPosVec := ?,
in template (present) UInt8 p_hopLimit := ?,
in template (present) NextHeader p_nextHeader := ?
) modifies mw_geoNwShbPacket := {
commonHeader := mw_commonHeaderWithHopLimit(
p_nextHeader,
m_shbHeaderType,
p_hopLimit
),
extendedHeader := mw_shbHeader(p_sourceLongPosVec),
payload := ?
}
} // End of group LibItsGeoNetworking_DummyTemplates
/**
* @desc validate GeoNetworkingReq/Anycast
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNetReq_AnycastPacket() runs on TCType system TCType {
var GeoNetworkingReq v_gnReq;
var octetstring v_buffer := '01002B0A00308000000F0A0004D200008431A4FDEA5EA5ED0000036B00000109000003150050022400048D8800007FE904D2162E23A3000044454641554C545F5041594C4F4144FFFFFFFFFFFFA0A0A0A0'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
if (PX_GN_UPPER_LAYER != e_any) {
log("PX_GN_UPPER_LAYER shall be set to e_any");
stop;
}
m_geoNwPdu(
m_geoNwAnycastPacket(
m_dummyLongPosVectorNodeA,
1234,
m_dummyGeoAnycastArea1
)),
oct2int('A0A0A0A0'O)
));
TestGeoNetworkingReq(
v_gnReq,
false);
v_gnReq.msgOut.gnPacket.packet.commonHeader.plLength := 15;
TestDecodeGeoNetworkingReq(
v_gnReq,
v_buffer
);
/**
* @desc validate GeoNetworkingInd/Anycast
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNetInd_AnycastPacket() runs on TCType system TCType {
var template (value) GeoNetworkingInd v_gnInd;
var octetstring v_buffer := '01002B0A00308000000F0A0004D200008431A4FDEA5EA5ED0000036B00000109000003150050022400048D8800007FE904D2162E23A3000044454641554C545F5041594C4F4144FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000A0A0A0A0'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
if (PX_GN_UPPER_LAYER != e_any) {
log("PX_GN_UPPER_LAYER shall be set to e_any");
stop;
}
m_geoNwPdu(
m_geoNwAnycastPacket(
m_dummyLongPosVectorNodeA,
1234,
m_dummyGeoAnycastArea1
)),
-,
-,
oct2int('A0A0A0A0'O)
));
TestGeoNetworkingInd(
v_gnInd,
false);
TestDecodeGeoNetworkingInd(
mw_geoNwInd_withLinkLayerDestination(
valueof(v_gnInd.msgIn),
?
),
v_buffer
);
/**
* @desc validate GeoNetworkingReq/Broadcast
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNetReq_BroadcastPacket() runs on TCType system TCType {
var GeoNetworkingReq v_gnReq;
var octetstring v_buffer := '01002B0A00418000000F0A000D800000A832A40102030405000011E90000007E0000007B002D007D00048D8800007FE904D2162E23A3000044454641554C545F5041594C4F4144FFFFFFFFFFFFA0A0A0A0'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
if (PX_GN_UPPER_LAYER != e_any) {
log("PX_GN_UPPER_LAYER shall be set to e_any");
stop;
}
v_gnReq := valueof(m_geoNwReq_linkLayerBroadcast(
m_geoNwPdu(
m_geoNwBroadcastPacket(
m_dummyLongPosVectorNodeB,
3456,
m_dummyGeoBroadcastArea1
)),
oct2int('A0A0A0A0'O)
));
TestGeoNetworkingReq(
v_gnReq,
false);
v_gnReq.msgOut.gnPacket.packet.commonHeader.plLength := 15;
TestDecodeGeoNetworkingReq(
v_gnReq,
v_buffer
);
/**
* @desc validate GeoNetworkingInd/Broadcast
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNetInd_BroadcastPacket() runs on TCType system TCType {
var GeoNetworkingInd v_gnInd;
var octetstring v_buffer := '01002B0A00418000000F0A000D800000A832A40102030405000011E90000007E0000007B002D007D00048D8800007FE904D2162E23A3000044454641554C545F5041594C4F4144FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000A0A0A0A0'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
if (PX_GN_UPPER_LAYER != e_any) {
log("PX_GN_UPPER_LAYER shall be set to e_any");
stop;
}
m_geoNwPdu(
m_geoNwBroadcastPacket(
m_dummyLongPosVectorNodeB,
3456,
m_dummyGeoBroadcastArea1
)),
-,
-,
oct2int('A0A0A0A0'O)
));
TestGeoNetworkingInd(
v_gnInd,
false);
TestDecodeGeoNetworkingInd(
v_gnInd,
v_buffer
);
/**
* @desc validate GeoNetworkingInd/Broadcast SHB
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNetInd_ShbPacket() runs on TCType system TCType {
var GeoNetworkingInd v_gnInd;
var octetstring v_buffer := '01002B0A0050800000300A00A832A40102030405000011E90000007E0000007B002D007D0000000007D1000001020000273F7C730059F34F8C4E2DB0661FFFFFFC2231129E48927FC1F48082788A800F53080FFFC4014004FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000A0A0A0A0'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
if (PX_GN_UPPER_LAYER != e_any) {
log("PX_GN_UPPER_LAYER shall be set to e_any");
stop;
}
v_gnInd := valueof(m_geoNwInd_withLinkLayerDestination(
m_geoNwPdu(
m_geoNwShbPacket_payload(
m_dummyLongPosVectorNodeB,
'07D1000001020000273F7C730059F34F8C4E2DB0661FFFFFFC2231129E48927FC1F48082788A800F53080FFFC4014004'O
)),
-,
-,
oct2int('A0A0A0A0'O)
));
TestGeoNetworkingInd(
v_gnInd,
false);
v_gnInd.msgIn.gnPacket.packet.commonHeader.plLength := 48;
TestDecodeGeoNetworkingInd(
v_gnInd,
v_buffer
);
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
/**
* @desc validate GeoNetworkingInd/Broadcast SHB
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNetInd_ShbPacket_1() runs on TCType system TCType {
var template GeoNetworkingInd v_gnInd;
var octetstring v_buffer := '01004c0120500280013c0100140070b3d5791b487ea4bdac19f58e2c0623a93f03e909270000000007d1000001020000272fbdac4059f34ee58e2daf67e00000000033669e40927001f48083109a8003a8ff3fffb000000fdfbc47ebf18ce0004f0095c0382c6700063814d607f0633800dbc0a4703f8b19c006de052481fc18ce0036f029a40fe0c67001b78149207e0633800dbc06a30289b19c0045e0225819418ce0027f01a8c1300c670024380d8a09a263380225c00410031b19c0022dfdfa7f7658ce0022efde23f5d6c67000277ef51faeb63380013bf788fd7db19c0009dfbc47ebad8ce0004efde1bf5f8c67000277ef11faeb63380013bf7a8fd7db19c0009dfbc47ebb18ce0004efde23f5d6c67000277ef0dfafb63380013bf788fd75b19c0009dfbd47ebf18ce0004efde23f5d6c67000277ef11faeb63380013bf786fd7e319c0009dfbc47ebad8ce0004efdea3f5f6c67000277ef11faeb6338001305d35a164FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000A0A0A0A0'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
if (PX_GN_UPPER_LAYER != e_btpB) {
log("PX_GN_UPPER_LAYER shall be set to e_btpB");
stop;
}
v_gnInd := mw_geoNwInd_withLinkLayerDestination(
mw_geoNwPdu(
mw_geoNwShbPacket
),
c_llBroadcast
);
TestDecodeGeoNetworkingInd(
v_gnInd,
v_buffer
);
}
/**
* @desc validate GeoNetworkingReq/Unicast
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNetReq_UnicastPacket() runs on TCType system TCType {
var GeoNetworkingReq v_gnReq;
var octetstring v_buffer := '01002B0A00208000000F0A0010E100008C2ADEADBABEBEEF00005C5C00005CCA0000C1ED006E00178C2ADEADBABEBEEF00005C5C00005CCA0000C1ED44454641554C545F5041594C4F4144FFFFFFFFFFFFA0A0A0A0'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
if (PX_GN_UPPER_LAYER != e_any) {
log("PX_GN_UPPER_LAYER shall be set to e_any");
stop;
}
m_geoNwPdu(
m_geoNwUnicastPacket(
m_dummyLongPosVectorNodeC,
m_dummyShortPosVectorNodeC,
4321 )),
oct2int('A0A0A0A0'O)
));
TestGeoNetworkingReq(
v_gnReq,
false);
TestDecodeGeoNetworkingReq(
v_gnReq,
v_buffer
);
/**
* @desc validate GeoNetworkingInd/Unicast
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNetInd_UnicastPacket() runs on TCType system TCType {
var GeoNetworkingInd v_gnInd;
var octetstring v_buffer := '01002B0A00208000000F0A0010E100008C2ADEADBABEBEEF00005C5C00005CCA0000C1ED006E00178C2ADEADBABEBEEF00005C5C00005CCA0000C1ED44454641554C545F5041594C4F4144FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000A0A0A0A0'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
if (PX_GN_UPPER_LAYER != e_any) {
log("PX_GN_UPPER_LAYER shall be set to e_any");
stop;
}
m_geoNwPdu(
m_geoNwUnicastPacket(
m_dummyLongPosVectorNodeC,
m_dummyShortPosVectorNodeC,
4321 )),
-,
-,
oct2int('A0A0A0A0'O)
));
TestGeoNetworkingInd(
v_gnInd,
false);
TestDecodeGeoNetworkingInd(
v_gnInd,
v_buffer
);
/**
* @desc validate GeoNetworkingReq/Beacon
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNetReq_BeaconPacket() runs on TCType system TCType {
var GeoNetworkingReq v_gnReq;
var octetstring v_buffer := '01002B0A0010800000040100A832A40102030405000011E90000007E0000007B002D007D464B1442FFFFFFFFFFFF00000000'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
if (PX_GN_UPPER_LAYER != e_any) {
log("PX_GN_UPPER_LAYER shall be set to e_any");
stop;
}
m_geoNwPdu(
m_geoNwBeaconPacket_payload(
m_dummyLongPosVectorNodeB,
'464b1442'O
))));
TestGeoNetworkingReq(
v_gnReq,
false);
v_gnReq.msgOut.gnPacket.packet.commonHeader.plLength := 4;
TestDecodeGeoNetworkingReq(
v_gnReq,
v_buffer
);
/**
* @desc validate GeoNetworkingInd/Beacon
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNetInd_BeaconPacket() runs on TCType system TCType {
var GeoNetworkingInd v_gnInd;
var octetstring v_buffer := '01002B0A0010800000040100A832A40102030405000011E90000007E0000007B002D007D464B1442FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000A0A0A0A0'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
if (PX_GN_UPPER_LAYER != e_any) {
log("PX_GN_UPPER_LAYER shall be set to e_any");
stop;
}
m_geoNwPdu(
m_geoNwBeaconPacket_payload(
m_dummyLongPosVectorNodeB,
'464b1442'O
)),
-,
-,
oct2int('A0A0A0A0'O)
));
TestGeoNetworkingInd(
v_gnInd,
false);
TestDecodeGeoNetworkingInd(
v_gnInd,
v_buffer
);
}
/**
* @desc validate GeoNetworkingReq/LsRequest
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNetReq_LsRequestPacket() runs on TCType system TCType {
var GeoNetworkingReq v_gnReq;
var octetstring v_buffer := '01002B0A0060800000000A0030390000BC21A4FEDECABEEF0001E240000012F8000002A380372694BC21A4FEDECABEEFFFFFFFFFFFFF00000000'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
if (PX_GN_UPPER_LAYER != e_any) {
log("PX_GN_UPPER_LAYER shall be set to e_any");
stop;
}
m_geoNwReq_linkLayerBroadcast(
m_geoNwPdu(
m_geoNwLsRequestPacket(
m_dummyLongPosVectorIut,
12345,
m_dummyGnAddrIut
))));
TestGeoNetworkingReq(
v_gnReq,
false);
v_gnReq.msgOut.gnPacket.packet.payload := omit;
TestDecodeGeoNetworkingReq(
v_gnReq,
v_buffer
);
}
/**
* @desc validate GeoNetworkingReq/LsReply
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNetReq_LsReplyPacket() runs on TCType system TCType {
var GeoNetworkingReq v_gnReq;
var octetstring v_buffer := '01002B0A0061800000000A0030390000BC21A4FEDECABEEF0001E240000012F8000002A3803726948431A4FDEA5EA5ED0000036B0000010900000315FFFFFFFFFFFF00000000'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
if (PX_GN_UPPER_LAYER != e_any) {
log("PX_GN_UPPER_LAYER shall be set to e_any");
stop;
}
m_geoNwReq_linkLayerBroadcast(
m_geoNwPdu(
m_geoNwLsReplyPacket(
m_dummyLongPosVectorIut,
f_longPosVector2ShortPosVector(valueof(m_dummyLongPosVectorNodeA)),
12345 ))));
TestGeoNetworkingReq(
v_gnReq,
false);
v_gnReq.msgOut.gnPacket.packet.payload := omit;
TestDecodeGeoNetworkingReq(
v_gnReq,
v_buffer
);
group testGeoNetAcTester {
} // End of group testGeoNetAcTester
group testGeoNetUpperTester {
/**
* @desc Validate template GeoNetworking/UtGnInitialize
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNet_UtGnInitialize() runs on TCType system TCType {
var bitstring v_encMsg;
var UtGnInitialize v_decMsg;
var integer v_res := 0;
var template (value) UtGnInitialize m_utGnInitialize := { '0809AABBCCDDEEFF'O };
var bitstring v_expEncMsg := oct2bit('000809AABBCCDDEEFF'O);
// Encode template
log("Encode template ", valueof(m_utGnInitialize));
log("Encoded message: ", bit2oct(v_encMsg));
// Check result
if (not isbound(v_encMsg)) {
setverdict(fail, "Encoding failed!");
stop;
}
if (not match(v_encMsg, v_expEncMsg)) {
log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
setverdict(fail, "Encoding failed, not the expected result!");
stop;
}
setverdict(pass, "Encoding passed.");
} // End of tc_GeoNet_UtGnInitialize
/**
* @desc Validate template GeoNetworking/UtGnChangePosition
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNet_UtGnChangePosition() runs on TCType system TCType {
var bitstring v_encMsg;
var UtGnInitialize v_decMsg;
var integer v_res := 0;
var template (value) UtGnChangePosition m_utGnChangePosition := { 1234, 5678, 9876 };
var bitstring v_expEncMsg := oct2bit('02000004D20000162E00002694'O);
// Encode template
log("Encode template ", valueof(m_utGnChangePosition));
v_encMsg := encvalue(m_utGnChangePosition);
log("Encoded message: ", bit2oct(v_encMsg));
// Check result
if (not isbound(v_encMsg)) {
setverdict(fail, "Encoding failed!");
stop;
}
if (not match(v_encMsg, v_expEncMsg)) {
log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
setverdict(fail, "Encoding failed, not the expected result!");
stop;
}
setverdict(pass, "Encoding passed.");
} // End of tc_GeoNet_UtGnChangePosition
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
/**
* @desc Validate template GeoNetworking/UtGnTrigger/GeoUnicast
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNet_UtGnTrigger_GeoUnicast_1() runs on TCType system TCType {
var bitstring v_encMsg;
var UtGnInitialize v_decMsg;
var integer v_res := 0;
var template (value) UtGnTrigger m_utGnTrigger := m_generateGeoUnicastMessage(f_getTsGnLocalAddress(c_compNodeB));
var bitstring v_expEncMsg := oct2bit('50940000000000000B2710800000'O);
// Encode template
log("Encode template ", valueof(m_utGnTrigger));
v_encMsg := encvalue(m_utGnTrigger);
log("Encoded message: ", bit2oct(v_encMsg));
// Check result
if (not isbound(v_encMsg)) {
setverdict(fail, "Encoding failed!");
stop;
}
if (not match(v_encMsg, v_expEncMsg)) {
log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
setverdict(fail, "Encoding failed, not the expected result!");
stop;
}
setverdict(pass, "Encoding passed.");
} // End of tc_GeoNet_UtGnTrigger_GeoUnicast_1
/**
* @desc Validate template GeoNetworking/UtGnTrigger/GeoUnicast
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNet_UtGnTrigger_GeoUnicast_2() runs on TCType system TCType {
var bitstring v_encMsg;
var UtGnInitialize v_decMsg;
var integer v_res := 0;
var template (value) UtGnTrigger m_utGnTrigger := m_generateGeoUnicastMessageWithPayload(f_getTsGnLocalAddress(c_compNodeB), 'CAFEDECA'O);
var bitstring v_expEncMsg := oct2bit('50940000000000000B2710800004CAFEDECA'O);
// Encode template
log("Encode template ", valueof(m_utGnTrigger));
v_encMsg := encvalue(m_utGnTrigger);
log("Encoded message: ", bit2oct(v_encMsg));
// Check result
if (not isbound(v_encMsg)) {
setverdict(fail, "Encoding failed!");
stop;
}
if (not match(v_encMsg, v_expEncMsg)) {
log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
setverdict(fail, "Encoding failed, not the expected result!");
stop;
}
setverdict(pass, "Encoding passed.");
} // End of tc_GeoNet_UtGnTrigger_GeoUnicast_2
/**
* @desc Validate template GeoNetworking/UtGnTrigger/GeoBroadcast
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNet_UtGnTrigger_GeoBroadcast_1() runs on TCType system TCType {
var bitstring v_encMsg;
var UtGnInitialize v_decMsg;
var integer v_res := 0;
var template (value) UtGnTrigger m_utGnTrigger := m_generateGeoBroadcastMessage(valueof(GeoArea: {e_geoRect, m_dummyArea1 }));
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
var bitstring v_expEncMsg := oct2bit('510127108000000000048D8800007FE904D2162E23A30000'O);
// Encode template
log("Encode template ", valueof(m_utGnTrigger));
v_encMsg := encvalue(m_utGnTrigger);
log("Encoded message: ", bit2oct(v_encMsg));
// Check result
if (not isbound(v_encMsg)) {
setverdict(fail, "Encoding failed!");
stop;
}
if (not match(v_encMsg, v_expEncMsg)) {
log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
setverdict(fail, "Encoding failed, not the expected result!");
stop;
}
setverdict(pass, "Encoding passed.");
} // End of tc_GeoNet_UtGnTrigger_GeoBroadcast_1
/**
* @desc Validate template GeoNetworking/UtGnTrigger/GeoBroadcast
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNet_UtGnTrigger_GeoBroadcast_2() runs on TCType system TCType {
var bitstring v_encMsg;
var UtGnInitialize v_decMsg;
var integer v_res := 0;
var template (value) UtGnTrigger m_utGnTrigger := m_generateGeoBroadcastMessageWithPayload(valueof(GeoArea: {e_geoElip, m_dummyArea2 }), 'CAFEDECA'O);
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
var bitstring v_expEncMsg := oct2bit('5102271080000000000D544C00000B15223D10E111D70004CAFEDECA'O);
// Encode template
log("Encode template ", valueof(m_utGnTrigger));
v_encMsg := encvalue(m_utGnTrigger);
log("Encoded message: ", bit2oct(v_encMsg));
// Check result
if (not isbound(v_encMsg)) {
setverdict(fail, "Encoding failed!");
stop;
}
if (not match(v_encMsg, v_expEncMsg)) {
log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
setverdict(fail, "Encoding failed, not the expected result!");
stop;
}
setverdict(pass, "Encoding passed.");
} // End of tc_GeoNet_UtGnTrigger_GeoBroadcast_2
/**
* @desc Validate template GeoNetworking/UtGnTrigger/GeoAnycast
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNet_UtGnTrigger_GeoAnycast_1() runs on TCType system TCType {
var bitstring v_encMsg;
var UtGnInitialize v_decMsg;
var integer v_res := 0;
var template (value) UtGnTrigger m_utGnTrigger := m_generateGeoAnycastMessage(valueof(GeoArea: {e_geoRect, m_dummyArea1 }));
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
var bitstring v_expEncMsg := oct2bit('520127108000000000048D8800007FE904D2162E23A30000'O);
// Encode template
log("Encode template ", valueof(m_utGnTrigger));
v_encMsg := encvalue(m_utGnTrigger);
log("Encoded message: ", bit2oct(v_encMsg));
// Check result
if (not isbound(v_encMsg)) {
setverdict(fail, "Encoding failed!");
stop;
}
if (not match(v_encMsg, v_expEncMsg)) {
log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
setverdict(fail, "Encoding failed, not the expected result!");
stop;
}
setverdict(pass, "Encoding passed.");
} // End of tc_GeoNet_UtGnTrigger_GeoAnycast_1
/**
* @desc Validate template GeoNetworking/UtGnTrigger/GeoAnycast
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNet_UtGnTrigger_GeoAnycast_2() runs on TCType system TCType {
var bitstring v_encMsg;
var UtGnInitialize v_decMsg;
var integer v_res := 0;
var template (value) UtGnTrigger m_utGnTrigger := m_generateGeoAnycastMessageWithPayload(valueof(GeoArea: {e_geoElip, m_dummyArea2 }), 'CAFEDECA'O);
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
var bitstring v_expEncMsg := oct2bit('5202271080000000000D544C00000B15223D10E111D70004CAFEDECA'O);
// Encode template
log("Encode template ", valueof(m_utGnTrigger));
v_encMsg := encvalue(m_utGnTrigger);
log("Encoded message: ", bit2oct(v_encMsg));
// Check result
if (not isbound(v_encMsg)) {
setverdict(fail, "Encoding failed!");
stop;
}
if (not match(v_encMsg, v_expEncMsg)) {
log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
setverdict(fail, "Encoding failed, not the expected result!");
stop;
}
setverdict(pass, "Encoding passed.");
} // End of tc_GeoNet_UtGnTrigger_GeoAnycast_2
/**
* @desc Validate template GeoNetworking/UtGnTrigger/Shb
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNet_UtGnTrigger_Shb_1() runs on TCType system TCType {
var bitstring v_encMsg;
var UtGnInitialize v_decMsg;
var integer v_res := 0;
var template (value) UtGnTrigger m_utGnTrigger := m_generateShbMessage;
var bitstring v_expEncMsg := oct2bit('53800000'O);
// Encode template
log("Encode template ", valueof(m_utGnTrigger));
v_encMsg := encvalue(m_utGnTrigger);
log("Encoded message: ", bit2oct(v_encMsg));
// Check result
if (not isbound(v_encMsg)) {
setverdict(fail, "Encoding failed!");
stop;
}
if (not match(v_encMsg, v_expEncMsg)) {
log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
setverdict(fail, "Encoding failed, not the expected result!");
stop;
}
setverdict(pass, "Encoding passed.");
} // End of tc_GeoNet_UtGnTrigger_Shb_1
/**
* @desc Validate template GeoNetworking/UtGnTrigger/Shb
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNet_UtGnTrigger_Shb_2() runs on TCType system TCType {
var bitstring v_encMsg;
var UtGnInitialize v_decMsg;
var integer v_res := 0;
var template (value) UtGnTrigger m_utGnTrigger := m_generateShbMessageWithPayload('CAFEDECA'O);
var bitstring v_expEncMsg := oct2bit('53800004CAFEDECA'O);
// Encode template
log("Encode template ", valueof(m_utGnTrigger));
v_encMsg := encvalue(m_utGnTrigger);
log("Encoded message: ", bit2oct(v_encMsg));
// Check result
if (not isbound(v_encMsg)) {
setverdict(fail, "Encoding failed!");
stop;
}
if (not match(v_encMsg, v_expEncMsg)) {
log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
setverdict(fail, "Encoding failed, not the expected result!");
stop;
}
setverdict(pass, "Encoding passed.");
} // End of tc_GeoNet_UtGnTrigger_Shb_2
/**
* @desc Validate template GeoNetworking/UtGnTrigger/Tsb
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNet_UtGnTrigger_Tsb_1() runs on TCType system TCType {
var bitstring v_encMsg;
var UtGnInitialize v_decMsg;
var integer v_res := 0;
var template (value) UtGnTrigger m_utGnTrigger := m_generateTsbMessage;
var bitstring v_expEncMsg := oct2bit('540A2710800000'O);
// Encode template
log("Encode template ", valueof(m_utGnTrigger));
v_encMsg := encvalue(m_utGnTrigger);
log("Encoded message: ", bit2oct(v_encMsg));
// Check result
if (not isbound(v_encMsg)) {
setverdict(fail, "Encoding failed!");
stop;
}
if (not match(v_encMsg, v_expEncMsg)) {
log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
setverdict(fail, "Encoding failed, not the expected result!");
stop;
}
setverdict(pass, "Encoding passed.");
} // End of tc_GeoNet_UtGnTrigger_Tsb_1
/**
* @desc Validate template GeoNetworking/UtGnTrigger/Tsb
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNet_UtGnTrigger_Tsb_2() runs on TCType system TCType {
var bitstring v_encMsg;
var UtGnInitialize v_decMsg;
var integer v_res := 0;
var template (value) UtGnTrigger m_utGnTrigger := m_generateTsbMessageWithLifetime(12345);
var bitstring v_expEncMsg := oct2bit('540A3039800004CAFEDECA'O);
// Encode template
m_utGnTrigger.tsb.payload := 'CAFEDECA'O;
log("Encode template ", valueof(m_utGnTrigger));
v_encMsg := encvalue(m_utGnTrigger);
log("Encoded message: ", bit2oct(v_encMsg));
// Check result
if (not isbound(v_encMsg)) {
setverdict(fail, "Encoding failed!");
stop;
}
if (not match(v_encMsg, v_expEncMsg)) {
log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
setverdict(fail, "Encoding failed, not the expected result!");
stop;
}
setverdict(pass, "Encoding passed.");
} // End of tc_GeoNet_UtGnTrigger_Tsb_2
/**
* @desc Receive template for GeoNetworking DENM Packet
* @param p_destinationShortPosVec Short position vector of destination
* @param p_seqNumber Sequence number of GeoUnicast packet
* @param p_nextHeader Id of next header
*/
template (present) GnNonSecuredPacket mw_geoNwTsbPacketWithNextHeader_cam(
in template (present) LongPosVector p_sourceLongPosVec := ?,
in template (present) UInt8 p_hopLimit := ?,
in template (value) NextHeader p_nextHeader