meego 中間件(middleware) 通信服務 之(一)連接配接管理
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5Sbyo3M3UTM2ADNzgjMx8FN2YDO1cDNvwlMvwVOwATMwIzLcRnbl1GajFGd0F2LcRXZu5ibkN3YukGavw1LcpDc0RHaiojIsJye.png)
meego通信服務子系統主要向平台提供聲音和資料通信,提供了用于管理無線服務、網絡語音服務、資料通信的api,面向的技術包括3g、wifi、wimax以及藍牙。
連接配接管理(connman)
connman給運作linux作業系統的裝置提供一個守護程序,該程序用于管理網絡連接配接。connman使系統子產品化,使得系統網絡子產品易于擴充,3g,wifi,wimax以及藍牙連接配接等很容易被添加到系統中去。網絡可以通過dhcp進行配置,同時,應用程式也支援域名解析功能,而且還提供了航班模式。
connman比較小巧,占用資源少,可以很友善的被內建。對于一個子產品化系統來說,有線和無線服務可以以插件的形式添加到系統。
上圖中,main loop相當于一個消息循環,相關用法請參考glib的main loop資料.
下面貼出來的是connman的部分源代碼
__connman_dbus_init(conn);
__connman_storage_init();
__connman_element_init(option_device, option_nodevice);
__connman_agent_init();
__connman_tethering_init();
__connman_counter_init();
__connman_ondemand_init();
__connman_manager_init(option_compat);
__connman_profile_init();
__connman_config_init();
__connman_resolver_init();
__connman_ipconfig_init();
__connman_rtnl_init();
__connman_udev_init();
__connman_task_init();
__connman_session_init();
__connman_timeserver_init();
__connman_plugin_init(option_plugin, option_noplugin);
__connman_element_start();
g_free(option_device);
g_free(option_plugin);
g_free(option_nodevice);
g_free(option_noplugin);
memset(&sa, 0, sizeof(sa));
sa.sa_handler = sig_term;
sigaction(sigint, &sa, null);
sigaction(sigterm, &sa, null);
g_main_loop_run(main_loop);
connman是基于dbus和glib庫來實作的.
這些__connman_xxx_init函數是connman的核心,它們建立了一系列的哈希表和連結清單,例如服務server_list, driver_list.
這也就是為什麼connman可以使meego系統子產品化的原因.通過plugin的形式,将子產品加入到系統中,就是通過這些連結清單和哈希表對裝置包括裝置資訊裝置驅動進行管理,這也是connman連接配接管理的作用.
版權申明:
轉載文章請注明原文出處http://blog.csdn.net/feiyinzilgd/archive/2010/09/06/5866436.aspx
并請聯系譚海燕本人或者前往譚海燕個人首頁留言