Commit d72b3b80 authored by berge's avatar berge
Browse files

Added better cleanup handling (port unmapping) in case of unexpected TC termination

parent fc9386f4
Loading
Loading
Loading
Loading
+66 −3
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ module LibItsGeoNetworking_Functions {
                        
            // Connect
            f_connect4SelfOrClientSync();
            activate(a_cf01Down());            
            
            //Initialze the IUT
            f_initialState();
@@ -113,6 +114,7 @@ module LibItsGeoNetworking_Functions {
            p_nodeD := ItsNt.create(c_compNodeD) alive;

            // Map    
            map(self:acPort, system:acPort);        
            map(p_nodeB:acPort, system:acPort);
            map(p_nodeD:acPort, system:acPort);
            map(p_nodeB:utPort, system:utPort);
@@ -123,6 +125,8 @@ module LibItsGeoNetworking_Functions {
            // Connect            
            connect(p_nodeB:syncPort, self:syncPort);
            connect(p_nodeD:syncPort, self:syncPort);
			connect(self:syncPort, self:syncPort);
			activate(a_cf02Down(p_nodeB, p_nodeD));
        
            //Initialze the IUT
            f_initialState();
@@ -164,6 +168,7 @@ module LibItsGeoNetworking_Functions {
        function f_cf02Down(in ItsNt p_nodeB, in ItsNt p_nodeD) runs on ItsMtc {
            
            // Unmap
			unmap(self:acPort, system:acPort); 
            unmap(p_nodeB:acPort, system:acPort);
            unmap(p_nodeD:acPort, system:acPort);
            unmap(p_nodeB:utPort, system:utPort);
@@ -201,6 +206,7 @@ module LibItsGeoNetworking_Functions {
            p_nodeC := ItsNt.create(c_compNodeC) alive;

            // Map
			map(self:acPort, system:acPort); 
            map(p_nodeB:acPort, system:acPort);
            map(p_nodeC:acPort, system:acPort);
            map(p_nodeB:utPort, system:utPort);
@@ -211,6 +217,7 @@ module LibItsGeoNetworking_Functions {
            // Connect
            connect(p_nodeB:syncPort, self:syncPort);
            connect(p_nodeC:syncPort, self:syncPort);
			activate(a_cf03Down(p_nodeB, p_nodeC));

            //Initialze the IUT
            f_initialState();
@@ -254,6 +261,7 @@ module LibItsGeoNetworking_Functions {
        function f_cf03Down(in ItsNt p_nodeB, in ItsNt p_nodeC) runs on ItsMtc {
            
            // Unmap
			unmap(self:acPort, system:acPort);
            unmap(p_nodeB:acPort, system:acPort);
            unmap(p_nodeC:acPort, system:acPort);
            unmap(p_nodeB:utPort, system:utPort);
@@ -295,6 +303,7 @@ module LibItsGeoNetworking_Functions {
            p_nodeD := ItsNt.create(c_compNodeD) alive;

            // Map
			map(self:acPort, system:acPort); 
            map(p_nodeB:acPort, system:acPort);
            map(p_nodeC:acPort, system:acPort);
            map(p_nodeD:acPort, system:acPort);
@@ -309,6 +318,7 @@ module LibItsGeoNetworking_Functions {
            connect(p_nodeB:syncPort, self:syncPort);
            connect(p_nodeC:syncPort, self:syncPort);
            connect(p_nodeD:syncPort, self:syncPort);
			activate(a_cf04Down(p_nodeB, p_nodeC, p_nodeD));
            
            //Initialze the IUT
            f_initialState();
@@ -357,6 +367,7 @@ module LibItsGeoNetworking_Functions {
        function f_cf04Down(in ItsNt p_nodeB, in ItsNt p_nodeC, in ItsNt p_nodeD) runs on ItsMtc {
            
            // Unmap
			unmap(self:acPort, system:acPort);
            unmap(p_nodeB:acPort, system:acPort);
            unmap(p_nodeC:acPort, system:acPort);
            unmap(p_nodeD:acPort, system:acPort);
@@ -664,6 +675,9 @@ module LibItsGeoNetworking_Functions {
            [] a_shutdown() {
                f_poDefault();
                log("*** a_default: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
                if(self == mtc) {
					f_cf01Down();
                }
                stop;   
            }
        }        
@@ -683,9 +697,58 @@ module LibItsGeoNetworking_Functions {
            [] a_shutdown() {
                f_poNeighbour();
                log("*** a_neighbourDefault: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
				if(self == mtc) {
					f_cf01Down();
				}
                stop;   
            }            
            [] a_default() {
            	                
            }
        }

		/**
		 * @desc Default handling cf01 de-initialisation.
		 */
		altstep a_cf01Down() runs on ItsNt {
			[] a_shutdown() {
				f_poDefault();
				f_cf01Down();
				log("*** a_cf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
				stop;   
			}
		}
		
		/**
		 * @desc Default handling cf02 de-initialisation.
		 */
		altstep a_cf02Down(in ItsNt p_nodeB, in ItsNt p_nodeD) runs on ItsMtc {
			[] a_shutdown() {
				f_cf02Down(p_nodeB, p_nodeD);
				log("*** a_cf02Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
				stop;   
			}
		}
		
		/**
		 * @desc Default handling cf03 de-initialisation.
		 */
		altstep a_cf03Down(in ItsNt p_nodeB, in ItsNt p_nodeC) runs on ItsMtc {
			[] a_shutdown() {
				f_cf03Down(p_nodeB, p_nodeC);
				log("*** a_cf03Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
				stop;   
			}
		}
				
		/**
		 * @desc Default handling cf04 de-initialisation.
		 */
		altstep a_cf04Down(in ItsNt p_nodeB, in ItsNt p_nodeC, in ItsNt p_nodeD) runs on ItsMtc {
			[] a_shutdown() {
				f_cf04Down(p_nodeB, p_nodeC, p_nodeD);
				log("*** a_cf04Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
				stop;   
			}
		}