Is there any equivalent to the SPP profile from Bluetooth Classic? I've always used this as a way to transmit custom data using Bluetooth, but I can't seem to find anything equivalent for BLE.
Is there any equivalent to the SPP profile from Bluetooth Classic? I've always used this as a way to transmit custom data using Bluetooth, but I can't seem to find anything equivalent for BLE.
No, there isn't really any SPP equivalent. However, with BLE, it is important to understand that all the profile and service support is entirely in the application space. This is opposed to the situation in Bluetooth Classic, where it seems to me that all profiles used in the application actually had to be natively supported by the stack used.
This means that with BLE, there isn't really a need for a serial port service to transmit custom data, since you can easily make your custom service, that is specially tailored for the data your application needs to transfer. This avoids the need for cramming all kinds of data into serial packages, and most often this leads to much cleaner data handling strategies and hence applications.
We're working on an application note explaining how to build a custom service for the S110, and I'll add a link here as soon as it's published. For now, I'd recommend taking a look at the battery service (ble_bas.c, ble_bas.h), and trying to understand it at least partially and building from there.
Edit: The application note is now out; nAN-36.
No, there isn't really any SPP equivalent. However, with BLE, it is important to understand that all the profile and service support is entirely in the application space. This is opposed to the situation in Bluetooth Classic, where it seems to me that all profiles used in the application actually had to be natively supported by the stack used.
This means that with BLE, there isn't really a need for a serial port service to transmit custom data, since you can easily make your custom service, that is specially tailored for the data your application needs to transfer. This avoids the need for cramming all kinds of data into serial packages, and most often this leads to much cleaner data handling strategies and hence applications.
We're working on an application note explaining how to build a custom service for the S110, and I'll add a link here as soon as it's published. For now, I'd recommend taking a look at the battery service (ble_bas.c, ble_bas.h), and trying to understand it at least partially and building from there.
Edit: The application note is now out; nAN-36.
Thanks for your ultra fast reply. I'll take alook at it again. Could you also provide me with some hints on making a custom service (with custom data). I need to send around 1KB/sec, but I wasn't able to acheive this rate with my first BLE attempt. So I've moved to Gazelle, but BLE might be a better choice in the long run.
Ole Morten - thanks for the hints on how to setup the connection interval etc. I'm now able to control the connection rate, so the next step is to actually try and implement a custom service. When do you expect an example to be ready?
Unfortunately, I can't really give any promises on schedule yet, especially not now in the time of holidays and variants.
In the mean time, this question, which I answered earlier may give some good hints: http://devzone.nordicsemi.com/index.php/what-is-the-most-efficient-way-to-transfer-data-over-ble The general tip is to structure things similar to the SDK services, make an init method that adds the service and all its characteristics, an event handler to handle events coming from the S110 and then all methods you need to do whatever is special for your service. As I said to the other person, the battery service is probably the simplest in the SDK, and should be a good starting point.
Hi Ole. Any news on that services app note? ;)
Very useful information. However - one of the reasons SPP is so attractive is on the host side (PC, smartphone,,): Here you don't need to use and know special libraries to get connected to SPP. Its the usually well known serial port library which is supported in all compilers and languages.
Can you comment what is needed on the host side for this BLE solution? I know this may be too broad a scope to answer. Personally I am in Windows.
Will this aspect be mentioned in the upcoming app note?