diff --git a/MAC/Test/TestHarness/THEcho/src/THEcho.cc b/MAC/Test/TestHarness/THEcho/src/THEcho.cc
index 5dd20474c4ce93f38ca6b545f3436ee800af0382..d3d2b803a18e4ecd9b644b7b22593a73b3b47753 100644
--- a/MAC/Test/TestHarness/THEcho/src/THEcho.cc
+++ b/MAC/Test/TestHarness/THEcho/src/THEcho.cc
@@ -225,6 +225,71 @@ GCFEvent::TResult Echo::connected(GCFEvent& e, GCFPortInterface& p)
       break;
     }
 
+    case THECHO_PING_INT_ARRAY:
+    {
+      LOG_TRACE_FLOW("Echo::connected(THECHO_PING_INT_ARRAY)");
+      THEchoPingIntArrayEvent ping(e);
+      LOG_INFO(formatString("PING_INT_ARRAY received on port %s (seqnr=%d, intArrayParam=[%d,%d,%d,%d,%d,%d,%d,%d,%d,%d])",p.getName().c_str(),ping.seqnr,ping.intArrayParam[0],ping.intArrayParam[1],ping.intArrayParam[2],ping.intArrayParam[3],ping.intArrayParam[4],ping.intArrayParam[5],ping.intArrayParam[6],ping.intArrayParam[7],ping.intArrayParam[8],ping.intArrayParam[9]));
+      THEchoEchoIntArrayEvent echo;
+      echo.seqnr = ping.seqnr;
+      for(int i=0;i<10;i++)
+        echo.intArrayParam[i] = ping.intArrayParam[i];
+      _reply(echo,p);
+      break;
+    }
+
+    case THECHO_PING_INT_ARRAY_20:
+    {
+      LOG_TRACE_FLOW("Echo::connected(THECHO_PING_INT_ARRAY_20)");
+      THEchoPingIntArray20Event ping(e);
+
+      int numInts=20;
+      int i;
+      char strTemp[50];
+      string paramDump("[");
+      for(i=0;i<numInts-1;i++)
+      {
+        sprintf(strTemp,"%d,",ping.intArrayParam[i]);
+        paramDump += string(strTemp);
+      }
+      sprintf(strTemp,"%d]",ping.intArrayParam[i]);
+      paramDump += string(strTemp);
+      LOG_INFO(formatString("PING_INT_ARRAY_20 received on port %s (seqnr=%d, intArrayParam=%s)",p.getName().c_str(),ping.seqnr,paramDump.c_str()));
+
+      THEchoEchoIntArray20Event echo;
+      echo.seqnr = ping.seqnr;
+      for(i=0;i<numInts;i++)
+        echo.intArrayParam[i] = ping.intArrayParam[i];
+      _reply(echo,p);
+      break;
+    }
+
+    case THECHO_PING_INT_ARRAY_61:
+    {
+      LOG_TRACE_FLOW("Echo::connected(THECHO_PING_INT_ARRAY_61)");
+      THEchoPingIntArray61Event ping(e);
+
+      int numInts=61;
+      int i;
+      char strTemp[50];
+      string paramDump("[");
+      for(i=0;i<numInts-1;i++)
+      {
+        sprintf(strTemp,"%d,",ping.intArrayParam[i]);
+        paramDump += string(strTemp);
+      }
+      sprintf(strTemp,"%d]",ping.intArrayParam[i]);
+      paramDump += string(strTemp);
+      LOG_INFO(formatString("PING_INT_ARRAY_61 received on port %s (seqnr=%d, intArrayParam=%s)",p.getName().c_str(),ping.seqnr,paramDump.c_str()));
+
+      THEchoEchoIntArray61Event echo;
+      echo.seqnr = ping.seqnr;
+      for(i=0;i<numInts;i++)
+        echo.intArrayParam[i] = ping.intArrayParam[i];
+      _reply(echo,p);
+      break;
+    }
+
     case THECHOROUTING_PING_UINT:
     {
       LOG_TRACE_FLOW("Echo::connected(THECHOROUTING_PING_UINT)");
@@ -305,6 +370,72 @@ GCFEvent::TResult Echo::connected(GCFEvent& e, GCFPortInterface& p)
       stop();      
       break;
     }
+
+    case THECHOROUTING_PING_INT_ARRAY:
+    {
+      LOG_TRACE_FLOW("Echo::connected(THECHOROUTING_PING_INT_ARRAY)");
+      THEchoRoutingPingIntArrayEvent ping(e);
+      LOG_INFO(formatString("PING_INT_ARRAY received on port %s (seqnr=%d, intArrayParam=[%d,%d,%d,%d,%d,%d,%d,%d,%d,%d])",p.getName().c_str(),ping.seqnr,ping.intArrayParam[0],ping.intArrayParam[1],ping.intArrayParam[2],ping.intArrayParam[3],ping.intArrayParam[4],ping.intArrayParam[5],ping.intArrayParam[6],ping.intArrayParam[7],ping.intArrayParam[8],ping.intArrayParam[9]));
+      THEchoRoutingEchoIntArrayEvent echo;
+      echo.seqnr = ping.seqnr;
+      for(int i=0;i<10;i++)
+        echo.intArrayParam[i] = ping.intArrayParam[i];
+      _reply(echo,p);
+      break;
+    }
+
+    case THECHOROUTING_PING_INT_ARRAY_20:
+    {
+      LOG_TRACE_FLOW("Echo::connected(THECHOROUTING_PING_INT_ARRAY_20)");
+      THEchoRoutingPingIntArray20Event ping(e);
+      
+      int numInts=20;
+      int i;
+      char strTemp[50];
+      string paramDump("[");
+      for(i=0;i<numInts-1;i++)
+      {
+        sprintf(strTemp,"%d,",ping.intArrayParam[i]);
+        paramDump += string(strTemp);
+      }
+      sprintf(strTemp,"%d]",ping.intArrayParam[i]);
+      paramDump += string(strTemp);
+      LOG_INFO(formatString("PING_INT_ARRAY_20 received on port %s (seqnr=%d, intArrayParam=%s)",p.getName().c_str(),ping.seqnr,paramDump.c_str()));
+
+      THEchoRoutingEchoIntArray20Event echo;
+      echo.seqnr = ping.seqnr;
+      for(int i=0;i<numInts;i++)
+        echo.intArrayParam[i] = ping.intArrayParam[i];
+      _reply(echo,p);
+      break;
+    }
+
+    case THECHOROUTING_PING_INT_ARRAY_61:
+    {
+      LOG_TRACE_FLOW("Echo::connected(THECHOROUTING_PING_INT_ARRAY_61)");
+      THEchoRoutingPingIntArray61Event ping(e);
+      
+      int numInts=61;
+      int i;
+      char strTemp[50];
+      string paramDump("[");
+      for(i=0;i<numInts-1;i++)
+      {
+        sprintf(strTemp,"%d,",ping.intArrayParam[i]);
+        paramDump += string(strTemp);
+      }
+      sprintf(strTemp,"%d]",ping.intArrayParam[i]);
+      paramDump += string(strTemp);
+      LOG_INFO(formatString("PING_INT_ARRAY_61 received on port %s (seqnr=%d, intArrayParam=%s)",p.getName().c_str(),ping.seqnr,paramDump.c_str()));
+
+      THEchoRoutingEchoIntArray61Event echo;
+      echo.seqnr = ping.seqnr;
+      for(int i=0;i<numInts;i++)
+        echo.intArrayParam[i] = ping.intArrayParam[i];
+      _reply(echo,p);
+      break;
+    }
+
     default:
       status = GCFEvent::NOT_HANDLED;
       break;
