I need to create a GATT Server on intel Edison. Actually i'm programm with C++.
Are there news about GATT utilities to create GATT server from code?
First you will have to install a version of BlueZ that includes gatttool. After that, you could use libgatt ( https://github.com/jacklund/libgatt) it is BlueZ's GATT/LE code extracted into a library.
I hope this helps.
actually in my Edion there is installed BlueZ 5.28 that should has got gatttool.
So, to use that libgatt in eclipse i have to compile libgatt with edison, and after put include on eclipse and replace linker old libbluetooth with compiled new libgatt lib, is it right?
By the way, i briefly list file into liigatt and seems that it is only for client gatt. Miss all file like gatt-service.h attrib-server.h and other need to register and manage GATT database.
Maybe bluez 5.7 can't handle GATT server. Pheraphs needed librarys was adder in newer version.
In order to use an additional library you will not only need to install it on Edison but also add it to Eclipse. I'd suggest you to read the following documents: http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.cdt.doc.user/reference/cdt_u_prop_general_...
If libgatt does not work for you, then you will probably have to use BlueZ's API itself. You can find it's source code in http://git.kernel.org/cgit/bluetooth/bluez.git
I just tryed to compile blueZ, it ends correctly, but i couldn't found generated .so file to link in eclipse. Seems bluez not create library but only executable file.
Also try with --enable-library directive but i couldn't found.
For who followed this thread and has same problem i have resolved in this way:
1) download bluez 5.28 on edison
2) modify wiimote.c in plugins/ subdirectory with my gatt server definition and action. Actually i decided to exchange informations with my program through virtual files.
3) compile it and execute ./bluetoothd -p wiimote
4) on my c++ programm i poll and synchronize on these file
5) use socket on HCI flow to catch event of connection and disconnection of user to restart advertisment message and other stuff.
Maybe in future someone of good will make a c++ library to simplify this hell on earth.
Let me know if they help.
Also, I found the following document online and I thought you might find it helpful:
real problem of blueZ is that not release GATT server methods on its library, this is real reason because someone had created libgatt
In the same way gatttool is useful only to connect to GATT server but not to create it.
In my opinion there are something more deep because there aren't exist GATT server libraries. Maybe GATT server could be defined only at startup of bluetoothd service and Noble library use HCI socket bus to emulate response of main service.