<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.9.1">
  <compounddef id="doxygen_8dox" kind="file" language="C++">
    <compoundname>doxygen.dox</compoundname>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <programlisting>
<codeline lineno="1"></codeline>
<codeline lineno="76"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>proxy_cfg<sp/>=<sp/><ref refid="group__proxies_1ga6a4575ce4e31bd23f6c7cbd5a8e36475" kindref="member">linphone_proxy_config_new</ref>();</highlight></codeline>
<codeline lineno="77"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">/*parse<sp/>identity*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="78"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__linphone__address_1ga5af5a516ac253e3cda4f51b599a5385b" kindref="member">LinphoneAddress</ref><sp/>*from<sp/>=<sp/><ref refid="group__linphone__address_1ga301c9884c0bc8b1050fe790d424e0b49" kindref="member">linphone_address_new</ref>(</highlight><highlight class="stringliteral">&quot;sip:toto@sip.titi.com&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="79"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>LinphoneAuthInfo<sp/>*info;</highlight></codeline>
<codeline lineno="80"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(password!=NULL){</highlight></codeline>
<codeline lineno="81"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>info=<ref refid="group__authentication_1ga034dd18662e329c0dcd6a56d2b3d24fa" kindref="member">linphone_auth_info_new</ref>(<ref refid="group__linphone__address_1ga4fa5a4927c1d2f3a6b7c6824e35a87bf" kindref="member">linphone_address_get_username</ref>(from),NULL,</highlight><highlight class="stringliteral">&quot;secret&quot;</highlight><highlight class="normal">,NULL,NULL);<sp/></highlight><highlight class="comment">/*create<sp/>authentication<sp/>structure<sp/>from<sp/>identity*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="82"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__authentication_1ga62ac5bb34f0342f7edc733c42473b7aa" kindref="member">linphone_core_add_auth_info</ref>(lc,info);<sp/></highlight><highlight class="comment">/*add<sp/>authentication<sp/>info<sp/>to<sp/>LinphoneCore*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="83"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/>}<sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="84"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>configure<sp/>proxy<sp/>entries</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="85"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__proxies_1ga340f07d8c1f20623ef311bbd1f112c7a" kindref="member">linphone_proxy_config_set_identity</ref>(proxy_cfg,identity);<sp/></highlight><highlight class="comment">/*set<sp/>identity<sp/>with<sp/>user<sp/>name<sp/>and<sp/>domain*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="86"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal">*<sp/>server_addr<sp/>=<sp/><ref refid="group__linphone__address_1ga95a356f26c67ed4ee88db878b617c65f" kindref="member">linphone_address_get_domain</ref>(from);<sp/></highlight><highlight class="comment">/*extract<sp/>domain<sp/>address<sp/>from<sp/>identity*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="87"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__proxies_1ga6d3a26abf8bccc9341a856dde1906b2b" kindref="member">linphone_proxy_config_set_server_addr</ref>(proxy_cfg,server_addr);<sp/></highlight><highlight class="comment">/*<sp/>we<sp/>assume<sp/>domain<sp/>=<sp/>proxy<sp/>server<sp/>address*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="88"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__proxies_1gaea39579996645d4bc5e62e68ab097f17" kindref="member">linphone_proxy_config_enable_register</ref>(proxy_cfg,TRUE);<sp/></highlight><highlight class="comment">/*activate<sp/>registration<sp/>for<sp/>this<sp/>proxy<sp/>config*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="89"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__linphone__address_1ga5777f2976c71a48cf2b3f03c61818f13" kindref="member">linphone_address_destroy</ref>(from);<sp/></highlight><highlight class="comment">/*release<sp/>resource*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="90"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="91"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__proxies_1gad8690a56c39fcfb45eb8193ee575918b" kindref="member">linphone_core_add_proxy_config</ref>(lc,proxy_cfg);<sp/></highlight><highlight class="comment">/*add<sp/>proxy<sp/>config<sp/>to<sp/>linphone<sp/>core*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="92"><highlight class="normal"><sp/>*<sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__proxies_1ga2082f2c37ffbf5d46e8d20ae8bccc2a4" kindref="member">linphone_core_set_default_proxy</ref>(lc,proxy_cfg);<sp/></highlight><highlight class="comment">/*set<sp/>to<sp/>default<sp/>proxy*/</highlight><highlight class="normal"><sp/>\endcode</highlight></codeline>
<codeline lineno="93"><highlight class="normal"><sp/>*&lt;br&gt;</highlight></codeline>
<codeline lineno="94"><highlight class="normal"><sp/>*<sp/>Registration<sp/>sate<sp/>call<sp/>back:</highlight></codeline>
<codeline lineno="95"><highlight class="normal"><sp/>\code</highlight></codeline>
<codeline lineno="96"><highlight class="normal"><sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>registration_state_changed(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/>_LinphoneCore<sp/>*lc,<sp/><ref refid="group__proxies_1ga1879a0d59e068457b688138da97f2d0b" kindref="member">LinphoneProxyConfig</ref><sp/>*cfg,<sp/><ref refid="group__proxies_1ga698cb4228fac724b9e7c3cc5f499f7a8" kindref="member">LinphoneRegistrationState</ref><sp/>cstate,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*message){</highlight></codeline>
<codeline lineno="97"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>printf(</highlight><highlight class="stringliteral">&quot;New<sp/>registration<sp/>state<sp/>%s<sp/>for<sp/>user<sp/>id<sp/>[%s]<sp/>at<sp/>proxy<sp/>[%s]\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="98"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>,<ref refid="group__proxies_1gae79c79371d71750ee987757d59785ed7" kindref="member">linphone_registration_state_to_string</ref>(cstate)</highlight></codeline>
<codeline lineno="99"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>,<ref refid="group__proxies_1ga2a25b20e1b9222b6802eea53c123670f" kindref="member">linphone_proxy_config_get_identity</ref>(cfg)</highlight></codeline>
<codeline lineno="100"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>,linphone_proxy_config_get_addr(cfg));</highlight></codeline>
<codeline lineno="101"><highlight class="normal">}</highlight></codeline>
<codeline lineno="102"><highlight class="normal"><sp/>\endcode</highlight></codeline>
<codeline lineno="103"><highlight class="normal"><sp/>*&lt;br&gt;&lt;b&gt;Authentication:&lt;/b&gt;</highlight></codeline>
<codeline lineno="104"><highlight class="normal"><sp/>*&lt;br&gt;Most<sp/>of<sp/>the<sp/>time,<sp/>registration<sp/>requires<sp/>\ref<sp/>authentication<sp/></highlight><highlight class="stringliteral">&quot;authentication&quot;</highlight><highlight class="normal"><sp/>to<sp/>succeed.<sp/>#LinphoneAuthInfo<sp/>info<sp/>must<sp/>be<sp/>either<sp/>added<sp/>to<sp/>#<ref refid="group__initializing_1gaa5cf635b82dd338e7ee2dd3599d05f0a" kindref="member">LinphoneCore</ref><sp/><sp/></highlight><highlight class="keyword">using</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">function</highlight><highlight class="normal"><sp/><ref refid="group__authentication_1ga62ac5bb34f0342f7edc733c42473b7aa" kindref="member">linphone_core_add_auth_info</ref>()<sp/>before<sp/></highlight><highlight class="preprocessor">#LinphoneProxyConfig<sp/>is<sp/>added<sp/>to<sp/>Linphone<sp/>core,<sp/>or<sp/>on<sp/>demand<sp/>from<sp/>call<sp/>back<sp/>#LinphoneCoreAuthInfoRequestedCb.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="105"><highlight class="normal"><sp/>*&lt;br&gt;</highlight></codeline>
<codeline lineno="106"><highlight class="normal"><sp/>*&lt;br&gt;&lt;b&gt;Unregistration:&lt;/b&gt;</highlight></codeline>
<codeline lineno="107"><highlight class="normal"><sp/>*&lt;br&gt;<sp/>Unregistration<sp/>or<sp/>any<sp/>changes<sp/>to<sp/>#<ref refid="group__proxies_1ga1879a0d59e068457b688138da97f2d0b" kindref="member">LinphoneProxyConfig</ref><sp/>must<sp/>be<sp/>first<sp/>started<sp/>by<sp/>a<sp/>call<sp/>to<sp/></highlight><highlight class="keyword">function</highlight><highlight class="normal"><sp/><ref refid="group__proxies_1gadfddcce1c3dd138f144ae0421782834b" kindref="member">linphone_proxy_config_edit</ref>()<sp/>and<sp/>validated<sp/>by<sp/><sp/>function<sp/><ref refid="group__proxies_1gae8c21e2fdab90aa46397662516e286ba" kindref="member">linphone_proxy_config_done</ref>()</highlight></codeline>
<codeline lineno="108"><highlight class="normal"><sp/>*&lt;br&gt;<sp/>This<sp/>pseudo<sp/>code<sp/>shows<sp/>how<sp/>to<sp/>unregister<sp/>a<sp/>user<sp/>associated<sp/>to<sp/>a<sp/></highlight><highlight class="preprocessor">#LinphoneProxyConfig</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="109"><highlight class="normal"><sp/>*\code</highlight></codeline>
<codeline lineno="110"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__proxies_1ga1879a0d59e068457b688138da97f2d0b" kindref="member">LinphoneProxyConfig</ref>*<sp/>proxy_cfg;</highlight></codeline>
<codeline lineno="111"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__proxies_1gac77d836d546848289f16716cb2db12f6" kindref="member">linphone_core_get_default_proxy</ref>(lc,&amp;proxy_cfg);<sp/></highlight><highlight class="comment">/*<sp/>get<sp/>default<sp/>proxy<sp/>config*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="112"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__proxies_1gadfddcce1c3dd138f144ae0421782834b" kindref="member">linphone_proxy_config_edit</ref>(proxy_cfg);<sp/></highlight><highlight class="comment">/*start<sp/>editing<sp/>proxy<sp/>configuration*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="113"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__proxies_1gaea39579996645d4bc5e62e68ab097f17" kindref="member">linphone_proxy_config_enable_register</ref>(proxy_cfg,FALSE);<sp/></highlight><highlight class="comment">/*de-activate<sp/>registration<sp/>for<sp/>this<sp/>proxy<sp/>config*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="114"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__proxies_1gae8c21e2fdab90aa46397662516e286ba" kindref="member">linphone_proxy_config_done</ref>(proxy_cfg);<sp/></highlight><highlight class="comment">/*initiate<sp/>REGISTER<sp/>with<sp/>expire<sp/>=<sp/>0*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="115"><highlight class="normal">\endcode</highlight></codeline>
<codeline lineno="116"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>&lt;br&gt;</highlight></codeline>
<codeline lineno="117"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>A<sp/>complete<sp/>tutorial<sp/>can<sp/>be<sp/>found<sp/>at<sp/>:<sp/>\ref<sp/>registration_tutorials<sp/></highlight><highlight class="stringliteral">&quot;Registration<sp/>tutorial&quot;</highlight><highlight class="normal"><sp/></highlight></codeline>
<codeline lineno="118"><highlight class="normal">**/</highlight></codeline>
<codeline lineno="119"><highlight class="normal"></highlight></codeline>
<codeline lineno="137"><highlight class="normal"><ref refid="group__buddy__list_1ga832ec207f77f722ddc596303e7a68a47" kindref="member">linphone_friend_enable_subscribes</ref>(my_friend,TRUE);<sp/></highlight><highlight class="comment">/*configure<sp/>this<sp/>friend<sp/>to<sp/>emit<sp/>SUBSCRIBE<sp/>message<sp/>after<sp/>being<sp/>added<sp/>to<sp/>LinphoneCore*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="138"><highlight class="normal"><ref refid="group__buddy__list_1ga9ab0c9222edcc0a8e25fb068aee88bc0" kindref="member">linphone_friend_set_inc_subscribe_policy</ref>(my_friend,<ref refid="group__buddy__list_1gga81effcfcab907fd8530e53ca5b0bc10aa876507f111b9ea7c5fb4eac01bac22dd" kindref="member">LinphoneSPAccept</ref>);<sp/></highlight><highlight class="comment">/*<sp/>accept<sp/>Incoming<sp/>subscription<sp/>request<sp/>for<sp/>this<sp/>friend*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="139"><highlight class="normal">\endcode</highlight></codeline>
<codeline lineno="140"><highlight class="normal">\link<sp/>#<ref refid="group__buddy__list_1ga2f0508bab6d8ded431ce8b1a679a1522" kindref="member">LinphoneFriend</ref><sp/><sp/>friends<sp/>\endlink<sp/>status<sp/>changes<sp/>are<sp/>reported<sp/>by<sp/>callback<sp/><ref refid="struct__LinphoneCoreVTable" kindref="compound">LinphoneCoreVTable</ref>.notify_presence_recv
\code</highlight></codeline>
<codeline lineno="141"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>notify_presence_recv_updated<sp/>(</highlight><highlight class="keyword">struct</highlight><highlight class="normal"><sp/>_LinphoneCore<sp/>*lc,<sp/><sp/><ref refid="group__buddy__list_1ga2f0508bab6d8ded431ce8b1a679a1522" kindref="member">LinphoneFriend</ref><sp/>*</highlight><highlight class="keyword">friend</highlight><highlight class="normal">)<sp/>{</highlight></codeline>
<codeline lineno="142"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="group__linphone__address_1ga5af5a516ac253e3cda4f51b599a5385b" kindref="member">LinphoneAddress</ref>*<sp/>friend_address<sp/>=<sp/><ref refid="group__buddy__list_1ga1bbbe1f2b3760587681b8392d87efffa" kindref="member">linphone_friend_get_address</ref>(</highlight><highlight class="keyword">friend</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="143"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>printf(</highlight><highlight class="stringliteral">&quot;New<sp/>state<sp/>state<sp/>[%s]<sp/>for<sp/>user<sp/>id<sp/>[%s]<sp/>\n&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="144"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>,<ref refid="group__buddy__list_1gac691ff2fc71a0b9e91049dd1d0ad59f0" kindref="member">linphone_online_status_to_string</ref>(<ref refid="group__buddy__list_1ga77f0463c9fb52d98fd74a90a3c55028a" kindref="member">linphone_friend_get_status</ref>(</highlight><highlight class="keyword">friend</highlight><highlight class="normal">))</highlight></codeline>
<codeline lineno="145"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>,<ref refid="group__linphone__address_1ga24c1a16f49f8b72f2bab65cc5d8a51af" kindref="member">linphone_address_as_string</ref><sp/>(friend_address));</highlight></codeline>
<codeline lineno="146"><highlight class="normal">}</highlight></codeline>
<codeline lineno="147"><highlight class="normal">\endcode</highlight></codeline>
<codeline lineno="148"><highlight class="normal">&lt;br&gt;Once<sp/>created<sp/>a<sp/>buddy<sp/>can<sp/>be<sp/>added<sp/>to<sp/>the<sp/>buddy<sp/>list<sp/></highlight><highlight class="keyword">using</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">function</highlight><highlight class="normal"><sp/><ref refid="group__buddy__list_1ga3a8e9184320402082bf35226ae8d25b8" kindref="member">linphone_core_add_friend</ref>()<sp/>.<sp/>Added<sp/>friends<sp/>will<sp/>be<sp/>notified<sp/>about<sp/>\link<sp/><ref refid="group__buddy__list_1gadae69527e9b36e0f29bd80c30275874f" kindref="member">linphone_core_set_presence_info</ref>()<sp/>local<sp/>status<sp/>changes<sp/>\endlink</highlight></codeline>
<codeline lineno="149"><highlight class="normal">&lt;br&gt;</highlight></codeline>
<codeline lineno="150"><highlight class="normal">Any<sp/>subsequente<sp/>modifications<sp/>to<sp/></highlight><highlight class="preprocessor">#LinphoneFriend<sp/>must<sp/>be<sp/>first<sp/>started<sp/>by<sp/>a<sp/>call<sp/>to<sp/>function<sp/>linphone_friend_edit()<sp/>and<sp/>validated<sp/>by<sp/><sp/>function<sp/>linphone_friend_done()</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="151"><highlight class="normal">\code</highlight></codeline>
<codeline lineno="152"><highlight class="normal"><ref refid="group__buddy__list_1ga254b01923c79947a5d23981d47639f40" kindref="member">linphone_friend_edit</ref>(my_friend);<sp/></highlight><highlight class="comment">/*<sp/>start<sp/>editing<sp/>friend<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="153"><highlight class="normal"><ref refid="group__buddy__list_1ga832ec207f77f722ddc596303e7a68a47" kindref="member">linphone_friend_enable_subscribes</ref>(my_friend,FALSE);<sp/></highlight><highlight class="comment">/*disable<sp/>subscription<sp/>for<sp/>this<sp/>friend*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="154"><highlight class="normal"><ref refid="group__buddy__list_1ga6e28513bba28f948ee61341384a36958" kindref="member">linphone_friend_done</ref>(my_friend);<sp/></highlight><highlight class="comment">/*commit<sp/>changes<sp/>triggering<sp/>an<sp/>UNSUBSCRIBE<sp/>message*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="155"><highlight class="normal">\endcode</highlight></codeline>
<codeline lineno="156"><highlight class="normal"></highlight></codeline>
<codeline lineno="157"><highlight class="normal"></highlight></codeline>
<codeline lineno="158"><highlight class="normal">&lt;b&gt;<sp/>Publishing<sp/>presence<sp/>status<sp/>&lt;/b&gt;</highlight></codeline>
<codeline lineno="159"><highlight class="normal">&lt;br&gt;Local<sp/>presence<sp/>status<sp/>can<sp/>be<sp/>changed<sp/></highlight><highlight class="keyword">using</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">function</highlight><highlight class="normal"><sp/><ref refid="group__buddy__list_1ga8b8f1c93a0c9a7d355b1899969058fb3" kindref="member">linphone_core_set_presence_model</ref>()<sp/>.New<sp/>status<sp/>is<sp/>propagated<sp/>to<sp/>all<sp/>friends<sp/>\link<sp/><ref refid="group__buddy__list_1ga3a8e9184320402082bf35226ae8d25b8" kindref="member">linphone_core_add_friend</ref>()<sp/>previously<sp/>added<sp/>\endlink<sp/>to<sp/></highlight><highlight class="preprocessor">#LinphoneCore.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="160"><highlight class="normal"></highlight></codeline>
<codeline lineno="161"><highlight class="normal">&lt;b&gt;Handling<sp/>incoming<sp/>subscription<sp/>request&lt;/b&gt;</highlight></codeline>
<codeline lineno="162"><highlight class="normal">&lt;br&gt;<sp/>New<sp/>incoming<sp/>subscription<sp/>requests<sp/>are<sp/>process<sp/>according<sp/>to<sp/>\link<sp/><ref refid="group__buddy__list_1ga9ab0c9222edcc0a8e25fb068aee88bc0" kindref="member">linphone_friend_set_inc_subscribe_policy</ref>()<sp/>the<sp/>incoming<sp/>subscription<sp/>policy<sp/>state<sp/>\endlink<sp/>for<sp/>subscription<sp/>initiated<sp/>by<sp/>\link<sp/><ref refid="group__buddy__list_1ga3a8e9184320402082bf35226ae8d25b8" kindref="member">linphone_core_add_friend</ref>()<sp/>members<sp/>of<sp/>the<sp/>buddy<sp/>list.<sp/>\endlink</highlight></codeline>
<codeline lineno="163"><highlight class="normal">&lt;br&gt;<sp/>For<sp/>incoming<sp/>request<sp/>comming<sp/>from<sp/>an<sp/>unknown<sp/>buddy,<sp/>the<sp/>call<sp/>back<sp/><sp/><ref refid="struct__LinphoneCoreVTable" kindref="compound">LinphoneCoreVTable</ref>.new_subscription_request<sp/>is<sp/>invoked.</highlight></codeline>
<codeline lineno="164"><highlight class="normal"></highlight></codeline>
<codeline lineno="165"><highlight class="normal">&lt;br&gt;<sp/>A<sp/>complete<sp/>tutorial<sp/>can<sp/>be<sp/>found<sp/>at<sp/>:<sp/>\ref<sp/>buddy_tutorials<sp/>&quot;Registration<sp/>tutorial&quot;<sp/></highlight></codeline>
<codeline lineno="166"><highlight class="normal"></highlight></codeline>
<codeline lineno="167"><highlight class="normal"></highlight></codeline>
<codeline lineno="168"><highlight class="normal">**/</highlight></codeline>
<codeline lineno="169"><highlight class="normal"></highlight></codeline>
<codeline lineno="182"><highlight class="normal">\endcode</highlight></codeline>
<codeline lineno="183"><highlight class="normal">&lt;br&gt;Incoming<sp/>message<sp/>are<sp/>received<sp/>from<sp/>call<sp/>back<sp/><ref refid="struct__LinphoneCoreVTable" kindref="compound">LinphoneCoreVTable</ref>.text_received</highlight></codeline>
<codeline lineno="184"><highlight class="normal">\code</highlight></codeline>
<codeline lineno="185"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>text_received(<ref refid="group__initializing_1gaa5cf635b82dd338e7ee2dd3599d05f0a" kindref="member">LinphoneCore</ref><sp/>*lc,<sp/><ref refid="group__chatroom_1ga37902f3fc715b7f6451c241d0efd0299" kindref="member">LinphoneChatRoom</ref><sp/>*room,<sp/>const<sp/><ref refid="group__linphone__address_1ga5af5a516ac253e3cda4f51b599a5385b" kindref="member">LinphoneAddress</ref><sp/>*from,<sp/>const<sp/></highlight><highlight class="keywordtype">char</highlight><highlight class="normal"><sp/>*message)<sp/>{</highlight></codeline>
<codeline lineno="186"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>printf(</highlight><highlight class="stringliteral">&quot;<sp/>Message<sp/>[%s]<sp/>received<sp/>from<sp/>[%s]<sp/>\n&quot;</highlight><highlight class="normal">,message,<ref refid="group__linphone__address_1ga24c1a16f49f8b72f2bab65cc5d8a51af" kindref="member">linphone_address_as_string</ref><sp/>(from));</highlight></codeline>
<codeline lineno="187"><highlight class="normal">}</highlight></codeline>
<codeline lineno="188"><highlight class="normal">\endcode</highlight></codeline>
<codeline lineno="189"><highlight class="normal">&lt;br&gt;<sp/>A<sp/>complete<sp/>tutorial<sp/>can<sp/>be<sp/>found<sp/>at<sp/>:<sp/>\ref<sp/>chatroom_tuto<sp/></highlight><highlight class="stringliteral">&quot;Chat<sp/>room<sp/>tutorial&quot;</highlight><highlight class="normal"><sp/></highlight></codeline>
<codeline lineno="190"><highlight class="normal">**/</highlight></codeline>
<codeline lineno="191"><highlight class="normal"></highlight></codeline>
<codeline lineno="275"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>handler:^{</highlight></codeline>
<codeline lineno="276"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//refresh<sp/>sip<sp/>registration</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="277"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__proxies_1ga130795ea67730f7b01f7b51fe6bdb44f" kindref="member">linphone_core_refresh_registers</ref>(theLinphoneCore);</highlight></codeline>
<codeline lineno="278"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//make<sp/>sure<sp/>sip<sp/>REGISTER<sp/>is<sp/>sent</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="279"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__initializing_1ga7bdac8ac386483fc4e0876e4c5d13755" kindref="member">linphone_core_iterate</ref>(theLinphoneCore);</highlight></codeline>
<codeline lineno="280"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}];</highlight></codeline>
<codeline lineno="281"><highlight class="normal">\endcode</highlight></codeline>
<codeline lineno="282"><highlight class="normal">&lt;li&gt;&lt;b&gt;Incoming<sp/>call<sp/>notification<sp/></highlight><highlight class="keywordflow">while</highlight><highlight class="normal"><sp/>in<sp/>background<sp/>mode&lt;/b&gt;</highlight></codeline>
<codeline lineno="283"><highlight class="normal">&lt;br&gt;Assuming<sp/>application<sp/></highlight><highlight class="keyword">using</highlight><highlight class="normal"><sp/>liblinphone<sp/>is<sp/>well<sp/>configured<sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>multitasking,<sp/>incoming<sp/>calls<sp/>arriving<sp/></highlight><highlight class="keywordflow">while</highlight><highlight class="normal"><sp/>liblinphone<sp/>is<sp/>in<sp/>background<sp/>mode<sp/>will<sp/>simply<sp/>wakeup<sp/>liblinphone<sp/>thread<sp/>but<sp/>not<sp/>resume<sp/>GUI.<sp/>To<sp/>wakeup<sp/>GUI,<sp/>it<sp/>is<sp/>recommended<sp/>to<sp/>send<sp/>a<sp/>Local<sp/>Notification<sp/>to<sp/>the<sp/>user<sp/>from<sp/>the<sp/>#<ref refid="group__initializing_1ga98e23d0310eef95f7f97ce4a43634836" kindref="member">LinphoneCoreCallStateChangedCb</ref>.<sp/>Here<sp/>under<sp/>a<sp/>speudo<sp/>code<sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">this</highlight><highlight class="normal"><sp/>operation:</highlight></codeline>
<codeline lineno="284"><highlight class="normal">\code</highlight></codeline>
<codeline lineno="285"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>([UIApplication<sp/>sharedApplication].applicationState<sp/>!=<sp/><sp/>UIApplicationStateActive)<sp/>{</highlight></codeline>
<codeline lineno="286"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="comment">//<sp/>Create<sp/>a<sp/>new<sp/>notification</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="287"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>UILocalNotification*<sp/>notif<sp/>=<sp/>[[[UILocalNotification<sp/>alloc]<sp/>init]<sp/>autorelease];</highlight></codeline>
<codeline lineno="288"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(notif)<sp/>{</highlight></codeline>
<codeline lineno="289"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>notif.repeatInterval<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="290"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>notif.alertBody<sp/>=</highlight><highlight class="stringliteral">@&quot;New<sp/>incoming<sp/>call&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="291"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>notif.alertAction<sp/>=<sp/></highlight><highlight class="stringliteral">@&quot;Answer&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="292"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>notif.soundName<sp/>=<sp/></highlight><highlight class="stringliteral">@&quot;oldphone-mono-30s.caf&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="293"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="294"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[UIApplication<sp/>sharedApplication]<sp/><sp/>presentLocalNotificationNow:notif];</highlight></codeline>
<codeline lineno="295"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="296"><highlight class="normal">\endcode</highlight></codeline>
<codeline lineno="297"><highlight class="normal">&lt;/ul&gt;</highlight></codeline>
<codeline lineno="298"><highlight class="normal">&lt;b&gt;Networking&lt;/b&gt;</highlight></codeline>
<codeline lineno="299"><highlight class="normal">&lt;br&gt;</highlight></codeline>
<codeline lineno="300"><highlight class="normal">&lt;ul&gt;&lt;li&gt;&lt;b&gt;WWAN<sp/>connection&lt;/b&gt;</highlight></codeline>
<codeline lineno="301"><highlight class="normal">&lt;br&gt;Liblinphone<sp/>relies<sp/>on<sp/>iOS</highlight><highlight class="stringliteral">&apos;s<sp/>standard<sp/>BSD<sp/>socket<sp/>layer<sp/>for<sp/>sip/rtp<sp/>networking.<sp/>On<sp/>IOS,<sp/>WWAN<sp/>connection<sp/>is<sp/>supposed<sp/>to<sp/>automatically<sp/>bring<sp/>up<sp/>on<sp/>any<sp/>networking<sp/>resquest<sp/>issued<sp/>by<sp/>an<sp/>application.<sp/>At<sp/>least<sp/>on<sp/>iPhone<sp/>OS<sp/>3.x,<sp/>BSD<sp/>sockets<sp/>do<sp/>not<sp/>implement<sp/>this<sp/>behavior.<sp/>So<sp/>it<sp/>is<sp/>recomended<sp/>to<sp/>add<sp/>a<sp/>special<sp/>code<sp/>to<sp/>make<sp/>sure<sp/>the<sp/>WWAN<sp/>connection<sp/>is<sp/>properly<sp/>setup.<sp/>Pseudo<sp/>code<sp/>below<sp/>describes<sp/>a<sp/>way<sp/>to<sp/>force<sp/>WWAN<sp/>connection<sp/>by<sp/>setting<sp/>up<sp/>a<sp/>dummy<sp/>TCP<sp/>connection.</highlight></codeline>
<codeline lineno="302"><highlight class="stringliteral">\code</highlight></codeline>
<codeline lineno="303"><highlight class="stringliteral">/*start<sp/>a<sp/>new<sp/>thread<sp/>to<sp/>avoid<sp/>blocking<sp/>the<sp/>main<sp/>ui<sp/>in<sp/>case<sp/>of<sp/>peer<sp/>host<sp/>failure*/</highlight></codeline>
<codeline lineno="304"><highlight class="stringliteral">[NSThread<sp/>detachNewThreadSelector:@selector(runNetworkConnection)<sp/>toTarget:self<sp/>withObject:nil];</highlight></codeline>
<codeline lineno="305"><highlight class="stringliteral">-(void)<sp/>runNetworkConnection<sp/>{</highlight></codeline>
<codeline lineno="306"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>CFWriteStreamRef<sp/>writeStream;</highlight></codeline>
<codeline lineno="307"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>//create<sp/>a<sp/>dummy<sp/>socket</highlight></codeline>
<codeline lineno="308"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>CFStreamCreatePairWithSocketToHost(NULL,<sp/>(CFStringRef)@&quot;192.168.0.200&quot;,<sp/>15000,<sp/>nil,<sp/>&amp;writeStream);</highlight></codeline>
<codeline lineno="309"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>CFWriteStreamOpen<sp/>(writeStream);</highlight></codeline>
<codeline lineno="310"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>const<sp/>char*<sp/>buff=&quot;hello&quot;;</highlight></codeline>
<codeline lineno="311"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>//try<sp/>to<sp/>write<sp/>on<sp/>this<sp/>socket</highlight></codeline>
<codeline lineno="312"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>CFWriteStreamWrite<sp/>(writeStream,(const<sp/>UInt8*)buff,strlen(buff));</highlight></codeline>
<codeline lineno="313"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>CFWriteStreamClose<sp/>(writeStream);</highlight></codeline>
<codeline lineno="314"><highlight class="stringliteral">}<sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="315"><highlight class="stringliteral">\endcode<sp/><sp/></highlight></codeline>
<codeline lineno="316"><highlight class="stringliteral">It<sp/>is<sp/>recommanded<sp/>to<sp/>perform<sp/>this<sp/>task<sp/>each<sp/>time<sp/>the<sp/>application<sp/>is<sp/>woken<sp/>up,<sp/>including<sp/>keep<sp/>alive<sp/>handler.</highlight></codeline>
<codeline lineno="317"><highlight class="stringliteral">&lt;li&gt;&lt;b&gt;Managing<sp/>IP<sp/>connection<sp/>state&lt;/b&gt;</highlight></codeline>
<codeline lineno="318"><highlight class="stringliteral">&lt;br&gt;Liblinphone<sp/>for<sp/>IOS<sp/>relies<sp/>on<sp/>the<sp/>application<sp/>to<sp/>be<sp/>informed<sp/>of<sp/>network<sp/>connectivity<sp/>changes.<sp/>Network<sp/>state<sp/>changes<sp/>when<sp/>the<sp/>IP<sp/>connection<sp/>moves<sp/>from<sp/>DOWN<sp/>to<sp/>UP,<sp/>or<sp/>from<sp/>WIFI<sp/>to<sp/>WWAN.<sp/>Applications<sp/>using<sp/>liblinphone<sp/>must<sp/>inform<sp/>libliblinphone<sp/>of<sp/>this<sp/>changes<sp/>using<sp/>function<sp/>#linphone_core_set_network_reachable().<sp/>Usually<sp/>this<sp/>method<sp/>is<sp/>called<sp/>from<sp/>the<sp/>IOS<sp/>NetworkReachability<sp/>callback.<sp/>Here<sp/>under<sp/>a<sp/>sample<sp/>code:</highlight></codeline>
<codeline lineno="319"><highlight class="stringliteral">\code</highlight></codeline>
<codeline lineno="320"><highlight class="stringliteral">//typical<sp/>reachability<sp/>callback</highlight></codeline>
<codeline lineno="321"><highlight class="stringliteral">void<sp/>networkReachabilityCallBack(SCNetworkReachabilityRef<sp/>target,<sp/>SCNetworkReachabilityFlags<sp/>flags,<sp/>void<sp/>*<sp/>info)<sp/>{</highlight></codeline>
<codeline lineno="322"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if<sp/>((flags<sp/>==<sp/>0)<sp/>|<sp/>(flags<sp/>&amp;<sp/>(kSCNetworkReachabilityFlagsConnectionRequired<sp/>|kSCNetworkReachabilityFlagsConnectionOnTraffic)))<sp/>{</highlight></codeline>
<codeline lineno="323"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>//network<sp/>state<sp/>is<sp/>off</highlight></codeline>
<codeline lineno="324"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_network_reachable(lc,false);</highlight></codeline>
<codeline lineno="325"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>((LinphoneManager*)info).connectivity<sp/>=<sp/>none;</highlight></codeline>
<codeline lineno="326"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>else<sp/>{</highlight></codeline>
<codeline lineno="327"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>Connectivity<sp/><sp/>newConnectivity<sp/>=<sp/>flags<sp/>&amp;<sp/>kSCNetworkReachabilityFlagsIsWWAN<sp/>?<sp/>wwan:wifi;</highlight></codeline>
<codeline lineno="328"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if<sp/>(lLinphoneMgr.connectivity<sp/>==<sp/>none)<sp/>{</highlight></codeline>
<codeline lineno="329"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>//notify<sp/>new<sp/>network<sp/>state</highlight></codeline>
<codeline lineno="330"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_network_reachable(lc,true);</highlight></codeline>
<codeline lineno="331"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>else<sp/>if<sp/>(lLinphoneMgr.connectivity<sp/>!=<sp/>newConnectivity)<sp/>{</highlight></codeline>
<codeline lineno="332"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>//<sp/>connectivity<sp/>has<sp/>changed</highlight></codeline>
<codeline lineno="333"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_network_reachable(lc,false);</highlight></codeline>
<codeline lineno="334"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_network_reachable(lc,true);</highlight></codeline>
<codeline lineno="335"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="336"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>//store<sp/>new<sp/>connectivity<sp/>status</highlight></codeline>
<codeline lineno="337"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>lLinphoneMgr.connectivity=newConnectivity;</highlight></codeline>
<codeline lineno="338"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="339"><highlight class="stringliteral">}</highlight></codeline>
<codeline lineno="340"><highlight class="stringliteral">}</highlight></codeline>
<codeline lineno="341"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="342"><highlight class="stringliteral">\endcode<sp/><sp/></highlight></codeline>
<codeline lineno="343"><highlight class="stringliteral">&lt;/ul&gt;</highlight></codeline>
<codeline lineno="344"><highlight class="stringliteral">&lt;b&gt;<sp/>Sound<sp/>cards<sp/>&lt;/b&gt;</highlight></codeline>
<codeline lineno="345"><highlight class="stringliteral">&lt;br&gt;<sp/>Since<sp/>IOS<sp/>5.0,<sp/>liblinphone<sp/>supports<sp/>2<sp/>sound<sp/>cards.<sp/>&lt;i&gt;AU:<sp/>Audio<sp/>Unit<sp/>Receiver&lt;/i&gt;<sp/>based<sp/>on<sp/>IO<sp/>units<sp/>for<sp/>voice<sp/>calls<sp/>plus<sp/>&lt;i&gt;AQ:<sp/>Audio<sp/>Queue<sp/>Device&lt;/i&gt;<sp/>dedicated<sp/>to<sp/>rings.<sp/>Here<sp/>under<sp/>the<sp/>recommended<sp/>settings<sp/>(I.E<sp/>default<sp/>one)</highlight></codeline>
<codeline lineno="346"><highlight class="stringliteral">\code</highlight></codeline>
<codeline lineno="347"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_playback_device(lc,<sp/>&quot;AU:<sp/>Audio<sp/>Unit<sp/>Receiver&quot;);</highlight></codeline>
<codeline lineno="348"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_ringer_device(lc,<sp/>&quot;AQ:<sp/>Audio<sp/>Queue<sp/>Device&quot;);</highlight></codeline>
<codeline lineno="349"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_capture_device(lc,<sp/>&quot;AU:<sp/>Audio<sp/>Unit<sp/>Receiver&quot;);</highlight></codeline>
<codeline lineno="350"><highlight class="stringliteral">\endcode</highlight></codeline>
<codeline lineno="351"><highlight class="stringliteral">&lt;b&gt;<sp/>GSM<sp/>call<sp/>interaction<sp/>&lt;/b&gt;</highlight></codeline>
<codeline lineno="352"><highlight class="stringliteral">&lt;br&gt;<sp/>To<sp/>ensure<sp/>gentle<sp/>interaction<sp/>with<sp/>GSM<sp/>calls,<sp/>it<sp/>is<sp/>recommended<sp/>to<sp/>register<sp/>an<sp/>AudioSession<sp/>delegate.<sp/>This<sp/>allows<sp/>the<sp/>application<sp/>to<sp/>be<sp/>notified<sp/>when<sp/>its<sp/>audio<sp/>session<sp/>is<sp/>interrupted/resumed<sp/>(presumably<sp/>by<sp/>a<sp/>GSM<sp/>call).</highlight></codeline>
<codeline lineno="353"><highlight class="stringliteral">\code</highlight></codeline>
<codeline lineno="354"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>//<sp/>declare<sp/>a<sp/>class<sp/>handling<sp/>the<sp/>AVAudioSessionDelegate<sp/>protocol</highlight></codeline>
<codeline lineno="355"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>@interface<sp/>MyClass<sp/>:<sp/>NSObject<sp/>&lt;AVAudioSessionDelegate&gt;<sp/>{<sp/>[...]<sp/>}</highlight></codeline>
<codeline lineno="356"><highlight class="stringliteral"><sp/><sp/><sp/><sp/>//<sp/>implement<sp/>2<sp/>methods<sp/>:<sp/>here&apos;</highlight><highlight class="normal">s<sp/>an<sp/>example<sp/>implementation</highlight></codeline>
<codeline lineno="357"><highlight class="normal"><sp/><sp/><sp/><sp/>-(void)<sp/>beginInterruption<sp/>{</highlight></codeline>
<codeline lineno="358"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__call__control_1gac0a4861d7c4702c64f7106f2b893c69e" kindref="member">LinphoneCall</ref>*<sp/>c<sp/>=<sp/><ref refid="group__call__control_1gac268a222347024ad7adb4eaf1fd27241" kindref="member">linphone_core_get_current_call</ref>(theLinphoneCore);</highlight></codeline>
<codeline lineno="359"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_message(</highlight><highlight class="stringliteral">&quot;Sound<sp/>interruption<sp/>detected!&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="360"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(c)<sp/>{</highlight></codeline>
<codeline lineno="361"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__call__control_1ga8cdae37a26ba7633067ea03bc43bd887" kindref="member">linphone_core_pause_call</ref>(theLinphoneCore,<sp/>c);</highlight></codeline>
<codeline lineno="362"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="363"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="364"><highlight class="normal"></highlight></codeline>
<codeline lineno="365"><highlight class="normal"><sp/><sp/><sp/><sp/>-(void)<sp/>endInterruption<sp/>{</highlight></codeline>
<codeline lineno="366"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_message(</highlight><highlight class="stringliteral">&quot;Sound<sp/>interruption<sp/>ended!&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="367"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>MSList*<sp/>c<sp/>=<sp/><ref refid="group__call__control_1gaf1f76b5a5d62e8bef5e1ad60e4f7b042" kindref="member">linphone_core_get_calls</ref>(theLinphoneCore);</highlight></codeline>
<codeline lineno="368"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="369"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(c)<sp/>{</highlight></codeline>
<codeline lineno="370"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>ms_message(</highlight><highlight class="stringliteral">&quot;Auto<sp/>resuming<sp/>call&quot;</highlight><highlight class="normal">);</highlight></codeline>
<codeline lineno="371"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="group__call__control_1ga3d5a472faf30bd767d39be0e043c683f" kindref="member">linphone_core_resume_call</ref>(theLinphoneCore,<sp/>(<ref refid="group__call__control_1gac0a4861d7c4702c64f7106f2b893c69e" kindref="member">LinphoneCall</ref>*)<sp/>c-&gt;data);</highlight></codeline>
<codeline lineno="372"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="373"><highlight class="normal"><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="374"><highlight class="normal">\endcode</highlight></codeline>
<codeline lineno="375"><highlight class="normal">@see<sp/>http:</highlight><highlight class="comment">//developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVAudioSessionDelegate_ProtocolReference/Reference/Reference.html</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="376"><highlight class="normal"></highlight></codeline>
<codeline lineno="377"><highlight class="normal">&lt;br&gt;<sp/>Declare<sp/>an<sp/>instance<sp/>of<sp/>your<sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal">as<sp/>AudioSession&apos;s<sp/>delegate<sp/>:</highlight></codeline>
<codeline lineno="378"><highlight class="normal">\code</highlight></codeline>
<codeline lineno="379"><highlight class="normal"><sp/><sp/><sp/><sp/>[audioSession<sp/>setDelegate:myClassInstance];</highlight></codeline>
<codeline lineno="380"><highlight class="normal">\endcode</highlight></codeline>
<codeline lineno="381"><highlight class="normal">@see<sp/>http:</highlight><highlight class="comment">//developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVAudioSession_ClassReference/Reference/Reference.html</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="382"><highlight class="normal"></highlight></codeline>
<codeline lineno="383"><highlight class="normal">&lt;b&gt;<sp/>Video<sp/>&lt;/b&gt;</highlight></codeline>
<codeline lineno="384"><highlight class="normal">&lt;br&gt;Since<sp/>3.5<sp/>video<sp/>support<sp/>has<sp/>been<sp/>added<sp/>to<sp/>liblinphone<sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>IOS.<sp/>It<sp/>requires<sp/>the<sp/>application<sp/>to<sp/>provide<sp/>liblinphone<sp/>with<sp/>pointers<sp/>to<sp/>IOS</highlight><highlight class="stringliteral">&apos;s<sp/>views<sp/>hosting<sp/>video<sp/>display<sp/>and<sp/>video<sp/>previous.</highlight></codeline>
<codeline lineno="385"><highlight class="stringliteral">&lt;br&gt;<sp/>These<sp/>2<sp/>UIView<sp/>objects<sp/>must<sp/>be<sp/>passed<sp/>to<sp/>the<sp/>core<sp/>using<sp/>functions<sp/><sp/>#linphone_core_set_native_video_window_id()<sp/>and<sp/>#linphone_core_set_native_preview_window_id().<sp/>here<sp/>under<sp/>speudo<sp/>code:</highlight></codeline>
<codeline lineno="386"><highlight class="stringliteral">\code</highlight></codeline>
<codeline lineno="387"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>UIView*<sp/>display<sp/>=<sp/>[[UIView<sp/>alloc]<sp/>init];</highlight></codeline>
<codeline lineno="388"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>UIView*<sp/>preview<sp/>=<sp/>[[UIView<sp/>alloc]<sp/>init];</highlight></codeline>
<codeline lineno="389"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_native_video_window_id(lc,(unsigned<sp/>long)display);<sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="390"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_native_preview_window_id(lc,(unsigned<sp/>long)preview);</highlight></codeline>
<codeline lineno="391"><highlight class="stringliteral">\endcode</highlight></codeline>
<codeline lineno="392"><highlight class="stringliteral">&lt;br&gt;<sp/>Screen<sp/>rotations<sp/>are<sp/>also<sp/>handled<sp/>by<sp/>liblinphone.<sp/>2<sp/>positions<sp/>are<sp/>currently<sp/>supported,<sp/>namely<sp/>&lt;i&gt;UIInterfaceOrientationPortrait&lt;/i&gt;<sp/>and<sp/>&lt;i&gt;UIInterfaceOrientationLandscapeRight&lt;/i&gt;.<sp/>Applications<sp/>may<sp/>invoke<sp/>#linphone_core_set_device_rotation()<sp/>followed<sp/>by<sp/>#linphone_core_update_call()<sp/>to<sp/>notify<sp/>liblinphone<sp/>of<sp/>an<sp/>orientation<sp/>change.<sp/>Here<sp/>under<sp/>a<sp/>speudo<sp/>code<sp/>to<sp/>handle<sp/>orientation<sp/>changes</highlight></codeline>
<codeline lineno="393"><highlight class="stringliteral">\code</highlight></codeline>
<codeline lineno="394"><highlight class="stringliteral"></highlight></codeline>
<codeline lineno="395"><highlight class="stringliteral">-(void)<sp/>configureOrientation:(UIInterfaceOrientation)<sp/>oritentation<sp/><sp/>{</highlight></codeline>
<codeline lineno="396"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>int<sp/>oldLinphoneOrientation<sp/>=<sp/>linphone_core_get_device_rotation(lc);</highlight></codeline>
<codeline lineno="397"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if<sp/>(oritentation<sp/>==<sp/>UIInterfaceOrientationPortrait<sp/>)<sp/>{</highlight></codeline>
<codeline lineno="398"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_native_video_window_id(lc,(unsigned<sp/>long)display-portrait);<sp/><sp/><sp/></highlight></codeline>
<codeline lineno="399"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_native_preview_window_id(lc,(unsigned<sp/>long)preview-portrait);</highlight></codeline>
<codeline lineno="400"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_device_rotation(lc,<sp/>0);</highlight></codeline>
<codeline lineno="401"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="402"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}<sp/>else<sp/>if<sp/>(oritentation<sp/>==<sp/>UIInterfaceOrientationLandscapeRight<sp/>)<sp/>{</highlight></codeline>
<codeline lineno="403"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_native_video_window_id(lc,(unsigned<sp/>long)display-landscape);<sp/><sp/></highlight></codeline>
<codeline lineno="404"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_native_preview_window_id(lc,(unsigned<sp/>long)preview-landscape);</highlight></codeline>
<codeline lineno="405"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_set_device_rotation(lc,<sp/>270);</highlight></codeline>
<codeline lineno="406"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="407"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
<codeline lineno="408"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>if<sp/>((oldLinphoneOrientation<sp/>!=<sp/>linphone_core_get_device_rotation(lc))</highlight></codeline>
<codeline lineno="409"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>&amp;&amp;<sp/>linphone_core_get_current_call(lc))<sp/>{</highlight></codeline>
<codeline lineno="410"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>//Orientation<sp/>has<sp/>changed,<sp/>must<sp/>call<sp/>update<sp/>call</highlight></codeline>
<codeline lineno="411"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>linphone_core_update_call(lc,<sp/>linphone_core_get_current_call(lc),<sp/>NULL);</highlight></codeline>
<codeline lineno="412"><highlight class="stringliteral"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
<codeline lineno="413"><highlight class="stringliteral">}</highlight></codeline>
<codeline lineno="414"><highlight class="stringliteral"></highlight></codeline>
<codeline lineno="415"><highlight class="stringliteral">\endcode</highlight></codeline>
<codeline lineno="416"><highlight class="stringliteral"></highlight></codeline>
<codeline lineno="417"><highlight class="stringliteral">&lt;b&gt;DTMF<sp/>feebacks&lt;/b&gt;</highlight></codeline>
<codeline lineno="418"><highlight class="stringliteral">&lt;br&gt;Liblinphone<sp/>provides<sp/>functions<sp/>\link<sp/>#linphone_core_play_dtmf()<sp/>to<sp/>play<sp/>dtmf<sp/>\endlink<sp/>to<sp/>the<sp/>local<sp/>user.<sp/>Usually<sp/>this<sp/>is<sp/>used<sp/>to<sp/>play<sp/>a<sp/>sound<sp/>when<sp/>the<sp/>user<sp/>presses<sp/>a<sp/>digit,<sp/>inside<sp/>or<sp/>outside<sp/>of<sp/>any<sp/>call.<sp/>On<sp/>IOS,<sp/>libLinphone<sp/>relies<sp/>on<sp/>AudioUnits<sp/>for<sp/>interfacing<sp/>with<sp/>the<sp/>audio<sp/>system.<sp/>Unfortunately<sp/>the<sp/>Audio<sp/>Unit<sp/>initialization<sp/>is<sp/>a<sp/>quite<sp/>long<sp/>operation<sp/>that<sp/>may<sp/>trigger<sp/>a<sp/>bad<sp/>user<sp/>experience<sp/>if<sp/>performed<sp/>each<sp/>time<sp/>a<sp/>DTMF<sp/>is<sp/>played,<sp/>the<sp/>sound<sp/>being<sp/>delayed<sp/>half<sp/>a<sp/>second<sp/>after<sp/>the<sp/>press.<sp/>To<sp/>solve<sp/>this<sp/>issue<sp/>and<sp/>thus<sp/>insure<sp/>real-time<sp/>precision,<sp/>liblinphone<sp/>introduces<sp/>2<sp/>functions<sp/>for<sp/>\link<sp/>linphone_core_start_dtmf_stream()<sp/>preloading<sp/>\endlink<sp/>and<sp/>\link<sp/>#linphone_core_start_dtmf_stream()<sp/>unloading<sp/>\endlink<sp/>the<sp/>underlying<sp/>audio<sp/>graph<sp/>responsible<sp/>for<sp/>playing<sp/>DTMFs.<sp/><sp/></highlight></codeline>
<codeline lineno="419"><highlight class="stringliteral">&lt;br&gt;<sp/>For<sp/>an<sp/>application<sp/>using<sp/>function<sp/>#linphone_core_play_dtmf(),<sp/>it<sp/>is<sp/>recommanded<sp/>to<sp/>call<sp/>#linphone_core_start_dtmf_stream()<sp/>when<sp/>entering<sp/>in<sp/>foreground<sp/>and<sp/>#linphone_core_stop_dtmf_stream()<sp/>upon<sp/>entering<sp/>background<sp/>mode.<sp/></highlight></codeline>
<codeline lineno="420"><highlight class="stringliteral">*/</highlight></codeline>
<codeline lineno="421"><highlight class="stringliteral"></highlight></codeline>
<codeline lineno="422"><highlight class="stringliteral"></codeline>
    </programlisting>
    <location file="/usr/src/slapt-src/network/linphone/linphone-3.9.1/coreapi/help/doxygen.dox"/>
  </compounddef>
</doxygen>
