Commit 11883972 authored by garciay's avatar garciay
Browse files

Bug fixed on multi-components support

parent 38cbc05c
Loading
Loading
Loading
Loading
+2849 −2828
Original line number Diff line number Diff line
@@ -220,6 +220,7 @@ module LibItsGeoNetworking_Functions {
    function f_cf02Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ {
            
      // Variables
      var LongPosVector v_longPosVectorIut := valueof(m_dummyLongPosVector);
      var PositionTable v_positionTable := {};
      var GeoAreaTable v_areaTable := {};
      var ItsGeoNetworking v_component;
@@ -261,7 +262,9 @@ module LibItsGeoNetworking_Functions {
      }
      
      // Positions & Areas
      f_preparePositionsAndAreas(v_positionTable, v_areaTable);
      vc_componentTable[0].gnComponent.start(f_getIutLongPosVector_1(v_longPosVectorIut)); // Get positions
      vc_componentTable[0].gnComponent.done;
      f_preparePositionsAndAreas(v_positionTable, v_areaTable, v_longPosVectorIut);
      
      // Initialize components
      for(i:=0; i < lengthof(vc_componentTable); i:=i+1) {
@@ -358,7 +361,9 @@ module LibItsGeoNetworking_Functions {
      }
            
      // Positions & Areas
      f_preparePositionsAndAreas(v_positionTable, v_areaTable);
      vc_componentTable[0].gnComponent.start(f_getIutLongPosVector_1(v_longPosVectorIut)); // Get positions
      vc_componentTable[0].gnComponent.done;
      f_preparePositionsAndAreas(v_positionTable, v_areaTable, v_longPosVectorIut);
            
      // Initialize components
      for(i:=0; i < lengthof(vc_componentTable); i:=i+1) {
@@ -458,7 +463,9 @@ module LibItsGeoNetworking_Functions {
      }
            
      // Positions & Areas
      f_preparePositionsAndAreas(v_positionTable, v_areaTable);
      vc_componentTable[0].gnComponent.start(f_getIutLongPosVector_1(v_longPosVectorIut)); // Get positions
      vc_componentTable[0].gnComponent.done;
      f_preparePositionsAndAreas(v_positionTable, v_areaTable, v_longPosVectorIut);
            
      // Initialize components
      for(i:=0; i < lengthof(vc_componentTable); i:=i+1) {
@@ -554,7 +561,9 @@ module LibItsGeoNetworking_Functions {
      }
            
      // Positions & Areas
      f_preparePositionsAndAreas(v_positionTable, v_areaTable);
      vc_componentTable[0].gnComponent.start(f_getIutLongPosVector_1(v_longPosVectorIut)); // Get positions
      vc_componentTable[0].gnComponent.done;
      f_preparePositionsAndAreas(v_positionTable, v_areaTable, v_longPosVectorIut);
            
      // Initialize components
      for(i:=0; i < lengthof(vc_componentTable); i:=i+1) {
@@ -649,7 +658,9 @@ module LibItsGeoNetworking_Functions {
      }
            
      // Positions & Areas
      f_preparePositionsAndAreas(v_positionTable, v_areaTable);
      vc_componentTable[0].gnComponent.start(f_getIutLongPosVector_1(v_longPosVectorIut)); // Get positions
      vc_componentTable[0].gnComponent.done;
      f_preparePositionsAndAreas(v_positionTable, v_areaTable, v_longPosVectorIut);
            
      // Initialize components
      for(i:=0; i < lengthof(vc_componentTable); i:=i+1) {
@@ -744,7 +755,9 @@ module LibItsGeoNetworking_Functions {
      }
            
      // Positions & Areas
      f_preparePositionsAndAreas(v_positionTable, v_areaTable);
      vc_componentTable[0].gnComponent.start(f_getIutLongPosVector_1(v_longPosVectorIut)); // Get positions
      vc_componentTable[0].gnComponent.done;
      f_preparePositionsAndAreas(v_positionTable, v_areaTable, v_longPosVectorIut);
            
      // Initialize components
      for(i:=0; i < lengthof(vc_componentTable); i:=i+1) {
@@ -781,7 +794,7 @@ module LibItsGeoNetworking_Functions {
      unmap(self:utPort, system:utPort);
      disconnect(self:syncPort, mtc:syncPort);
            
    } // end f_cf0yDown
    } // end f_cf07Down
        
    /**
     * @desc    Behavior function for initializing component's variables and tables
@@ -898,13 +911,18 @@ module LibItsGeoNetworking_Functions {
     */
    function f_preparePositionsAndAreas(
                                        inout PositionTable p_positionTable,
                                        inout GeoAreaTable p_areaTable
                                        inout GeoAreaTable p_areaTable,
                                        in template (omit) LongPosVector p_longPosVectorIut := omit
                                        ) runs on ItsBaseGeoNetworking {
            
      var LongPosVector v_longPosVectorIut, v_longPosVectorNodeA, v_longPosVectorNodeB, v_longPosVectorNodeC, v_longPosVectorNodeD, v_longPosVectorNodeE, v_longPosVectorNodeF;
            
      // Get positions
      if (not(ispresent(p_longPosVectorIut))) {
        v_longPosVectorIut := f_getIutLongPosVector();
      } else {
        v_longPosVectorIut := valueof(p_longPosVectorIut);
      }
    v_longPosVectorNodeA := f_computePosition(v_longPosVectorIut, c_longitudeFactorNodeA, c_latitudeFactorNodeA);
    v_longPosVectorNodeB := f_computePosition(v_longPosVectorIut, c_longitudeFactorNodeB, c_latitudeFactorNodeB);
    v_longPosVectorNodeC := f_computePosition(v_longPosVectorIut, c_longitudeFactorNodeC, c_latitudeFactorNodeC);
@@ -2492,6 +2510,9 @@ module LibItsGeoNetworking_Functions {
    function f_getIutLongPosVector() runs on ItsBaseGeoNetworking return LongPosVector {
      return f_acGetLongPosVector(f_getIutGnLocalAddress());
    }
    function f_getIutLongPosVector_1(inout LongPosVector p_longPosVectorIut) runs on ItsGeoNetworking {
      p_longPosVectorIut := f_acGetLongPosVector(f_getIutGnLocalAddress());
    }
    
    /**
     * @desc    Get IUT's short position vector