diff --git a/MAC/Test/TestHarness/THEcho/src/THEchoRouting_Protocol.prot b/MAC/Test/TestHarness/THEcho/src/THEchoRouting_Protocol.prot
index abcf1bc356e718be8900dd061c5ca43603ce74d4..417357ec9ea3f3348fbf4b756051f0320aa03374 100644
--- a/MAC/Test/TestHarness/THEcho/src/THEchoRouting_Protocol.prot
+++ b/MAC/Test/TestHarness/THEcho/src/THEchoRouting_Protocol.prot
@@ -221,3 +221,82 @@ event = {
     type = "unsigned int";
   };
 };
+
+event = {
+  signal = PING_INT_ARRAY;
+  dir = IN;
+  param = {
+    name = "seqnr";
+    type = "unsigned int";
+  };
+  param = {
+    name = "intArrayParam";
+    type = "int[10]";
+  };
+};
+
+event = {
+  signal = ECHO_INT_ARRAY;
+  dir = IN;
+  param = {
+    name = "seqnr";
+    type = "unsigned int";
+  };
+  param = {
+    name = "intArrayParam";
+    type = "int[10]";
+  };
+};
+
+event = {
+  signal = PING_INT_ARRAY_20;
+  dir = IN;
+  param = {
+    name = "seqnr";
+    type = "unsigned int";
+  };
+  param = {
+    name = "intArrayParam";
+    type = "int[20]";
+  };
+};
+
+event = {
+  signal = ECHO_INT_ARRAY_20;
+  dir = IN;
+  param = {
+    name = "seqnr";
+    type = "unsigned int";
+  };
+  param = {
+    name = "intArrayParam";
+    type = "int[20]";
+  };
+};
+
+event = {
+  signal = PING_INT_ARRAY_61;
+  dir = IN;
+  param = {
+    name = "seqnr";
+    type = "unsigned int";
+  };
+  param = {
+    name = "intArrayParam";
+    type = "int[61]";
+  };
+};
+
+event = {
+  signal = ECHO_INT_ARRAY_61;
+  dir = IN;
+  param = {
+    name = "seqnr";
+    type = "unsigned int";
+  };
+  param = {
+    name = "intArrayParam";
+    type = "int[61]";
+  };
+};
+
diff --git a/MAC/Test/TestHarness/THEcho/src/THEcho_Protocol.prot b/MAC/Test/TestHarness/THEcho/src/THEcho_Protocol.prot
index 1fd98da43b7dcaa15e8d8a6ebb2de3ceeee4e015..4d8056a62718c6d000c2006bb71753da6922de42 100644
--- a/MAC/Test/TestHarness/THEcho/src/THEcho_Protocol.prot
+++ b/MAC/Test/TestHarness/THEcho/src/THEcho_Protocol.prot
@@ -217,3 +217,82 @@ event = {
     type = "unsigned int";
   };
 };
+
+event = {
+  signal = PING_INT_ARRAY;
+  dir = IN;
+  param = {
+    name = "seqnr";
+    type = "unsigned int";
+  };
+  param = {
+    name = "intArrayParam";
+    type = "int[10]";
+  };
+};
+
+event = {
+  signal = ECHO_INT_ARRAY;
+  dir = OUT;
+  param = {
+    name = "seqnr";
+    type = "unsigned int";
+  };
+  param = {
+    name = "intArrayParam";
+    type = "int[10]";
+  };
+};
+
+event = {
+  signal = PING_INT_ARRAY_20;
+  dir = IN;
+  param = {
+    name = "seqnr";
+    type = "unsigned int";
+  };
+  param = {
+    name = "intArrayParam";
+    type = "int[20]";
+  };
+};
+
+event = {
+  signal = ECHO_INT_ARRAY_20;
+  dir = OUT;
+  param = {
+    name = "seqnr";
+    type = "unsigned int";
+  };
+  param = {
+    name = "intArrayParam";
+    type = "int[20]";
+  };
+};
+
+event = {
+  signal = PING_INT_ARRAY_61;
+  dir = IN;
+  param = {
+    name = "seqnr";
+    type = "unsigned int";
+  };
+  param = {
+    name = "intArrayParam";
+    type = "int[61]";
+  };
+};
+
+event = {
+  signal = ECHO_INT_ARRAY_61;
+  dir = OUT;
+  param = {
+    name = "seqnr";
+    type = "unsigned int";
+  };
+  param = {
+    name = "intArrayParam";
+    type = "int[61]";
+  };
+};
+
diff --git a/MAC/Test/TestHarness/THEcho/test/THEchoTest.cc b/MAC/Test/TestHarness/THEcho/test/THEchoTest.cc
index c2121fbff0eae3c0b0ea8091c2d338d4c5fc49fc..8dd5a1ed264e342587b06588431d224775b8d542 100644
--- a/MAC/Test/TestHarness/THEcho/test/THEchoTest.cc
+++ b/MAC/Test/TestHarness/THEcho/test/THEchoTest.cc
@@ -173,17 +173,24 @@ GCFEvent::TResult EchoTest::test1(GCFEvent& e, GCFPortInterface& p)
       break;
     }
 
