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
并请联系谭海燕本人或者前往谭海燕个人主页留言