Andyroki - Yes, it is. So I will try and post a comprehensive summary.
nRF51822 is Nordic's SOC that has Bluetooth Low Energy (aka Bluetooth Smart) and the RFduino modules are based on this chip.
Nordic designed the system such that the Bluetooth protocol stack is supported by what they call a 'SoftDevice'. Nordic has engineered the system such that the 'SoftDevice' and the application are flashed in separate locations on the device. They have a feature that will 'lock' the SoftDevice into flash so you can reprogram the application over and over again without erasing the SoftDevice.
Typical development of applications on the nRF51822 require a license from Nordic in order to use their SoftDevice bluetooth protocol stack and gain access to their SDK. This license is included when you purchase a evaluation or development kit from them. Nordic currently provides S110, S120, and S130 soft devices. Each supports different levels of BlueTooth Protocols. For example S110 supports Peripheral role, S120 supports Central role and S130 supports concurrent Central, Observer, Peripheral and Broadcaster roles.
You will need a development environment to compile your applications - gcc, Eclipse, Keil, CrossStudio are just a few.Keil uVision
provides a free version for applications under 32K in size. After that you need to purchase a license for their tools. Currently they are only available on Windows. I found their interface outdated and some of the functionality not intuitive. While Nordic includes project files for their examples I found it difficult to create a project file on my own.Eclipse
is free and you can get a toolchain helper install at http://sourceforge.net/projects/nrf51osx/
or you can setup your environment using Nordic application note nAN-29. I tried the application note but found nrf51osx much easier (Thanks Roland!). In the end I found Eclipse difficult and troublesome. I'm sure with enough time I could have gotten it to work. CrossStudio
is not free, it is much less expensive than Keil (for applications above 32K) and more updated. It is also available on Windows and Macintosh platforms. It is easier to setup than Eclipse but like Eclipse you have to build the project files yourself.
You can program the RFduino modules using the above tools if you need more than what RFduino offers wrt Bluetooth. There is a note in this forum on how to connect JLink to the RFduino.
If you can live with the limitations of the RFduino (more about that later) then you can use the free Arduino IDE
to program the device. It does not offer any debugging as you just flash and it runs. But for many it may be the easiest solution - and definitely the least expensive.
built a custom boot loader and provide access to Nordic's S110 Bluetooth stack via a few API's they developed that make calls into Nordic's SoftDevice. If you look at their reference document you can see their custom implementation for access to Nordic's SoftDevice stack. For example you can turn the stack on, off, set the advertisement, advertisement intervals, transmit power, send data, receive data, and some other items related to another protocol stack called gazelle, and iBeacons. They are adding support for new features all the time and their support is pretty good. You can use the Arduino IDE
to program the device and seems to work well. You don't need to know much about Bluetooth to get an application up and running using it.
The nice thing is that the SoftDevice comes free with the purchase of an RFduino module. The Arduino IDE
is free so it's a fair deal - less than the cost of a Nordic DK or EK + IDE tools.
Limitations of the RFduino platform -
There are limitations using RFduino's implementation. For example you are limited to the S110 stack - Bluetooth Peripheral stack only. Also you can't change the services or characteristics so you are stuck with their implementation. The service ID is hard coded so if you have multiple RFduino's providing different capabilities or you want to implement battery service you will have to overload their one service for reading and writing. Bluetooth uses profiles for different devices to help define what is where - http://en.wikipedia.org/wiki/List_of_Bluetooth_profiles#List_of_profiles
I hope this helps.