+//    case THECHO_ECHO_UINT:
     case THECHO_ECHO_INT:
     case THECHO_ECHO_LONG:
     case THECHO_ECHO_ENUM:
     case THECHO_ECHO_DOUBLE:
     case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
     case THECHOROUTING_ECHO_UINT:
     case THECHOROUTING_ECHO_INT:
     case THECHOROUTING_ECHO_LONG:
     case THECHOROUTING_ECHO_ENUM:
     case THECHOROUTING_ECHO_DOUBLE:
     case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
@@ -245,16 +252,23 @@ GCFEvent::TResult EchoTest::test2(GCFEvent& e, GCFPortInterface& p)
     }
 
     case THECHO_ECHO_UINT:
+//    case THECHO_ECHO_INT:
     case THECHO_ECHO_LONG:
     case THECHO_ECHO_ENUM:
     case THECHO_ECHO_DOUBLE:
     case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
     case THECHOROUTING_ECHO_UINT:
     case THECHOROUTING_ECHO_INT:
     case THECHOROUTING_ECHO_LONG:
     case THECHOROUTING_ECHO_ENUM:
     case THECHOROUTING_ECHO_DOUBLE:
     case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
@@ -317,15 +331,22 @@ GCFEvent::TResult EchoTest::test3(GCFEvent& e, GCFPortInterface& p)
 
     case THECHO_ECHO_UINT:
     case THECHO_ECHO_INT:
+//    case THECHO_ECHO_LONG:
     case THECHO_ECHO_ENUM:
     case THECHO_ECHO_DOUBLE:
     case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
     case THECHOROUTING_ECHO_UINT:
     case THECHOROUTING_ECHO_INT:
     case THECHOROUTING_ECHO_LONG:
     case THECHOROUTING_ECHO_ENUM:
     case THECHOROUTING_ECHO_DOUBLE:
     case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
@@ -390,14 +411,21 @@ GCFEvent::TResult EchoTest::test4(GCFEvent& e, GCFPortInterface& p)
     case THECHO_ECHO_UINT:
     case THECHO_ECHO_INT:
     case THECHO_ECHO_LONG:
+//    case THECHO_ECHO_ENUM:
     case THECHO_ECHO_DOUBLE:
     case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
     case THECHOROUTING_ECHO_UINT:
     case THECHOROUTING_ECHO_INT:
     case THECHOROUTING_ECHO_LONG:
     case THECHOROUTING_ECHO_ENUM:
     case THECHOROUTING_ECHO_DOUBLE:
     case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
@@ -463,13 +491,20 @@ GCFEvent::TResult EchoTest::test5(GCFEvent& e, GCFPortInterface& p)
     case THECHO_ECHO_INT:
     case THECHO_ECHO_LONG:
     case THECHO_ECHO_ENUM:
+//    case THECHO_ECHO_DOUBLE:
     case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
     case THECHOROUTING_ECHO_UINT:
     case THECHOROUTING_ECHO_INT:
     case THECHOROUTING_ECHO_LONG:
     case THECHOROUTING_ECHO_ENUM:
     case THECHOROUTING_ECHO_DOUBLE:
     case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
@@ -535,12 +570,19 @@ GCFEvent::TResult EchoTest::test6(GCFEvent& e, GCFPortInterface& p)
     case THECHO_ECHO_LONG:
     case THECHO_ECHO_ENUM:
     case THECHO_ECHO_DOUBLE:
+//    case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
     case THECHOROUTING_ECHO_UINT:
     case THECHOROUTING_ECHO_INT:
     case THECHOROUTING_ECHO_LONG:
     case THECHOROUTING_ECHO_ENUM:
     case THECHOROUTING_ECHO_DOUBLE:
     case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
