<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>telecom • networking • design</title>
	<atom:link href="http://blog.eventhelix.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.eventhelix.com</link>
	<description>an EventHelix.com blog</description>
	<lastBuildDate>Sat, 11 May 2013 02:29:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.eventhelix.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>telecom • networking • design</title>
		<link>http://blog.eventhelix.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.eventhelix.com/osd.xml" title="telecom • networking • design" />
	<atom:link rel='hub' href='http://blog.eventhelix.com/?pushpress=hub'/>
		<item>
		<title>FTP File Transfer Protocol Sequence Diagram</title>
		<link>http://blog.eventhelix.com/2013/05/10/ftp-file-transfer-protocolsequence-diagram/</link>
		<comments>http://blog.eventhelix.com/2013/05/10/ftp-file-transfer-protocolsequence-diagram/#comments</comments>
		<pubDate>Sat, 11 May 2013 02:20:30 +0000</pubDate>
		<dc:creator>eventhelix</dc:creator>
				<category><![CDATA[networking]]></category>
		<category><![CDATA[context diagram]]></category>
		<category><![CDATA[context diagrams]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[file transfer protocol]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[ftp file transfer]]></category>
		<category><![CDATA[ftp file transfer protocol]]></category>
		<category><![CDATA[sequence diagram]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[tcp ip]]></category>
		<category><![CDATA[tcp port 20]]></category>
		<category><![CDATA[tcp port 21]]></category>

		<guid isPermaLink="false">http://eventhelix.wordpress.com/?p=463</guid>
		<description><![CDATA[Here we explore the sequence of interactions in a typical FTP (File Transfer Protocol) session. The example here illustrates the use of multiple TCP connections by FTP. We will cover how FTP establishes a telnet TCP connection (TCP Port 21) &#8230; <a href="http://blog.eventhelix.com/2013/05/10/ftp-file-transfer-protocolsequence-diagram/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=463&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Here we explore the sequence of interactions in a typical FTP (File Transfer Protocol) session. The example here illustrates the use of multiple TCP connections by FTP. We will cover how FTP establishes a telnet TCP connection (TCP Port 21) to control the overall flow of the FTP transfer.</p>
<p>Then we examine the use of TCP Port 20 for establishing TCP connections for directory transfer and file retrieval.</p>
<p>The complete sequence diagram can be divided into the following steps:</p>
<ul>
<li>DNS Query to obtain the IP address for the FTP Server</li>
<li>FTP Telnet connection setup and login. (USER and PASS commands)</li>
<li>Obtaining a directory listing (PORT and LIST command)</li>
<li>Changing directory (CWD command)</li>
<li>Downloading a file using FTP get (PORT and RETR command)</li>
</ul>
<p>These phases are analyzed with sequence diagrams and context diagrams that provide multiple views of the FTP interactions.</p>
<h2>FTP protocol sequence diagram</h2>
<p><a href="http://www.eventhelix.com/realtimemantra/networking/ftp/"><img alt="" src="http://eventhelix.files.wordpress.com/2013/05/051113_0220_1.png?w=611" border="0" /></a></p>
<h2>FTP High Level Overview</h2>
<p><a href="http://www.eventhelix.com/realtimemantra/networking/ftp/ftp-high-level-sequence-diagram.htm"><img alt="" src="http://eventhelix.files.wordpress.com/2013/05/051113_0220_2.png?w=611" border="0" /></a></p>
<h2>FTP control port (TCP port 21) handling</h2>
<p><a href="http://www.eventhelix.com/realtimemantra/networking/ftp/FTP_Port_21.htm"><img alt="" src="http://eventhelix.files.wordpress.com/2013/05/051113_0220_3.png?w=611" border="0" /></a></p>
<h2>FTP data port (TCP port 20) handling</h2>
<p><a href="http://www.eventhelix.com/realtimemantra/networking/ftp/FTP_Port_20.htm"><img alt="" src="http://eventhelix.files.wordpress.com/2013/05/051113_0220_4.png?w=611" border="0" /></a></p>
<h2>FTP context diagram</h2>
<p><a href="http://www.eventhelix.com/realtimemantra/networking/ftp/ftp-context-diagram.htm"><img alt="" src="http://eventhelix.files.wordpress.com/2013/05/051113_0220_5.png?w=611" border="0" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventhelix.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventhelix.wordpress.com/463/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=463&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventhelix.com/2013/05/10/ftp-file-transfer-protocolsequence-diagram/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bfebcf0a91fc0e34658d374c3489dd66?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deepsandahlu</media:title>
		</media:content>

		<media:content url="http://eventhelix.files.wordpress.com/2013/05/051113_0220_1.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/05/051113_0220_2.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/05/051113_0220_3.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/05/051113_0220_4.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/05/051113_0220_5.png" medium="image" />
	</item>
		<item>
		<title>LTE X2 Handover Sequence Diagrams</title>
		<link>http://blog.eventhelix.com/2013/04/20/lte-x2-handover-sequence-diagrams/</link>
		<comments>http://blog.eventhelix.com/2013/04/20/lte-x2-handover-sequence-diagrams/#comments</comments>
		<pubDate>Sun, 21 Apr 2013 02:32:57 +0000</pubDate>
		<dc:creator>eventhelix</dc:creator>
				<category><![CDATA[telecom]]></category>
		<category><![CDATA[3gpp]]></category>
		<category><![CDATA[call flow]]></category>
		<category><![CDATA[enodeb]]></category>
		<category><![CDATA[handover]]></category>
		<category><![CDATA[lte]]></category>
		<category><![CDATA[mme]]></category>
		<category><![CDATA[path changes]]></category>
		<category><![CDATA[radio resource]]></category>
		<category><![CDATA[rrc]]></category>
		<category><![CDATA[seamless handover]]></category>
		<category><![CDATA[sequence diagram]]></category>
		<category><![CDATA[sequence diagrams]]></category>
		<category><![CDATA[signaling]]></category>
		<category><![CDATA[x2]]></category>
		<category><![CDATA[x2ap]]></category>

		<guid isPermaLink="false">http://eventhelix.wordpress.com/?p=449</guid>
		<description><![CDATA[Let&#8217;s examine the X2 Handover in detail. We look at the X2 handover signaling procedure through sequence diagrams that focus on different aspects of the procedure. The sequence diagrams presented here were generated with EventStudio System Designer. LTE X2 Handover &#8230; <a href="http://blog.eventhelix.com/2013/04/20/lte-x2-handover-sequence-diagrams/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=449&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Let&#8217;s examine the X2 Handover in detail. We look at the <a title="LTE X2 interface sequence diagrams" href="http://www.eventhelix.com/lte/handover/x2/lte-x2-handover-sequence-diagram.htm">X2 handover signaling procedure through sequence diagrams</a> that focus on different aspects of the procedure.</p>
<p>The sequence diagrams presented here were generated with <a href="http://www.eventhelix.com/EventStudio/">EventStudio System Designer</a>.</p>
<h2><span style="color:#0563c1;">LTE X2 Handover</span></h2>
<p>Full signaling details are presented here.</p>
<p><a href="http://www.eventhelix.com/lte/handover/x2/lte-x2-handover-sequence-diagram.htm"><img alt="" src="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov1.png?w=611" border="0" /></a></p>
<h2><span style="color:#0563c1;">Overview</span></h2>
<p>Now we examine the same flow at a higher level of abstraction. The diagram focuses on the interactions between the mobile, eNodeBs and the MME/SGW.</p>
<p><a href="http://www.eventhelix.com/lte/handover/x2/lte-x2-handover-high-level-flow.htm"><img alt="" src="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov2.png?w=611" border="0" /></a></p>
<h2><span style="color:#0563c1;">UE Interactions</span></h2>
<p>We now explore the signaling procedures that involve the UE.</p>
<p><a href="http://www.eventhelix.com/lte/handover/x2/lte-x2-handover-ue-interactions.htm"><img alt="" src="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov3.png?w=611" border="0" /></a></p>
<h2><span style="color:#0563c1;">Source eNodeB Role</span></h2>
<p>Examine the interactions that involve the eNodeB that initiated the handover.</p>
<p><a href="http://www.eventhelix.com/lte/handover/x2/lte-x2-handover-source-enodeb-flow.htm"><img alt="" src="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov4.png?w=611" border="0" /></a></p>
<h2><span style="color:#0563c1;">Target eNodeB Role</span></h2>
<p>We now look at the interactions involving the eNodeB that will be serving the UE after the handover.</p>
<p><a href="http://www.eventhelix.com/lte/handover/x2/lte-x2-handover-target-enodeb-msc.htm"><img alt="" src="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov5.png?w=611" border="0" /></a></p>
<h2><span style="color:#0563c1;">RRC Signaling the X2 Handover</span></h2>
<p>The Radio Resource Control (RRC) signaling between the UE and the eNodeBs is covered here.</p>
<p><a href="http://www.eventhelix.com/lte/handover/x2/lte-x2-handover-rrc-signaling-flow.htm"><img alt="" src="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov6.png?w=611" border="0" /></a></p>
<h2><span style="color:#0563c1;">X2AP Signaling Between eNodeBs</span></h2>
<p>X2AP is used for signaling between the eNodeBs. Here we examine the X2AP interactions.</p>
<p><a href="http://www.eventhelix.com/lte/handover/x2/lte-x2-handover-x2ap-signaling-flow.htm"><img alt="" src="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov7.png?w=611" /></a></p>
<h2><span style="color:#0563c1;">Data Path Changes During an X2 Handover</span></h2>
<p>The data path switching goes through several steps to accomplish a seamless handover.</p>
<p><a href="http://www.eventhelix.com/lte/handover/x2/lte-x2-handover-data-path-changes.htm"><img alt="" src="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov8.png?w=611" border="0" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventhelix.wordpress.com/449/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventhelix.wordpress.com/449/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=449&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventhelix.com/2013/04/20/lte-x2-handover-sequence-diagrams/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bfebcf0a91fc0e34658d374c3489dd66?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deepsandahlu</media:title>
		</media:content>

		<media:content url="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov1.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov2.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov3.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov4.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov5.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov6.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov7.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/04/042113_0232_ltex2handov8.png" medium="image" />
	</item>
		<item>
		<title>LTE X2 Handover Between eNodeBs Served by the same MME</title>
		<link>http://blog.eventhelix.com/2013/04/07/lte-x2-handover-between-enodebs-served-by-the-same-mme/</link>
		<comments>http://blog.eventhelix.com/2013/04/07/lte-x2-handover-between-enodebs-served-by-the-same-mme/#comments</comments>
		<pubDate>Sun, 07 Apr 2013 14:35:10 +0000</pubDate>
		<dc:creator>eventhelix</dc:creator>
				<category><![CDATA[telecom]]></category>
		<category><![CDATA[3gpp]]></category>
		<category><![CDATA[enodeb]]></category>
		<category><![CDATA[handover]]></category>
		<category><![CDATA[lte]]></category>
		<category><![CDATA[pdcp]]></category>
		<category><![CDATA[rrc]]></category>
		<category><![CDATA[s1ap]]></category>
		<category><![CDATA[sequence diagram]]></category>
		<category><![CDATA[signaling]]></category>
		<category><![CDATA[x2]]></category>
		<category><![CDATA[x2ap]]></category>

		<guid isPermaLink="false">http://eventhelix.wordpress.com/?p=437</guid>
		<description><![CDATA[LTE eNodeBs can directly communicate with other eNodeBs on the X2 interface. The X2 interface is used to perform a handover between eNodeB. The messaging in X2 handover is detailed in LTE X2 Handover Presentation. A few excerpts from the &#8230; <a href="http://blog.eventhelix.com/2013/04/07/lte-x2-handover-between-enodebs-served-by-the-same-mme/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=437&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>LTE eNodeBs can directly communicate with other eNodeBs on the X2 interface. The X2 interface is used to perform a handover between eNodeB.</p>
<p>The messaging in X2 handover is detailed in <a href="http://www.eventhelix.com/lte/handover/LTE-X2-Handover-Messaging.pdf">LTE X2 Handover Presentation</a>. A few excerpts from the presentation as shown below.</p>
<h2>X2 Handover Sequence Diagram</h2>
<p>The X2 handover flow is shown in the following sequence diagram:</p>
<p><img alt="" src="http://eventhelix.files.wordpress.com/2013/04/040713_1435_ltex2handov1.png?w=611" /></p>
<p><span style="color:#44546a;font-size:9pt;"><em>Figure 1 X2 Handover Sequence Diagram<br />
</em></span></p>
<h2>Handover Preparation</h2>
<p>The handover procedure is triggered by the X2AP Handover Request message. The RABs to be handover over are sent from the source eNodeB to the target eNodeB.</p>
<p><img alt="" src="http://eventhelix.files.wordpress.com/2013/04/040713_1435_ltex2handov2.png?w=611" /></p>
<p><span style="color:#44546a;font-size:9pt;"><em>Figure 2X2AP Handover Request<br />
</em></span></p>
<p>The target eNodeB then admits the user and responds with X2AP Handover Request Acknowledge message. This message contains a transparent container that carries the Handover Command message that needs to be sent to the UE.</p>
<p><img alt="" src="http://eventhelix.files.wordpress.com/2013/04/040713_1435_ltex2handov3.png?w=611" /></p>
<p><span style="color:#44546a;font-size:9pt;"><em>Figure 3 X2AP Handover Request Acknowledge<br />
</em></span></p>
<p>The source eNodeB sends the handover command to the UE. It then sends sequence number information to the target eNodeB.</p>
<p>The target eNodeB then requests the MME to switch the path from the source eNodeB to target eNodeB.</p>
<h2>Handover Execution</h2>
<p><img alt="" src="http://eventhelix.files.wordpress.com/2013/04/040713_1435_ltex2handov4.png?w=611" /></p>
<p><span style="color:#44546a;font-size:9pt;"><em>Figure 4 S1AP Path Switch Request<br />
</em></span></p>
<p>This was an overview of the messaging involved in the X2 handover. For details refer to the <a href="http://www.eventhelix.com/lte/handover/LTE-X2-Handover-Messaging.pdf">LTE X2 Handover Presentation</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventhelix.wordpress.com/437/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventhelix.wordpress.com/437/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=437&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventhelix.com/2013/04/07/lte-x2-handover-between-enodebs-served-by-the-same-mme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bfebcf0a91fc0e34658d374c3489dd66?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deepsandahlu</media:title>
		</media:content>

		<media:content url="http://eventhelix.files.wordpress.com/2013/04/040713_1435_ltex2handov1.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/04/040713_1435_ltex2handov2.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/04/040713_1435_ltex2handov3.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/04/040713_1435_ltex2handov4.png" medium="image" />
	</item>
		<item>
		<title>What’s New in EventStudio System Designer 6</title>
		<link>http://blog.eventhelix.com/2013/03/03/whats-new-in-eventstudio-system-designer-6/</link>
		<comments>http://blog.eventhelix.com/2013/03/03/whats-new-in-eventstudio-system-designer-6/#comments</comments>
		<pubDate>Sun, 03 Mar 2013 19:46:55 +0000</pubDate>
		<dc:creator>eventhelix</dc:creator>
				<category><![CDATA[announcement]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[eventstudio]]></category>
		<category><![CDATA[call flow]]></category>
		<category><![CDATA[message sequence chart]]></category>
		<category><![CDATA[sequence diagram]]></category>
		<category><![CDATA[tracing]]></category>
		<category><![CDATA[use case diagram]]></category>

		<guid isPermaLink="false">http://eventhelix.wordpress.com/?p=407</guid>
		<description><![CDATA[Introducing EventStudio System Designer 6. A free 45 day trial is available for download. New features in the release: Message endpoint tagging Specify tags Tag the message source and destinations. This can be used to identify the endpoint port numbers, &#8230; <a href="http://blog.eventhelix.com/2013/03/03/whats-new-in-eventstudio-system-designer-6/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=407&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Introducing <a title="Sequence diagram based system modeling tool" href="http://www.eventhelix.com/EventStudio/">EventStudio System Designer 6</a>. A free 45 day trial is available for <a title="Download a 45 day free trial of EventStudio System Designer 6" href="http://www.eventhelix.com/EventStudio/download.htm">download</a>.</p>
<p>New features in the release:</p>
<h1>Message endpoint tagging</h1>
<h2>Specify tags</h2>
<p>Tag the message source and destinations. This can be used to identify the endpoint port numbers, and specify the protocol layer or software entities.<span style="text-decoration:underline;"><br />
</span></p>
<div>
<table style="border-collapse:collapse;" border="0">
<col style="width:234px;" />
<col style="width:390px;" />
<tbody valign="top">
<tr>
<td style="padding-left:7px;padding-right:7px;"><img alt="" src="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine1.png?w=611" /></td>
<td style="padding-left:7px;padding-right:7px;" valign="middle"><span style="font-family:Consolas;font-size:10pt;"><span style="color:red;">&#8220;BSSMAP PAGING&#8221;</span>: A-bssmap -&gt; B-bssmap</span></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><img alt="" src="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine2.png?w=611" /></td>
<td style="padding-left:7px;padding-right:7px;" valign="middle"><span style="font-family:Consolas;font-size:10pt;">HTTPGet : Client -&gt; Server-<span style="color:red;">&#8220;80&#8243;</span></span></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><img alt="" src="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine3.png?w=611" /></td>
<td style="padding-left:7px;padding-right:7px;" valign="middle"><span style="font-family:Consolas;font-size:10pt;">Cascade : A-rr -&gt; B-cc -&gt; C-<span style="color:red;">&#8220;80&#8243;</span></span></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><img alt="" src="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine4.png?w=611" /></td>
<td style="padding-left:7px;padding-right:7px;" valign="middle"><span style="font-family:Consolas;font-size:10pt;">A-bcch <span style="color:#0070c0;">multicasts </span>SI <span style="color:#0070c0;">to </span>B-bcch, C-bcch</span></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><img alt="" src="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine5.png?w=611" /></td>
<td style="padding-left:7px;padding-right:7px;" valign="middle"><span style="font-family:Consolas;font-size:10pt;">Cascade : A-cc -&gt; B-cc -&gt; C-rr</span></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><img alt="" src="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine6.png?w=611" /></td>
<td style="padding-left:7px;padding-right:7px;" valign="middle"><span style="font-family:Consolas;font-size:10pt;"><span style="color:#0070c0;">chain</span><br />
Chain1(par1,param2,param3):A-cc-&gt; B-cc<br />
Chain2: B-cc -&gt; C-rr<br />
<span style="color:#0070c0;">endchain</span></span></td>
</tr>
</tbody>
</table>
</div>
<h2>Style tags</h2>
<p>Each type of tag can be individually formatted. The color, font and font size may be specified. The styles for tags should be named as &lt;tag&gt;_tag_style. A few examples are shown below:</p>
<p><span style="font-family:Consolas;font-size:10pt;"><span style="color:#0070c0;">style </span>rr_tag_style: <span style="color:#0070c0;">color</span>=RED, <span style="color:#0070c0;">bgcolor</span>=RED, <span style="color:#0070c0;">textcolor</span>=WHITE<br />
</span><span style="font-family:Consolas;font-size:10pt;"><span style="color:#0070c0;">style </span>sccp_tag_style: <span style="color:#0070c0;">color</span>=DODGERBLUE, <span style="color:#0070c0;">bgcolor</span>=DODGERBLUE, <span style="color:#0070c0;">textcolor</span>=WHITE<br />
</span><span style="font-family:Consolas;font-size:10pt;"><span style="color:#0070c0;">style </span>isup_tag_style: <span style="color:#0070c0;">color</span>=GREY, <span style="color:#0070c0;">bgcolor</span>=GREY, <span style="color:#0070c0;">textcolor</span>=WHITE<br />
</span><span style="font-family:Consolas;font-size:9pt;"><span style="color:#0070c0;">style </span>bssmap_tag_style: <span style="color:#0070c0;">color</span>=MIDNIGHTBLUE, <span style="color:#0070c0;">bgcolor</span>=MIDNIGHTBLUE, <span style="color:#0070c0;">textcolor</span>=WHITE<br />
</span><span style="font-family:Consolas;font-size:10pt;"><span style="color:#0070c0;">style </span>cc_tag_style: <span style="color:#0070c0;">color</span>=DARKSLATEGRAY, <span style="color:#0070c0;">bgcolor</span>=DARKSLATEGRAY, <span style="color:#0070c0;">textcolor</span>=WHITE<br />
</span><span style="font-family:Consolas;font-size:10pt;"><span style="color:#0070c0;">style</span> bcch_tag_style: <span style="color:#0070c0;">color</span>=DODGERBLUE, <span style="color:#0070c0;">bgcolor</span>=DODGERBLUE, <span style="color:#0070c0;">textcolor</span>=WHITE<br />
<span style="font-family:Consolas;font-size:10pt;"><span style="color:#0070c0;">style </span></span><span style="font-family:Consolas;font-size:10pt;"><span style="color:red;">&#8220;80_tag_style&#8221;</span><span style="font-size:10pt;font-style:inherit;line-height:1.625;">: </span><span style="color:#0070c0;">color</span><span style="font-size:10pt;font-style:inherit;line-height:1.625;">=DODGERBLUE, </span><span style="color:#0070c0;">bgcolor</span><span style="font-size:10pt;font-style:inherit;line-height:1.625;">=DODGERBLUE, </span><span style="color:#0070c0;">textcolor</span><span style="font-size:10pt;font-style:inherit;line-height:1.625;">=WHITE</span></span></span></p>
<h2>Tag specific diagrams</h2>
<p>Use tags to filter and generate sequence diagrams that just contain messages with a specific tag.</p>
<h1>Styling</h1>
<p>Control the look and feel of documents with default styles. Automatically apply these styles that match regular expressions. For example, specify a style for all messages that start with specific text. Styles have been enhanced to change colors for the background, text, and parameters.</p>
<h1>Group interactions with sequences</h1>
<p><img alt="" src="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine7.png?w=611" /></p>
<h2>Simplified sequence definitions</h2>
<p>Grouping interactions has been simplified. Just enclose the interactions in a sequence statement. EventStudio automatically identifies the interacting entities.</p>
<h2>Nest sequences</h2>
<p>Sequences may be nested. Quickly access a sequence from a PDF bookmark, which are nested too.</p>
<h2>Collapse sequences</h2>
<div>
<table style="border-collapse:collapse;" border="0">
<col style="width:311px;" />
<col style="width:313px;" />
<tbody valign="top">
<tr>
<td style="padding-left:7px;padding-right:7px;"><span style="font-size:10pt;">Complete sequences are shown the first time they occur in a sequence diagram.</span></td>
<td style="padding-left:7px;padding-right:7px;"><span style="font-size:10pt;">Subsequent occurrences of the sequence are shown as a simple clickable box. Clicking on the box takes the user to the expanded sequence.</span></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><img alt="" src="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine8.png?w=611" /></td>
<td style="padding-left:7px;padding-right:7px;"><img alt="" src="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine9.png?w=611" /></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;" colspan="2"></td>
</tr>
</tbody>
</table>
<pre>module: Module_01
component: Component_01 in Module_01
eternal: a in Component_01, b in Component_01, c in Component_01
feature "Sequence Grouping"
  sequence "Call Setup"
     IAM : a -&gt; b
     b takes action "Check digits"
     ACM : a &lt;- b
  endsequence
  case
     leg "Called Party Free":
       a, b take action "Set up the  voice path"
     leg "Called Party Busy": 
       a, b take action "Feed busy tone"
  endcase
  sequence "Call Release"
     REL : a -&gt; b
     RLC : a &lt;- b
  endsequence
endfeature</pre>
</div>
<h1>Classify systems with 5 levels of hierarchy</h1>
<p><img alt="" src="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine10.png?w=611" align="left" />Generate sequence diagrams at any of the five abstraction levels.</p>
<p>Developers may work at the component and object level. System architects analyze the design at a system and subsystem level.</p>
<h1>Improved modeling</h1>
<h2>Actions</h2>
<p>Actions, which have a distinct beginning and ending, can be modeled with the new continuous action support. Also, actions may be specified at different levels in the hierarchy.</p>
<h2>Messages</h2>
<p>Lost messages can be modeled in sequence diagrams. Additionally, messages can be represented through a single simple statement.</p>
<div>
<table style="border-collapse:collapse;" border="0">
<col style="width:329px;" />
<col style="width:294px;" />
<tbody valign="top">
<tr>
<td style="padding-left:7px;padding-right:7px;" valign="middle"><span style="font-family:Consolas;font-size:10pt;"><span style="color:red;">&#8220;Lost Message&#8221;</span>: A -&gt;X B</span></td>
<td style="padding-left:7px;padding-right:7px;" valign="middle"><img alt="" src="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine11.png?w=611" /></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;" valign="middle"><span style="font-family:Consolas;font-size:10pt;"><span style="color:red;">&#8220;Message Cascade&#8221;</span>: A -&gt; B -&gt; C</span></td>
<td style="padding-left:7px;padding-right:7px;"><img alt="" src="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine12.png?w=611" /></td>
</tr>
</tbody>
</table>
</div>
<h1>Enhanced tracing support</h1>
<h2>Flexible object interactions</h2>
<p>Method invocation rules have been relaxed to make them compatible with sequence diagram generation from trace messages (<a href="http://eventhelix.github.com/trace-to-sequence-diagram/">http://eventhelix.github.com/trace-to-sequence-diagram/</a>). Method calls to caller classes are permitted.</p>
<h2>Command line</h2>
<p>Command line mode is used to generate sequence diagrams from scripts. The command line can now be customized with specific conditional defines and include paths.</p>
<h1>Model large systems</h1>
<h2>Share instance axes</h2>
<p>Large number of interacting entities need not result in a large number of axis in diagrams. Dynamic objects can share a single instance axis, thus reducing the total number of axes needed in a sequence diagram.</p>
<h2>Really large sequence diagrams</h2>
<p>Sequence diagrams can now run into hundreds of pages. This is useful when converting large trace documents to sequence diagrams.</p>
<p><img alt="" src="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine13.png?w=611" align="left" /></p>
<h1>XML export</h1>
<p>Export scenarios and interactions to XML. This enables generation of custom diagrams and documents.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventhelix.wordpress.com/407/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventhelix.wordpress.com/407/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=407&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventhelix.com/2013/03/03/whats-new-in-eventstudio-system-designer-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bfebcf0a91fc0e34658d374c3489dd66?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deepsandahlu</media:title>
		</media:content>

		<media:content url="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine1.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine2.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine3.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine4.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine5.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine6.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine7.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine8.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine9.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine10.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine11.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine12.png" medium="image" />

		<media:content url="http://eventhelix.files.wordpress.com/2013/03/030313_1949_whatsnewine13.png" medium="image" />
	</item>
		<item>
		<title>IMS subscriber to PSTN subscriber call flow</title>
		<link>http://blog.eventhelix.com/2013/02/24/ims-subscriber-to-pstn-subscriber-call-flow/</link>
		<comments>http://blog.eventhelix.com/2013/02/24/ims-subscriber-to-pstn-subscriber-call-flow/#comments</comments>
		<pubDate>Mon, 25 Feb 2013 01:50:00 +0000</pubDate>
		<dc:creator>eventhelix</dc:creator>
				<category><![CDATA[telecom]]></category>
		<category><![CDATA[bgcf]]></category>
		<category><![CDATA[call flow]]></category>
		<category><![CDATA[ims]]></category>
		<category><![CDATA[ims core]]></category>
		<category><![CDATA[ip multimedia subsystem]]></category>
		<category><![CDATA[mgcf]]></category>
		<category><![CDATA[pstn]]></category>
		<category><![CDATA[rtp]]></category>
		<category><![CDATA[sequence diagram]]></category>
		<category><![CDATA[signaling]]></category>

		<guid isPermaLink="false">http://blog.eventhelix.com/?p=386</guid>
		<description><![CDATA[IP Multimedia Subsystem is an IP based signaling system for setting up and tearing down multimedia sessions. SIP based signaling is used to setup these sessions. We have covered call flows for an IMS to IMS and PSTN to IMS &#8230; <a href="http://blog.eventhelix.com/2013/02/24/ims-subscriber-to-pstn-subscriber-call-flow/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=386&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>IP Multimedia Subsystem is an IP based signaling system for setting up and tearing down multimedia sessions. SIP based signaling is used to setup these sessions.</p>
<p>We have covered call flows for an <a title="IMS User to IMS User Call Flow" href="http://blog.eventhelix.com/2012/07/26/ims-user-to-ims-user-call-flow/">IMS to IMS</a> and <a title="PSTN subscriber to IMS subscriber call flow" href="http://blog.eventhelix.com/2013/01/13/pstn-subscriber-to-ims-subscriber-call-flow/">PSTN to IMS</a> calls. We now look at the call flow for a IMS to PSTN subscriber call.</p>
<p>The call is routed via the BGCF (Border Gateway Control Function) to the MGCF (Media Gateway Control Function). The MGCF uses one context with two terminations in IM-MGW (Media Gateway). The termination RTP1 is used towards IMS Core network subsystem entity and the bearer termination TDM1 is used for bearer towards PSTN CS network element.</p>
<p>The call flow is complex and it is analyzed with multiple diagrams. Some of the diagrams are presented here:</p>
<div id="attachment_388" class="wp-caption alignnone" style="width: 594px"><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/ims-to-pstn-callflow.pdf"><img class=" wp-image-388" title="IMS to PSTN sequence diagram" alt="IMS to PSTN sequence diagram" src="http://eventhelix.files.wordpress.com/2013/02/ims-to-pstn-sequence-diagram.png?w=584&#038;h=455" width="584" height="455" /></a><p class="wp-caption-text">A detailed call flow describing all message interactions in a IMS to PSTN call</p></div>
<div id="attachment_389" class="wp-caption alignnone" style="width: 594px"><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/ue-ims-pstn-high-level.pdf"><img class=" wp-image-389" title="IMS to PSTN high level call flow" alt="IMS to PSTN high level flow" src="http://eventhelix.files.wordpress.com/2013/02/ims-to-pstn-high-level.png?w=584&#038;h=400" width="584" height="400" /></a><p class="wp-caption-text">A high level view that abstracts out individual component details and just presents the flow between the UE, IMS Core and the PSTN.</p></div>
<div id="attachment_390" class="wp-caption alignnone" style="width: 594px"><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/ue-role-collaboration.pdf"><img class=" wp-image-390" title="IMS to PSTN UE Collaboration Diagram" alt="IMS to PSTN UE collaboration diagram" src="http://eventhelix.files.wordpress.com/2013/02/ims-to-pstn-ue-collaboration.png?w=584&#038;h=385" width="584" height="385" /></a><p class="wp-caption-text">Here we examine the call flow from the UE point of view. The call flow is represented as a collaboration diagram.</p></div>
<p>Link:<strong><a title="IMS subscriber to PSTN subscriber call flow" href="http://www.eventhelix.com/ims/ims-to-pstn-call/"> IMS subscriber to PSTN subscriber call flow</a></strong></p>
<p>All documents:</p>
<ul>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/ims-to-pstn-callflow.pdf">IMS to PSTN Call Flow</a></li>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/ims-to-pstn-callflow-poster.pdf">IMS to PSTN Call Flow Poster (11&#215;17)</a></li>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/ims-to-pstn-call-overview.pdf">IMS to PSTN Call Overview</a></li>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/ims-to-pstn-overview-context.pdf">IMS to PSTN Call Context Diagram</a></li>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/ue-ims-pstn-high-level.pdf">High Level Flow (Calling UE-IMS-PSTN)</a></li>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/ue-visited-home-signaling-media-high-level.pdf">High Level Flow (With CSCF and H.248 Details)</a></li>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/im-mgw-role-sequence.pdf">IM-MGW Call Flow</a></li>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/im-mgw-context.pdf">IM-MGW Context Diagram</a></li>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/mgcf-role-sequence.pdf">MGCF Call Flow</a></li>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/mgcf-role-collaboration.pdf">MGCF Context Diagram</a></li>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/bgcf-role-sequence.pdf">BGCF Call Flow</a></li>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/bgcf-role-collaboration.pdf">BGCF Collaboration Diagram</a></li>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/ue-role-sequence.pdf">Originating UE Call Flow</a></li>
<li><a href="http://www.eventhelix.com/ims/ims-to-pstn-call/ue-role-collaboration.pdf">Originating UE Collaboration Diagram</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventhelix.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventhelix.wordpress.com/386/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=386&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventhelix.com/2013/02/24/ims-subscriber-to-pstn-subscriber-call-flow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bfebcf0a91fc0e34658d374c3489dd66?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deepsandahlu</media:title>
		</media:content>

		<media:content url="http://eventhelix.files.wordpress.com/2013/02/ims-to-pstn-sequence-diagram.png" medium="image">
			<media:title type="html">IMS to PSTN sequence diagram</media:title>
		</media:content>

		<media:content url="http://eventhelix.files.wordpress.com/2013/02/ims-to-pstn-high-level.png" medium="image">
			<media:title type="html">IMS to PSTN high level call flow</media:title>
		</media:content>

		<media:content url="http://eventhelix.files.wordpress.com/2013/02/ims-to-pstn-ue-collaboration.png" medium="image">
			<media:title type="html">IMS to PSTN UE Collaboration Diagram</media:title>
		</media:content>
	</item>
		<item>
		<title>Optimize C and C++ Code</title>
		<link>http://blog.eventhelix.com/2013/02/03/optimize-c-and-cpp-code/</link>
		<comments>http://blog.eventhelix.com/2013/02/03/optimize-c-and-cpp-code/#comments</comments>
		<pubDate>Sun, 03 Feb 2013 15:57:40 +0000</pubDate>
		<dc:creator>eventhelix</dc:creator>
				<category><![CDATA[object oriented]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[c++ 11]]></category>
		<category><![CDATA[c++ amp]]></category>
		<category><![CDATA[dimensional arrays]]></category>
		<category><![CDATA[hardware accelerators]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://blog.eventhelix.com/?p=381</guid>
		<description><![CDATA[With the advent of mobile devices, optimizing code has become even more important. Faster applications not only improve the user experience, they also improve battery life. Optimizing C++ and C Code discusses several techniques that will help improve the performance. &#8230; <a href="http://blog.eventhelix.com/2013/02/03/optimize-c-and-cpp-code/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=381&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm"><img class="size-full wp-image-318 alignleft" alt="Optimize C and C++ code" src="http://eventhelix.files.wordpress.com/2012/12/cpp.png?w=611"   /></a>With the advent of mobile devices, optimizing code has become even more important. Faster applications not only improve the user experience, they also improve battery life.</p>
<p><strong><a title="Optimize C and C++ Code" href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm">Optimizing C++ and C Code</a></strong> discusses several techniques that will help improve the performance.</p>
<ol>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Premature_optimization_is_the_root_of_all_evil">Premature optimization is the root of all evil</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Adjust Structure Sizes to Power of Two">Adjust structure sizes to power of two</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Place Case Labels in Narrow Range">Place case labels in narrow range</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Place Frequent Case Labels First">Place frequent case labels first</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Break Big Switch Statements into Nested Switches">Break big switch statements into nested switches</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Minimize Local Variables">Minimize local variables</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Declare local variables in the inner most scope">Declare local variables in the inner most scope</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Reduce the Number of Parameters">Reduce the number of parameters</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Use references for parameter passing and return value for types bigger than 4 bytes">Use references for parameter passing and return value for types bigger than 4 bytes</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Don't Define a Return Value if not Used">Don&#8217;t define a return value if not used</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Consider Locality of Reference for Code and Data">Consider locality of reference for code and data</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Locality_of_reference_in_multi-dimensional_arrays">Locality of reference in multi-dimensional arrays</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Prefer int over char and short">Prefer int over char and short</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Define lightweight constructors">Define lightweight constructors</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Prefer initialization over assignment">Prefer initialization over assignment</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Use constructor initialization lists">Use constructor initialization lists</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Do not declare &quot;just in case&quot; virtual functions">Do not declare &#8220;just in case&#8221; virtual functions</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#In-line 1 to 3 line functions">In-line 1 to 3 line functions</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Avoid_cascaded_function_calls">Avoid cascaded function calls</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Prefer_preincrement_over_postincrement">Prefer preincrement over postincrement</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Define_move_constructors_in_C++11">Define move constructors in C++11</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Use_hardware_accelerators_and_SIMD_hardware">Use hardware accelerators and SIMD hardware</a></li>
<li><a href="http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#Use_profile_guided_optimization">Use profile guided optimization</a></li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventhelix.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventhelix.wordpress.com/381/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=381&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventhelix.com/2013/02/03/optimize-c-and-cpp-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bfebcf0a91fc0e34658d374c3489dd66?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deepsandahlu</media:title>
		</media:content>

		<media:content url="http://eventhelix.files.wordpress.com/2012/12/cpp.png" medium="image">
			<media:title type="html">Optimize C and C++ code</media:title>
		</media:content>
	</item>
		<item>
		<title>LTE Video Presentations</title>
		<link>http://blog.eventhelix.com/2013/01/22/lte-video-presentations/</link>
		<comments>http://blog.eventhelix.com/2013/01/22/lte-video-presentations/#comments</comments>
		<pubDate>Wed, 23 Jan 2013 00:59:47 +0000</pubDate>
		<dc:creator>eventhelix</dc:creator>
				<category><![CDATA[telecom]]></category>
		<category><![CDATA[3gpp]]></category>
		<category><![CDATA[contention resolution]]></category>
		<category><![CDATA[dl-sch]]></category>
		<category><![CDATA[enodeb]]></category>
		<category><![CDATA[epc]]></category>
		<category><![CDATA[eps bearer]]></category>
		<category><![CDATA[fdd]]></category>
		<category><![CDATA[hybrid arq]]></category>
		<category><![CDATA[lte]]></category>
		<category><![CDATA[mimo]]></category>
		<category><![CDATA[ofdm]]></category>
		<category><![CDATA[ofdma]]></category>
		<category><![CDATA[papr]]></category>
		<category><![CDATA[protocol stacks]]></category>
		<category><![CDATA[pu-sch]]></category>
		<category><![CDATA[pucch]]></category>
		<category><![CDATA[random access]]></category>
		<category><![CDATA[sc-fdma]]></category>
		<category><![CDATA[spectrum]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[ul-sch]]></category>

		<guid isPermaLink="false">http://blog.eventhelix.com/?p=371</guid>
		<description><![CDATA[Rohde &#38; Schwarz&#8216;s presentations provide an excellent introduction to LTE. The presentations are accompanied with an audio narration. The topics covered are covered: LTE Introduction Motivations for LTE LTE market and background Requirements Evolution path to LTE LTE Parameters and &#8230; <a href="http://blog.eventhelix.com/2013/01/22/lte-video-presentations/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=371&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm"><img class=" wp-image-372 alignnone" title="Rohde &amp; Schwarz LTE video presentations" alt="OFDM Time Frequency Multiplexing" src="http://eventhelix.files.wordpress.com/2013/01/ofdm-time-frequency-multiplexing.png?w=584&#038;h=435" width="584" height="435" /></a></p>
<p><strong>Rohde &amp; Schwarz</strong>&#8216;s presentations provide an excellent introduction to LTE. The presentations are accompanied with an audio narration. The topics covered are covered:</p>
<ol>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_1:_LTE_Introduction">LTE Introduction</a></strong>
<ul>
<li>Motivations for LTE</li>
<li>LTE market and background</li>
<li>Requirements</li>
<li>Evolution path to LTE</li>
</ul>
</li>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_2:_LTE_Parameters_and_Downlink_Modulation">LTE Parameters and Downlink Modulation</a></strong>
<ul>
<li>LTE parameters and frequency bands</li>
<li>What is OFDMA?</li>
<li>OFDMA multiple access and downlink frame structure</li>
<li>OFDMA transmit and receive chains</li>
</ul>
</li>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_3:_OFDMA_and_Downlink_Frame_Structure_Details">OFDMA and Downlink Frame Structure Details</a></strong>
<ul>
<li>Downlink OFDMA time-frequency multiplexing</li>
<li>LTE Spectrum Flexibility and Bandwidth</li>
<li>FDD downlink frame structure detailed</li>
<li>TDD frame structure</li>
</ul>
</li>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_4:_SC-FDMA_and_LTE_Uplink">SC-FDMA and LTE Uplink</a></strong>
<ul>
<li>Introduction to SC-FDMA and uplink frame structure
<ul>
<li>Marriage of single carrier transmission and FDMA</li>
</ul>
</li>
<li>Uplink SC-FDMA tranmsit and receive chains</li>
<li>Peak to Average Power Ratio (PAPR) comparison with SC-FDMA and OFDMA</li>
</ul>
</li>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_5:_Network_and_Protocol_Architecture">Network and Protocol Architecture</a></strong>
<ul>
<li>LTE/SAE network architecture</li>
<li>EPC -Evolved Packet Core</li>
<li>Base Station control plane and user plane protocol stacks</li>
<li>EPC protocol stacks</li>
</ul>
</li>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_6:_Channel_Mapping_and_UE_Categories">Channel Mapping and UE Categories</a></strong>
<ul>
<li>Logical and transport channel mapping in downlink and uplink</li>
<li>LTE UE Categories</li>
</ul>
</li>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_7:_Initial_Cell_Search_and_Cell_Selection">Initial Cell Search and Cell Selection</a></strong>
<ul>
<li>Downlink physical channels and signals</li>
<li>Cell Search and Selection in LTE
<ul>
<li>Primary synchronization signal</li>
<li>Secondary synchronization signal</li>
<li>Reference signals</li>
</ul>
</li>
</ul>
</li>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_8:_System_Information">System Information</a></strong>
<ul>
<li>Downlink reference signal details</li>
<li>Master Information Block on PBCH</li>
<li>System Information on DL-SCH</li>
</ul>
</li>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_9:_Random_Access_Procedure_and_EPS_Bearer_Setup">Random Access Procedures and EPS Bearer Setup</a></strong>
<ul>
<li>Random access preamble transmission to eNodeB</li>
<li>Random access response from eNodeB</li>
<li>Resource allocation and contention resolution</li>
<li>Signaling on PDCCH</li>
<li>Hybrid ARQ</li>
<li>RRC Connection Setup and EPS Bearer Setup</li>
</ul>
</li>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_10:_Uplink_Channels_and_Signals">Uplink Channels and Signals</a></strong>
<ul>
<li>Uplink physical channels and signals</li>
<li>PU-SCH: Physical Uplink Shared Channel</li>
<li>Uplink assignment signaling on PDCCH</li>
<li>Uplink frequency hopping</li>
<li>PUCCH</li>
</ul>
</li>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_11:_LTE_Mobility_and_MIMO_Introduction">LTE Mobility and MIMO Introduction</a></strong>
<ul>
<li>Intra MME Handover over the X2 interface</li>
<li>RRC States</li>
<li>MIMO Basics
<ul>
<li>Transmit diversity</li>
<li>Spatial multiplexing</li>
<li>Beamforming</li>
</ul>
</li>
</ul>
</li>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_12:_Downlink_and_Uplink_MIMO_in_LTE">Downlink and Uplink MIMO in LTE</a></strong>
<ul>
<li>Downlink MIMO modes
<ul>
<li>Transmit diversity</li>
<li>Spatial multiplexing</li>
<li>Cyclic delay diversity</li>
<li>Beam forming</li>
</ul>
</li>
<li>Spatial multiplexing downlink transmitter chain
<ul>
<li>Code book based precoding</li>
</ul>
</li>
<li>Uplink MIMO
<ul>
<li>Uplink transmit antenna selection</li>
<li>Multi-user MIMO</li>
</ul>
</li>
</ul>
</li>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_13:_eNodeB_and_UE_RF_Performance_Requirements">eNodeB and UE Performance Requirements</a></strong>
<ul>
<li>eNodeB modulation quality measurements</li>
<li>eNodeB performance requirements</li>
<li>UE performance requirements</li>
</ul>
</li>
<li><strong><a href="http://www.eventhelix.com/lte/tutorial/web-presentation.htm#Part_14:_UE_Certification_and_Field_Trials">UE Certification and Field Trials</a></strong>
<ul>
<li>LTE terminal testing stages</li>
<li>LTE terminal certification</li>
<li>LTE field trial scenarios</li>
</ul>
</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventhelix.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventhelix.wordpress.com/371/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=371&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventhelix.com/2013/01/22/lte-video-presentations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bfebcf0a91fc0e34658d374c3489dd66?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deepsandahlu</media:title>
		</media:content>

		<media:content url="http://eventhelix.files.wordpress.com/2013/01/ofdm-time-frequency-multiplexing.png" medium="image">
			<media:title type="html">Rohde &#38; Schwarz LTE video presentations</media:title>
		</media:content>
	</item>
		<item>
		<title>PSTN subscriber to IMS subscriber call flow</title>
		<link>http://blog.eventhelix.com/2013/01/13/pstn-subscriber-to-ims-subscriber-call-flow/</link>
		<comments>http://blog.eventhelix.com/2013/01/13/pstn-subscriber-to-ims-subscriber-call-flow/#comments</comments>
		<pubDate>Sun, 13 Jan 2013 15:07:56 +0000</pubDate>
		<dc:creator>eventhelix</dc:creator>
				<category><![CDATA[telecom]]></category>
		<category><![CDATA[call flow]]></category>
		<category><![CDATA[ims]]></category>
		<category><![CDATA[sequence diagram]]></category>
		<category><![CDATA[signaling]]></category>

		<guid isPermaLink="false">http://blog.eventhelix.com/?p=359</guid>
		<description><![CDATA[IP Multimedia Subsystem is the new IP based signaling system for setting up multimedia sessions. We have already covered the call flow for an IMS subscriber calling another IMS subscriber. Here we will look at the call flow of a &#8230; <a href="http://blog.eventhelix.com/2013/01/13/pstn-subscriber-to-ims-subscriber-call-flow/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=359&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>IP Multimedia Subsystem is the new IP based signaling system for setting up multimedia sessions. We have already covered the call flow for an <a title="IMS User to IMS User Call Flow" href="http://blog.eventhelix.com/2012/07/26/ims-user-to-ims-user-call-flow/">IMS subscriber calling another IMS subscriber</a>. Here we will look at the call flow of a regular PSTN subscriber calling an IMS user.</p>
<h2>PSTN to IMS call flow</h2>
<p><a href="http://www.eventhelix.com/ims/pstn_to_ims_call/"><img class="alignnone  wp-image-361" title="PSTN subscriber to IMS subscriber call flow" alt="PSTN subscriber to IMS subscriber call flow" src="http://eventhelix.files.wordpress.com/2013/01/pstn-ims-call-flow.png?w=584&#038;h=446" width="584" height="446" /></a></p>
<p>This call flow covers the handling of a CS network originated call with ISUP. In the diagram the MGCF requests seizure of the IM CN subsystem side termination and CS network side bearer termination. When the MGCF receives an answer indication, it requests the IM-MGW to both-way through-connect the terminations. Originating and terminating end initiated call releases are also covered.</p>
<p>The following sequence is covered:</p>
<ol>
<li><span style="line-height:15px;">ISUP IAM Handling and Initial IM-MGW and MGCF (Mn) Interactions<br />
</span></li>
<li>Initial Handshake between MGCF and IMS CSCF Servers</li>
<li>Mn Interactions for Codec selection</li>
<li>ISUP ACM related interactions on Mn interface</li>
<li>IMS Answer to ISUP ANM Handling</li>
<li>Conversation Mode</li>
<li>Call Release:
<ul>
<li>Calling PSTN Subscriber Initiated Call Release</li>
<li>Called Subsciber Initiates Call Release</li>
</ul>
</li>
</ol>
<p>Link: <strong><a title="A PSTN subscriber calls an IMS subscriber" href="http://www.eventhelix.com/ims/pstn_to_ims_call/">PSTN subscriber to IMS call flows</a></strong></p>
<h2>Focus on different aspects of the call flow</h2>
<p>PSTN to IMS call is a very complex flow. The main sequence flow is supplemented with flows that focus on a particular aspect of the flow. A snapshot of one such diagrams is shown here:<a style="font-style:normal;line-height:24px;text-decoration:underline;" href="http://www.eventhelix.com/ims/pstn_to_ims_call/"><img class="alignnone  wp-image-362" style="border-color:#bbbbbb;background-color:#eeeeee;" title="PSTN subscriber to IMS subscriber - Terminating S-CSCF interactions" alt="PSTN subscriber to IMS subscriber - Terminating S-CSCF interactions" src="http://eventhelix.files.wordpress.com/2013/01/pstn-ims-context-diagram.png?w=584&#038;h=442" width="584" height="442" /></a></p>
<p>Link: <strong><a title="A PSTN subscriber calls an IMS subscriber" href="http://www.eventhelix.com/ims/pstn_to_ims_call/">PSTN subscriber to IMS call flows</a></strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventhelix.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventhelix.wordpress.com/359/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=359&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventhelix.com/2013/01/13/pstn-subscriber-to-ims-subscriber-call-flow/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bfebcf0a91fc0e34658d374c3489dd66?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deepsandahlu</media:title>
		</media:content>

		<media:content url="http://eventhelix.files.wordpress.com/2013/01/pstn-ims-call-flow.png" medium="image">
			<media:title type="html">PSTN subscriber to IMS subscriber call flow</media:title>
		</media:content>

		<media:content url="http://eventhelix.files.wordpress.com/2013/01/pstn-ims-context-diagram.png" medium="image">
			<media:title type="html">PSTN subscriber to IMS subscriber - Terminating S-CSCF interactions</media:title>
		</media:content>
	</item>
		<item>
		<title>Rules for managing header file includes in C++</title>
		<link>http://blog.eventhelix.com/2013/01/07/rules-for-managing-header-file-includes-in-cpp/</link>
		<comments>http://blog.eventhelix.com/2013/01/07/rules-for-managing-header-file-includes-in-cpp/#comments</comments>
		<pubDate>Tue, 08 Jan 2013 03:34:11 +0000</pubDate>
		<dc:creator>eventhelix</dc:creator>
				<category><![CDATA[object oriented]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[c header file]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[c++ headers]]></category>
		<category><![CDATA[compilation errors]]></category>
		<category><![CDATA[forward declaration]]></category>
		<category><![CDATA[header files]]></category>

		<guid isPermaLink="false">http://blog.eventhelix.com/?p=351</guid>
		<description><![CDATA[C++ header file management can be very frustrating: Changing the the order of header files often results in difficult to track compilation errors C++ project compilations take a long time due to complex header file inclusions Here are a few &#8230; <a href="http://blog.eventhelix.com/2013/01/07/rules-for-managing-header-file-includes-in-cpp/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=351&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.eventhelix.com/realtimemantra/headerfileincludepatterns.htm"><img class="size-full wp-image-318 alignleft" title="C++ header file include rules" alt="C++ header file include rules" src="http://eventhelix.files.wordpress.com/2012/12/cpp.png?w=611"   /></a>C++ header file management can be very frustrating:</p>
<ul>
<li><span style="line-height:15px;">Changing the the order of header files often results in difficult to track compilation errors</span></li>
<li>C++ project compilations take a long time due to complex header file inclusions</li>
</ul>
<p>Here are a few rules to remedy this:</p>
<ul>
<li>A header file should be included only when a forward declaration would not do the job.</li>
<li>The header file should be so designed that the order of header file inclusion is not important.
<ul>
<li>This is achieved by making sure that x.h is the first header file in x.cpp</li>
</ul>
</li>
<li>The header file inclusion mechanism should be tolerant to duplicate header file inclusions.</li>
</ul>
<p>An example of illustrates the header file inclusion rules:</p>
<h2>Header file</h2>
<pre>#ifndef _a_h_included_
#define _a_h_included_
#include "abase.h"
#include "b.h"

// Forward Declarations
class C;
class D;

class A : public ABase
{
  B m_b;
  C *m_c;
  D *m_d;

public:
  void SetC(C *c);
  C *GetC() const;

  void ModifyD(D *d);
};
#endif</pre>
<h2>Source file</h2>
<pre>#include "a.h"
#include "d.h"

void A::SetC(C* c)
{
  m_c = c;
}

C* A::GetC() const
{
  return m_c;
}

void A::ModifyD(D* d)
{
  d-&gt;SetX(0);
  d-&gt;SetY(0);
  m_d = d;
}</pre>
<p>For details, refer to: <strong><a title="Simple rules for managing header files in large C++ code bases" href="http://www.eventhelix.com/realtimemantra/headerfileincludepatterns.htm">C++ Header File Include Rules</a></strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventhelix.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventhelix.wordpress.com/351/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=351&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventhelix.com/2013/01/07/rules-for-managing-header-file-includes-in-cpp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bfebcf0a91fc0e34658d374c3489dd66?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deepsandahlu</media:title>
		</media:content>

		<media:content url="http://eventhelix.files.wordpress.com/2012/12/cpp.png" medium="image">
			<media:title type="html">C++ header file include rules</media:title>
		</media:content>
	</item>
		<item>
		<title>C++ Internals: Mapping Inheritance and Virtual Functions to C</title>
		<link>http://blog.eventhelix.com/2012/12/30/cpp-internals-mapping-inheritance-and-virtual-functions-to-c/</link>
		<comments>http://blog.eventhelix.com/2012/12/30/cpp-internals-mapping-inheritance-and-virtual-functions-to-c/#comments</comments>
		<pubDate>Sun, 30 Dec 2012 16:36:07 +0000</pubDate>
		<dc:creator>eventhelix</dc:creator>
				<category><![CDATA[object oriented]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[c structs]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[c++ internals]]></category>
		<category><![CDATA[inheritance]]></category>
		<category><![CDATA[multiple inheritance]]></category>
		<category><![CDATA[virtual function]]></category>
		<category><![CDATA[virtual functions]]></category>
		<category><![CDATA[virtual table]]></category>
		<category><![CDATA[vtable]]></category>

		<guid isPermaLink="false">http://blog.eventhelix.com/?p=333</guid>
		<description><![CDATA[We have already looked at mapping from C++ classes and methods to C structures and functions in a previous blog post. Here we will map inheritance and virtual functions to C code. This blog post is based on the article &#8230; <a href="http://blog.eventhelix.com/2012/12/30/cpp-internals-mapping-inheritance-and-virtual-functions-to-c/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=333&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.eventhelix.com/realtimemantra/basics/ComparingCPPAndCPerformance2.htm" rel="attachment wp-att-319"><img class="size-full wp-image-319 alignleft" title="C++ to C conversion" alt="C++ to C conversion" src="http://eventhelix.files.wordpress.com/2012/12/cpp-to-c.png?w=611"   /></a>We have already looked at <a title="C++ Internals: Mapping from C++ classes and methods to C structs and functions" href="http://blog.eventhelix.com/2012/12/24/cpp-internals-mapping-from-cpp-classes-and-methods-to-c-structs-and-functions/">mapping from C++ classes and methods to C structures </a>and functions in a previous blog post. Here we will map inheritance and virtual functions to C code.</p>
<p>This blog post is based on the article <strong><a title="Mapping from C++ inheritance/virtual functions to C code and structures. Vtables are also discussed here." href="http://www.eventhelix.com/realtimemantra/basics/ComparingCPPAndCPerformance2.htm">mapping from C++ inheritance and virtual functions to C code</a></strong>. The contents of the article are summarized below.</p>
<h2>Mapping a base class with virtual functions to C</h2>
<p>A C++ base class with virtual functions requires extra logic to support the machinery for handling virtual functions. The following C++ base class&#8230;.</p>
<pre>class Shape
{
protected:
  int m_x;
  int m_y; 

public:
  virtual void Draw() = 0; 
  virtual void MoveTo(int newX, int newY);
  void Erase();
  Shape(int x, int y);
  virtual ~Shape();
};</pre>
<p>&#8230;maps to the following C code.</p>
<pre>typedef void (*VirtualFunctionPointer)(...);

struct VTable
{
   int d;  /* d and i are used in multiple inheritance */
   int i;
   VirtualFunctionPointer pFunc;
};

VTable VTableArrayForShape[] =
{
    { 0, 0, (VirtualFunctionPointer) pure_virtual_called_error_handler },
    { 0, 0, (VirtualFunctionPointer) Shape_MoveTo },
    { 0, 0, (VirtualFunctionPointer) Shape_Destructor }
};
struct Shape
{
  int m_x;
  int m_y;
  VTable *pVTable;
};</pre>
<p>Points to note here are:</p>
<ul>
<li>VTable structure used by the compiler to keep track of the virtual functions associated with a class.There is one instance of a VTable for every class containing virtual functions. All instances of a given class point to the same VTable.</li>
<li>The C++ compiler inserts an extra pointer to a vtable which will keep a function pointer to the virtual function that should be called.</li>
<li>The VTable pointer in the base class points to an array of VTables. The number of entries in the array of VTables depends upon the number of virtual functions in the class.</li>
<li>Note that a pure virtual function maps to function that will result in an exception.</li>
</ul>
<p>For details refer to the article: <strong><a title="Mapping from C++ inheritance/virtual functions to C code and structures. Vtables are also discussed here." href="http://www.eventhelix.com/realtimemantra/basics/ComparingCPPAndCPerformance2.htm">Mapping from C++ inheritance and virtual functions to C code</a></strong></p>
<h2>Mapping an inherited class with virtual functions to C</h2>
<p>The inheriting Circle class&#8230;.</p>
<pre>class Circle : public Shape
{
private:
   int m_radius;    // Radius of the circle

public:
   // Override to draw a circle
   virtual void Draw();   

   // Constructor for Circle
   Circle(int x, int y, int radius);

   // Destructor for Circle
   virtual ~Circle();
};</pre>
<p>&#8230;maps to a new VTable array and a new struct:</p>
<pre>VTable VTableArrayForCircle[] =
{
    { 0, 0, (VirtualFunctionPointer) Circle_Draw },
    { 0, 0, (VirtualFunctionPointer) Shape_MoveTo },
    { 0, 0, (VirtualFunctionPointer) Circle_Destructor }
};

struct Circle
{
   /* Fields inherited from Shape */
   int m_x;
   int m_y;
   VTable *pVTable;

   /* Fields added by Circle */
   int m_radius;
};</pre>
<ul>
<li>The inheriting class preserves structure offsets for inherited base class fields and the VTable array pointers.</li>
<li>A new VTable array is defined for the inherited class.
<ul>
<li>The pure virtual function entry has now been replaced with a call to Circle&#8217;s Draw function.</li>
<li>The entry for a function that is not being inherited is preserved (Shape&#8217;s MoveTo)</li>
<li>Shape class has a virtual destructor. The destructor vtable entry now points to Circle&#8217;s destructor.</li>
</ul>
</li>
</ul>
<p>For details refer to the article: <strong><a title="Mapping from C++ inheritance/virtual functions to C code and structures. Vtables are also discussed here." href="http://www.eventhelix.com/realtimemantra/basics/ComparingCPPAndCPerformance2.htm">Mapping from C++ inheritance and virtual functions to C code</a></strong></p>
<h2>Mapping a virtual function call to C code</h2>
<p>A virtual function call like&#8230;</p>
<pre> pShape-&gt;Draw();</pre>
<p>&#8230;is replaced by a call through a virtual table function pointer.</p>
<pre>  (pShape-&gt;pVTable[0].pFunc)(pShape);</pre>
<h2>Explore More</h2>
<p>We have covered basics of inheritance handling here. For details about constructor and destructor definitions and vtable array pointer initialization refer to the article:  <strong><a title="Mapping from C++ inheritance/virtual functions to C code and structures. Vtables are also discussed here." href="http://www.eventhelix.com/realtimemantra/basics/ComparingCPPAndCPerformance2.htm">Mapping from C++ inheritance and virtual functions to C code</a>.</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/eventhelix.wordpress.com/333/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/eventhelix.wordpress.com/333/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.eventhelix.com&#038;blog=35681020&#038;post=333&#038;subd=eventhelix&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.eventhelix.com/2012/12/30/cpp-internals-mapping-inheritance-and-virtual-functions-to-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/bfebcf0a91fc0e34658d374c3489dd66?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">deepsandahlu</media:title>
		</media:content>

		<media:content url="http://eventhelix.files.wordpress.com/2012/12/cpp-to-c.png" medium="image">
			<media:title type="html">C++ to C conversion</media:title>
		</media:content>
	</item>
	</channel>
</rss>
