mod_reference is quite new, I just added it because we had the first
hint of someone new wanting to make an endpoint module in the recent
past and I made that for him to see the basics.<br>
<br>
Since I have personally written all 8 endpoints modules in tree,
there has not been a huge demand for docs on writing endpoint modules. If more
people expressed an interest in coding endpoints the natural results
would be more docs in that area. Since the majority of developers have
done applications, that is topic we have the strongest docs for.<br>
<br>
If you compile a list of questions and post them or come to IRC you
will find we can explain it quite easily and we can log the
conversation and it can be refined into docs.<br><br><div class="gmail_quote">On Sun, May 25, 2008 at 10:18 PM, Matthew Kaufman <<a href="mailto:matthew@matthew.at">matthew@matthew.at</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Anthony Minessale wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
...<div class="Ih2E3d"><br>
There is an example endpoint and app skel in mod_skel and mod_reference.<br>
<br>
</div></blockquote>
Note that mod_skel is in <a href="http://www.freeswitch.org/gettingstarted.html" target="_blank">http://www.freeswitch.org/gettingstarted.html</a> and <a href="http://wiki.freeswitch.org/wiki/Modules" target="_blank">http://wiki.freeswitch.org/wiki/Modules</a> but mod_reference appears in neither. (I also hadn't stumbled across it.) It would help if it were referenced from the gettingstarted page, as it does appear to be very useful for someone in my position. Would have saved at least an hour or two when trying to figure out what part was endpoint-specific and what part was boilerplate when reading the other endpoint implementations.<div class="Ih2E3d">
<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
There is a header file called switch_module_interfaces.h<br>
<a href="http://www.freeswitch.org/docs/switch__module__interfaces_8h.html" target="_blank">http://www.freeswitch.org/docs/switch__module__interfaces_8h.html</a><br>
<a href="http://fisheye.freeswitch.org/browse/FreeSWITCH/src/include/switch_module_interfaces.h?r=8579" target="_blank">http://fisheye.freeswitch.org/browse/FreeSWITCH/src/include/switch_module_interfaces.h?r=8579</a><br>
<br>
</blockquote></div>
For endpoint developers, more info about what each of the IO routines and state handlers listed there really means would be helpful. mod_reference appears to address part of that requirement. I'll probably end up writing up something for my own use if it doesn't already exist in someone else's private collection, and if it seems readable I can contribute that.<div class="Ih2E3d">
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
There is a description of the module design in this document.<br>
<a href="http://www.freeswitch.org/node/117" target="_blank">http://www.freeswitch.org/node/117</a><br>
<br>
</blockquote></div>
I'd seen that right when I first heard about FreeSWITCH. It is a great high-level explanation. The next more-technical level would be very useful to have.<div class="Ih2E3d"><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Every modules in the applications folder is a working example of all the ways to use the API.<br>
<a href="http://fisheye.freeswitch.org/browse/FreeSWITCH/src/mod" target="_blank">http://fisheye.freeswitch.org/browse/FreeSWITCH/src/mod</a><br>
<br>
</blockquote></div>
That's where I started, and it works but is slower than knowing which handlers I need to implement and which things I'm likely to need to call in the other direction. Again, mod_reference appears to address some of this, and of course existing endpoints address this as well.<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
...<div class="Ih2E3d"><br>
<br>
Anything you are not allowed to use it not available to you. All of the objects are opaque and perhaps there are some things you can do wrong but we do our best to force you into the right direction with the API.<br>
<br>
There is a higher level scripting interface to the application API to further simplify things if the C API is too challenging.<br>
<br>
</div></blockquote>
It looks very useful for application developers, not so useful for high-performance new kinds of endpoints, which is what I'm working on.<div class="Ih2E3d"><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Most functions start with the name of the header file they live in, application are launched with the session that was associated with the call and any function you can call on that session or the channel derived from that session is probably safe though I would not recommend playing with the channels states etc because that is an advanced concept I would not try as my first experiment.<br>
<br>
If anyone else out there who had made some modules would care to chime in on how they got started that would be nice too.<br>
</blockquote></div>
That would be helpful, for sure.<div><div></div><div class="Wj3C7c"><br>
<br>
Matthew Kaufman<br>
<a href="mailto:matthew@matthew.at" target="_blank">matthew@matthew.at</a><br>
<a href="http://www.matthew.at" target="_blank">http://www.matthew.at</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Anthony Minessale II<br><br>FreeSWITCH <a href="http://www.freeswitch.org/">http://www.freeswitch.org/</a><br>ClueCon <a href="http://www.cluecon.com/">http://www.cluecon.com/</a><br>
<br>AIM: anthm<br><a href="mailto:MSN%3Aanthony_minessale@hotmail.com">MSN:anthony_minessale@hotmail.com</a><br>GTALK/JABBER/<a href="mailto:PAYPAL%3Aanthony.minessale@gmail.com">PAYPAL:anthony.minessale@gmail.com</a><br>
IRC: <a href="http://irc.freenode.net">irc.freenode.net</a> #freeswitch<br><br>FreeSWITCH Developer Conference<br><a href="mailto:sip%3A888@conference.freeswitch.org">sip:888@conference.freeswitch.org</a><br><a href="http://iax:guest@conference.freeswitch.org/888">iax:guest@conference.freeswitch.org/888</a><br>
<a href="mailto:googletalk%3Aconf%2B888@conference.freeswitch.org">googletalk:conf+888@conference.freeswitch.org</a><br>pstn:213-799-1400