diff --git a/simulators/c++2/src_simulator/app/TMLChannel.h b/simulators/c++2/src_simulator/app/TMLChannel.h
index c0591a3e5291ffecb2165612d711fdde94fff3df..d2f7b5fa5ccd3c3233b5b95c2c355eefa4bc2372 100644
--- a/simulators/c++2/src_simulator/app/TMLChannel.h
+++ b/simulators/c++2/src_simulator/app/TMLChannel.h
@@ -172,9 +172,20 @@ public:
     */ 
 	inline virtual TMLLength insertSamples(TMLLength iNbOfSamples, Parameter* iParam) {return iNbOfSamples;}
 
+	///Writes samples into the channel
+	/**
+	\param iNbOfSamples Number of samples to write
+	\param iParam Parameter to write
+    */ 
+	inline virtual TMLLength writeSamples(TMLLength iNbOfSamples, Parameter* iParam) {return iNbOfSamples;}
 
-
-
+	///Reads samples from the channel
+	/**
+	\param iNbOfSamples Number of samples to read
+	\param iParam Parameter to read
+    */ 
+	inline virtual TMLLength readSamples(TMLLength iNbOfSamples, Parameter* iParam) {return iNbOfSamples;}
+	
 	///Writes XML information about the component to a stream
 	/**
       	\param s Reference to an output stream
diff --git a/simulators/c++2/src_simulator/app/TMLEventBChannel.h b/simulators/c++2/src_simulator/app/TMLEventBChannel.h
index abf9cb7523930b2fe701dcc17aa69af61f5577e4..367102c34f74cafefd893e2974a98c892b2089c8 100644
--- a/simulators/c++2/src_simulator/app/TMLEventBChannel.h
+++ b/simulators/c++2/src_simulator/app/TMLEventBChannel.h
@@ -231,7 +231,77 @@ public:
 		return aNbToInsert;
 	}
 
+	TMLLength writeSamples(TMLLength iNbOfSamples, Parameter* iParam){
+  		TMLLength aNbToInsert = iNbOfSamples; 
 
+	#ifdef LOSS_ENABLED
+		if (this->_maxNbOfLosses > this->_nbOfLosses && this->_lossRate!=0 && myrand(0,99) < this->_lossRate){
+			this->_nbOfLosses++;
+		}else{
+	#endif
+			
+			if (aNbToInsert>0){		
+				this->_content+=aNbToInsert;
+				iParam = this->_writeTrans->getCommand()->setParams(0);
+				for (TMLLength i=0; i<aNbToInsert; i++) this->_paramQueue.push_back(iParam);
+	#ifdef STATE_HASH_ENABLED
+				iParam->getStateHash(& this->_stateHash);  //new in if
+	#endif
+			}
+			if (this->_readTrans!=0 && this->_readTrans->getVirtualLength()==0){
+				this->_readTrans->setRunnableTime(this->_writeTrans->getEndTime());
+				this->_readTrans->setChannel(this);
+				this->_readTrans->setVirtualLength(WAIT_SEND_VLEN);
+			}
+	#ifdef LOSS_ENABLED
+		}
+	#endif
+	#ifdef LISTENERS_ENABLED
+		NOTIFY_WRITE_TRANS_EXECUTED(this->_writeTrans);
+	#endif
+		this->_writeTrans=0; //TEST 
+  
+  		std::cout << "\nWriting in EventB Channel: " << aNbToInsert << ";" << std::endl;
+  		std::cout << "\n_content: " << this->_content << ";" << std::endl;
+  		return aNbToInsert;
+	}
+
+
+	TMLLength readSamples(TMLLength iNbOfSamples, Parameter* iParam){
+    		TMLLength aNbToInsert = iNbOfSamples;  
+    		
+    		if (this->_content<1){
+    			aNbToInsert = 0;
+			return aNbToInsert;
+		}else{
+			if (this->_content==0 && _sourceIsFile) readNextEvents();
+			if (aNbToInsert>0 && this->_content>=iNbOfSamples){
+				this->_content-=aNbToInsert;
+				for (TMLLength i=0; i<aNbToInsert; i++){
+					this->_readTrans->getCommand()->setParams(this->_paramQueue.front());
+					delete dynamic_cast<SizedParameter<T,paramNo>*>(this->_paramQueue.front());
+					this->_paramQueue.pop_front();  //NEW
+				}
+			}else if (aNbToInsert>0 && this->_content<iNbOfSamples){
+				aNbToInsert = this->_content;
+				this->_content=0;
+				for (TMLLength i=0; i<aNbToInsert; i++){
+					this->_readTrans->getCommand()->setParams(this->_paramQueue.front());
+					delete dynamic_cast<SizedParameter<T,paramNo>*>(this->_paramQueue.front());
+					this->_paramQueue.pop_front();  //NEW
+				}
+			}
+	#ifdef STATE_HASH_ENABLED
+			this->_hashValid = false;
+	#endif
+			
+	#ifdef LISTENERS_ENABLED
+			NOTIFY_READ_TRANS_EXECUTED(this->_readTrans);
+	#endif
+			this->_readTrans=0;
+			return aNbToInsert;
+		}
+	}
 
 	protected:
 		void readNextEvents(){
diff --git a/simulators/c++2/src_simulator/app/TMLEventFBChannel.h b/simulators/c++2/src_simulator/app/TMLEventFBChannel.h
index d8fa24ece43d78d7ad5c4fdd90a287972d84ee54..4a6e4b9558f3b5fe5ae7faa1ca0a73537ce50fe7 100644
--- a/simulators/c++2/src_simulator/app/TMLEventFBChannel.h
+++ b/simulators/c++2/src_simulator/app/TMLEventFBChannel.h
@@ -175,6 +175,81 @@ public:
 		if (this->_readTrans!=0) this->_readTrans->setVirtualLength((this->_content>0)?WAIT_SEND_VLEN:0);
 		return aNbToInsert;
 	}
+	
+	TMLLength writeSamples(TMLLength iNbOfSamples, Parameter* iParam){
+  		TMLLength aNbToInsert = iNbOfSamples; 
+  
+  	#ifdef LOSS_ENABLED
+	  	if (this->_maxNbOfLosses > this->_nbOfLosses && this->_lossRate!=0 && (unsigned int)myrand(0,99) < this->_lossRate){
+			this->_nbOfLosses++;
+		} else {
+	#endif
+			
+			if (aNbToInsert>0){
+				this->_content+=aNbToInsert;
+				for (TMLLength i=0; i<aNbToInsert; i++) this->_paramQueue.push_back(iParam);
+	#ifdef STATE_HASH_ENABLED
+				iParam->getStateHash(& this->_stateHash);   //NEW in if
+	#endif
+			}
+			if (this->_readTrans!=0 && this->_readTrans->getVirtualLength()==0){
+				this->_readTrans->setRunnableTime(this->_writeTrans->getEndTime());
+				this->_readTrans->setChannel(this);
+				this->_readTrans->setVirtualLength(WAIT_SEND_VLEN);
+			}
+	#ifdef LOSS_ENABLED
+		}
+	#endif	
+		
+	#ifdef LISTENERS_ENABLED
+		NOTIFY_WRITE_TRANS_EXECUTED(this->_writeTrans);
+	#endif
+		this->_writeTrans=0; //TEST 
+  
+  		std::cout << "\nWriting in EventFB Channel: " << aNbToInsert << ";" << std::endl;
+  		std::cout << "\n_content: " << this->_content << ";" << std::endl;
+  		return aNbToInsert;
+	}
+
+
+	TMLLength readSamples(TMLLength iNbOfSamples, Parameter* iParam){
+    		TMLLength aNbToInsert = iNbOfSamples;  
+    		
+    		if (this->_content<1){
+    			aNbToInsert = 0;
+			return aNbToInsert;
+		}else{
+			if (aNbToInsert>0 && this->_content>=iNbOfSamples){
+				this->_content-=aNbToInsert;
+				for (TMLLength i=0; i<aNbToInsert; i++){
+					this->_readTrans->getCommand()->setParams(this->_paramQueue.front());
+					delete dynamic_cast<SizedParameter<T,paramNo>*>(this->_paramQueue.front());
+					this->_paramQueue.pop_front();  //NEW
+				}
+			}else if (aNbToInsert>0 && this->_content<iNbOfSamples){
+				aNbToInsert = this->_content;
+				this->_content=0;
+				for (TMLLength i=0; i<aNbToInsert; i++){
+					this->_readTrans->getCommand()->setParams(this->_paramQueue.front());
+					delete dynamic_cast<SizedParameter<T,paramNo>*>(this->_paramQueue.front());
+					this->_paramQueue.pop_front();  //NEW
+				}
+			}
+	#ifdef STATE_HASH_ENABLED
+			this->_hashValid = false;
+	#endif
+			if (this->_writeTrans!=0 && this->_writeTrans->getVirtualLength()==0){
+				this->_writeTrans->setRunnableTime(this->_readTrans->getEndTime());
+				this->_writeTrans->setChannel(this);
+				this->_writeTrans->setVirtualLength(WAIT_SEND_VLEN);
+			}
+	#ifdef LISTENERS_ENABLED	
+			NOTIFY_READ_TRANS_EXECUTED(this->_readTrans);
+	#endif
+			this->_readTrans=0;
+			return aNbToInsert;
+		}
+	}
 protected:
 	///Length of the channel
 	TMLLength _length;
diff --git a/simulators/c++2/src_simulator/app/TMLEventFChannel.h b/simulators/c++2/src_simulator/app/TMLEventFChannel.h
index 4100f9215c653f19d1ce5efdb315b6ce6120f110..8d8a5caba8530489f3e133be40b761628c6864d0 100644
--- a/simulators/c++2/src_simulator/app/TMLEventFChannel.h
+++ b/simulators/c++2/src_simulator/app/TMLEventFChannel.h
@@ -168,6 +168,75 @@ public:
 		if (this->_readTrans!=0) this->_readTrans->setVirtualLength((this->_content>0)?WAIT_SEND_VLEN:0);
 		return aNbToInsert;
 	}
+	
+	TMLLength writeSamples(TMLLength iNbOfSamples, Parameter* iParam){
+  		TMLLength aNbToInsert = iNbOfSamples; 
+
+		if (this->_content<_length){		
+	#ifdef LOSS_ENABLED
+			if (this->_maxNbOfLosses > this->_nbOfLosses && this->_lossRate!=0 && myrand(0,99) < this->_lossRate){
+				this->_nbOfLosses++;
+			}else{
+	#endif
+				if (aNbToInsert>0){
+					this->_content+=aNbToInsert;
+					for (TMLLength i=0; i<aNbToInsert; i++) this->_paramQueue.push_back(iParam);
+	#ifdef STATE_HASH_ENABLED
+					iParam->getStateHash(& this->_stateHash);	//new in if
+	#endif
+				}
+				if (this->_readTrans!=0 && this->_readTrans->getVirtualLength()==0){
+					this->_readTrans->setRunnableTime(this->_writeTrans->getEndTime());
+					this->_readTrans->setChannel(this);
+					this->_readTrans->setVirtualLength(WAIT_SEND_VLEN);
+				}
+	#ifdef LOSS_ENABLED
+			}
+	#endif
+		}
+	#ifdef LISTENERS_ENABLED
+		NOTIFY_WRITE_TRANS_EXECUTED(this->_writeTrans);
+	#endif
+		this->_writeTrans=0; //TEST 
+  
+  		std::cout << "\nWriting in EventF Channel: " << aNbToInsert << ";" << std::endl;
+  		std::cout << "\n_content: " << this->_content << ";" << std::endl;
+  		return aNbToInsert;
+	}
+	
+	TMLLength readSamples(TMLLength iNbOfSamples, Parameter* iParam){
+    		TMLLength aNbToInsert = iNbOfSamples;  
+    		if (this->_content<1){
+			aNbToInsert = 0;
+			return aNbToInsert;
+		}else{
+			if (aNbToInsert>0 && this->_content>=iNbOfSamples){
+				this->_content-=aNbToInsert;
+				for (TMLLength i=0; i<aNbToInsert; i++){
+					this->_readTrans->getCommand()->setParams(this->_paramQueue.front());
+					delete dynamic_cast<SizedParameter<T,paramNo>*>(this->_paramQueue.front());
+					this->_paramQueue.pop_front();  //NEW
+				}
+			}else if (aNbToInsert>0 && this->_content<iNbOfSamples){
+				aNbToInsert = this->_content;
+				this->_content=0;
+				for (TMLLength i=0; i<aNbToInsert; i++){
+					this->_readTrans->getCommand()->setParams(this->_paramQueue.front());
+					delete dynamic_cast<SizedParameter<T,paramNo>*>(this->_paramQueue.front());
+					this->_paramQueue.pop_front();  //NEW
+				}
+			}
+	#ifdef STATE_HASH_ENABLED
+			this->_hashValid = false;
+	#endif
+	#ifdef LISTENERS_ENABLED
+			NOTIFY_READ_TRANS_EXECUTED(this->_readTrans);
+	#endif
+			this->_readTrans=0;
+			return aNbToInsert;
+		}
+
+	}
 protected:
 	///Length of the channel
 	TMLLength _length;
diff --git a/simulators/c++2/src_simulator/app/TMLbrbwChannel.cpp b/simulators/c++2/src_simulator/app/TMLbrbwChannel.cpp
index b9f0c929b32ae5ae644ea28614fdd5189cfabb34..85acbc5a6576802b623b2334921627d2d26bee15 100644
--- a/simulators/c++2/src_simulator/app/TMLbrbwChannel.cpp
+++ b/simulators/c++2/src_simulator/app/TMLbrbwChannel.cpp
@@ -207,3 +207,60 @@ TMLLength TMLbrbwChannel::insertSamples(TMLLength iNbOfSamples, Parameter* iPara
   setTransactionLength();
   return aNbToInsert;
 }
+
+TMLLength TMLbrbwChannel::writeSamples(TMLLength iNbOfSamples, Parameter* iParam){
+  TMLLength aNbToInsert = iNbOfSamples;  
+  
+  #ifdef LOSS_ENABLED
+  if (_maxNbOfLosses > _nbOfLosses){
+    TMLLength aLostBytes = iNbOfSamples * _lossRate + _lossRemainder;
+    _lossRemainder = aLostBytes % 100;
+    aLostBytes = min(aLostBytes/100, _maxNbOfLosses - _nbOfLosses);
+    _content += aNbToInsert - aLostBytes;
+    _nbOfLosses +=  aLostBytes;
+  } else {
+#endif
+    	_content+=aNbToInsert;
+#ifdef LOSS_ENABLED
+  }
+#endif
+  if (_readTrans!=0 && _readTrans->getVirtualLength()==0){
+  	  _readTrans->setRunnableTime(_writeTrans->getEndTime());
+          _readTrans->setVirtualLength(min(_content,_nbToRead));
+          _overflow=false;
+  }
+  _nbToWrite=0;
+  //FOR_EACH_TRANSLISTENER (*i)->transExecuted(_writeTrans);
+#ifdef LISTENERS_ENABLED
+  NOTIFY_WRITE_TRANS_EXECUTED(_writeTrans);
+#endif
+  _writeTrans=0;
+  
+
+  std::cout << "\nWriting in brbw Channel: " << aNbToInsert << ";" << std::endl;
+  std::cout << "\n_content: " << _content << ";" << std::endl;
+  return aNbToInsert;
+}
+
+
+TMLLength TMLbrbwChannel::readSamples(TMLLength iNbOfSamples, Parameter* iParam){
+    TMLLength aNbToInsert = iNbOfSamples;  
+    if (_content<aNbToInsert){
+    	aNbToInsert=0;
+    	return aNbToInsert;
+  } else {
+    _content-=aNbToInsert;
+    _nbToRead=0;
+    if (_writeTrans!=0 && _writeTrans->getVirtualLength()==0){
+    	    _writeTrans->setRunnableTime(_readTrans->getEndTime());
+            _writeTrans->setVirtualLength(min(_length-_content,_nbToWrite));
+            _underflow=false;
+    }
+    //FOR_EACH_TRANSLISTENER (*i)->transExecuted(_readTrans);
+#ifdef LISTENERS_ENABLED
+    NOTIFY_READ_TRANS_EXECUTED(_readTrans);
+#endif
+    _readTrans=0;
+    return aNbToInsert;
+  }
+}
diff --git a/simulators/c++2/src_simulator/app/TMLbrbwChannel.h b/simulators/c++2/src_simulator/app/TMLbrbwChannel.h
index 085663e034155078195d48ced968ae7a17ba9530..994d314f466d746f436b256cf3e59bb668e9446f 100644
--- a/simulators/c++2/src_simulator/app/TMLbrbwChannel.h
+++ b/simulators/c++2/src_simulator/app/TMLbrbwChannel.h
@@ -74,6 +74,8 @@ public:
 	inline TMLTask* getBlockedWriteTask() const {return _writeTask;}
 	std::string toString() const;
 	virtual TMLLength insertSamples(TMLLength iNbOfSamples, Parameter* iParam);
+	virtual TMLLength writeSamples(TMLLength iNbOfSamples, Parameter* iParam);
+	virtual TMLLength readSamples(TMLLength iNbOfSamples, Parameter* iParam);
 protected:
 	///Determines the virtual length of read and write transactions based on the state of the channel
 	void setTransactionLength() const;
diff --git a/simulators/c++2/src_simulator/app/TMLbrnbwChannel.cpp b/simulators/c++2/src_simulator/app/TMLbrnbwChannel.cpp
index e284eed28022917ec2237293fe0cb30694a20269..f218629a0674dbfe6684d884cba56d8d59acbaa7 100644
--- a/simulators/c++2/src_simulator/app/TMLbrnbwChannel.cpp
+++ b/simulators/c++2/src_simulator/app/TMLbrnbwChannel.cpp
@@ -167,3 +167,58 @@ TMLLength TMLbrnbwChannel::insertSamples(TMLLength iNbOfSamples, Parameter* iPar
 	return aNbToInsert;
 }
 
+
+
+TMLLength TMLbrnbwChannel::writeSamples(TMLLength iNbOfSamples, Parameter* iParam){
+  TMLLength aNbToInsert = iNbOfSamples; 
+#ifdef LOSS_ENABLED
+	if (_maxNbOfLosses > _nbOfLosses){
+		TMLLength aLostBytes = aNbToInsert * _lossRate + _lossRemainder;
+		_lossRemainder = aLostBytes % 100;
+		aLostBytes = min(aLostBytes/100, _maxNbOfLosses - _nbOfLosses);
+		_content += aNbToInsert - aLostBytes;
+		_nbOfLosses +=  aLostBytes;
+	}else{
+#endif
+		//std::cout << "write all  " << _writeTrans->getVirtualLength() << "\n";
+		_content+=aNbToInsert;
+#ifdef LOSS_ENABLED
+	}
+#endif	
+	if (_readTrans!=0 && _readTrans->getVirtualLength()==0){
+		_readTrans->setRunnableTime(_writeTrans->getEndTime());
+		_readTrans->setVirtualLength(min(_content,_nbToRead));
+		_overflow=false;
+	}
+	_nbToWrite=0;
+	//FOR_EACH_TRANSLISTENER (*i)->transExecuted(_writeTrans);
+#ifdef LISTENERS_ENABLED
+	NOTIFY_WRITE_TRANS_EXECUTED(_writeTrans);
+#endif
+	_writeTrans=0;
+	setTransactionLength();
+  
+  
+  std::cout << "\nWriting in brnbw Channel: " << aNbToInsert << ";" << std::endl;
+  std::cout << "\n_content: " << _content << ";" << std::endl;
+  return aNbToInsert;
+}
+
+
+TMLLength TMLbrnbwChannel::readSamples(TMLLength iNbOfSamples, Parameter* iParam){
+    TMLLength aNbToInsert = iNbOfSamples;  
+	if (_content<aNbToInsert){
+		aNbToInsert = 0; 
+		return aNbToInsert;
+	}else{
+		_content-=aNbToInsert;
+		_nbToRead=0;
+		//FOR_EACH_TRANSLISTENER (*i)->transExecuted(_readTrans);
+#ifdef LISTENERS_ENABLED
+		NOTIFY_READ_TRANS_EXECUTED(_readTrans);
+#endif
+		_readTrans=0;
+		return aNbToInsert;
+	}
+}
+
diff --git a/simulators/c++2/src_simulator/app/TMLbrnbwChannel.h b/simulators/c++2/src_simulator/app/TMLbrnbwChannel.h
index e2cd76879ac6c697623c1382f0a48456079da248..af779b29aaca49124261ee8e53f0de94359e0f05 100644
--- a/simulators/c++2/src_simulator/app/TMLbrnbwChannel.h
+++ b/simulators/c++2/src_simulator/app/TMLbrnbwChannel.h
@@ -72,6 +72,8 @@ public:
 	inline TMLTask* getBlockedWriteTask() const {return 0;}
 	std::string toString() const;
 	virtual TMLLength insertSamples(TMLLength iNbOfSamples, Parameter* iParam);
+	virtual TMLLength writeSamples(TMLLength iNbOfSamples, Parameter* iParam);
+	virtual TMLLength readSamples(TMLLength iNbOfSamples, Parameter* iParam);
 protected:
 	///Determines the virtual length of read and write transactions based on the state of the channel
 	void setTransactionLength() const;
diff --git a/simulators/c++2/src_simulator/sim/Simulator.cpp b/simulators/c++2/src_simulator/sim/Simulator.cpp
index 96626e271c8acb470c15893ae331c40e6f69db35..47273f242faf6a51020c4aa079fda0fffc94482c 100644
--- a/simulators/c++2/src_simulator/sim/Simulator.cpp
+++ b/simulators/c++2/src_simulator/sim/Simulator.cpp
@@ -981,7 +981,7 @@ bool Simulator::simulate(TMLTransaction*& oLastTrans){
   CPU* depCPU;
   FPGA* depFPGA;
 
-  bool isFinish=true;
+  bool isFinish=false;
 //  bool isHanging = false;
 //  long countMaxTrans = 0;
 
@@ -1014,8 +1014,9 @@ bool Simulator::simulate(TMLTransaction*& oLastTrans){
 #endif
 
 
-  if( transLET !=0 && _simComp->getStopFlag())
-    isFinish=false;
+  if( transLET ==0 && _simComp->getStopFlag()){
+    isFinish=true;
+  }
 
   while ( transLET!=0 && !_simComp->getStopFlag()){
 #ifdef DEBUG_SIMULATE
@@ -1032,6 +1033,9 @@ bool Simulator::simulate(TMLTransaction*& oLastTrans){
 	      isFinish = true;
 	      break;
 	      }
+      //   else{
+      //   isFinish = false;
+      // }
 	    int cnt = 0;
         int cnt1 = 0;
 	    for(TaskList::const_iterator i=_simComp->getNonDaemonTaskList().begin(); i != _simComp->getNonDaemonTaskList().end(); ++i){
@@ -1048,8 +1052,6 @@ bool Simulator::simulate(TMLTransaction*& oLastTrans){
 	    }
 	  }
 	}
-	else
-	  isFinish=false;
 
 
 #ifdef DEBUG_SIMULATE
@@ -1215,7 +1217,6 @@ bool Simulator::simulate(TMLTransaction*& oLastTrans){
   if(isFinish==true)
     aSimCompleted = true;
 
-
   if (aSimCompleted){
 #ifdef LISTENERS_ENABLED
     NOTIFY_SIM_STOPPED();
@@ -2511,7 +2512,7 @@ void Simulator::exploreTree(unsigned int iDepth, ID iPrevID, std::ofstream& iAUT
     std::cout << "run to next done" << std::endl;
     aRandomCmd = _simComp->getCurrentRandomCmd();
     //std::cout << "Random command:" << aRandomCmd <<std::endl;
-  }while (!aSimTerminated && aRandomCmd==0 && _simComp->wasKnownStateReached()==0);
+  }while (_simComp->getStopFlag()==false && !aSimTerminated && aRandomCmd==0 && _simComp->wasKnownStateReached()==0);
 #ifdef EXPLOGRAPH_ENABLED
   std::cout << "Explo graph AUT" << std::endl;
   aLastID = schedule2GraphAUT(iAUTFile, iPrevID,oTransCounter);
diff --git a/src/main/java/graph/AUTGraph.java b/src/main/java/graph/AUTGraph.java
index 353d5aaf3764a0f5798fe3a2c0d8150c9ec4a6ba..b57fa21fa9bcb797ec47e4f79afb7219229f5cd0 100755
--- a/src/main/java/graph/AUTGraph.java
+++ b/src/main/java/graph/AUTGraph.java
@@ -1751,7 +1751,7 @@ public class AUTGraph implements myutil.Graph {
     }
 
     public int getMaxValue(String nameOfTransition) {
-        int maxValue = -1;
+        int maxValue = 0;
         //System.out.println("executing. min value");
         for (AUTTransition tr : transitions) {
             //System.out.println("executing. Dealing with " + tr.transition);
diff --git a/src/main/resources/help/diplodocussimulator.html b/src/main/resources/help/diplodocussimulator.html
index e0546a72f1f28c66ff458105d75e248d9ddfa53c..a929b734b45a53325ef3ef552092f610199668e9 100644
--- a/src/main/resources/help/diplodocussimulator.html
+++ b/src/main/resources/help/diplodocussimulator.html
@@ -516,7 +516,7 @@ Not defined: &lt;unknow param&gt;</code></pre>
 <td style="text-align: center;">wic</td>
 <td style="text-align: center;">6</td>
 <td style="text-align: center;">Writes y samples / events to channel / event x</td>
-<td style="text-align: center;">[Type: 1] Channel ID</td>
+<td style="text-align: center;">[Type: 2] Channel ID or Channel name</td>
 <td style="text-align: center;">[Type: 2] Nb of samples</td>
 <td style="text-align: center;">-</td>
 <td style="text-align: center;">-</td>
@@ -555,6 +555,28 @@ Not defined: &lt;unknow param&gt;</code></pre>
 <td style="text-align: center;">-</td>
 <td style="text-align: center;">-</td>
 </tr>
+<tr class="odd">
+<td style="text-align: center;">write-samples-in-channel</td>
+<td style="text-align: center;">wsic</td>
+<td style="text-align: center;">29</td>
+<td style="text-align: center;">Writes y samples from channel x</td>
+<td style="text-align: center;">[Type: 2] Channel ID or Channel name</td>
+<td style="text-align: center;">[Type: 2] Nb of samples</td>
+<td style="text-align: center;">-</td>
+<td style="text-align: center;">-</td>
+<td style="text-align: center;">-</td>
+</tr>
+<tr class="even">
+<td style="text-align: center;">read-from-channel</td>
+<td style="text-align: center;">rfc</td>
+<td style="text-align: center;">30</td>
+<td style="text-align: center;">Reads y samples from channel x</td>
+<td style="text-align: center;">[Type: 2] Channel ID or Channel name</td>
+<td style="text-align: center;">[Type: 2] Nb of samples</td>
+<td style="text-align: center;">-</td>
+<td style="text-align: center;">-</td>
+<td style="text-align: center;">-</td>
+</tr>
 </tbody>
 </table>
 </body>
diff --git a/src/main/resources/help/diplodocussimulator.md b/src/main/resources/help/diplodocussimulator.md
index a0aca2dbfbf6e0d094123a3bb1a7f82ac05a2aa5..b681a01d915e6d4d1f131ac89625d1d2393c6ed4 100644
--- a/src/main/resources/help/diplodocussimulator.md
+++ b/src/main/resources/help/diplodocussimulator.md
@@ -89,8 +89,10 @@ save-trace-in-file | stif | 7 | Saves the current trace of the simulation in a V
 show-timeline-trace | stlt | 7 4 | Show the current timeline diagram trace in HTML format | [Type: 2] Task List | [Type: 1] Scale idle time: 0 -> no, 1 -> yes | [Type: 2] Start Time  | [Type: 2] End Time  | - 
 set-variable | sv | 5 | Set the value of a variable | [Type: 1] task ID | [Type: 1] variable ID | [Type: 1] variable value | -  | - 
 stop | stop | 15 | Stops the currently running simulation | -  | -  | -  | -  | - 
-write-in-channel | wic | 6 | Writes y samples / events to channel / event x | [Type: 1] Channel ID | [Type: 2] Nb of samples | -  | -  | - 
+write-in-channel | wic | 6 | Writes y samples / events to channel / event x | [Type: 2] Channel ID or Channel name | [Type: 2] Nb of samples | -  | -  | - 
 add-virtual-signals | avs | 1 16 | Send virtual events to channel | [Type: 2] Channel name | [Type: 2] Nb of samples | [Type: 2] value of samples | -  | - 
 save-status-in-file | ssif | 27 | Saves the current status into a file | [Type: 2] File name | -  | -  | -  | - 
 save-time-in-file | stf | 28 | Saves the current time into a file | [Type: 2] File name | -  | -  | -  | - 
+write-samples-in-channel | wsic | 29 | Writes y samples from channel x | [Type: 2] Channel ID or Channel name | [Type: 2] Nb of samples | -  | -  | - 
+read-from-channel | rfc | 30 | Reads y samples from channel x | [Type: 2] Channel ID or Channel name | [Type: 2] Nb of samples | -  | -  | - 
 
diff --git a/ttool/src/test/java/tmltranslator/DiplodocusSimulatorTest.java b/ttool/src/test/java/tmltranslator/DiplodocusSimulatorTest.java
index d7848fb2d3d4cc0239e03696ed53f101dd3d2ee0..2f975d2598550407e0ee795faafa72dd9a3d4b9e 100644
--- a/ttool/src/test/java/tmltranslator/DiplodocusSimulatorTest.java
+++ b/ttool/src/test/java/tmltranslator/DiplodocusSimulatorTest.java
@@ -39,8 +39,8 @@ public class DiplodocusSimulatorTest extends AbstractTest {
 
     // model for Daemon Run To Next Breakpoint
     final String MODELS_DAEMON_RTNB = "testDaemon";
-    final int [] DAEMON_RTNBP_1 = {11, 10, 85, 85};
-    final int [] DAEMON_RTNBP_2 = {18, 17, 168, 168};
+    final int [] DAEMON_RTNBP_1 = {10, 9, 2147483647, 0}; // 2147483647==-1
+    final int [] DAEMON_RTNBP_2 = {17, 16, 2147483647, 0}; // 2147483647==-1
     private String SIM_DIR;
 
     @BeforeClass