Newer
Older
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
/**
* @desc Gets the value of the lifetime in seconds.
* @return
*/
function f_getLifetimeValue(in Lifetime p_lifetime) runs on ItsNt return float {
var float v_lifetime := 0.0;
select (p_lifetime.ltBase) {
case (e_50ms) {
v_lifetime := int2float(p_lifetime.multiplier) * 0.5;
}
case (e_1s) {
v_lifetime := int2float(p_lifetime.multiplier) * 1.0;
}
case (e_10s) {
v_lifetime := int2float(p_lifetime.multiplier) * 10.0;
}
case (e_100s) {
v_lifetime := int2float(p_lifetime.multiplier) * 100.0;
}
}
return v_lifetime;
}
} // end commonFunctions
* @desc Sends a GeoNetworking message and in case of an included sequence number in the message the
* local sequence number will be increased by one.
* @param p_geoNetReq The message to sent.
*/
function f_sendGeoNetMessage(in template (value) GeoNetworkingReq p_geoNetReq) runs on ItsNt {
geoNetworkingPort.send(p_geoNetReq);
if (not (ischosen(p_geoNetReq.msgOut.header.shbHeader) or ischosen(p_geoNetReq.msgOut.header.beaconHeader))) {
f_setLocalSequenceNumber();
}
/**
* @desc Sets the value of the sequence number for the next event.
* @return
*/
function f_setLocalSequenceNumber() runs on ItsNt {
}
} // end testerFunctions
group iutFunctions {
function f_getIutGnLocalAddress() return GN_Address {
* @desc Gets the LS retransmission timer.. Valid for NetRepInterval = default (cong. ctrl).
* @return
*/
function f_getLSRetransmitTimer() return float {
var float v_itsGnLocationServiceRetransmitTimer := int2float(PICS_GN_LOCATION_SERVICE_RETRANSMIT_TIMER/1000);
return v_itsGnLocationServiceRetransmitTimer;
}
* @desc Gets the LS retransmission timer for NetRepInterval = medium (cong. ctrl).
* @return
*/
function f_getLSRetransmitTimerMedium() return float {
var float v_itsGnLocationServiceRetransmitTimerMedium := int2float(PIXIT_GN_LOCATION_SERVICE_TIMER_MEDIUM/1000);
* @desc Gets the LS retransmission timer for NetRepInterval = maximum (cong. ctrl).
* @return
*/
function f_getLSRetransmitTimerMaximum() return float {
var float v_itsGnLocationServiceRetransmitTimerMaximum := int2float(PIXIT_GN_LOCATION_SERVICE_TIMER_MAXIMUM/1000);
/**
* @desc Gets the App retransmission timer. Valid for AppRepInterval = default (cong. ctrl).
* @return
*/
function f_getAppRetransmitTimer() return float {
var float v_itsGnLocationApplicationRetransmitTimer := int2float(PX_GN_APPLICATION_RETRANSMIT_TIMER/1000);
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
}
/**
* @desc Gets the App retransmission timer for AppRepInterval = medium (cong. ctrl).
* @return
*/
function f_getAppRetransmitTimerMedium() return float {
var float v_itsGnLocationServiceRetransmitTimer := 2.0;
//TODO get the value from PIXIT or MIB
return v_itsGnLocationServiceRetransmitTimer;
}
/**
* @desc Gets the App retransmission timer for AppRepInterval = maximum (cong. ctrl).
* @return
*/
function f_getAppRetransmitTimerMaximum() return float {
var float v_itsGnLocationServiceRetransmitTimer := 3.0;
//TODO get the value from PIXIT or MIB
return v_itsGnLocationServiceRetransmitTimer;
}
/**
* @desc Gets the LS maximum retransmission number.
* @return
*/
function f_getLSMaxRetrans() return integer {
var integer v_itsGnLocationServiceMaxRetrans := PICS_GN_LOCATION_SERVICE_MAX_RETRANS;
return v_itsGnLocationServiceMaxRetrans;
}
/**
* @desc Gets the Application maximum retransmission number.
* @return
*/
function f_getAppMaxRetrans() return integer {
var integer v_itsGnLocationServiceMaxRetrans := 10;
//TODO get the value from PIXIT or MIB
return v_itsGnLocationServiceMaxRetrans;
}
/**
* @desc Gets the Location Service packet buffer size.
* @return
*/
function f_getLSPacketBufferSize() return integer {
var integer v_itsGnLocationServicePacketBufferSize := PICS_GN_LOCATION_SERVICE_PACKET_BUFFER_SIZE;
return v_itsGnLocationServicePacketBufferSize;
} // end f_getLSPacketBufferSize
/**
* @desc Gets the UC forwarding packet buffer size.
* @return
*/
function f_getUcForwardingPacketBufferSize() return integer {
var integer v_itsGnUcForwardingPacketBufferSize := PICS_GN_UC_FORWARDING_PACKET_BUFFER_SIZE;
return v_itsGnUcForwardingPacketBufferSize;
} // end f_getUcForwardingPacketBufferSize
/**
* @desc Gets the BC forwarding packet buffer size.
* @return
*/
function f_getBcForwardingPacketBufferSize() return integer {
var integer v_itsGnBcForwardingPacketBufferSize := PICS_GN_BC_FORWARDING_PACKET_BUFFER_SIZE;
return v_itsGnBcForwardingPacketBufferSize;
} // end f_getBcForwardingPacketBufferSize
/**
* @desc Gets the upper limit of the maximum lifetime.
* @return
*/
function f_getMaxPacketLifeTime() return float {
var float v_itsGnMaxPacketLifetime := int2float(PICS_GN_MAX_PACKET_LIFETIME);
return v_itsGnMaxPacketLifetime;
}
/**
* @desc Gets delta for timers.
* @return
*/
function f_getDeltaTimer() return float {
return v_deltaTimer;
}
/**
* @desc Gets the beacon service retransmit timer.
* @return
*/
function f_getBSRetransmitTimer() return float {
var float v_itsGnBeaconServiceRetransmitTimer;
v_itsGnBeaconServiceRetransmitTimer := int2float(
(PICS_GN_BEACON_SERVICE_TIMER+float2int((f_getBSMaxJitter() - 0.0 +1.0)*rnd()) + 0)/1000);
return v_itsGnBeaconServiceRetransmitTimer;
}
/**
* @desc Gets the beacon service retransmit timer for NetBeaconInterval = medium (cong. ctrl).
* @return
*/
function f_getBSRetransmitTimerMedium() return float {
var float v_itsGnBeaconServiceRetransmitTimerMedium; // timer value increased (medium)
v_itsGnBeaconServiceRetransmitTimerMedium := int2float(
(PX_GN_BEACON_SERVICE_TIMER_MEDIUM+float2int((f_getBSMaxJitter() - 0.0 +1.0)*rnd()) + 0)/1000);
}
/**
* @desc Gets the beacon service retransmit timer for NetBeaconInterval = maximum (cong. ctrl).
* @return
*/
function f_getBSRetransmitTimerMaximum() return float {
var float v_itsGnBeaconServiceRetransmitTimerMaximum; // timer value increased (maximum)
v_itsGnBeaconServiceRetransmitTimerMaximum := int2float(
(PX_GN_BEACON_SERVICE_TIMER_MAXIMUM+float2int((f_getBSMaxJitter() - 0.0 +1.0)*rnd()) + 0)/1000);
/**
* @desc Gets the maximum beacon service jitter.
* @return
*/
function f_getBSMaxJitter() return float {
var float v_itsGnBeaconServiceMaxJitter := (f_getMaxPacketLifeTime()*1000.0)/4.0;
return v_itsGnBeaconServiceMaxJitter;
}
/**
* @desc Gets the Lifetime of a Location Table Entry.
* @return
*/
function f_getLifetimeLocTE() return float {
var float v_itsGnLifetimeLocTE := int2float(PICS_GN_LIFETIME_LOC_TE);
return v_itsGnLifetimeLocTE;
} // end f_getLifetimeLocTE
/**
* @desc Set the number of neighbour in the Location Table.
* @return
*/
function f_setNrNeighbourLocTableDefault() {
var integer v_nrNeighbour := f_random (0, PX_MIN_NR_NEIGHBOUR);
//TODO set the number of Neighbour in the IUT Location Table to v_nrNeighbour
} // end f_setNrNeighbourLT
/**
* @desc Set the number of neighbour in the Location Table.
* @return
*/
function f_setNrNeighbourLocTableMedium() {
var integer v_nrNeighbour := f_random (PX_MIN_NR_NEIGHBOUR, PX_MAX_NR_NEIGHBOUR);
//TODO set the number of Neighbour in the IUT Location Table to v_nrNeighbour
} // end f_setNrNeighbourLT
/**
* @desc Set the number of neighbour in the Location Table.
* @return
*/
function f_setNrNeighbourLocTableMaximum() {
var integer v_nrNeighbour := f_random (PX_MAX_NR_NEIGHBOUR, (2*PX_MIN_NR_NEIGHBOUR));
//TODO set the number of Neighbour in the IUT Location Table to v_nrNeighbour
} // end f_setNrNeighbourLT
} // end iutFunctions
function f_longPosVector2ShortPosVector(in LongPosVector p_longPosVector) return ShortPosVector {
var ShortPosVector v_shortPosVector;
v_shortPosVector := {
gnAddr := p_longPosVector.gnAddr,
timestamp := p_longPosVector.timestamp,
latitude := p_longPosVector.latitude,
longitude := p_longPosVector.longitude
};
function f_getIutLongPosVector() return LongPosVector {
var LongPosVector v_longPosVector := valueof(m_dummyLongPosVector);
//TODO
return v_longPosVector;
}
function f_getIutShortPosVector() return ShortPosVector {
return f_longPosVector2ShortPosVector(f_getIutLongPosVector());
group externalFunctions {
external function fx_computeDistance(
in UInt32 p_latitudeA, in UInt32 p_longitudeA,
in UInt32 p_latitudeB, in UInt32 p_longitudeB
) return float;
}