/** * @author ETSI / STF405 * @version $URL: svn+ssh://vcs.etsi.org/TTCN3/LIB/LibIts/trunk/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn $ * $Id: LibItsGeoNetworking_Functions.ttcn 168 2010-09-22 15:18:22Z berge $ * @desc Module containing functions for Ipv6OverGeoNetworking * */ module LibItsIpv6OverGeoNetworking_Functions { // Libcommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; import from LibCommon_VerdictControl all; // LibIts import from LibIts_TestSystem all; import from LibIts_Interface all; import from LibItsGeoNetworking_TypesAndValues all; import from LibItsGeoNetworking_Functions all; import from LibItsGeoNetworking_Templates all; import from LibItsIpv6OverGeoNetworking_TypesAndValues all; group ipv6OverGeoConfigurationFunctions { /** * @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_ipv6_cf01Up() runs on ItsNt { // Variables // Map map(self:ipv6OverGeoNetworkingPort, system:ipv6OverGeoNetworkingPort); f_cf01Up(); } // end f_cf01Up /** * @desc Deletes configuration cf01 */ function f_ipv6_cf01Down() runs on ItsNt { // Map unmap(self:ipv6OverGeoNetworkingPort, system:ipv6OverGeoNetworkingPort); f_cf01Down(); } // end f_cf01Down } // emd ipv6OverGeoConfigurationFunctions group testAdapter { function f_taGetInterfaces() { //TODO } } // end testAdapter group miscellaneous { /** * @desc Gets the Geographical Virtual link entry associated to an area * @param p_areaIndex The index of the area */ function f_getGVL(in integer p_areaIndex) runs on ItsNt return GvlTableEntry { return vc_gvlTable[p_areaIndex]; } //end f_getGVL /** * @desc Retrieves the MAC address from the GN address. * @param p_gnAddr The GN address * @return The MAC address */ function f_gnAddr2MacAddr(in GN_Address p_gnAddr) return MacAddress { return p_gnAddr.mid; } /** * @desc Retrieves the GN address from the MAC address. * @param p_macAddr The MAC address * @return The GN address */ function f_macAddr2GnAddr(in MacAddress p_macAddr) return GN_Address { var GN_Address v_gnAddr := valueof(m_dummyGnAddr); v_gnAddr.mid := p_macAddr; return v_gnAddr; } /** * @desc Compute an Unique Interface ID based on a MAC Address * @param p_macAddr MAC Address * @return Unique interface ID */ function f_createUniqueInterfaceId ( in Oct6 p_macAddr ) return Oct8 { var UInt8 i; var Oct3 v_leftPartMac := int2oct(0,3); var Oct3 v_rightPartMac := int2oct(0,3); var Bit24 v_leftPartBits := int2bit(0,24); var Bit24 v_leftPartBitMask := oct2bit('020000'O); //get leftPart for (i:=0; i * and MAC-Solicited-node Address, based on prefix and MAC address * @param p_macAddr MAC Address * @param p_prefix Prefix * @param p_prefixLen Prefix Length * @param p_lla Computed link-local address * @param p_gla Computed global address * @param p_solNodeMca Computed solicited-node multicast address * @param p_macSolNodeMca Computed MAC solicited-node multicast address * @return Execution status */ function f_createIpAddresses( in MacAddress p_macAddr, in Oct16 p_prefix, in UInt8 p_prefixLen, out Ipv6Address p_lla, out Ipv6Address p_gla, out Ipv6Address p_solNodeMca, out MacAddress p_macSolNodeMca ) return FncRetCode { var UInt8 i; const UInt8 c_uniIdLen := 64; var Bit128 v_prefixBits := oct2bit(p_prefix); var Bit64 v_prefixReadyBits := int2bit(0, 64); var Oct8 v_prefixReady := int2oct(0,8); var Oct8 v_interfaceIdReady := int2oct(0,8); var Oct3 v_rightPartMac := int2oct(0,3); if (p_prefixLen > 64) { log("**** f_createIpAddresses: Wrong prefixLen ****"); return e_error; } else { //Fill v_prefixReady with existing Prefix for (i:=0; i63 and p_trafficClass<128) { v_trafficClass.reliability := e_low; v_trafficClass.latency := e_medium } else if (p_trafficClass>127 and p_trafficClass<193) { v_trafficClass.reliability := e_low; v_trafficClass.latency := e_low } else { v_trafficClass.reliability := e_low; v_trafficClass.latency := e_veryLow } return v_trafficClass; } // end f_getTrafficClassFromPriority } // end miscellaneous } // end LibItsIpv6OverGeoNetworking_Functions