MeeGo 中间件(middleware) 通信服务 之(一)连接管理
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