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
} // 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
);
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
/**
* @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
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
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
/**
* @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 }));
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
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);
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
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 }));
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
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);
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
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
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
) modifies mw_geoNwShbPacket := {
commonHeader := mw_commonHeaderWithHopLimit(
p_nextHeader,
m_shbHeaderType,
p_hopLimit
),
payload := ?
} // End of template mw_geoNwTsbPacketWithNextHeader_cam
/**
* @desc validate GeoNetworkingReq/Broadcast
* @verdict Pass on success, Fail otherwise
*/
testcase tc_GeoNet_Port_1() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
var GeoNetworkingReq v_gnReq;
var ExtendedHeader v_header;