>From personal experience I can say that it makes sense to start at the outer levels and work your way in. A gentle way to get into what the source code does is to look at the source code for API commands or dialplan applications with which you are very familiar or that have very simple functions.<br>
<br>I would start with mod_commands.c and look at simple commands like &quot;version&quot; and &quot;banner&quot;. Once you get the hang of those then try digging a little deeper, like with the &quot;show&quot; API. That API is a great example of how the FS devs handle argument parsing and use the occasional &quot;really large&quot; case block. <br>
<br>If you would rather start with the dialplan stuff then check out mod_dptools.c. Look at really simple apps like &quot;log&quot;. You&#39;ll see lots of references to the &quot;session&quot; which you MUST learn about if you want to do anything with a live call. One thing you&#39;ll see is that the functions in the &quot;outer&quot; layers will make calls to &quot;core&quot; functions. As homework I recommend you look in mod_dptools.c for the definition of the &quot;playback&quot; app. Hint: to get the whole picture you&#39;ll need to also look in switch_ivr_play_say.c. ;)<br>
<br>Have fun and don&#39;t be afraid to ask questions here or in the IRC channel.<br><br>-MC<br><br><div class="gmail_quote">On Sun, Feb 17, 2013 at 4:42 PM, Steven Ayre <span dir="ltr">&lt;<a href="mailto:steveayre@gmail.com" target="_blank">steveayre@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div>Use the source, Luke.</div><div><br></div><div>Digging around in the source is one way to explore how FS works. Some is easier to understand than others. Threading is heavily used so understanding mutexes etc is useful.</div>
<div><br></div><div>I&#39;d highly recommend that you read this site though:</div><div><span style="font-family:&#39;.HelveticaNeueUI&#39;;font-size:15px;line-height:19px;white-space:nowrap"><a href="http://docs.freeswitch.org/" target="_blank">http://docs.freeswitch.org/</a></span><br>
<br>That documents the core API. A lot is based on APR, plus some extra stuff like the module interfaces.</div><div><br></div><div>Steve</div><div><div class="h5"><div><br></div><div><br></div><div><br></div><div><br>On 18 Feb 2013, at 00:00, Brian Foster &lt;<a href="mailto:bdfoster@endigotech.com" target="_blank">bdfoster@endigotech.com</a>&gt; wrote:<br>
<br></div><blockquote type="cite"><div><span>I think I&#39;ve come to a stage in my life where I&#39;m more interested than ever in learning the internals of FreeSWITCH and start contributing code to it. I&#39;ve been following the project for a few years, but I&#39;ve never touched the code. It&#39;s time to change that. </span><br>
<span></span><br><span>Is there a place on the wiki someone can point me to so I can start understanding the FS core? I&#39;m talking fairly basic, beginner level stuff. </span><br><span></span><br><span>Sent from my iPhone</span><br>
<span>_________________________________________________________________________</span><br><span>Professional FreeSWITCH Consulting Services:</span><br><span><a href="mailto:consulting@freeswitch.org" target="_blank">consulting@freeswitch.org</a></span><br>
<span><a href="http://www.freeswitchsolutions.com" target="_blank">http://www.freeswitchsolutions.com</a></span><br><span></span><br><span>FreeSWITCH-powered IP PBX: The CudaTel Communication Server</span><br><span><a href="http://www.cudatel.com" target="_blank">http://www.cudatel.com</a></span><br>
<span></span><br><span>Official FreeSWITCH Sites</span><br><span><a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a></span><br><span><a href="http://wiki.freeswitch.org" target="_blank">http://wiki.freeswitch.org</a></span><br>
<span><a href="http://www.cluecon.com" target="_blank">http://www.cluecon.com</a></span><br><span></span><br><span>FreeSWITCH-users mailing list</span><br><span><a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a></span><br>
<span><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a></span><br><span>UNSUBSCRIBE:http://<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">lists.freeswitch.org/mailman/options/freeswitch-users</a></span><br>
<span><a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a></span><br></div></blockquote></div></div></div><br>_________________________________________________________________________<br>
Professional FreeSWITCH Consulting Services:<br>
<a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br>
<a href="http://www.freeswitchsolutions.com" target="_blank">http://www.freeswitchsolutions.com</a><br>
<br>
FreeSWITCH-powered IP PBX: The CudaTel Communication Server<br>
<a href="http://www.cudatel.com" target="_blank">http://www.cudatel.com</a><br>
<br>
Official FreeSWITCH Sites<br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<a href="http://wiki.freeswitch.org" target="_blank">http://wiki.freeswitch.org</a><br>
<a href="http://www.cluecon.com" target="_blank">http://www.cluecon.com</a><br>
<br>
FreeSWITCH-users mailing list<br>
<a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>
<a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br>
UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br>
<a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Michael S Collins<br>Twitter: @mercutioviz<br><a href="http://www.FreeSWITCH.org" target="_blank">http://www.FreeSWITCH.org</a><br><a href="http://www.ClueCon.com" target="_blank">http://www.ClueCon.com</a><br>
<a href="http://www.OSTAG.org" target="_blank">http://www.OSTAG.org</a><br><br>