Hi Chaojie, The idea is to create a set of tools that can be shared among different platform implementations (desktop, Android, etc.) without direct library dependencies, such as glib. GAttrib is written in a way that directly interacts with GIOChannel whereas the shared stuff use shared/io, which is a simple abstraction that is compatible with GIOChannel and Glib mainloop, as well as BlueZ's own mainloop implementation (monitor/mainloop.c). Beyond removing the dependency issue, the shared code will provide a stand-alone, functioning GATT server/client implementation that is not tied to any daemon code. The idea is that you can instantiate a struct bt_gatt_client, and that will do all the attribute discovery and caching for you. The upper-layer won't need to know about the contents of ATT protocol PDUs or explicit handling of "service changed" indications, etc (similarly, there will be a shared/gatt-server to handle all the GATT server magic). Others can comment more on this, since I've been basically following Marcel's suggestion :) Cheers, Arman -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html