@@ -568,6 +610,85 @@ GCFEvent::TResult EchoTest::test7(GCFEvent& e, GCFPortInterface& p)
     case F_ENTRY:
     {
       LOG_TRACE_FLOW("EchoTest::test7(F_ENTRY)");
+      THEchoPingIntArrayEvent ping;
+      ping.seqnr = _seqnr;
+      for(int i=0;i<10;i++)
+        ping.intArrayParam[i]=i;
+      _send(ping,_client);
+      break;
+    }
+      
+    case THECHO_ECHO_INT_ARRAY:
+    {
+      LOG_TRACE_FLOW("EchoTest::test7(THECHO_ECHO_INT_ARRAY)");
+      if(!_isClient(p))
+      {
+        LOG_FATAL("reply received on wrong port!!");
+        stop();
+      }
+      else
+      {
+        THEchoEchoIntArrayEvent echo(e);
+        LOG_INFO(formatString("ECHO_INT_ARRAY received on port %s (seqnr=%d, intArrayParam=[%d,%d,%d,%d,%d,%d,%d,%d,%d,%d])",p.getName().c_str(),echo.seqnr,echo.intArrayParam[0],echo.intArrayParam[1],echo.intArrayParam[2],echo.intArrayParam[3],echo.intArrayParam[4],echo.intArrayParam[5],echo.intArrayParam[6],echo.intArrayParam[7],echo.intArrayParam[8],echo.intArrayParam[9]));
+        if(_seqnr != echo.seqnr)
+        {
+          LOG_FATAL("wrong seqnr received!!");
+          stop();
+        }
+        else
+        {
+          _seqnr++;
+          TRAN(EchoTest::test8);
+        }
+      }
+      break;
+    }
+
+    case THECHO_ECHO_UINT:
+    case THECHO_ECHO_INT:
+    case THECHO_ECHO_LONG:
+    case THECHO_ECHO_ENUM:
+    case THECHO_ECHO_DOUBLE:
+    case THECHO_ECHO_STRING:
+//    case THECHO_ECHO_INT_ARRAY:
+    case THECHOROUTING_ECHO_UINT:
+    case THECHOROUTING_ECHO_INT:
+    case THECHOROUTING_ECHO_LONG:
+    case THECHOROUTING_ECHO_ENUM:
+    case THECHOROUTING_ECHO_DOUBLE:
+    case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
+      LOG_FATAL("wrong echo received!!");
+      stop();
+      break;
+    
+    case F_DISCONNECTED:
+      LOG_TRACE_FLOW("EchoTest::test7(F_DISCONNECTED)");
+      TRAN(EchoTest::initial);
+      break;
+
+    default:
+      status = GCFEvent::NOT_HANDLED;
+      break;
+  }
+
+  return status;
+}
+
+GCFEvent::TResult EchoTest::test8(GCFEvent& e, GCFPortInterface& p)
+{
+  GCFEvent::TResult status = GCFEvent::HANDLED;
+
+  switch (e.signal)
+  {
+
+    case F_ENTRY:
+    {
+      LOG_TRACE_FLOW("EchoTest::test8(F_ENTRY)");
       THEchoRoutingPingUintEvent ping;
       ping.seqnr = _seqnr;
       ping.uintParam = 123456789;
@@ -577,7 +698,7 @@ GCFEvent::TResult EchoTest::test7(GCFEvent& e, GCFPortInterface& p)
       
     case THECHOROUTING_ECHO_UINT:
     {
-      LOG_TRACE_FLOW("EchoTest::test7(THECHOROUTING_ECHO_UINT)");
+      LOG_TRACE_FLOW("EchoTest::test8(THECHOROUTING_ECHO_UINT)");
       if(!_isServer(p))
       {
         LOG_FATAL("reply received on wrong port!!");
@@ -595,7 +716,7 @@ GCFEvent::TResult EchoTest::test7(GCFEvent& e, GCFPortInterface& p)
         else
         {
           _seqnr++;
-          TRAN(EchoTest::test8);
+          TRAN(EchoTest::test9);
         }
       }
       break;
@@ -607,17 +728,24 @@ GCFEvent::TResult EchoTest::test7(GCFEvent& e, GCFPortInterface& p)
     case THECHO_ECHO_ENUM:
     case THECHO_ECHO_DOUBLE:
     case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
+//    case THECHOROUTING_ECHO_UINT:
     case THECHOROUTING_ECHO_INT:
     case THECHOROUTING_ECHO_LONG:
     case THECHOROUTING_ECHO_ENUM:
     case THECHOROUTING_ECHO_DOUBLE:
     case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
     
     case F_DISCONNECTED:
-      LOG_TRACE_FLOW("EchoTest::test7(F_DISCONNECTED)");
+      LOG_TRACE_FLOW("EchoTest::test8(F_DISCONNECTED)");
       TRAN(EchoTest::initial);
       break;
 
@@ -629,7 +757,7 @@ GCFEvent::TResult EchoTest::test7(GCFEvent& e, GCFPortInterface& p)
   return status;
 }
 
-GCFEvent::TResult EchoTest::test8(GCFEvent& e, GCFPortInterface& p)
+GCFEvent::TResult EchoTest::test9(GCFEvent& e, GCFPortInterface& p)
 {
   GCFEvent::TResult status = GCFEvent::HANDLED;
 
@@ -638,7 +766,7 @@ GCFEvent::TResult EchoTest::test8(GCFEvent& e, GCFPortInterface& p)
 
     case F_ENTRY:
     {
-      LOG_TRACE_FLOW("EchoTest::test8(F_ENTRY)");
+      LOG_TRACE_FLOW("EchoTest::test9(F_ENTRY)");
       THEchoRoutingPingIntEvent ping;
       ping.seqnr = _seqnr;
       ping.intParam = 123456789;
@@ -648,7 +776,7 @@ GCFEvent::TResult EchoTest::test8(GCFEvent& e, GCFPortInterface& p)
       
     case THECHOROUTING_ECHO_INT:
     {
-      LOG_TRACE_FLOW("EchoTest::test8(THECHOROUTING_ECHO_INT)");
+      LOG_TRACE_FLOW("EchoTest::test9(THECHOROUTING_ECHO_INT)");
       if(!_isServer(p))
       {
         LOG_FATAL("reply received on wrong port!!");
@@ -666,7 +794,7 @@ GCFEvent::TResult EchoTest::test8(GCFEvent& e, GCFPortInterface& p)
         else
         {
           _seqnr++;
-          TRAN(EchoTest::test9);
+          TRAN(EchoTest::test10);
         }
       }
       break;
@@ -678,17 +806,24 @@ GCFEvent::TResult EchoTest::test8(GCFEvent& e, GCFPortInterface& p)
     case THECHO_ECHO_ENUM:
     case THECHO_ECHO_DOUBLE:
     case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
     case THECHOROUTING_ECHO_UINT:
+//    case THECHOROUTING_ECHO_INT:
     case THECHOROUTING_ECHO_LONG:
     case THECHOROUTING_ECHO_ENUM:
     case THECHOROUTING_ECHO_DOUBLE:
     case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
     
     case F_DISCONNECTED:
-      LOG_TRACE_FLOW("EchoTest::test8(F_DISCONNECTED)");
+      LOG_TRACE_FLOW("EchoTest::test9(F_DISCONNECTED)");
       TRAN(EchoTest::initial);
       break;
 
@@ -700,7 +835,7 @@ GCFEvent::TResult EchoTest::test8(GCFEvent& e, GCFPortInterface& p)
   return status;
 }
 
-GCFEvent::TResult EchoTest::test9(GCFEvent& e, GCFPortInterface& p)
+GCFEvent::TResult EchoTest::test10(GCFEvent& e, GCFPortInterface& p)
 {
   GCFEvent::TResult status = GCFEvent::HANDLED;
 
@@ -709,7 +844,7 @@ GCFEvent::TResult EchoTest::test9(GCFEvent& e, GCFPortInterface& p)
 
     case F_ENTRY:
     {
-      LOG_TRACE_FLOW("EchoTest::test9(F_ENTRY)");
+      LOG_TRACE_FLOW("EchoTest::test10(F_ENTRY)");
       THEchoRoutingPingLongEvent ping;
       ping.seqnr = _seqnr;
       ping.longParam = 123456789;
@@ -719,7 +854,7 @@ GCFEvent::TResult EchoTest::test9(GCFEvent& e, GCFPortInterface& p)
       
     case THECHOROUTING_ECHO_LONG:
     {
-      LOG_TRACE_FLOW("EchoTest::test9(THECHOROUTING_ECHO_LONG)");
+      LOG_TRACE_FLOW("EchoTest::test10(THECHOROUTING_ECHO_LONG)");
       if(!_isServer(p))
       {
         LOG_FATAL("reply received on wrong port!!");
@@ -737,7 +872,7 @@ GCFEvent::TResult EchoTest::test9(GCFEvent& e, GCFPortInterface& p)
         else
         {
           _seqnr++;
-          TRAN(EchoTest::test10);
+          TRAN(EchoTest::test11);
         }
       }
       break;
@@ -749,17 +884,24 @@ GCFEvent::TResult EchoTest::test9(GCFEvent& e, GCFPortInterface& p)
     case THECHO_ECHO_ENUM:
     case THECHO_ECHO_DOUBLE:
     case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
     case THECHOROUTING_ECHO_UINT:
     case THECHOROUTING_ECHO_INT:
+//    case THECHOROUTING_ECHO_LONG:
     case THECHOROUTING_ECHO_ENUM:
     case THECHOROUTING_ECHO_DOUBLE:
     case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
     
     case F_DISCONNECTED:
-      LOG_TRACE_FLOW("EchoTest::test9(F_DISCONNECTED)");
+      LOG_TRACE_FLOW("EchoTest::test10(F_DISCONNECTED)");
       TRAN(EchoTest::initial);
       break;
 
@@ -771,7 +913,7 @@ GCFEvent::TResult EchoTest::test9(GCFEvent& e, GCFPortInterface& p)
   return status;
 }
 
-GCFEvent::TResult EchoTest::test10(GCFEvent& e, GCFPortInterface& p)
+GCFEvent::TResult EchoTest::test11(GCFEvent& e, GCFPortInterface& p)
 {
   GCFEvent::TResult status = GCFEvent::HANDLED;
 
@@ -780,7 +922,7 @@ GCFEvent::TResult EchoTest::test10(GCFEvent& e, GCFPortInterface& p)
 
     case F_ENTRY:
     {
-      LOG_TRACE_FLOW("EchoTest::test10(F_ENTRY)");
+      LOG_TRACE_FLOW("EchoTest::test11(F_ENTRY)");
       THEchoRoutingPingEnumEvent ping;
       ping.seqnr = _seqnr;
       ping.enumParam = ECHOROUTING_ENUM_SECOND;
@@ -790,7 +932,7 @@ GCFEvent::TResult EchoTest::test10(GCFEvent& e, GCFPortInterface& p)
       
     case THECHOROUTING_ECHO_ENUM:
     {
-      LOG_TRACE_FLOW("EchoTest::test10(THECHOROUTING_ECHO_ENUM)");
+      LOG_TRACE_FLOW("EchoTest::test11(THECHOROUTING_ECHO_ENUM)");
       if(!_isServer(p))
       {
         LOG_FATAL("reply received on wrong port!!");
@@ -808,7 +950,7 @@ GCFEvent::TResult EchoTest::test10(GCFEvent& e, GCFPortInterface& p)
         else
         {
           _seqnr++;
-          TRAN(EchoTest::test11);
+          TRAN(EchoTest::test12);
         }
       }
       break;
@@ -820,17 +962,24 @@ GCFEvent::TResult EchoTest::test10(GCFEvent& e, GCFPortInterface& p)
     case THECHO_ECHO_ENUM:
     case THECHO_ECHO_DOUBLE:
     case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
     case THECHOROUTING_ECHO_UINT:
     case THECHOROUTING_ECHO_INT:
     case THECHOROUTING_ECHO_LONG:
+//    case THECHOROUTING_ECHO_ENUM:
     case THECHOROUTING_ECHO_DOUBLE:
     case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
     
     case F_DISCONNECTED:
-      LOG_TRACE_FLOW("EchoTest::test10(F_DISCONNECTED)");
+      LOG_TRACE_FLOW("EchoTest::test11(F_DISCONNECTED)");
       TRAN(EchoTest::initial);
       break;
 
@@ -842,7 +991,7 @@ GCFEvent::TResult EchoTest::test10(GCFEvent& e, GCFPortInterface& p)
   return status;
 }
 
-GCFEvent::TResult EchoTest::test11(GCFEvent& e, GCFPortInterface& p)
+GCFEvent::TResult EchoTest::test12(GCFEvent& e, GCFPortInterface& p)
 {
   GCFEvent::TResult status = GCFEvent::HANDLED;
 
@@ -851,7 +1000,7 @@ GCFEvent::TResult EchoTest::test11(GCFEvent& e, GCFPortInterface& p)
 
     case F_ENTRY:
     {
-      LOG_TRACE_FLOW("EchoTest::test11(F_ENTRY)");
+      LOG_TRACE_FLOW("EchoTest::test12(F_ENTRY)");
       THEchoRoutingPingDoubleEvent ping;
       ping.seqnr = _seqnr;
       ping.doubleParam = 1234.56789;
@@ -861,7 +1010,7 @@ GCFEvent::TResult EchoTest::test11(GCFEvent& e, GCFPortInterface& p)
       
     case THECHOROUTING_ECHO_DOUBLE:
     {
-      LOG_TRACE_FLOW("EchoTest::test11(THECHOROUTING_ECHO_DOUBLE)");
+      LOG_TRACE_FLOW("EchoTest::test12(THECHOROUTING_ECHO_DOUBLE)");
       if(!_isServer(p))
       {
         LOG_FATAL("reply received on wrong port!!");
@@ -879,7 +1028,7 @@ GCFEvent::TResult EchoTest::test11(GCFEvent& e, GCFPortInterface& p)
         else
         {
           _seqnr++;
-          TRAN(EchoTest::test12);
+          TRAN(EchoTest::test13);
         }
       }
       break;
@@ -891,17 +1040,24 @@ GCFEvent::TResult EchoTest::test11(GCFEvent& e, GCFPortInterface& p)
     case THECHO_ECHO_ENUM:
     case THECHO_ECHO_DOUBLE:
     case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
     case THECHOROUTING_ECHO_UINT:
     case THECHOROUTING_ECHO_INT:
     case THECHOROUTING_ECHO_LONG:
     case THECHOROUTING_ECHO_ENUM:
+//    case THECHOROUTING_ECHO_DOUBLE:
     case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
     
     case F_DISCONNECTED:
-      LOG_TRACE_FLOW("EchoTest::test11(F_DISCONNECTED)");
+      LOG_TRACE_FLOW("EchoTest::test12(F_DISCONNECTED)");
       TRAN(EchoTest::initial);
       break;
 
@@ -913,7 +1069,7 @@ GCFEvent::TResult EchoTest::test11(GCFEvent& e, GCFPortInterface& p)
   return status;
 }
 
-GCFEvent::TResult EchoTest::test12(GCFEvent& e, GCFPortInterface& p)
+GCFEvent::TResult EchoTest::test13(GCFEvent& e, GCFPortInterface& p)
 {
   GCFEvent::TResult status = GCFEvent::HANDLED;
 
@@ -922,7 +1078,7 @@ GCFEvent::TResult EchoTest::test12(GCFEvent& e, GCFPortInterface& p)
 
     case F_ENTRY:
     {
-      LOG_TRACE_FLOW("EchoTest::test12(F_ENTRY)");
+      LOG_TRACE_FLOW("EchoTest::test13(F_ENTRY)");
       THEchoRoutingPingStringEvent ping;
       ping.seqnr = _seqnr;
       ping.stringParam = "123456789";
@@ -932,7 +1088,7 @@ GCFEvent::TResult EchoTest::test12(GCFEvent& e, GCFPortInterface& p)
       
     case THECHOROUTING_ECHO_STRING:
     {
-      LOG_TRACE_FLOW("EchoTest::test12(THECHOROUTING_ECHO_STRING)");
+      LOG_TRACE_FLOW("EchoTest::test13(THECHOROUTING_ECHO_STRING)");
       if(!_isServer(p))
       {
         LOG_FATAL("reply received on wrong port!!");
@@ -950,7 +1106,7 @@ GCFEvent::TResult EchoTest::test12(GCFEvent& e, GCFPortInterface& p)
         else
         {
           _seqnr++;
-          TRAN(EchoTest::test13);
+          TRAN(EchoTest::test14);
         }
       }
       break;
@@ -962,17 +1118,24 @@ GCFEvent::TResult EchoTest::test12(GCFEvent& e, GCFPortInterface& p)
     case THECHO_ECHO_ENUM:
     case THECHO_ECHO_DOUBLE:
     case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
     case THECHOROUTING_ECHO_UINT:
     case THECHOROUTING_ECHO_INT:
     case THECHOROUTING_ECHO_LONG:
     case THECHOROUTING_ECHO_ENUM:
     case THECHOROUTING_ECHO_DOUBLE:
+//    case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
     
     case F_DISCONNECTED:
-      LOG_TRACE_FLOW("EchoTest::test12(F_DISCONNECTED)");
+      LOG_TRACE_FLOW("EchoTest::test13(F_DISCONNECTED)");
       TRAN(EchoTest::initial);
       break;
 
@@ -984,7 +1147,7 @@ GCFEvent::TResult EchoTest::test12(GCFEvent& e, GCFPortInterface& p)
   return status;
 }
 
-GCFEvent::TResult EchoTest::test13(GCFEvent& e, GCFPortInterface& p)
+GCFEvent::TResult EchoTest::test14(GCFEvent& e, GCFPortInterface& p)
 {
   GCFEvent::TResult status = GCFEvent::HANDLED;
 
@@ -993,8 +1156,38 @@ GCFEvent::TResult EchoTest::test13(GCFEvent& e, GCFPortInterface& p)
 
     case F_ENTRY:
     {
-      LOG_TRACE_FLOW("EchoTest::test13(F_ENTRY)");
-      TRAN(EchoTest::final);
+      LOG_TRACE_FLOW("EchoTest::test14(F_ENTRY)");
+      THEchoRoutingPingIntArrayEvent ping;
+      ping.seqnr = _seqnr;
+      for(int i=0;i<10;i++)
+        ping.intArrayParam[i]=i;
+      _send(ping,_routingClient);
+      break;
+    }
+      
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    {
+      LOG_TRACE_FLOW("EchoTest::test14(THECHOROUTING_ECHO_INT_ARRAY)");
+      if(!_isServer(p))
+      {
+        LOG_FATAL("reply received on wrong port!!");
+        stop();
+      }
+      else
+      {
+        THEchoRoutingEchoIntArrayEvent echo(e);
+        LOG_INFO(formatString("ECHO_INT_ARRAY received on port %s (seqnr=%d, intArrayParam=[%d,%d,%d,%d,%d,%d,%d,%d,%d,%d])",p.getName().c_str(),echo.seqnr,echo.intArrayParam[0],echo.intArrayParam[1],echo.intArrayParam[2],echo.intArrayParam[3],echo.intArrayParam[4],echo.intArrayParam[5],echo.intArrayParam[6],echo.intArrayParam[7],echo.intArrayParam[8],echo.intArrayParam[9]));
+        if(_seqnr != echo.seqnr)
+        {
+          LOG_FATAL("wrong seqnr received!!");
+          stop();
+        }
+        else
+        {
+          _seqnr++;
+          TRAN(EchoTest::test15);
+        }
+      }
       break;
     }
 
@@ -1004,18 +1197,396 @@ GCFEvent::TResult EchoTest::test13(GCFEvent& e, GCFPortInterface& p)
     case THECHO_ECHO_ENUM:
     case THECHO_ECHO_DOUBLE:
     case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
     case THECHOROUTING_ECHO_UINT:
     case THECHOROUTING_ECHO_INT:
     case THECHOROUTING_ECHO_LONG:
     case THECHOROUTING_ECHO_ENUM:
     case THECHOROUTING_ECHO_DOUBLE:
     case THECHOROUTING_ECHO_STRING:
+//    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
     
     case F_DISCONNECTED:
-      LOG_TRACE_FLOW("EchoTest::test13(F_DISCONNECTED)");
+      LOG_TRACE_FLOW("EchoTest::test14(F_DISCONNECTED)");
+      TRAN(EchoTest::initial);
+      break;
+
+    default:
+      status = GCFEvent::NOT_HANDLED;
+      break;
+  }
+
+  return status;
+}
+
+GCFEvent::TResult EchoTest::test15(GCFEvent& e, GCFPortInterface& p)
+{
+  GCFEvent::TResult status = GCFEvent::HANDLED;
+
+  switch (e.signal)
+  {
+
+    case F_ENTRY:
+    {
+      LOG_TRACE_FLOW("EchoTest::test15(F_ENTRY)");
+      THEchoPingIntArray20Event ping;
+      ping.seqnr = _seqnr;
+      int numInts=20;
+      for(int i=0;i<numInts;i++)
+        ping.intArrayParam[i]=i;
+      _send(ping,_client);
+      break;
+    }
+      
+    case THECHO_ECHO_INT_ARRAY_20:
+    {
+      LOG_TRACE_FLOW("EchoTest::test15(THECHO_ECHO_INT_ARRAY_20)");
+      if(!_isClient(p))
+      {
+        LOG_FATAL("reply received on wrong port!!");
+        stop();
+      }
+      else
+      {
+        THEchoEchoIntArray20Event echo(e);
+
+        int numInts=20;
+        int i;
+        char strTemp[50];
+        string paramDump("[");
+        for(i=0;i<numInts-1;i++)
+        {
+          sprintf(strTemp,"%d,",echo.intArrayParam[i]);
+          paramDump += string(strTemp);
+        }
+        sprintf(strTemp,"%d]",echo.intArrayParam[i]);
+        paramDump += string(strTemp);
+        LOG_INFO(formatString("ECHO_INT_ARRAY_20 received on port %s (seqnr=%d, intArrayParam=%s)",p.getName().c_str(),echo.seqnr,paramDump.c_str()));
+
+        if(_seqnr != echo.seqnr)
+        {
+          LOG_FATAL("wrong seqnr received!!");
+          stop();
+        }
+        else
+        {
+          _seqnr++;
+          TRAN(EchoTest::test16);
+        }
+      }
+      break;
+    }
+
+    case THECHO_ECHO_UINT:
+    case THECHO_ECHO_INT:
+    case THECHO_ECHO_LONG:
+    case THECHO_ECHO_ENUM:
+    case THECHO_ECHO_DOUBLE:
+    case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
+    case THECHOROUTING_ECHO_UINT:
+    case THECHOROUTING_ECHO_INT:
+    case THECHOROUTING_ECHO_LONG:
+    case THECHOROUTING_ECHO_ENUM:
+    case THECHOROUTING_ECHO_DOUBLE:
+    case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+//    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
+      LOG_FATAL("wrong echo received!!");
+      stop();
+      break;
+    
+    case F_DISCONNECTED:
+      LOG_TRACE_FLOW("EchoTest::test15(F_DISCONNECTED)");
+      TRAN(EchoTest::initial);
+      break;
+
+    default:
+      status = GCFEvent::NOT_HANDLED;
+      break;
+  }
+
+  return status;
+}
+
+GCFEvent::TResult EchoTest::test16(GCFEvent& e, GCFPortInterface& p)
+{
+  GCFEvent::TResult status = GCFEvent::HANDLED;
+
+  switch (e.signal)
+  {
+
+    case F_ENTRY:
+    {
+      LOG_TRACE_FLOW("EchoTest::test16(F_ENTRY)");
+      THEchoPingIntArray61Event ping;
+      ping.seqnr = _seqnr;
+      int numInts=61;
+      for(int i=0;i<numInts;i++)
+        ping.intArrayParam[i]=i;
+      _send(ping,_client);
+      break;
+    }
+      
+    case THECHO_ECHO_INT_ARRAY_61:
+    {
+      LOG_TRACE_FLOW("EchoTest::test16(THECHO_ECHO_INT_ARRAY_61)");
+      if(!_isClient(p))
+      {
+        LOG_FATAL("reply received on wrong port!!");
+        stop();
+      }
+      else
+      {
+        THEchoEchoIntArray61Event echo(e);
+
+        int numInts=61;
+        int i;
+        char strTemp[50];
+        string paramDump("[");
+        for(i=0;i<numInts-1;i++)
+        {
+          sprintf(strTemp,"%d,",echo.intArrayParam[i]);
+          paramDump += string(strTemp);
+        }
+        sprintf(strTemp,"%d]",echo.intArrayParam[i]);
+        paramDump += string(strTemp);
+        LOG_INFO(formatString("ECHO_INT_ARRAY_61 received on port %s (seqnr=%d, intArrayParam=%s)",p.getName().c_str(),echo.seqnr,paramDump.c_str()));
+
+        if(_seqnr != echo.seqnr)
+        {
+          LOG_FATAL("wrong seqnr received!!");
+          stop();
+        }
+        else
+        {
+          _seqnr++;
+          TRAN(EchoTest::test17);
+        }
+      }
+      break;
+    }
+
+    case THECHO_ECHO_UINT:
+    case THECHO_ECHO_INT:
+    case THECHO_ECHO_LONG:
+    case THECHO_ECHO_ENUM:
+    case THECHO_ECHO_DOUBLE:
+    case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
+    case THECHOROUTING_ECHO_UINT:
+    case THECHOROUTING_ECHO_INT:
+    case THECHOROUTING_ECHO_LONG:
+    case THECHOROUTING_ECHO_ENUM:
+    case THECHOROUTING_ECHO_DOUBLE:
+    case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+//    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
+      LOG_FATAL("wrong echo received!!");
+      stop();
+      break;
+    
+    case F_DISCONNECTED:
+      LOG_TRACE_FLOW("EchoTest::test16(F_DISCONNECTED)");
+      TRAN(EchoTest::initial);
+      break;
+
+    default:
+      status = GCFEvent::NOT_HANDLED;
+      break;
+  }
+
+  return status;
+}
+
+GCFEvent::TResult EchoTest::test17(GCFEvent& e, GCFPortInterface& p)
+{
+  GCFEvent::TResult status = GCFEvent::HANDLED;
+
+  switch (e.signal)
+  {
+
+    case F_ENTRY:
+    {
+      LOG_TRACE_FLOW("EchoTest::test17(F_ENTRY)");
+      THEchoRoutingPingIntArray20Event ping;
+      ping.seqnr = _seqnr;
+      int numInts=20;
+      for(int i=0;i<numInts;i++)
+        ping.intArrayParam[i]=i;
+      _send(ping,_routingClient);
+      break;
+    }
+      
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    {
+      LOG_TRACE_FLOW("EchoTest::test17(THECHOROUTING_ECHO_INT_ARRAY_20)");
+      if(!_isServer(p))
+      {
+        LOG_FATAL("reply received on wrong port!!");
+        stop();
+      }
+      else
+      {
+        THEchoRoutingEchoIntArray20Event echo(e);
+
+        int numInts=20;
+        int i;
+        char strTemp[50];
+        string paramDump("[");
+        for(i=0;i<numInts-1;i++)
+        {
+          sprintf(strTemp,"%d,",echo.intArrayParam[i]);
+          paramDump += string(strTemp);
+        }
+        sprintf(strTemp,"%d]",echo.intArrayParam[i]);
+        paramDump += string(strTemp);
+        LOG_INFO(formatString("ECHO_INT_ARRAY_20 received on port %s (seqnr=%d, intArrayParam=%s)",p.getName().c_str(),echo.seqnr,paramDump.c_str()));
+
+        if(_seqnr != echo.seqnr)
+        {
+          LOG_FATAL("wrong seqnr received!!");
+          stop();
+        }
+        else
+        {
+          _seqnr++;
+          TRAN(EchoTest::test18);
+        }
+      }
+      break;
+    }
+
+    case THECHO_ECHO_UINT:
+    case THECHO_ECHO_INT:
+    case THECHO_ECHO_LONG:
+    case THECHO_ECHO_ENUM:
+    case THECHO_ECHO_DOUBLE:
+    case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
+    case THECHOROUTING_ECHO_UINT:
+    case THECHOROUTING_ECHO_INT:
+    case THECHOROUTING_ECHO_LONG:
+    case THECHOROUTING_ECHO_ENUM:
+    case THECHOROUTING_ECHO_DOUBLE:
+    case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+//    case THECHOROUTING_ECHO_INT_ARRAY_20:
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
+      LOG_FATAL("wrong echo received!!");
+      stop();
+      break;
+    
+    case F_DISCONNECTED:
+      LOG_TRACE_FLOW("EchoTest::test17(F_DISCONNECTED)");
+      TRAN(EchoTest::initial);
+      break;
+
+    default:
+      status = GCFEvent::NOT_HANDLED;
+      break;
+  }
+
+  return status;
+}
+
+GCFEvent::TResult EchoTest::test18(GCFEvent& e, GCFPortInterface& p)
+{
+  GCFEvent::TResult status = GCFEvent::HANDLED;
+
+  switch (e.signal)
+  {
+
+    case F_ENTRY:
+    {
+      LOG_TRACE_FLOW("EchoTest::test18(F_ENTRY)");
+      THEchoRoutingPingIntArray61Event ping;
+      ping.seqnr = _seqnr;
+      int numInts=61;
+      for(int i=0;i<numInts;i++)
+        ping.intArrayParam[i]=i;
+      _send(ping,_routingClient);
+      break;
+    }
+      
+    case THECHOROUTING_ECHO_INT_ARRAY_61:
+    {
+      LOG_TRACE_FLOW("EchoTest::test18(THECHOROUTING_ECHO_INT_ARRAY_61)");
+      if(!_isServer(p))
+      {
+        LOG_FATAL("reply received on wrong port!!");
+        stop();
+      }
+      else
+      {
+        THEchoRoutingEchoIntArray61Event echo(e);
+
+        int numInts=61;
+        int i;
+        char strTemp[50];
+        string paramDump("[");
+        for(i=0;i<numInts-1;i++)
+        {
+          sprintf(strTemp,"%d,",echo.intArrayParam[i]);
+          paramDump += string(strTemp);
+        }
+        sprintf(strTemp,"%d]",echo.intArrayParam[i]);
+        paramDump += string(strTemp);
+        LOG_INFO(formatString("ECHO_INT_ARRAY_61 received on port %s (seqnr=%d, intArrayParam=%s)",p.getName().c_str(),echo.seqnr,paramDump.c_str()));
+
+        if(_seqnr != echo.seqnr)
+        {
+          LOG_FATAL("wrong seqnr received!!");
+          stop();
+        }
+        else
+        {
+          _seqnr++;
+          TRAN(EchoTest::final);
+        }
+      }
+      break;
+    }
+
+    case THECHO_ECHO_UINT:
+    case THECHO_ECHO_INT:
+    case THECHO_ECHO_LONG:
+    case THECHO_ECHO_ENUM:
+    case THECHO_ECHO_DOUBLE:
+    case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
+    case THECHOROUTING_ECHO_UINT:
+    case THECHOROUTING_ECHO_INT:
+    case THECHOROUTING_ECHO_LONG:
+    case THECHOROUTING_ECHO_ENUM:
+    case THECHOROUTING_ECHO_DOUBLE:
+    case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
+    case THECHO_ECHO_INT_ARRAY_20:
+    case THECHO_ECHO_INT_ARRAY_61:
+    case THECHOROUTING_ECHO_INT_ARRAY_20:
+//    case THECHOROUTING_ECHO_INT_ARRAY_61:
+      LOG_FATAL("wrong echo received!!");
+      stop();
+      break;
+    
+    case F_DISCONNECTED:
+      LOG_TRACE_FLOW("EchoTest::test18(F_DISCONNECTED)");
       TRAN(EchoTest::initial);
       break;
 
@@ -1047,11 +1618,17 @@ GCFEvent::TResult EchoTest::final(GCFEvent& e, GCFPortInterface& /*p*/)
     case THECHO_ECHO_UINT:
     case THECHO_ECHO_INT:
     case THECHO_ECHO_LONG:
+    case THECHO_ECHO_ENUM:
+    case THECHO_ECHO_DOUBLE:
     case THECHO_ECHO_STRING:
+    case THECHO_ECHO_INT_ARRAY:
     case THECHOROUTING_ECHO_UINT:
     case THECHOROUTING_ECHO_INT:
     case THECHOROUTING_ECHO_LONG:
+    case THECHOROUTING_ECHO_ENUM:
+    case THECHOROUTING_ECHO_DOUBLE:
     case THECHOROUTING_ECHO_STRING:
+    case THECHOROUTING_ECHO_INT_ARRAY:
       LOG_FATAL("wrong echo received!!");
       stop();
       break;
diff --git a/MAC/Test/TestHarness/THEcho/test/THEchoTest.h b/MAC/Test/TestHarness/THEcho/test/THEchoTest.h
index 0ffdb8e4d8957633afcb5e76691604bec875db2c..fd7d6d8049f750a355e2d7b2d3d62186b9ce984d 100644
--- a/MAC/Test/TestHarness/THEcho/test/THEchoTest.h
+++ b/MAC/Test/TestHarness/THEcho/test/THEchoTest.h
@@ -69,6 +69,11 @@ class EchoTest : public GCFTask
   GCFEvent::TResult test11(GCFEvent& e, GCFPortInterface& p);
   GCFEvent::TResult test12(GCFEvent& e, GCFPortInterface& p);
   GCFEvent::TResult test13(GCFEvent& e, GCFPortInterface& p);
+  GCFEvent::TResult test14(GCFEvent& e, GCFPortInterface& p);
+  GCFEvent::TResult test15(GCFEvent& e, GCFPortInterface& p);
+  GCFEvent::TResult test16(GCFEvent& e, GCFPortInterface& p);
+  GCFEvent::TResult test17(GCFEvent& e, GCFPortInterface& p);
+  GCFEvent::TResult test18(GCFEvent& e, GCFPortInterface& p);
   GCFEvent::TResult final(GCFEvent& e, GCFPortInterface& p);
 
 private: